¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose :title="title" :width="800" @ok="handleSubmit"> |
| | | <BasicForm @register="registerForm" /> |
| | | </BasicModal> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { computed, ref, unref } from 'vue' |
| | | import { saveOrUpdate } from '../api/DryOrder.api' |
| | | import { formSchema } from '../dataDefine/DryOrder.data' |
| | | import { BasicForm, useForm } from '/@/components/Form/index' |
| | | import { BasicModal, useModalInner } from '/@/components/Modal' |
| | | // Emits声æ |
| | | const emit = defineEmits(['register', 'success']) |
| | | const isUpdate = ref(true) |
| | | //searchFormSchema |
| | | const [registerForm, { setProps, resetFields, setFieldsValue, validate }] = useForm({ |
| | | //labelWidth: 150, |
| | | schemas: formSchema, |
| | | showActionButtonGroup: false, |
| | | baseColProps: { span: 24 }, |
| | | }) |
| | | //表åèµå¼ |
| | | const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
| | | //é置表å |
| | | await resetFields() |
| | | setModalProps({ confirmLoading: false, showCancelBtn: !!data?.showFooter, showOkBtn: !!data?.showFooter }) |
| | | isUpdate.value = !!data?.isUpdate |
| | | if (unref(isUpdate)) { |
| | | //表åèµå¼ |
| | | await setFieldsValue({ |
| | | ...data.record, |
| | | }) |
| | | } |
| | | // éèåºé¨æ¶ç¦ç¨æ´ä¸ªè¡¨å |
| | | setProps({ disabled: !data?.showFooter }) |
| | | }) |
| | | //设置æ é¢ |
| | | const title = computed(() => (!unref(isUpdate) ? 'æ°å¢' : 'ç¼è¾')) |
| | | //表åæäº¤äºä»¶ |
| | | async function handleSubmit(v) { |
| | | try { |
| | | let values = await validate() |
| | | setModalProps({ confirmLoading: true }) |
| | | //æäº¤è¡¨å |
| | | await saveOrUpdate(values, isUpdate.value) |
| | | //å
³éå¼¹çª |
| | | closeModal() |
| | | //å·æ°å表 |
| | | emit('success') |
| | | } finally { |
| | | setModalProps({ confirmLoading: false }) |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | /** æ¶é´åæ°åè¾å
¥æ¡æ ·å¼ */ |
| | | :deep(.ant-input-number) { |
| | | width: 100%; |
| | | } |
| | | |
| | | :deep(.ant-calendar-picker) { |
| | | width: 100%; |
| | | } |
| | | </style> |