From eab45a8706fd12a62daa5815d2bd116dbbab1916 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com>
Date: Thu, 11 Jun 2026 09:29:33 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=88=E5=90=8C=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=A1=A5=E5=85=A8=E4=BA=A4=E8=B4=A7=E6=97=A5?=
=?UTF-8?q?=E6=9C=9F=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 签订日期变更时自动计算交货日期(签约 + 1天 + 30天 → 按5日取整)
- 选择合同模板或点击「自动补全交货日期」时自动替换合同内容中的交货时间占位符
- 新增 DC01-H 材质选项
- 修正按钮文案「管理合同」→「管理合同模板」
---
.../components/ContractTemplateManager.vue | 2 +-
.../contract/components/ProductContent.vue | 1 +
klp-ui/src/views/crm/contract/index.vue | 29 +++++++++++++++++++
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/klp-ui/src/views/crm/contract/components/ContractTemplateManager.vue b/klp-ui/src/views/crm/contract/components/ContractTemplateManager.vue
index a08a3482..d7ce2919 100644
--- a/klp-ui/src/views/crm/contract/components/ContractTemplateManager.vue
+++ b/klp-ui/src/views/crm/contract/components/ContractTemplateManager.vue
@@ -8,7 +8,7 @@
>
{{ template.dictLabel }}
- 管理合同
+ 管理合同模板
diff --git a/klp-ui/src/views/crm/contract/components/ProductContent.vue b/klp-ui/src/views/crm/contract/components/ProductContent.vue
index ef981297..39f75ce0 100644
--- a/klp-ui/src/views/crm/contract/components/ProductContent.vue
+++ b/klp-ui/src/views/crm/contract/components/ProductContent.vue
@@ -158,6 +158,7 @@ export default {
{ label: 'SPCC', value: 'SPCC' },
{ label: 'DX51D+Z', value: 'DX51D+Z' },
{ label: 'DC01', value: 'DC01' },
+ { label: 'DC01-H', value: 'DC01-H' }
]
}
},
diff --git a/klp-ui/src/views/crm/contract/index.vue b/klp-ui/src/views/crm/contract/index.vue
index 059b4d28..dfa3ef02 100644
--- a/klp-ui/src/views/crm/contract/index.vue
+++ b/klp-ui/src/views/crm/contract/index.vue
@@ -97,6 +97,7 @@
+ 自动补全交货日期
@@ -186,6 +187,7 @@
import { delOrder, listOrderPackaging, updateOrder, getOrder, addOrder } from "@/api/crm/order";
import { getDicts, addData, updateData } from "@/api/system/dict/data";
import { listDeliveryWaybill } from "@/api/wms/deliveryWaybill";
+import dayjs from "dayjs";
import ContractList from "./components/ContractList.vue";
import ContractPreview from "./components/ContractPreview.vue";
import ContractTabs from "./components/ContractTabs.vue";
@@ -327,6 +329,21 @@ export default {
} catch (e) {
// ignore parse errors
}
+ },
+ 'form.signTime': function (newVal) {
+ if (!newVal) return;
+ const signDate = dayjs(newVal);
+ const minDate = signDate.add(1, 'day').add(30, 'day');
+ let day = minDate.date();
+ const daysInMonth = minDate.daysInMonth();
+ let targetDay = Math.ceil(day / 5) * 5;
+ let result;
+ if (targetDay > daysInMonth) {
+ result = minDate.add(1, 'month').date(5);
+ } else {
+ result = minDate.date(targetDay);
+ }
+ this.form.deliveryDate = result.format('YYYY-MM-DD');
}
},
methods: {
@@ -357,6 +374,18 @@ export default {
/** 处理合同模板选择 */
handleTemplateSelect(template) {
this.form.contractContent = template.dictValue;
+ this.fillContractDates();
+ },
+
+ /** 自动补全合同内容中的交货日期 */
+ fillContractDates() {
+ if (!this.form.signTime || !this.form.deliveryDate || !this.form.contractContent) return;
+ const startDate = dayjs(this.form.signTime).add(1, 'day').format('YYYY年MM月DD日');
+ const endDate = dayjs(this.form.deliveryDate).format('YYYY年MM月DD日');
+ this.form.contractContent = this.form.contractContent.replace(
+ /(交\(提\)货时间:)[^<]*/,
+ `$1自 ${startDate}起至 ${endDate}止`
+ );
},
/** 处理合同状态更新 */