|
|
@@ -49,7 +49,8 @@
|
|
|
style="height: 100%"
|
|
|
>
|
|
|
<template #operation="{ record }">
|
|
|
- <a style="color: #2d74e7" @click="editStep(record)">编辑</a>
|
|
|
+ <a style="color: #2d74e7" @click="editStep(record)" v-if="record.xh !== 1">编辑</a>
|
|
|
+ <a style="color: #9b9c9e" v-else>编辑</a>
|
|
|
</template>
|
|
|
</a-table>
|
|
|
</div>
|
|
|
@@ -85,6 +86,8 @@ import { BasicForm, useForm } from '/@/components/Form/index';
|
|
|
import { accountFormSchema, accountFormSchema2, busType, stepColumns } from './configData';
|
|
|
import { useMessage } from '/@/hooks/web/useMessage';
|
|
|
import AddStepForm from './addStepForm.vue';
|
|
|
+import { getBuildUUID } from '/@/utils/uuid';
|
|
|
+import { addFlowInfoAll } from '/@/api/resource/examine';
|
|
|
interface StepInfo {
|
|
|
xh: number;
|
|
|
name: string;
|
|
|
@@ -94,8 +97,28 @@ interface StepInfo {
|
|
|
}
|
|
|
interface FormState {
|
|
|
type: string;
|
|
|
+ name: string;
|
|
|
steps: StepInfo[];
|
|
|
}
|
|
|
+interface FlowNode {
|
|
|
+ flowid: string; //流程id
|
|
|
+ id: string; //流程步骤id
|
|
|
+ nodename: string; //结点名称
|
|
|
+ prenodeid: string; //上一个结点id
|
|
|
+ nextnodeid: string; //下一个结点id
|
|
|
+ nodediscription: string; //结点描述
|
|
|
+ model: string; //审核模式
|
|
|
+ depts: string; //审核部门
|
|
|
+}
|
|
|
+
|
|
|
+interface FlowNodePerson {
|
|
|
+ flownodeid: string; //流程结点id
|
|
|
+ id: string; //审核id
|
|
|
+ userid: string; //审核人id
|
|
|
+ preuserid: string; //上一个审核人id
|
|
|
+ nextuserid: string; //下一个审核人id
|
|
|
+ nodetype: string; //结点类型
|
|
|
+}
|
|
|
export default defineComponent({
|
|
|
name: 'AccountModal',
|
|
|
components: {
|
|
|
@@ -110,20 +133,22 @@ export default defineComponent({
|
|
|
const isUpdate = ref(true);
|
|
|
const rowId = ref('');
|
|
|
const postData = ref(null);
|
|
|
- const formState: UnwrapRef<FormState> = reactive({
|
|
|
+ const formState = reactive({
|
|
|
type: '',
|
|
|
- name:'',
|
|
|
+ name: '',
|
|
|
steps: ref([{ xh: 1, name: '', model: 'update', dept: [], user: [] }]),
|
|
|
});
|
|
|
+
|
|
|
const rules = {
|
|
|
type: [{ required: true, message: '请选择业务类型', trigger: 'change' }],
|
|
|
steps: [{ required: true, message: '请配置审核步骤', trigger: 'change', type: 'array' }],
|
|
|
};
|
|
|
const dicBusiness = busType;
|
|
|
const pColumns = stepColumns;
|
|
|
- const currStep = ref(null);
|
|
|
+ const currStep = ref();
|
|
|
const addStepForm = ref(null);
|
|
|
const { createMessage } = useMessage();
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
//判断当前类型是否新增
|
|
|
});
|
|
|
@@ -140,8 +165,8 @@ export default defineComponent({
|
|
|
await resetFields();
|
|
|
setModalProps({ confirmLoading: false });
|
|
|
isUpdate.value = !!data?.isUpdate;
|
|
|
- postData.value = data?.record ? data?.record : null;
|
|
|
if (unref(isUpdate)) {
|
|
|
+ postData.value = data?.record ? data?.record : null;
|
|
|
rowId.value = data.record.id;
|
|
|
setFieldsValue(data.record);
|
|
|
}
|
|
|
@@ -159,7 +184,7 @@ export default defineComponent({
|
|
|
try {
|
|
|
//校验当前界面是否数据完整
|
|
|
const flag = await addStepForm.value.validateForm();
|
|
|
- if(!flag){
|
|
|
+ if (!flag) {
|
|
|
return createMessage.warning('请填写必填数据');
|
|
|
}
|
|
|
formRef.value
|
|
|
@@ -243,34 +268,153 @@ export default defineComponent({
|
|
|
if (obj) formState.steps[0].name = obj.label;
|
|
|
//console.log('业务类型改变',value,obj)
|
|
|
currStep.value = formState.steps[0];
|
|
|
- if (obj) formState.name = obj.label
|
|
|
+ if (obj) formState.name = obj.label;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 新增流程
|
|
|
*/
|
|
|
- const addProcess = (formData) => {
|
|
|
- console.log('新增流程数据', formData);
|
|
|
- closeModal();
|
|
|
- emit('success');
|
|
|
- createMessage.success(unref(isUpdate) ? '编辑成功' : '新增成功');
|
|
|
+ const addProcess = async (fdata) => {
|
|
|
+ const processInfo = formDataHandle(fdata) as any;
|
|
|
+ console.log('提交数据', processInfo, JSON.stringify(processInfo));
|
|
|
+ // const formData = new FormData();
|
|
|
+ // formData.append("flowInfo",processInfo.flowInfo)
|
|
|
+ // formData.append("flowNode",processInfo.flowNode);
|
|
|
+ // formData.append("flowNodePerson",processInfo.flowNodePerson);
|
|
|
+ const res = (await addFlowInfoAll(processInfo)) as any;
|
|
|
+ if (res && res.resp_code === 0) {
|
|
|
+ closeModal();
|
|
|
+ emit('success');
|
|
|
+ createMessage.success(unref(isUpdate) ? '编辑成功' : '新增成功');
|
|
|
+ //清理数据
|
|
|
+ clearFormData()
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ createMessage.error('数据提交失败!失败原因:'+res.resp_msg)
|
|
|
+ }
|
|
|
+ };
|
|
|
+ /**
|
|
|
+ * 清空数据
|
|
|
+ */
|
|
|
+ const clearFormData = () => {
|
|
|
+ resetForm()
|
|
|
+ // formState = {
|
|
|
+ // type: '',
|
|
|
+ // name: '',
|
|
|
+ // steps: [{ xh: 1, name: '', model: 'update', dept: [], user: [] }],
|
|
|
+ // };
|
|
|
+ formState.type = ''
|
|
|
+ formState.name = ''
|
|
|
+ formState.steps = [{ xh: 1, name: '', model: 'update', dept: [], user: [] }]
|
|
|
+ currStep.value = null;
|
|
|
+ (addStepForm.value as any)?.clearFormData()
|
|
|
};
|
|
|
|
|
|
+ /**
|
|
|
+ * 生成提交的数据
|
|
|
+ */
|
|
|
const formDataHandle = (formData) => {
|
|
|
+ //const uuid = buildUUID()
|
|
|
+ const flowId = getBuildUUID(); //生成流程id
|
|
|
//流程数据
|
|
|
let flowInfo = {
|
|
|
- flowdiscription:'',
|
|
|
- flowname:formData.name,
|
|
|
- }
|
|
|
+ flowdiscription: '',
|
|
|
+ flowname: formData.name,
|
|
|
+ id: flowId,
|
|
|
+ };
|
|
|
+ console.log('流程信息', flowInfo);
|
|
|
+ //排除第一个
|
|
|
+ const steps = formData.steps.value.filter((step) => step.xh !== 1);
|
|
|
+ //生成步骤结点id
|
|
|
+ steps.forEach((item) => {
|
|
|
+ item['id'] = getBuildUUID();
|
|
|
+ });
|
|
|
+ console.log('新增步骤', steps);
|
|
|
//流程结点数据
|
|
|
- let flowNode = []
|
|
|
+ let flowNode: Array<FlowNode> = [];
|
|
|
//审核人数据
|
|
|
- let flowNodePerson = []
|
|
|
- //不加入第一个结点
|
|
|
- for(let i = 1; i < formData.steps.length; i++){
|
|
|
-
|
|
|
+ let flowNodePerson: Array<FlowNodePerson> = [];
|
|
|
+ //生成流程结点数据
|
|
|
+ for (let i = 0; i < steps.length; i++) {
|
|
|
+ flowNode.push({
|
|
|
+ flowid: flowId,
|
|
|
+ id: steps[i].id,
|
|
|
+ nodename: steps[i].name, //结点名称
|
|
|
+ prenodeid: i === 0 ? '' : steps[i - 1].id, //上一个结点id
|
|
|
+ nextnodeid: i < steps.length - 1 ? steps[i + 1].id : '', //下一个结点id
|
|
|
+ nodediscription: steps[i].name, //结点描述
|
|
|
+ model: steps[i].model,
|
|
|
+ depts: steps[i].dept.toString(),
|
|
|
+ });
|
|
|
}
|
|
|
- }
|
|
|
+ //生成审核人id
|
|
|
+ steps.forEach((item) => {
|
|
|
+ item.userList.forEach((user) => {
|
|
|
+ user['id'] = getBuildUUID();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ console.log('生成审核人id', steps);
|
|
|
+ //生成审核数据
|
|
|
+ for (let i = 0; i < steps.length; i++) {
|
|
|
+ const step = steps[i];
|
|
|
+ for (let j = 0; j < step.userList.length; j++) {
|
|
|
+ let preuserid = ''; //上一个审核人id
|
|
|
+ let nextuserid = ''; //下一个审核人id
|
|
|
+ //model 1:逐级 2:并行
|
|
|
+ //逐级审核获取前一个审核人和后一个审核人
|
|
|
+ if (step.model === '1') {
|
|
|
+ //步骤结点的第一个审核人
|
|
|
+ if (j === 0) {
|
|
|
+ ////第一个审核步骤,第一个审核人
|
|
|
+ // if (i === 0){
|
|
|
+ // preuserid = ''; //此时第一个审核人没有上一个审核人
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // //不是第一个审核步骤,不是第一个审核人,则选择上一个结点的最后一个审核人
|
|
|
+ // const userList = steps[i - 1].userList;
|
|
|
+ // preuserid = userList[userList.length - 1].userId;
|
|
|
+ // }
|
|
|
+ preuserid = '';
|
|
|
+ } else {
|
|
|
+ //步骤结点的非第一个审核人
|
|
|
+ preuserid = step.userList[j - 1].userId;
|
|
|
+ }
|
|
|
+ //步骤结点的最后一个审核人
|
|
|
+ if (j === step.userList.length - 1) {
|
|
|
+ //也是最后一个步骤结点
|
|
|
+ // if(i === (steps.length - 1)){
|
|
|
+ // nextuserid = '' //下一个审核人不存在
|
|
|
+ // }
|
|
|
+ // else{ //不是最后一个步骤结点
|
|
|
+ // nextuserid = steps[i + 1].userList[0].userId //下一个审核步骤结点的第一个审核人
|
|
|
+ // }
|
|
|
+ nextuserid = ''; //下一个审核人不存在
|
|
|
+ }
|
|
|
+ //不是步骤的最后一个审核人
|
|
|
+ else {
|
|
|
+ nextuserid = steps[i].userList[j + 1].userId; //下一个审核步骤结点的第一个审核人
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //model 1:逐级 2:并行
|
|
|
+ //并行审核获取前一个审核人和后一个审核人
|
|
|
+ if (step.model === '2') {
|
|
|
+ preuserid = '';
|
|
|
+ nextuserid = '';
|
|
|
+ }
|
|
|
+
|
|
|
+ const user = step.userList[j];
|
|
|
+ flowNodePerson.push({
|
|
|
+ flownodeid: step.id, //流程结点id
|
|
|
+ id: user.id, //审核id
|
|
|
+ userid: user.userId, //审核人id
|
|
|
+ preuserid: preuserid, //上一个审核人id
|
|
|
+ nextuserid: nextuserid, //下一个审核人id
|
|
|
+ nodetype: step.model, //结点类型
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { flowInfo, flowNode, flowNodePerson };
|
|
|
+ };
|
|
|
|
|
|
const resetForm = () => {
|
|
|
formRef.value.resetFields();
|
|
|
@@ -312,7 +456,8 @@ export default defineComponent({
|
|
|
reduceStep,
|
|
|
businessChange,
|
|
|
addProcess,
|
|
|
- formDataHandle
|
|
|
+ formDataHandle,
|
|
|
+ clearFormData,
|
|
|
};
|
|
|
},
|
|
|
});
|