From 37dc2136052186b93b54f1f2c6f4a0813ba04619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Mon, 13 Apr 2026 16:23:40 +0800 Subject: [PATCH 01/57] =?UTF-8?q?feat(=E6=8A=A5=E8=A1=A8):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E6=9D=A1=E7=BA=BF=E7=BB=9F=E8=AE=A1=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=B9=B6=E6=89=A9=E5=B1=95=E5=90=88=E5=90=8C=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加分条线专用的统计组件SplitSummary,用于展示分条处理的产出与消耗对比数据 在多个报表模板中集成该组件并添加钢卷高亮功能 扩展CrmOrder相关类的合同信息字段 --- .../java/com/klp/crm/domain/CrmOrder.java | 105 +++++++++++++++ .../com/klp/crm/domain/bo/CrmOrderBo.java | 105 +++++++++++++++ .../com/klp/crm/domain/vo/CrmOrderVo.java | 126 ++++++++++++++++++ klp-ui/src/views/micro/zinc/index.vue | 5 + .../components/summary/splitSummary.vue | 53 ++++++++ klp-ui/src/views/wms/report/js/calc.js | 67 ++++++++++ .../wms/report/template/comprehensive.vue | 32 ++++- klp-ui/src/views/wms/report/template/day.vue | 5 + .../src/views/wms/report/template/month.vue | 32 ++++- klp-ui/src/views/wms/report/template/team.vue | 32 ++++- klp-ui/src/views/wms/report/template/year.vue | 36 ++++- 11 files changed, 582 insertions(+), 16 deletions(-) create mode 100644 klp-ui/src/views/micro/zinc/index.vue create mode 100644 klp-ui/src/views/wms/report/components/summary/splitSummary.vue diff --git a/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java b/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java index aab3c578..c9484cee 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java @@ -85,6 +85,111 @@ public class CrmOrder extends BaseEntity { */ private String contractCode; + /** + * 合同名称 + */ + private String contractName; + + /** + * 供方 + */ + private String supplier; + + /** + * 需方 + */ + private String customer; + + /** + * 签订时间 + */ + private Date signTime; + + /** + * 签订地点 + */ + private String signLocation; + + /** + * 产品内容 + */ + private String productContent; + + /** + * 合同内容 + */ + private String contractContent; + + /** + * 供方地址 + */ + private String supplierAddress; + + /** + * 供方电话 + */ + private String supplierPhone; + + /** + * 供方开户行 + */ + private String supplierBank; + + /** + * 供方账号 + */ + private String supplierAccount; + + /** + * 供方税号 + */ + private String supplierTaxNo; + + /** + * 需方地址 + */ + private String customerAddress; + + /** + * 需方电话 + */ + private String customerPhone; + + /** + * 需方开户行 + */ + private String customerBank; + + /** + * 需方账号 + */ + private String customerAccount; + + /** + * 需方税号 + */ + private String customerTaxNo; + + /** + * 技术附件 + */ + private String techAnnex; + + /** + * 商务附件 + */ + private String businessAnnex; + + /** + * 排产函 + */ + private String productionSchedule; + + /** + * 合同状态 0=草稿 1=生效 2=作废 3=已完成 + */ + private Long status; + /** * 关联合同ID(wms_contract.contract_id) */ diff --git a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java index 98311cc9..36ef9668 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java @@ -95,6 +95,111 @@ public class CrmOrderBo extends BaseEntity { */ private String contractCode; + /** + * 合同名称 + */ + private String contractName; + + /** + * 供方 + */ + private String supplier; + + /** + * 需方 + */ + private String customer; + + /** + * 签订时间 + */ + private Date signTime; + + /** + * 签订地点 + */ + private String signLocation; + + /** + * 产品内容 + */ + private String productContent; + + /** + * 合同内容 + */ + private String contractContent; + + /** + * 供方地址 + */ + private String supplierAddress; + + /** + * 供方电话 + */ + private String supplierPhone; + + /** + * 供方开户行 + */ + private String supplierBank; + + /** + * 供方账号 + */ + private String supplierAccount; + + /** + * 供方税号 + */ + private String supplierTaxNo; + + /** + * 需方地址 + */ + private String customerAddress; + + /** + * 需方电话 + */ + private String customerPhone; + + /** + * 需方开户行 + */ + private String customerBank; + + /** + * 需方账号 + */ + private String customerAccount; + + /** + * 需方税号 + */ + private String customerTaxNo; + + /** + * 技术附件 + */ + private String techAnnex; + + /** + * 商务附件 + */ + private String businessAnnex; + + /** + * 排产函 + */ + private String productionSchedule; + + /** + * 合同状态 0=草稿 1=生效 2=作废 3=已完成 + */ + private Long status; + /** * 关联合同ID(wms_contract.contract_id) */ diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java index 6904667e..3502e00b 100644 --- a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java +++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java @@ -114,6 +114,132 @@ public class CrmOrderVo extends BaseEntity { @ExcelProperty(value = "合同号") private String contractCode; + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 供方 + */ + @ExcelProperty(value = "供方") + private String supplier; + + /** + * 需方 + */ + @ExcelProperty(value = "需方") + private String customer; + + /** + * 签订时间 + */ + @ExcelProperty(value = "签订时间") + private Date signTime; + + /** + * 签订地点 + */ + @ExcelProperty(value = "签订地点") + private String signLocation; + + /** + * 产品内容 + */ + @ExcelProperty(value = "产品内容") + private String productContent; + + /** + * 合同内容 + */ + @ExcelProperty(value = "合同内容") + private String contractContent; + + /** + * 供方地址 + */ + @ExcelProperty(value = "供方地址") + private String supplierAddress; + + /** + * 供方电话 + */ + @ExcelProperty(value = "供方电话") + private String supplierPhone; + + /** + * 供方开户行 + */ + @ExcelProperty(value = "供方开户行") + private String supplierBank; + + /** + * 供方账号 + */ + @ExcelProperty(value = "供方账号") + private String supplierAccount; + + /** + * 供方税号 + */ + @ExcelProperty(value = "供方税号") + private String supplierTaxNo; + + /** + * 需方地址 + */ + @ExcelProperty(value = "需方地址") + private String customerAddress; + + /** + * 需方电话 + */ + @ExcelProperty(value = "需方电话") + private String customerPhone; + + /** + * 需方开户行 + */ + @ExcelProperty(value = "需方开户行") + private String customerBank; + + /** + * 需方账号 + */ + @ExcelProperty(value = "需方账号") + private String customerAccount; + + /** + * 需方税号 + */ + @ExcelProperty(value = "需方税号") + private String customerTaxNo; + + /** + * 技术附件 + */ + @ExcelProperty(value = "技术附件") + private String techAnnex; + + /** + * 商务附件 + */ + @ExcelProperty(value = "商务附件") + private String businessAnnex; + + /** + * 排产函 + */ + @ExcelProperty(value = "排产函") + private String productionSchedule; + + /** + * 合同状态 0=草稿 1=生效 2=作废 3=已完成 + */ + @ExcelProperty(value = "合同状态") + private Long status; + /** * 关联合同ID(wms_contract.contract_id) */ diff --git a/klp-ui/src/views/micro/zinc/index.vue b/klp-ui/src/views/micro/zinc/index.vue new file mode 100644 index 00000000..4d79ddc0 --- /dev/null +++ b/klp-ui/src/views/micro/zinc/index.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/klp-ui/src/views/wms/report/components/summary/splitSummary.vue b/klp-ui/src/views/wms/report/components/summary/splitSummary.vue new file mode 100644 index 00000000..36630242 --- /dev/null +++ b/klp-ui/src/views/wms/report/components/summary/splitSummary.vue @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/klp-ui/src/views/wms/report/js/calc.js b/klp-ui/src/views/wms/report/js/calc.js index 44805707..acef5176 100644 --- a/klp-ui/src/views/wms/report/js/calc.js +++ b/klp-ui/src/views/wms/report/js/calc.js @@ -229,9 +229,76 @@ const calcMSummary = (list, lossList) => { } } +// 处理分条信息的统计信息 +const calcSplitSummary = (originOutputlist, originLossList, commonCoilIds) => { + // 1. 将commonCoilIds中的coilId的卷从originOutputlist和originLossList中剔除 + const list = originOutputlist.filter(item => !commonCoilIds.includes(item.coilId)) + const lossList = originLossList.filter(item => !commonCoilIds.includes(item.coilId)) + // 总钢卷数量、总重、均重 + const outCount = list.length + const outTotalWeight = list.reduce((acc, cur) => acc + (parseFloat(cur.netWeight) || 0), 0) // 增加容错 + const outAvgWeight = outCount > 0 ? (outTotalWeight / outCount)?.toFixed(2) : 0 + + // 损失钢卷数量、总重、均重 + const lossCount = lossList.length + const lossTotalWeight = lossList.reduce((acc, cur) => acc + (parseFloat(cur.netWeight) || 0), 0) // 增加容错 + const lossAvgWeight = lossCount > 0 ? (lossTotalWeight / lossCount)?.toFixed(2) : 0 + // 合计数量、总重、均重 + const totalCount = outCount + lossCount + const totalWeight = parseFloat((outTotalWeight + lossTotalWeight).toFixed(2)) + const totalAvgWeight = totalCount > 0 ? (totalWeight / totalCount)?.toFixed(2) : 0 + + // 计算数量、总重、均重的插值 + const countDiff = Math.abs(outCount - lossCount) + const weightDiff = Math.abs(parseFloat((outTotalWeight - lossTotalWeight).toFixed(2))) + const avgWeightDiff = Math.abs(parseFloat((outAvgWeight - lossAvgWeight).toFixed(2))) + + // 成品比率 + const passRate = outCount > 0 && lossTotalWeight > 0 ? (outTotalWeight / lossTotalWeight) : 0 + // 损失比率 + const lossRate = totalCount > 0 ? (1 - passRate) : 0 + // 异常率,成品在warehouseId在'2019583656787259393', + // '2019583325311414274', + // '2019583429955104769', + // '2019583137616310273',这四个库中的占比 + const abStatus = ['O', 'C-', 'C+', 'C', 'D-', 'D+', 'D'] + const abRate = totalCount != 0 ? list.filter(item => { + // 质量状态为O, C- , C+, C, D-, D+, D的钢卷也属于异常 + return (item.warehouseId == '2019583656787259393' + || item.warehouseId == '2019583325311414274' + || item.warehouseId == '2019583429955104769' + || item.warehouseId == '2019583137616310273' + || abStatus.includes(item.qualityStatus) + ) + }).length / outCount : 0 + + // 正品率(1-异常率) + const passRate2 = totalCount != 0 ? (1 - abRate) : 0 + + return { + outCount, + outTotalWeight: outTotalWeight.toFixed(2), + outAvgWeight, + lossCount, + lossTotalWeight: lossTotalWeight.toFixed(2), + lossAvgWeight, + totalCount, + totalWeight: totalWeight.toFixed(2), + totalAvgWeight, + countDiff, + weightDiff, + avgWeightDiff, + passRate: (passRate * 100)?.toFixed(2) + '%', + lossRate: (lossRate * 100)?.toFixed(2) + '%', + abRate: (abRate * 100)?.toFixed(2) + '%' || 0, + passRate2: (passRate2 * 100)?.toFixed(2) + '%' || 0, + } +} + export { calcSummary, calcAbSummary, calcTeamSummary, calcMSummary, + calcSplitSummary } \ No newline at end of file diff --git a/klp-ui/src/views/wms/report/template/comprehensive.vue b/klp-ui/src/views/wms/report/template/comprehensive.vue index a1f9cc86..7b2f1aa4 100644 --- a/klp-ui/src/views/wms/report/template/comprehensive.vue +++ b/klp-ui/src/views/wms/report/template/comprehensive.vue @@ -100,14 +100,17 @@ }} + + + - + - + @@ -135,6 +138,7 @@ import WarehouseSelect from "@/components/KLPService/WarehouseSelect"; import { calcSummary, calcAbSummary, calcMSummary } from "@/views/wms/report/js/calc"; import ColumnsSetting from "@/views/wms/report/components/setting/columns.vue"; import CoilTable from "@/views/wms/report/components/coilTable/index.vue"; +import SplitSummary from "@/views/wms/report/components/summary/splitSummary.vue"; import { saveReportFile } from "@/views/wms/report/js/reportFile"; export default { @@ -148,6 +152,7 @@ export default { WarehouseSelect, ColumnsSetting, CoilTable, + SplitSummary, }, props: { actionTypes: { @@ -279,7 +284,28 @@ export default { }, mSummary() { return calcMSummary(this.list, this.lossList) - } + }, + // 找出list和lossList中id相同的卷 + commonCoilIds() { + if (this.productionLine !== '分条线') { + return [] + } + + // 获取list中的coilId集合 + const outputCoilIds = new Set(this.list.map(item => item.coilId)) + // 获取lossList中的coilId集合 + const lossCoilIds = new Set(this.lossList.map(item => item.coilId)) + + // 找出两个集合中相同的coilId + const commonIds = [] + outputCoilIds.forEach(id => { + if (lossCoilIds.has(id)) { + commonIds.push(id) + } + }) + + return commonIds + }, }, methods: { // 加载列设置 diff --git a/klp-ui/src/views/wms/report/template/day.vue b/klp-ui/src/views/wms/report/template/day.vue index 93815bf3..167453a4 100644 --- a/klp-ui/src/views/wms/report/template/day.vue +++ b/klp-ui/src/views/wms/report/template/day.vue @@ -97,6 +97,9 @@ }} + + + @@ -128,6 +131,7 @@ import WarehouseSelect from "@/components/KLPService/WarehouseSelect"; import { calcSummary, calcAbSummary, calcMSummary } from "@/views/wms/report/js/calc"; import ColumnsSetting from "@/views/wms/report/components/setting/columns.vue"; import CoilTable from "@/views/wms/report/components/coilTable/index.vue"; +import SplitSummary from "@/views/wms/report/components/summary/splitSummary.vue"; import { fetchLossList, fetchOutputList } from "@/views/wms/report/js/fetch"; import { saveReportFile } from "@/views/wms/report/js/reportFile"; @@ -143,6 +147,7 @@ export default { WarehouseSelect, ColumnsSetting, CoilTable, + SplitSummary, }, props: { actionTypes: { diff --git a/klp-ui/src/views/wms/report/template/month.vue b/klp-ui/src/views/wms/report/template/month.vue index 39ae5730..d50cfd32 100644 --- a/klp-ui/src/views/wms/report/template/month.vue +++ b/klp-ui/src/views/wms/report/template/month.vue @@ -97,14 +97,17 @@ }} + + + - + - + @@ -132,6 +135,7 @@ import WarehouseSelect from "@/components/KLPService/WarehouseSelect"; import { calcSummary, calcAbSummary, calcMSummary } from "@/views/wms/report/js/calc"; import ColumnsSetting from "@/views/wms/report/components/setting/columns.vue"; import CoilTable from "@/views/wms/report/components/coilTable/index.vue"; +import SplitSummary from "@/views/wms/report/components/summary/splitSummary.vue"; import { fetchLossList, fetchOutputList } from "@/views/wms/report/js/fetch"; import { saveReportFile } from "@/views/wms/report/js/reportFile"; @@ -146,6 +150,7 @@ export default { WarehouseSelect, ColumnsSetting, CoilTable, + SplitSummary, }, props: { actionTypes: { @@ -276,7 +281,28 @@ export default { }, mSummary() { return calcMSummary(this.list, this.lossList) - } + }, + // 找出list和lossList中id相同的卷 + commonCoilIds() { + if (this.productionLine !== '分条线') { + return [] + } + + // 获取list中的coilId集合 + const outputCoilIds = new Set(this.list.map(item => item.coilId)) + // 获取lossList中的coilId集合 + const lossCoilIds = new Set(this.lossList.map(item => item.coilId)) + + // 找出两个集合中相同的coilId + const commonIds = [] + outputCoilIds.forEach(id => { + if (lossCoilIds.has(id)) { + commonIds.push(id) + } + }) + + return commonIds + }, }, methods: { // 加载列设置 diff --git a/klp-ui/src/views/wms/report/template/team.vue b/klp-ui/src/views/wms/report/template/team.vue index a442b11c..b93ae699 100644 --- a/klp-ui/src/views/wms/report/template/team.vue +++ b/klp-ui/src/views/wms/report/template/team.vue @@ -106,6 +106,9 @@ }} + + + @@ -118,10 +121,10 @@ - + - + @@ -145,6 +148,7 @@ import WarehouseSelect from "@/components/KLPService/WarehouseSelect"; import { calcSummary, calcAbSummary, calcTeamSummary, calcMSummary } from "@/views/wms/report/js/calc"; import ColumnsSetting from "@/views/wms/report/components/setting/columns.vue"; import CoilTable from "@/views/wms/report/components/coilTable/index.vue"; +import SplitSummary from "@/views/wms/report/components/summary/splitSummary.vue"; import { fetchLossList, fetchOutputList } from "@/views/wms/report/js/fetch"; import { saveReportFile } from "@/views/wms/report/js/reportFile"; @@ -159,6 +163,7 @@ export default { WarehouseSelect, ColumnsSetting, CoilTable, + SplitSummary, }, props: { actionTypes: { @@ -273,7 +278,28 @@ export default { outWeight: formatWeight(outData.weight) }; }); - } + }, + // 找出list和lossList中id相同的卷 + commonCoilIds() { + if (this.productionLine !== '分条线') { + return []; + } + + // 获取list中的coilId集合 + const outputCoilIds = new Set(this.list.map(item => item.coilId)); + // 获取lossList中的coilId集合 + const lossCoilIds = new Set(this.lossList.map(item => item.coilId)); + + // 找出两个集合中相同的coilId + const commonIds = []; + outputCoilIds.forEach(id => { + if (lossCoilIds.has(id)) { + commonIds.push(id); + } + }); + + return commonIds; + }, }, methods: { // 加载列设置 diff --git a/klp-ui/src/views/wms/report/template/year.vue b/klp-ui/src/views/wms/report/template/year.vue index d23e35af..1f9c24f2 100644 --- a/klp-ui/src/views/wms/report/template/year.vue +++ b/klp-ui/src/views/wms/report/template/year.vue @@ -96,14 +96,17 @@ }} + + + - + - + @@ -118,10 +121,6 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/klp-ui/src/views/crm/contract/index.vue b/klp-ui/src/views/crm/contract/index.vue index 01a7a656..ec16eea2 100644 --- a/klp-ui/src/views/crm/contract/index.vue +++ b/klp-ui/src/views/crm/contract/index.vue @@ -2,13 +2,12 @@
- +
-
+
@@ -24,17 +23,14 @@
- +
- +
@@ -48,8 +44,8 @@ - - + + @@ -59,13 +55,27 @@ - + + + + + + + + + + + + + + @@ -107,7 +117,8 @@ - + @@ -142,6 +153,10 @@ + + + @@ -339,15 +337,10 @@ export default { /** 行点击事件 */ handleRowClick(row) { this.form = row; - // this.tabLoading = true; this.getCoilList(); - // listContractOrderObjection(row.contractId).then(response => { - // this.financeList = response.data.financeList || []; - // this.objectionList = response.data.oobjectionList || []; - // this.wmsDeliveryWaybills = response.data.wmsDeliveryWaybills || []; - // }).finally(() => { - // this.tabLoading = false; - // }) + listDeliveryWaybill({ orderId: row.orderId, pageNum: 1, pageSize: 50 }).then(res => { + this.wmsDeliveryWaybills = res.rows || []; + }) }, /** 查询合同配卷列表 */ getCoilList() { @@ -360,7 +353,7 @@ export default { this.form = { contractId: undefined, contractName: '产品销售合同', - contractNo: undefined, + contractCode: undefined, supplier: '嘉祥科伦普重工有限公司', customer: undefined, signTime: undefined, @@ -478,8 +471,12 @@ export default { this.$refs["form"].validate(valid => { if (valid) { this.buttonLoading = true; + const payload = { + ...this.form, + orderCode: this.form.contractCode, + } if (this.form.orderId != null) { - updateOrder(this.form).then(response => { + updateOrder(payload).then(response => { this.$modal.msgSuccess("修改成功"); this.open = false; this.$refs.orderList.getList(); @@ -487,7 +484,7 @@ export default { this.buttonLoading = false; }); } else { - addOrder(this.form).then(response => { + addOrder(payload).then(response => { this.$modal.msgSuccess("新增成功"); this.open = false; this.$refs.orderList.getList(); diff --git a/klp-ui/src/views/crm/order/index.vue b/klp-ui/src/views/crm/order/index.vue index 3cd72a82..2506c99c 100644 --- a/klp-ui/src/views/crm/order/index.vue +++ b/klp-ui/src/views/crm/order/index.vue @@ -114,7 +114,7 @@ - diff --git a/klp-ui/src/views/wms/contract/contractPage.vue b/klp-ui/src/views/wms/contract/contractPage.vue index 9d4801bf..25f1dfbe 100644 --- a/klp-ui/src/views/wms/contract/contractPage.vue +++ b/klp-ui/src/views/wms/contract/contractPage.vue @@ -1,8 +1,8 @@ From ae77c529aec6e8201757a287ca15fcb322eeb46d Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 17 Apr 2026 09:54:34 +0800 Subject: [PATCH 38/57] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=8D=B7=E7=BB=9F=E8=AE=A1=E6=80=BB=E6=95=B0=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WmsMaterialCoilServiceImpl中新增total_count字段统计 - 将统计结果添加到返回结果集中 - 处理空值情况并设置默认值为BigDecimal.ZERO --- .../java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 55c2b28a..951cc141 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -404,6 +404,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { if (stats != null) { Object grossWeight = stats.get("total_gross_weight"); Object netWeight = stats.get("total_net_weight"); + Object count = stats.get("total_count"); + result.put("total_count", count != null ? new BigDecimal(count.toString()) : BigDecimal.ZERO); result.put("total_gross_weight", grossWeight != null ? new BigDecimal(grossWeight.toString()) : BigDecimal.ZERO); result.put("total_net_weight", netWeight != null ? new BigDecimal(netWeight.toString()) : BigDecimal.ZERO); } From 8dbb7d111328a9f69cb7cb9e2affd844b5d9499d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Fri, 17 Apr 2026 09:55:27 +0800 Subject: [PATCH 39/57] =?UTF-8?q?feat(=E9=92=A2=E5=8D=B7=E7=AE=A1=E7=90=86?= =?UTF-8?q?):=20=E6=B7=BB=E5=8A=A0=E9=92=A2=E5=8D=B7=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增钢卷统计接口和展示总净重功能 优化仓库选择组件,按使用频率排序选项 调整钢卷选择器布局和样式 --- klp-ui/src/api/wms/coil.js | 8 +++++ klp-ui/src/components/CoilSelector/index.vue | 28 +++++++++++---- .../KLPService/WarehouseSelect/index.vue | 35 +++++++++++++++++-- 3 files changed, 62 insertions(+), 9 deletions(-) diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index 2decfe64..1c64a98e 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -389,4 +389,12 @@ export function listTypeErrorCoil() { method: 'get', timeout: 600000 }) +} + +export function getCoilStatisticsList(params) { + return request({ + url: '/wms/materialCoil/statisticsList', + method: 'get', + params, + }) } \ No newline at end of file diff --git a/klp-ui/src/components/CoilSelector/index.vue b/klp-ui/src/components/CoilSelector/index.vue index 65e765ae..85f940ca 100644 --- a/klp-ui/src/components/CoilSelector/index.vue +++ b/klp-ui/src/components/CoilSelector/index.vue @@ -27,7 +27,7 @@ --> - + @@ -74,8 +74,8 @@ - + 搜索 重置 显示钢卷地图 - 显示订单详情 + 显示订单详情 @@ -122,8 +123,15 @@
- +
+ + 总净重:{{ coilTrimStatistics.total_net_weight || 0 }}t + + + +
+
@@ -181,7 +189,7 @@ + + \ No newline at end of file diff --git a/klp-ui/src/views/crm/contract/index.vue b/klp-ui/src/views/crm/contract/index.vue index 83188b15..336ab484 100644 --- a/klp-ui/src/views/crm/contract/index.vue +++ b/klp-ui/src/views/crm/contract/index.vue @@ -81,9 +81,9 @@ - + From 3ad3fd2fee946c257351ccb2b82ef7c227500a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Fri, 17 Apr 2026 17:02:12 +0800 Subject: [PATCH 43/57] =?UTF-8?q?feat(PlanDetailForm):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=AE=A2=E5=8D=95=E6=98=8E=E7=BB=86=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=BF=AB=E9=80=9F=E5=BD=95=E5=85=A5?= =?UTF-8?q?=E6=88=90=E5=93=81=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在成品信息组中添加选择订单明细按钮,点击可打开对话框选择订单明细并自动填充表单字段。移除未使用的订单类型列并优化附件查看按钮的样式。 --- .../views/aps/planSheet/PlanDetailForm.vue | 90 +++++++++++++++---- 1 file changed, 73 insertions(+), 17 deletions(-) diff --git a/klp-ui/src/views/aps/planSheet/PlanDetailForm.vue b/klp-ui/src/views/aps/planSheet/PlanDetailForm.vue index 3faf4b67..bac33b9c 100644 --- a/klp-ui/src/views/aps/planSheet/PlanDetailForm.vue +++ b/klp-ui/src/views/aps/planSheet/PlanDetailForm.vue @@ -11,8 +11,8 @@ :type="formData.orderId ? 'success' : 'default'"> {{ formData.orderId ? formData.contractCode : '选择订单' }} -
+
查看附件
@@ -68,6 +68,12 @@ + @@ -228,8 +234,6 @@ - - @@ -254,6 +258,37 @@
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ @@ -27,7 +27,7 @@ + :tooltipStyle="tooltipStyle" :columnCount="floatLayerColumnCount" />
@@ -78,7 +78,9 @@ export default { type: Object, default: () => ({ columns: [], - title: '详细信息' + title: '详细信息', + columnCount: 2, + excludeColumns: ['action'] }) }, height: { @@ -101,11 +103,16 @@ export default { }, computed: { floatLayerColumns() { - console.log(this.floatLayerConfig?.columns?.length > 1) if (this.floatLayerConfig?.columns?.length > 1) { return this.floatLayerConfig.columns } return this.columns; + }, + floatLayerColumnCount() { + return this.floatLayerConfig?.columnCount || 2; + }, + excludeColumns() { + return this.floatLayerConfig?.excludeColumns || ['action']; } }, methods: { @@ -157,6 +164,15 @@ export default { // 浮层相关 handleCellEnter(row, column, cell, event) { if (!row || !event) return + + // 检查是否是排除的列(操作列等) + const excludeColumns = this.excludeColumns + if (excludeColumns.includes(column.property)) { + this.tooltipVisible = false + this.hoveredRow = null + return + } + this.hoveredRow = row this.tooltipVisible = true this.updateTooltipPosition(event) diff --git a/klp-ui/src/views/wms/coil/panels/base.vue b/klp-ui/src/views/wms/coil/panels/base.vue index ed8f5826..ee0fc92d 100644 --- a/klp-ui/src/views/wms/coil/panels/base.vue +++ b/klp-ui/src/views/wms/coil/panels/base.vue @@ -45,8 +45,8 @@ clearable @keyup.enter.native="handleQuery" />
- + @@ -83,10 +83,6 @@ 修正 - 导出 @@ -115,11 +111,10 @@ - + -