mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect-embeded.git
synced 2025-06-24 21:44:12 +08:00
64 lines
1.8 KiB
Vue
64 lines
1.8 KiB
Vue
![]() |
<template>
|
||
|
<BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="600px" @ok="handleSubmit">
|
||
|
<BasicForm @register="registerForm" />
|
||
|
</BasicDrawer>
|
||
|
</template>
|
||
|
<script lang="ts" setup>
|
||
|
import { defineEmits, ref, computed, unref } from 'vue';
|
||
|
import { BasicForm, useForm } from '@/components/Form/index';
|
||
|
import { formSchema } from './schema';
|
||
|
import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
|
||
|
import * as EventApi from '@/api/data/eventApi';
|
||
|
|
||
|
const emit = defineEmits(['success', 'register']);
|
||
|
const isUpdate = ref(true);
|
||
|
const entity = ref();
|
||
|
|
||
|
const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
|
||
|
labelWidth: 120,
|
||
|
schemas: formSchema,
|
||
|
showActionButtonGroup: false,
|
||
|
});
|
||
|
|
||
|
const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
||
|
await resetFields();
|
||
|
setDrawerProps({ confirmLoading: false });
|
||
|
isUpdate.value = !!data?.isUpdate;
|
||
|
entity.value = data?.record;
|
||
|
|
||
|
if (unref(isUpdate)) {
|
||
|
await setFieldsValue({
|
||
|
...data.record,
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
|
||
|
|
||
|
async function handleSubmit() {
|
||
|
try {
|
||
|
const values = await validate();
|
||
|
setDrawerProps({ confirmLoading: true });
|
||
|
const {
|
||
|
...rest
|
||
|
} = values;
|
||
|
const action = !unref(isUpdate) ? EventApi.add : EventApi.update;
|
||
|
const data = !unref(isUpdate)
|
||
|
? {
|
||
|
...rest,
|
||
|
}
|
||
|
: Object.assign({},
|
||
|
{
|
||
|
...unref(entity),
|
||
|
...rest,
|
||
|
},
|
||
|
);
|
||
|
await action(data);
|
||
|
closeDrawer();
|
||
|
emit('success');
|
||
|
} finally {
|
||
|
setDrawerProps({ confirmLoading: false });
|
||
|
}
|
||
|
}
|
||
|
</script>
|