| | |
| | | * 可传入初始表单数据formInfo,表单校验规则rules |
| | | * 实现submit和cancel触发函数 |
| | | */ |
| | | import { defineProps, defineEmits, reactive, ref, watch, computed } from 'vue'; |
| | | import { defineProps, defineEmits, reactive, ref, watch, computed, defineExpose } from 'vue'; |
| | | import { useFormConfirm } from '@/composables/formConfirm'; |
| | | |
| | | const props = defineProps({ |
| | | //表单基本信息 |
| | | formInfo: Object, |
| | | formInfo: { |
| | | type: Object, |
| | | default: () => { |
| | | return {}; |
| | | } |
| | | }, |
| | | //表单检验规则 |
| | | rules: Object, |
| | | showButtons: { |
| | |
| | | _locations: [ |
| | | { |
| | | required: true, |
| | | message: '省/市/区/镇不能为空', |
| | | trigger: 'change', |
| | | message: '行政区划不能为空', |
| | | trigger: 'change' |
| | | } |
| | | ], |
| | | _scenetype: [ |
| | |
| | | function submit() { |
| | | loading.value = true; |
| | | return new Promise((resolve, reject) => { |
| | | emit('submit', formObj, () => { |
| | | loading.value = false; |
| | | resolve(); |
| | | },(err)=>{ |
| | | loading.value = false; |
| | | reject(err); |
| | | }); |
| | | emit( |
| | | 'submit', |
| | | formObj, |
| | | () => { |
| | | loading.value = false; |
| | | resolve(); |
| | | }, |
| | | (err) => { |
| | | loading.value = false; |
| | | reject(err); |
| | | } |
| | | ); |
| | | }); |
| | | } |
| | | |
| | |
| | | emit('cancel'); |
| | | } |
| | | |
| | | const allRules = computed(()=>{ |
| | | return {...baseRules, ...props.rules} |
| | | }) |
| | | const allRules = computed(() => { |
| | | return { ...baseRules, ...props.rules }; |
| | | }); |
| | | |
| | | //监听表单初始数据传入 |
| | | watch( |
| | |
| | | ); |
| | | |
| | | //监听表单编辑状态 |
| | | watch(edit, (nValue) => { |
| | | emit('update:isEdit', nValue); |
| | | watch( |
| | | () => props.isEdit, |
| | | (nV, oV) => { |
| | | if (nV != oV) { |
| | | edit.value = nV; |
| | | } |
| | | }, |
| | | { immediate: true } |
| | | ); |
| | | watch(edit, (nV, oV) => { |
| | | if (nV != oV) { |
| | | emit('update:isEdit', nV); |
| | | } |
| | | }); |
| | | |
| | | defineExpose({ formObj, onSubmit, onCancel, onReset }); |
| | | </script> |
| | | |
| | | <style scoped></style> |