2024-11-14 13:43:41 +08:00
|
|
|
<template>
|
|
|
|
<BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="600px" @ok="handleSubmit">
|
2024-11-20 11:38:57 +08:00
|
|
|
<BasicForm @register="registerForm">
|
|
|
|
<template #paramJson="{ model }">
|
|
|
|
<CodeEditor
|
|
|
|
style="min-height: 200px"
|
|
|
|
v-model:value="model.paramJson"
|
|
|
|
@change="model.paramJson = $event;"
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
</BasicForm>
|
2024-11-14 13:43:41 +08:00
|
|
|
</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';
|
2024-11-20 11:38:57 +08:00
|
|
|
import { CodeEditor } from "@/components/CodeEditor";
|
2024-11-15 17:30:24 +08:00
|
|
|
import * as TaskApi from '@/api/data/taskApi';
|
2024-11-14 13:43:41 +08:00
|
|
|
|
|
|
|
const emit = defineEmits(['success', 'register']);
|
|
|
|
const isUpdate = ref(true);
|
2024-11-15 17:30:24 +08:00
|
|
|
const entity = ref();
|
2024-11-14 13:43:41 +08:00
|
|
|
|
|
|
|
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;
|
|
|
|
|
2024-11-21 16:27:39 +08:00
|
|
|
await setFieldsValue({
|
|
|
|
...data.record,
|
|
|
|
});
|
2024-11-14 13:43:41 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
const getTitle = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
|
|
|
|
|
|
|
|
async function handleSubmit() {
|
|
|
|
try {
|
|
|
|
const values = await validate();
|
|
|
|
setDrawerProps({ confirmLoading: true });
|
|
|
|
const {
|
|
|
|
...rest
|
|
|
|
} = values;
|
2024-11-15 17:30:24 +08:00
|
|
|
const action = !unref(isUpdate) ? TaskApi.add : TaskApi.update;
|
2024-11-14 13:43:41 +08:00
|
|
|
const data = !unref(isUpdate)
|
|
|
|
? {
|
|
|
|
...rest,
|
|
|
|
}
|
|
|
|
: Object.assign({},
|
|
|
|
{
|
|
|
|
...unref(entity),
|
|
|
|
...rest,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
await action(data);
|
|
|
|
closeDrawer();
|
|
|
|
emit('success');
|
|
|
|
} finally {
|
|
|
|
setDrawerProps({ confirmLoading: false });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
2024-11-19 09:55:07 +08:00
|
|
|
<style lang="scss" scoped>
|
|
|
|
@use '@/assets/custom.scss';
|
|
|
|
</style>
|