对比新文件 |
| | |
| | | <template> |
| | | <BasicModal |
| | | v-bind="$attrs" |
| | | @register="registerModal" |
| | | :title="getTitle" |
| | | @ok="handleSubmit" |
| | | :showOkBtn="!isDetail" |
| | | :width="900" |
| | | > |
| | | <div v-show="isDetail"> |
| | | <Description size="middle" @register="registerDetail" :column="2"/> |
| | | </div> |
| | | <div v-show="!isDetail"> |
| | | <BasicForm @register="registerForm" /> |
| | | </div> |
| | | </BasicModal> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { ref, computed, unref } from 'vue'; |
| | | import { BasicModal, useModalInner } from '/@/components/Modal'; |
| | | import { BasicForm, useForm } from '/@/components/Form/index'; |
| | | import { formSchema, detailSchema } from './${modelCode!}.data'; |
| | | import { getDetail, submitObj } from '/@/api/${serviceCode!}/${modelCode!}'; |
| | | import { Description, useDescription } from '/@/components/Description/index'; |
| | | |
| | | const emit = defineEmits(['success']); |
| | | const isDetail = ref(true); |
| | | const isUpdate = ref(true); |
| | | const rowId = ref(''); |
| | | //璇︽儏 |
| | | const [registerDetail, { setDescProps }] = useDescription({ |
| | | schema: detailSchema, |
| | | }); |
| | | |
| | | const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ |
| | | labelWidth: 100, |
| | | schemas: formSchema, |
| | | showActionButtonGroup: false, |
| | | baseColProps: { |
| | | span: 12, |
| | | }, |
| | | actionColOptions: { |
| | | span: 23, |
| | | }, |
| | | }); |
| | | |
| | | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| | | resetFields(); |
| | | setModalProps({ confirmLoading: false }); |
| | | isUpdate.value = !!data?.isUpdate; |
| | | isDetail.value = !!data?.isDetail; |
| | | if (unref(isDetail)) { |
| | | const detail = await getDetail({ id: data.record.id }); |
| | | setDescProps({ |
| | | data: detail, |
| | | }); |
| | | } else { |
| | | if (unref(isUpdate)) { |
| | | rowId.value = data.record.id; |
| | | const detailData = await getDetail({ id: data.record.id }); |
| | | setFieldsValue({ |
| | | ...detailData, |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | const getTitle = computed(() => { |
| | | if (unref(isDetail)) { |
| | | return '鏌ョ湅'; |
| | | } else { |
| | | return !unref(isUpdate) ? '鏂板' : '缂栬緫'; |
| | | } |
| | | }); |
| | | |
| | | async function handleSubmit() { |
| | | try { |
| | | const values = await validate(); |
| | | setModalProps({ confirmLoading: true }); |
| | | if (unref(isUpdate)) { |
| | | values.id = rowId.value; |
| | | } |
| | | await submitObj(values); |
| | | closeModal(); |
| | | emit('success', { isUpdate: unref(isUpdate), values: { ...values, id: rowId.value } }); |
| | | } finally { |
| | | setModalProps({ confirmLoading: false }); |
| | | } |
| | | } |
| | | </script> |