|
@@ -154,7 +154,6 @@
|
|
|
</template>
|
|
|
<template v-else-if="link === 'number'">
|
|
|
<NumberCom
|
|
|
- v-if="link === 'number'"
|
|
|
v-bind="$attrs"
|
|
|
:label="labelCpt"
|
|
|
:param="param"
|
|
@@ -177,6 +176,29 @@
|
|
|
</template>
|
|
|
</NumberCom>
|
|
|
</template>
|
|
|
+ <template v-else-if="link === 'input-number'">
|
|
|
+ <InputNumberCom
|
|
|
+ v-bind="$attrs"
|
|
|
+ :label="labelCpt"
|
|
|
+ :param="param"
|
|
|
+ @emitParam="val => {
|
|
|
+ $emit('update:param', val), handleValidate(val)
|
|
|
+ }"
|
|
|
+ @emitEnter="handleEnter"
|
|
|
+ >
|
|
|
+ </InputNumberCom>
|
|
|
+ </template>
|
|
|
+ <template v-else-if="link === 'tree-select'">
|
|
|
+ <TreeSelectCom
|
|
|
+ v-bind="$attrs"
|
|
|
+ :label="labelCpt"
|
|
|
+ :param="param"
|
|
|
+ @emitParam="val => {
|
|
|
+ $emit('update:param', val), handleValidate(val)
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ </TreeSelectCom>
|
|
|
+ </template>
|
|
|
</slot>
|
|
|
<div v-if="unit" class="unit">{{unit}}</div>
|
|
|
</el-form-item>
|
|
@@ -199,6 +221,7 @@ import {
|
|
|
import {useStore} from 'vuex'
|
|
|
import {useRouter, useRoute} from 'vue-router'
|
|
|
import InputCom from './cus-form-link/input.vue'
|
|
|
+import InputNumberCom from './cus-form-link/input-number.vue'
|
|
|
import SelectCom from './cus-form-link/select.vue'
|
|
|
import DateCom from './cus-form-link/date.vue'
|
|
|
import DateTimeCom from './cus-form-link/datetime.vue'
|
|
@@ -210,11 +233,13 @@ import CheckboxCom from './cus-form-link/checkbox.vue'
|
|
|
import DeptCom from './cus-form-link/dept.vue'
|
|
|
import UploadCom from './cus-form-link/upload.vue'
|
|
|
import NumberCom from './cus-form-link/number.vue'
|
|
|
+import TreeSelectCom from './cus-form-link/tree-select.vue'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'CusFormColumn',
|
|
|
components: {
|
|
|
InputCom,
|
|
|
+ InputNumberCom,
|
|
|
SelectCom,
|
|
|
DateCom,
|
|
|
DateTimeCom,
|
|
@@ -225,7 +250,8 @@ export default defineComponent({
|
|
|
CheckboxCom,
|
|
|
DeptCom,
|
|
|
UploadCom,
|
|
|
- NumberCom
|
|
|
+ NumberCom,
|
|
|
+ TreeSelectCom
|
|
|
},
|
|
|
props: {
|
|
|
span: {type: Number, default: 6},
|
|
@@ -238,7 +264,7 @@ export default defineComponent({
|
|
|
required: {default: false},
|
|
|
labelWidth: {type: String, default: ''},
|
|
|
link: {type: String, default: 'input', validator(val: string) {
|
|
|
- return ['cascader', 'checkbox', 'date', 'datetime', 'input', 'radio', 'select', 'switch', 'portOfRegistry', 'residentMooringPoint', 'dept', 'time', 'upload', 'number'].includes(val)
|
|
|
+ return ['cascader', 'checkbox', 'date', 'datetime', 'input', 'radio', 'select', 'switch', 'dept', 'time', 'upload', 'number', 'input-number', 'tree-select'].includes(val)
|
|
|
}},
|
|
|
rules: {type: Array, default: () => []},
|
|
|
maxLength: {type: Number, default: null},
|
|
@@ -278,7 +304,7 @@ export default defineComponent({
|
|
|
message: `内容过长,字数需小于等于${props.maxLength}`
|
|
|
})
|
|
|
}
|
|
|
- const doStr = ['input', 'number'].includes(props.link) ? '输入' : '选择'
|
|
|
+ const doStr = ['input', 'number', 'input-number'].includes(props.link) ? '输入' : '选择'
|
|
|
if (props.required !== false && !props.rules.some((v: any) => v.type === 'default')) {
|
|
|
if (['portOfRegistry', 'residentMooringPoint'].includes(props.link)) {
|
|
|
r.unshift({
|
|
@@ -325,6 +351,19 @@ export default defineComponent({
|
|
|
const reset = () => {
|
|
|
state.errorMessage = null
|
|
|
}
|
|
|
+ watch(() => state.errorMessage, (n) => {
|
|
|
+ const p = ref_cusFormColumn.value?.$el?.getElementsByClassName('el-form-item')?.[0]
|
|
|
+ if (n) {
|
|
|
+ setTimeout(() => {
|
|
|
+ const e = p?.getElementsByClassName('el-form-item__content')?.[0]?.getElementsByClassName('el-form-item__error')?.[0]
|
|
|
+ if (e?.clientHeight) {
|
|
|
+ p.style.marginBottom = `${e.clientHeight + 4}px`
|
|
|
+ }
|
|
|
+ }, 200)
|
|
|
+ } else {
|
|
|
+ p.style.marginBottom = '18px'
|
|
|
+ }
|
|
|
+ })
|
|
|
return {
|
|
|
...toRefs(state),
|
|
|
handleValidate,
|