From ee49fbdcc07cfd784876762c76ab00066ba8c9e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Thu, 18 Jun 2026 13:49:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=90=88=E5=90=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B5=E9=9D=A2=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=9A=E9=A1=B5=E9=9D=A2=E5=90=88=E5=90=8C=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增crm/contract/selectConfig页面,支持本地配置可选合同列表,区分手动/接口同步来源 2. 优化ContractSelect组件,新增上次选中合同置顶、本地存储选中记录功能 3. 为合卷、分条、退火计划、钢卷编辑页面添加合同必填校验与自动关联逻辑 4. 移除各业务页面冗余的合同关系手动调用代码,统一关联逻辑 --- .../KLPService/ContractSelect/index.vue | 17 +- .../views/crm/contract/selectConfig/index.vue | 341 ++++++++++++++++++ klp-ui/src/views/wms/anneal/plan/ctrl.vue | 20 +- klp-ui/src/views/wms/coil/merge.vue | 18 +- .../src/views/wms/coil/panels/stepSplit.vue | 11 +- klp-ui/src/views/wms/coil/split.vue | 30 +- klp-ui/src/views/wms/coil/typing.vue | 18 +- 7 files changed, 392 insertions(+), 63 deletions(-) create mode 100644 klp-ui/src/views/crm/contract/selectConfig/index.vue diff --git a/klp-ui/src/components/KLPService/ContractSelect/index.vue b/klp-ui/src/components/KLPService/ContractSelect/index.vue index 8c5b26dc..9f7781f1 100644 --- a/klp-ui/src/components/KLPService/ContractSelect/index.vue +++ b/klp-ui/src/components/KLPService/ContractSelect/index.vue @@ -134,12 +134,14 @@ export default { }, set(val) { this.$emit('input', val); + if (val) { + localStorage.setItem('lastSelectedContractId', val); + } } } }, mounted() { if (this.mode == "today") { - // 从localstorage中获取合同列表 this.loadFromLocalStorage(); } else { this.loadContractList(); @@ -197,10 +199,23 @@ export default { this.contractList = this.contractList.filter((item, index, self) => index === self.findIndex(t => t.orderId === item.orderId) ); + // 上一次选择的合同放在列表第一位 + this.sortLastSelectedToFirst(); // 保存到localStorage this.saveToLocalStorage(); } }, + + // 将上一次选择的合同排到列表第一位 + sortLastSelectedToFirst() { + const lastId = localStorage.getItem('lastSelectedContractId'); + if (!lastId) return; + const index = this.contractList.findIndex(item => String(item.orderId) === String(lastId)); + if (index > 0) { + const [item] = this.contractList.splice(index, 1); + this.contractList.unshift(item); + } + }, // 打开选择弹窗 async openSelectDialog() { this.dialogVisible = true; diff --git a/klp-ui/src/views/crm/contract/selectConfig/index.vue b/klp-ui/src/views/crm/contract/selectConfig/index.vue new file mode 100644 index 00000000..98836bd6 --- /dev/null +++ b/klp-ui/src/views/crm/contract/selectConfig/index.vue @@ -0,0 +1,341 @@ + + + + 可选合同配置 + + + 已配置 + {{ contractList.length }} + + + 手动添加 + {{contractList.filter(i => i.isManual).length}} + + + 接口同步 + {{contractList.filter(i => !i.isManual).length}} + + + + + + + + + + 暂无已配置合同 + 切换至"所有合同"标签页添加合同 + + + + + + + + + + {{ scope.row.deliveryDate || '-' }} + + + + + + + {{ scope.row.remark || '-' }} + + + + + + 手动 + 接口 + + + + + + 移除 + + + + + + + + + + + + + + + + 暂无合同数据 + + + + + + + + + + {{ scope.row.deliveryDate || '-' }} + + + + + + + {{ scope.row.remark || '-' }} + + + + + + 已添加 + 未添加 + + + + + + 添加 + + + 移除 + + + + + + + + + + + + + + + diff --git a/klp-ui/src/views/wms/anneal/plan/ctrl.vue b/klp-ui/src/views/wms/anneal/plan/ctrl.vue index 5a0c7728..eeaa9bd6 100644 --- a/klp-ui/src/views/wms/anneal/plan/ctrl.vue +++ b/klp-ui/src/views/wms/anneal/plan/ctrl.vue @@ -159,7 +159,7 @@ - 请为每条钢卷分配逻辑库区去向,未分配将无法完成。 + 请为每条钢卷分配逻辑库区去向和关联合同,未分配将无法完成。 @@ -170,6 +170,11 @@ + + + + +
暂无已配置合同
暂无合同数据