<script lang="ts" setup>
|
import type { FormSchema } from '@jnpf/ui/form';
|
|
import { ref } from 'vue';
|
|
import { useMessage } from '@jnpf/hooks';
|
import { BasicForm, useForm } from '@jnpf/ui/form';
|
import { BasicModal, useModalInner } from '@jnpf/ui/modal';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
import { createTemplateVersion } from '#/api/x/eln/templates';
|
|
defineOptions({ name: 'ElnTemplateVersionModal' });
|
|
const emit = defineEmits(['register', 'reload']);
|
const { createMessage } = useMessage();
|
const sourceTemplateId = ref('');
|
const operationCode = ref('');
|
|
const schemas: FormSchema[] = [
|
{
|
component: 'Input',
|
componentProps: { maxlength: 50, placeholder: '例如 R02' },
|
field: 'mubanBanben',
|
label: '业务版本',
|
rules: [{ message: '请输入业务版本', required: true, trigger: 'blur' }],
|
},
|
{
|
component: 'DatePicker',
|
componentProps: { placeholder: '请选择生效日期', valueFormat: 'YYYY-MM-DD' },
|
field: 'shengxiaoRiqi',
|
label: '生效日期',
|
rules: [{ message: '请选择生效日期', required: true, trigger: 'change' }],
|
},
|
];
|
|
const [registerForm, { resetFields, validate }] = useForm({
|
baseColProps: { span: 24 },
|
labelWidth: 90,
|
schemas,
|
showActionButtonGroup: false,
|
});
|
const [registerModal, { changeOkLoading, closeModal }] = useModalInner(init);
|
|
async function init(data: { sourceTemplateId: string }) {
|
sourceTemplateId.value = data.sourceTemplateId;
|
operationCode.value = `template-version-${uuidv4()}`;
|
await resetFields();
|
}
|
|
async function handleSubmit() {
|
const values = await validate();
|
changeOkLoading(true);
|
try {
|
await createTemplateVersion(sourceTemplateId.value, {
|
mubanBanben: values.mubanBanben.trim(),
|
shengbanCaozuoBianma: operationCode.value,
|
shengxiaoRiqi: values.shengxiaoRiqi,
|
});
|
createMessage.success('已创建草稿模板版本');
|
closeModal();
|
emit('reload');
|
} catch (error) {
|
createMessage.error(formatRequestError(error));
|
} finally {
|
changeOkLoading(false);
|
}
|
}
|
|
function formatRequestError(error: unknown) {
|
return error instanceof Error && error.message ? error.message : '创建模板版本失败,请稍后重试';
|
}
|
</script>
|
|
<template>
|
<BasicModal v-bind="$attrs" @register="registerModal" destroy-on-close title="创建模板版本" width="520px" @ok="handleSubmit">
|
<BasicForm @register="registerForm" />
|
</BasicModal>
|
</template>
|