diff --git a/src/store/modules/change/index.ts b/src/store/modules/change/index.ts index d1fa3f7..300881a 100644 --- a/src/store/modules/change/index.ts +++ b/src/store/modules/change/index.ts @@ -4,39 +4,15 @@ import { SetupStoreId } from '@/enum'; export const useChangeStore = defineStore(SetupStoreId.Change, () => { const stepsInfo = ref([]); - const flowInfo = ref([]); // 获取选中模板信息 const getStepsInfo = computed(() => stepsInfo.value); - // 获取审批链信息 - const getFlowInfo = computed(() => flowInfo.value); // 设置选中模板信息 function setStepsInfo(data: Api.Change.StepInfo[]) { stepsInfo.value = data; - setFlowInfo(data); - } - - // 设置审批链信息 - function setFlowInfo(data: Api.Change.StepInfo[]) { - const sortedSteps = [...data || []].sort((a, b) => a.step_order - b.step_order) - flowInfo.value = sortedSteps.map(step => { - return { - stepId: step.id, - name: step.name, - countersign: step.countersign, - selectedMember: step.members, - }; - }); - } - // 更新审批链信息 - function updateFlowInfo(data: Api.Change.FlowInfo[]) { - flowInfo.value = data; } return { getStepsInfo, setStepsInfo, - getFlowInfo, - updateFlowInfo, - flowInfo, } }); \ No newline at end of file diff --git a/src/views/my/initiateChange/index.vue b/src/views/my/initiateChange/index.vue index 8d7690f..410fa81 100644 --- a/src/views/my/initiateChange/index.vue +++ b/src/views/my/initiateChange/index.vue @@ -20,7 +20,7 @@ import Evaluation from "./modules/evaluation.vue"; import CloseConfirm from "./modules/closeConfirm.vue"; const changeStore = useChangeStore(); -const { getFlowInfo } = storeToRefs(changeStore); +const { getStepsInfo } = storeToRefs(changeStore); const themeStore = useThemeStore(); const route = useRoute(); @@ -150,8 +150,8 @@ const getAllFormData = () => { let pssrForm = pssrRef.value?.list; let allItems = pssrForm.flatMap((group:any) => group.items ?? []); let evaluationForm = evaluationRef.value?.list; - let flowList = getFlowInfo.value.map((item:any) => ({ - members: item.selectedMember.map((m:any) => ({ + let flowList = getStepsInfo.value.map((item:any) => ({ + members: item.members.map((m:any) => ({ user_id: m.user_id, org_id: m.org_id, org_name: m.org_name, diff --git a/src/views/my/initiateChange/modules/changeApply.vue b/src/views/my/initiateChange/modules/changeApply.vue index 3d6904e..d578e9a 100644 --- a/src/views/my/initiateChange/modules/changeApply.vue +++ b/src/views/my/initiateChange/modules/changeApply.vue @@ -820,7 +820,7 @@ defineExpose({form, questions, applyAiResult, generateLevel: useAiLevel}) align-items: center; } .scroll { - height: calc(100vh - 393px); + height: calc(100vh - 379px); overflow-y: auto; } \ No newline at end of file diff --git a/src/views/my/initiateChange/modules/changeTraining.vue b/src/views/my/initiateChange/modules/changeTraining.vue index ca3b463..0ea6ce4 100644 --- a/src/views/my/initiateChange/modules/changeTraining.vue +++ b/src/views/my/initiateChange/modules/changeTraining.vue @@ -115,7 +115,7 @@ defineExpose({form, onRegenerate}) \ No newline at end of file diff --git a/src/views/my/initiateChange/modules/evaluation.vue b/src/views/my/initiateChange/modules/evaluation.vue index 4cac01e..ec4cd29 100644 --- a/src/views/my/initiateChange/modules/evaluation.vue +++ b/src/views/my/initiateChange/modules/evaluation.vue @@ -302,7 +302,7 @@ defineExpose({list, onRegenerate}) \ No newline at end of file diff --git a/src/views/my/initiateChange/modules/footer.vue b/src/views/my/initiateChange/modules/footer.vue index 907e8c8..3035834 100644 --- a/src/views/my/initiateChange/modules/footer.vue +++ b/src/views/my/initiateChange/modules/footer.vue @@ -7,7 +7,7 @@ import { useChangeStore } from '@/store/modules/change'; import { useAiAnalysisApi } from '@/service/api/change'; const changeStore = useChangeStore(); -const { getStepsInfo, getFlowInfo } = storeToRefs(changeStore); +const { getStepsInfo } = storeToRefs(changeStore); const props = defineProps([ 'type', @@ -45,12 +45,13 @@ const regenerateTypes = ref>({ // 存储每个步骤选中的审核人 user_id const approvers = ref>({}) +const stepList = ref([]); const flowList = ref([]); // 审批链 const approvalFlowText = computed(() => { - if (!flowList.value || flowList.value.length === 0) return '暂无步骤' + if (!stepList.value || stepList.value.length === 0) return '暂无步骤' // 按 step_order 排序 - const sorted = [...flowList.value].sort((a, b) => a.step_order - b.step_order) + const sorted = [...stepList.value].sort((a, b) => a.step_order - b.step_order) return sorted.map(item => item.name).join(' → ') }) @@ -66,27 +67,36 @@ const openApprovalDrawer = () => { return window.$message?.warning('请先选择变更类型、变更等级、变更时限'); } } - flowList.value = getStepsInfo.value; + stepList.value = getStepsInfo.value; if(Object.keys(approvers.value).length === 0){ - flowList.value.forEach((item: any) => { - if (item.members && item.members.length > 0) { - // 优先选 is_sign=1 的成员 ,否则选第一个 - const defaultMembers = item.members - .filter((m: any) => m?.is_sign === 1) - .map((m: any) => m.user_id); - approvers.value[item.id] = defaultMembers.length > 0 ? defaultMembers : [item.members[0].user_id]; - } - }) + const result = Object.fromEntries( + stepList.value.map((step: any) => [step.id, step.members.map((m: any) => m.user_id)]) + ); + approvers.value = result; } approvalDrawerShow.value = true; } +// 数据转换 +const transformFlowInfo = (steps: any[]) => { + const sortedSteps = [...steps || []].sort((a, b) => a.step_order - b.step_order) + const result = sortedSteps.map(step => { + return { + stepId: step.id, + name: step.name, + countersign: step.countersign, + selectedMember: step.members, + }; + }); + return result; +} + // 审批链 const approvalChain = computed(() => { - let template = getFlowInfo.value; - console.log(template); + let template = getStepsInfo.value; if (!template || template.length === 0) return '暂无审批步骤' - const parts = template.map((step: any) => { + flowList.value = transformFlowInfo(template); + const parts = flowList.value.map((step: any) => { // 根据 countersign 决定显示名称 const displayName = step.name const members = step.selectedMember @@ -158,23 +168,17 @@ function matchApprovers(steps: any[], mapping: Record) { for (const [stepId, usersId] of Object.entries(mapping)) { const step = steps.find(s => s.id === Number(stepId)); if (step) { - const members = props.members.filter((m: any) => usersId.includes(m.user_id)); - if (members.length > 0) { - result.push({ - countersign: step.countersign, - stepId: step.id, - name: step.name, - selectedMember: members - }); - } + const members = props.members.filter((m: any) => usersId.includes(m.user_id)); + step.members = members || []; // 更新 step 的 members 属性 + result.push(step); } } return result; } // 完成设置 const finishApprover = async () => { - const matched = matchApprovers(flowList.value, approvers.value); - changeStore.updateFlowInfo(matched); + const matched = matchApprovers(stepList.value, approvers.value); + changeStore.setStepsInfo(matched); window.$message?.success("审批流程设置完成"); approvalDrawerShow.value = false; } @@ -185,9 +189,9 @@ defineExpose({clearApprovers, setRegenerateLoading})

审批链:{{ approvalFlowText }}。专业会签人由申请表「涉及专业」勾选自动增减,可在此调整人选;重要变更自动追加安全审查与分管领导终批。

-
+
{{Number(index)+1}} {{item.name}} {{item.countersign ? '(专业会签)' : ''}}
- 完成设置 + 完成设置
diff --git a/src/views/my/initiateChange/modules/pssr.vue b/src/views/my/initiateChange/modules/pssr.vue index 1bcabfc..ae6a304 100644 --- a/src/views/my/initiateChange/modules/pssr.vue +++ b/src/views/my/initiateChange/modules/pssr.vue @@ -253,7 +253,7 @@ defineExpose({list, onRegenerate}) \ No newline at end of file diff --git a/src/views/my/initiateChange/modules/riskAnalysis.vue b/src/views/my/initiateChange/modules/riskAnalysis.vue index 2a9c99f..06b5890 100644 --- a/src/views/my/initiateChange/modules/riskAnalysis.vue +++ b/src/views/my/initiateChange/modules/riskAnalysis.vue @@ -479,7 +479,7 @@ onMounted(() => { \ No newline at end of file