feat: 新增多类业务功能并优化页面展示
1. 新增钢卷周期对比查询API,增加冷轧卷、花纹板物料类型 2. 优化库存积压统计逻辑,支持成品和原料数据合并计算 3. 新增告警统计功能,实现长度/厚度告警的数量和重量统计 4. 替换岗位管理页面为冷轧厂业务流程泳道图页面
This commit is contained in:
@@ -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 })
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user