From 0f147ec952404aca169530ab78e0e44388ad3156 Mon Sep 17 00:00:00 2001
From: weicw <594098497@qq.com>
Date: Sun, 1 Nov 2026 15:59:14 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=B5=81=E7=A8=8B=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E9=A1=B5=E5=8E=BB=E6=8E=89=E6=8F=90=E4=BA=A4=E7=8E=AF?=
=?UTF-8?q?=E8=8A=82=E5=BC=80=E5=85=B3=EF=BC=8C=E9=99=84=E4=BB=B6=E5=8F=AA?=
=?UTF-8?q?=E6=8C=89=E8=8A=82=E7=82=B9=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/approval/flow/constants.ts | 11 +---
src/views/approval/flow/index.vue | 82 ++++------------------------
2 files changed, 11 insertions(+), 82 deletions(-)
diff --git a/src/views/approval/flow/constants.ts b/src/views/approval/flow/constants.ts
index 8ca14d5..b8758ae 100644
--- a/src/views/approval/flow/constants.ts
+++ b/src/views/approval/flow/constants.ts
@@ -9,15 +9,6 @@ export const NODE_TYPE_OPTIONS = [
{ value: 'ARCHIVE', label: '归档' }
];
-/** 提交环节:链首只读节点,不在可添加类型里 */
-export const NODE_SUBMIT = 'SUBMIT';
-
-/** 节点类型显示用(比可选项多一个提交环节) */
-export const NODE_TYPE_LABELS = [
- ...NODE_TYPE_OPTIONS,
- { value: NODE_SUBMIT, label: '提交' }
-];
-
/** 需要固定组织编码的解析器 */
export const ORG_RESOLVERS = ['orgLeaderByCode', 'orgDeputyByCode'];
@@ -26,6 +17,6 @@ export const WRITABLE_TYPES = ['APPROVE', 'COUNTERSIGN', 'CONFIRM'];
/** 节点类型显示名 */
export function nodeTypeLabel(type?: string) {
- const item = NODE_TYPE_LABELS.find((option) => option.value === type);
+ const item = NODE_TYPE_OPTIONS.find((option) => option.value === type);
return item ? item.label : type || '';
}
diff --git a/src/views/approval/flow/index.vue b/src/views/approval/flow/index.vue
index 60f0658..71c315b 100644
--- a/src/views/approval/flow/index.vue
+++ b/src/views/approval/flow/index.vue
@@ -61,19 +61,6 @@
-
-
-
- 「跟随代码」沿用单据实现里声明的附件要求;选定后本环节作为链首只读节点发布,不产生待办。
-
-
([]);
- /* 提交环节:FOLLOW 沿用代码声明,ON/OFF 会以链首 SUBMIT 节点发布(ADR 0016) */
- const submitMode = ref('FOLLOW');
-
- /* 加载一条节点链:链首 SUBMIT 拆成独立的提交环节开关 */
- const setChain = (chain?: ApprovalFlowNode[]) => {
- const list = chain || [];
- const head = list.length && list[0].type === 'SUBMIT' ? list[0] : null;
- submitMode.value = head
- ? head.attachmentRequired
- ? 'ON'
- : 'OFF'
- : 'FOLLOW';
- nodes.value = list.filter((node) => node.type !== 'SUBMIT');
- editorRevision.value = editorRevision.value + 1;
- };
-
- /* 发布时拼回完整链:提交环节固定在最前 */
- const buildChain = () => {
- if (submitMode.value === 'FOLLOW') {
- return nodes.value;
- }
- return [
- {
- key: 'submit',
- type: 'SUBMIT',
- name: '提交',
- attachmentRequired: submitMode.value === 'ON'
- },
- ...nodes.value
- ];
+ /* 深拷贝节点:编辑区不能直接改列表里的对象 */
+ const cloneNodes = (nodes?: ApprovalFlowNode[]) => {
+ return JSON.parse(JSON.stringify(nodes || [])) as ApprovalFlowNode[];
};
/* 加载编辑区:整链替换时递增 revision,强制节点卡片重新初始化 */
const applyFlow = (flow: ApprovalFlow) => {
current.value = flow;
flowCode.value = flow.flowCode;
- setChain(flow.nodes);
+ nodes.value = cloneNodes(flow.nodes);
+ editorRevision.value = editorRevision.value + 1;
};
const refreshFlows = (keepCode?: string) => {
@@ -275,7 +236,8 @@
okText: '载入',
cancelText: '取消',
onOk: () => {
- setChain(current.value?.factoryNodes);
+ nodes.value = cloneNodes(current.value?.factoryNodes);
+ editorRevision.value = editorRevision.value + 1;
}
});
};
@@ -298,7 +260,8 @@
};
const loadVersion = (item: ApprovalFlowVersion) => {
- setChain(item.nodes);
+ nodes.value = cloneNodes(item.nodes);
+ editorRevision.value = editorRevision.value + 1;
historyVisible.value = false;
message.info('已载入 v' + item.version + ',确认后点「保存并发布」');
};
@@ -321,7 +284,7 @@
saving.value = true;
return publishFlowConfig({
flowCode: current.value!.flowCode,
- nodes: buildChain()
+ nodes: nodes.value
})
.then((data) => {
saving.value = false;
@@ -386,31 +349,6 @@
font-weight: 400;
}
- .submit-stage {
- margin-bottom: 12px;
- padding: 12px;
- background: rgba(0, 0, 0, 0.02);
- border: 1px dashed rgba(0, 0, 0, 0.12);
- border-radius: 6px;
- }
-
- .submit-stage-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- }
-
- .submit-stage-title {
- color: rgba(0, 0, 0, 0.85);
- font-weight: 500;
- }
-
- .submit-stage-tip {
- margin-top: 6px;
- color: rgba(0, 0, 0, 0.45);
- font-size: 12px;
- }
-
.flow-add {
margin-bottom: 12px;
}