|
|
@ -3,9 +3,10 @@ |
|
|
|
<q-form ref="formRef" :autofocus="false" :greedy="true" v-bind="attrs"> |
|
|
|
<div v-if="fieldsComputed.length > 0" class="grid" :class="formLayoutComputed"> |
|
|
|
<template v-for="(field, index) in fieldsComputed as any" :key="String(index)"> |
|
|
|
<template v-if="field.name"> |
|
|
|
<component |
|
|
|
:is="fiedType[field.type] || field.type" |
|
|
|
v-if="field.name" |
|
|
|
:ref="(el) => setComponentRef(el, field.name)" |
|
|
|
v-model="formData[field.name]" |
|
|
|
v-bind="field" |
|
|
|
:form="instance" |
|
|
@ -19,9 +20,11 @@ |
|
|
|
" |
|
|
|
@update:model-value="updateModelValue(field.name, formData[field.name])" |
|
|
|
></component> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<component |
|
|
|
:is="fiedType[field.type] || field.type" |
|
|
|
v-else |
|
|
|
:ref="(el) => setComponentRef(el, field.name)" |
|
|
|
:form-ref="formRef" |
|
|
|
v-bind="field" |
|
|
|
:form="instance" |
|
|
@ -35,6 +38,7 @@ |
|
|
|
" |
|
|
|
></component> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</div> |
|
|
|
<slot></slot> |
|
|
|
</q-form> |
|
|
@ -49,6 +53,8 @@ import { PageStatusEnum } from '@/platform/components/utils'; |
|
|
|
|
|
|
|
const $q = useQuasar(); |
|
|
|
const attrs = useAttrs(); |
|
|
|
const componentRef = ref({}); |
|
|
|
|
|
|
|
const props = defineProps({ |
|
|
|
modelValue: { |
|
|
|
type: Object, |
|
|
@ -207,6 +213,12 @@ const updateModelValue = (name, value) => { |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
const setComponentRef = (el, fieldName) => { |
|
|
|
if (el) { |
|
|
|
componentRef.value[fieldName] = el; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 对外暴露方法-获取form所有数据 |
|
|
|
*/ |
|
|
@ -323,6 +335,10 @@ const getFields = () => { |
|
|
|
return formFields; |
|
|
|
}; |
|
|
|
|
|
|
|
const getFieldComponent = (name) => { |
|
|
|
return componentRef.value[name]; |
|
|
|
}; |
|
|
|
|
|
|
|
defineExpose({ |
|
|
|
getFields, |
|
|
|
getData, |
|
|
@ -335,6 +351,7 @@ defineExpose({ |
|
|
|
getStatus, |
|
|
|
getColsNum, |
|
|
|
setValidationErrors, |
|
|
|
getFieldComponent, |
|
|
|
}); |
|
|
|
|
|
|
|
const instance = getCurrentInstance(); |
|
|
|