From 791be3e1a5ccfd7f5e329f6d876b9f9dba4e05d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Wed, 17 Jun 2026 11:01:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=A4=9A=E7=B1=BB?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增钢卷周期对比查询API,增加冷轧卷、花纹板物料类型 2. 优化库存积压统计逻辑,支持成品和原料数据合并计算 3. 新增告警统计功能,实现长度/厚度告警的数量和重量统计 4. 替换岗位管理页面为冷轧厂业务流程泳道图页面 --- klp-ui/public/冷轧厂业务流程泳道图(1).html | 430 +++++++++++++++++++++ klp-ui/src/api/wms/coil.js | 9 + klp-ui/src/views/cost/coil.vue | 30 +- klp-ui/src/views/wms/post/index.vue | 41 +- klp-ui/src/views/wms/report/line.vue | 109 +++++- 5 files changed, 573 insertions(+), 46 deletions(-) create mode 100644 klp-ui/public/冷轧厂业务流程泳道图(1).html diff --git a/klp-ui/public/冷轧厂业务流程泳道图(1).html b/klp-ui/public/冷轧厂业务流程泳道图(1).html new file mode 100644 index 00000000..c67105b1 --- /dev/null +++ b/klp-ui/public/冷轧厂业务流程泳道图(1).html @@ -0,0 +1,430 @@ + + + + + +冷轧厂业务流程泳道图 + + + + + +
+
+ + + + + diff --git a/klp-ui/src/api/wms/coil.js b/klp-ui/src/api/wms/coil.js index d7ef2566..0c02d69b 100644 --- a/klp-ui/src/api/wms/coil.js +++ b/klp-ui/src/api/wms/coil.js @@ -529,4 +529,13 @@ export function getExportColumns() { url: '/wms/materialCoil/exportColumns', method: 'get', }) +} + +export function listForPeriodComparison(data) { + return request({ + url: '/wms/materialCoil/listForPeriodComparison', + method: 'post', + timeout: 600000, + data: data + }) } \ No newline at end of file diff --git a/klp-ui/src/views/cost/coil.vue b/klp-ui/src/views/cost/coil.vue index 5e5f7bd5..506915cf 100644 --- a/klp-ui/src/views/cost/coil.vue +++ b/klp-ui/src/views/cost/coil.vue @@ -123,7 +123,7 @@ import * as echarts from 'echarts' import { getCoilHoardingStats, listCoilHoardingDetail } from '@/api/cost/coil' import WarehouseSelect from '@/components/KLPService/WarehouseSelect' -const PRODUCT_NAMES = ['镀锌卷', '镀铬卷', '冷硬卷', '热轧卷板'] +const PRODUCT_NAMES = ['镀锌卷', '镀铬卷', '冷硬卷', '热轧卷板', '冷轧卷', '花纹板'] function parseFirstCreateTime(row) { try { @@ -237,17 +237,37 @@ export default { fetchDimension() { this.dimLoading = true const base = this.buildQuery() - const promises = PRODUCT_NAMES.map(v => { - const body = { ...base, itemName: v } - return getCoilHoardingStats(body).then(res => ({ + const promises = PRODUCT_NAMES.flatMap(v => { + const baseBody = { ...base, itemName: v } + const productReq = getCoilHoardingStats({ ...baseBody, selectType: 'product' }).then(res => ({ label: v, avgDays: parseFloat((res.data && res.data.avgHoardingDays) || 0), avgCost: parseFloat((res.data && res.data.avgHoardingCost) || 0), count: parseInt((res.data && res.data.totalCount) || 0) })) + const rawReq = getCoilHoardingStats({ ...baseBody, selectType: 'raw_material' }).then(res => ({ + label: v, + avgDays: parseFloat((res.data && res.data.avgHoardingDays) || 0), + avgCost: parseFloat((res.data && res.data.avgHoardingCost) || 0), + count: parseInt((res.data && res.data.totalCount) || 0) + })) + return [productReq, rawReq] }) Promise.all(promises).then(data => { - this.dimensionData = data.filter(d => d.count > 0) + const map = {} + data.forEach(d => { + if (!map[d.label]) { + map[d.label] = { label: d.label, avgDays: 0, avgCost: 0, count: 0 } + } + const prev = map[d.label] + const totalCount = prev.count + d.count + if (totalCount > 0) { + prev.avgDays = parseFloat(((prev.avgDays * prev.count + d.avgDays * d.count) / totalCount).toFixed(2)) + prev.avgCost = parseFloat(((prev.avgCost * prev.count + d.avgCost * d.count) / totalCount).toFixed(2)) + } + prev.count = totalCount + }) + this.dimensionData = Object.values(map).filter(d => d.count > 0) this.$nextTick(() => this.updateDimChart()) }).finally(() => { this.dimLoading = false }) }, diff --git a/klp-ui/src/views/wms/post/index.vue b/klp-ui/src/views/wms/post/index.vue index ad36931f..40ca7666 100644 --- a/klp-ui/src/views/wms/post/index.vue +++ b/klp-ui/src/views/wms/post/index.vue @@ -1,6 +1,8 @@