|
|
@@ -1,34 +1,32 @@
|
|
|
<template>
|
|
|
<BasicDialog ref="basicDialogRef" :title="dialogTitle + '审批节点'" @refresh="refreshFromData">
|
|
|
<template #form>
|
|
|
- <BasicForm
|
|
|
- v-if="ruleFormData.approvalTemplateId"
|
|
|
- ref="basicFormRef"
|
|
|
- :formData="ruleFormData"
|
|
|
- :formRules="formRules"
|
|
|
- :formConfig="ruleFormConfig"
|
|
|
+ <ApprovalNodeCreateForm
|
|
|
+ v-if="formOpened"
|
|
|
+ ref="approvalNodeFormRef"
|
|
|
+ :init-data="props.initData"
|
|
|
+ :order-list="props.orderList"
|
|
|
+ @success="handleSuccess"
|
|
|
/>
|
|
|
</template>
|
|
|
<template #footer>
|
|
|
<el-button type="primary" @click="handleSumbit">提交</el-button>
|
|
|
- <el-button @click="basicDialogRef?.closeDialog">取消</el-button>
|
|
|
+ <el-button @click="handleClose">取消</el-button>
|
|
|
</template>
|
|
|
</BasicDialog>
|
|
|
<UploadLoading :form-loading="formLoading" v-if="formLoading" />
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
- import { ref } from 'vue';
|
|
|
- import { ElMessage } from 'element-plus';
|
|
|
+ import { computed, ref } from 'vue';
|
|
|
import BasicDialog from '@/components/BasicDialog.vue';
|
|
|
- import BasicForm from '@/components/BasicForm.vue';
|
|
|
- import { useFormConfigHook } from '@/hooks/useFormConfigHook';
|
|
|
- import { ApprovalNodeInstanceRuleForm } from '../types';
|
|
|
- import { APPROVAL_NODE_FORM_CONFIG, APPROVAL_NODE_FORM_DATA, APPROVAL_NODE_FORM_RULES } from '../config/form';
|
|
|
- import { addApprovalNodeInstance } from '@/api/approval/approval';
|
|
|
import UploadLoading from '@/components/UploadLoading.vue';
|
|
|
+ import ApprovalNodeCreateForm from './ApprovalNodeCreateForm.vue';
|
|
|
+ import { ApprovalNodeInstanceRuleForm } from '../types';
|
|
|
|
|
|
const props = defineProps<{
|
|
|
+ isCreate: boolean;
|
|
|
+ initData?: ApprovalNodeInstanceRuleForm;
|
|
|
orderList?: number[];
|
|
|
}>();
|
|
|
|
|
|
@@ -37,70 +35,32 @@
|
|
|
}>();
|
|
|
|
|
|
const basicDialogRef = ref<InstanceType<typeof BasicDialog>>();
|
|
|
- const basicFormRef = ref<InstanceType<typeof BasicForm>>();
|
|
|
- const { ruleFormConfig, ruleFormData, formRules, cloneRuleFormData, beforeRouteLeave } =
|
|
|
- useFormConfigHook<ApprovalNodeInstanceRuleForm>(
|
|
|
- APPROVAL_NODE_FORM_CONFIG,
|
|
|
- APPROVAL_NODE_FORM_DATA,
|
|
|
- APPROVAL_NODE_FORM_RULES,
|
|
|
- );
|
|
|
+ const approvalNodeFormRef = ref<InstanceType<typeof ApprovalNodeCreateForm>>();
|
|
|
|
|
|
- const dialogTitle = ref();
|
|
|
+ const dialogTitle = computed(() => (props.isCreate ? '添加' : '编辑'));
|
|
|
const formLoading = ref(false);
|
|
|
- const orderCache = ref();
|
|
|
-
|
|
|
- function initForm(isCreate: boolean, initData?: ApprovalNodeInstanceRuleForm) {
|
|
|
- ruleFormData.approvalTemplateId = initData?.approvalTemplateId;
|
|
|
- if (isCreate) {
|
|
|
- dialogTitle.value = '添加';
|
|
|
- } else {
|
|
|
- dialogTitle.value = '编辑';
|
|
|
- }
|
|
|
- if (!initData) return;
|
|
|
- refreshFromData();
|
|
|
- ruleFormData.id = initData.id;
|
|
|
- ruleFormData.approvalOrder = initData.approvalOrder;
|
|
|
- ruleFormData.approvalType = initData.approvalType;
|
|
|
- ruleFormData.approverType = initData.approverType;
|
|
|
- ruleFormData.nodeDescription = initData.nodeDescription;
|
|
|
-
|
|
|
- orderCache.value = initData.approvalOrder;
|
|
|
-
|
|
|
- // console.log(ruleFormData, initData);
|
|
|
- // cloneRuleFormData();
|
|
|
- // beforeRouteLeave();
|
|
|
- }
|
|
|
+ const formOpened = ref(false);
|
|
|
|
|
|
const openDialog = () => {
|
|
|
basicDialogRef.value?.openDialog();
|
|
|
+ formOpened.value = true;
|
|
|
};
|
|
|
- const handleSumbit = async () => {
|
|
|
- const validate = await basicFormRef.value?.validateForm();
|
|
|
- if (!validate) return;
|
|
|
- console.log(props.orderList);
|
|
|
- if (
|
|
|
- orderCache.value !== ruleFormData.approvalOrder! &&
|
|
|
- props.orderList &&
|
|
|
- props.orderList.includes(ruleFormData.approvalOrder!)
|
|
|
- ) {
|
|
|
- ElMessage.error('该顺序已存在,请重新输入');
|
|
|
- return;
|
|
|
- }
|
|
|
- // 提交表单接口
|
|
|
- try {
|
|
|
- await addApprovalNodeInstance(ruleFormData);
|
|
|
- emits('success');
|
|
|
- orderCache.value = undefined;
|
|
|
- basicDialogRef.value?.closeDialog();
|
|
|
- } catch (e) {
|
|
|
- console.log(e);
|
|
|
- }
|
|
|
+ const handleSumbit = () => {
|
|
|
+ approvalNodeFormRef.value?.onSumbit();
|
|
|
};
|
|
|
- const refreshFromData = () => {
|
|
|
- basicFormRef.value?.clearValidate();
|
|
|
+
|
|
|
+ const handleSuccess = () => {
|
|
|
+ emits('success');
|
|
|
+ handleClose();
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleClose = () => {
|
|
|
+ basicDialogRef.value?.closeDialog();
|
|
|
+ formOpened.value = false;
|
|
|
};
|
|
|
+ const refreshFromData = () => {};
|
|
|
+
|
|
|
defineExpose({
|
|
|
- initForm,
|
|
|
openDialog,
|
|
|
});
|
|
|
</script>
|