|
|
@ -1,12 +1,14 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div> |
|
|
<div> |
|
|
<q-form ref="formRef" :autofocus="false" :greedy="true" v-bind="attrs"> |
|
|
<q-form ref="formRef" :autofocus="false" :greedy="true" v-bind="attrs" @submit.prevent="handleSubmit"> |
|
|
<div v-if="form.fieldArray.value.length > 0" class="grid" :style="form.cm.formLayoutStyleComputed.value"> |
|
|
<div v-if="form.fieldArray.value.length > 0" class="grid" :style="form.cm.formLayoutStyleComputed.value"> |
|
|
<template v-for="(field, index) in form.fieldArray.value as any" :key="String(index)"> |
|
|
<template v-for="(field, index) in form.fieldArray.value as any" :key="String(index)"> |
|
|
<FormElement :field="field"></FormElement> |
|
|
<FormElement :field="field"></FormElement> |
|
|
</template> |
|
|
</template> |
|
|
</div> |
|
|
</div> |
|
|
<slot></slot> |
|
|
<slot></slot> |
|
|
|
|
|
<!-- 隐藏的提交按钮,用于捕获回车事件 --> |
|
|
|
|
|
<button type="submit" style="display: none"></button> |
|
|
</q-form> |
|
|
</q-form> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
@ -39,10 +41,17 @@ const props = defineProps({ |
|
|
}); |
|
|
}); |
|
|
const emit = defineEmits<{ |
|
|
const emit = defineEmits<{ |
|
|
(e: 'updateValue', args: object): void; |
|
|
(e: 'updateValue', args: object): void; |
|
|
|
|
|
(e: 'submit', args: object): void; |
|
|
}>(); |
|
|
}>(); |
|
|
const getFormRef = () => { |
|
|
const getFormRef = () => { |
|
|
return formRef.value; |
|
|
return formRef.value; |
|
|
}; |
|
|
}; |
|
|
|
|
|
const handleSubmit = (submitEvent: any) => { |
|
|
|
|
|
emit('submit', { |
|
|
|
|
|
form: instance, |
|
|
|
|
|
value: toRaw(form.data), |
|
|
|
|
|
}); |
|
|
|
|
|
}; |
|
|
const updateModelValue = (name: string, value: any) => { |
|
|
const updateModelValue = (name: string, value: any) => { |
|
|
if ( |
|
|
if ( |
|
|
(form.fields[name] && (form.fields[name]['type'] !== 'w-number' || Number.isFinite(value)) && form.fields[name]['type'] !== 'w-integer') || |
|
|
(form.fields[name] && (form.fields[name]['type'] !== 'w-number' || Number.isFinite(value)) && form.fields[name]['type'] !== 'w-integer') || |
|
|
|