From 78e2c3023ba161ccea993d2402c9a456cd581cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= <2178503051@qq.com> Date: Tue, 9 Jun 2026 13:16:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=A4=9A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=B8=9A=E5=8A=A1=E5=8A=9F=E8=83=BD=E4=B8=8E=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增轧辊产线共用mixins工具 2. 新增钢卷异常管理相关API、组件与页面 3. 新增成本管理相关模块API与CRUD页面 4. 新增多选组件MutiSelect --- ruoyi-ui/src/api/cost/coil.js | 19 + ruoyi-ui/src/api/cost/item.js | 44 + ruoyi-ui/src/api/cost/price.js | 44 + ruoyi-ui/src/api/cost/prodDetail.js | 53 + ruoyi-ui/src/api/cost/prodMetric.js | 44 + ruoyi-ui/src/api/cost/prodReport.js | 53 + ruoyi-ui/src/api/mill/coilAbnormal.js | 53 + ruoyi-ui/src/api/mill/coilAbnormalRelation.js | 44 + ruoyi-ui/src/api/mill/rollChange.js | 62 ++ ruoyi-ui/src/api/mill/rollStandby.js | 53 + ruoyi-ui/src/components/MutiSelect/index.vue | 168 ++++ ruoyi-ui/src/views/cost/comprehensive.vue | 749 ++++++++++++++ ruoyi-ui/src/views/cost/detail.vue | 356 +++++++ ruoyi-ui/src/views/cost/index.vue | 314 ++++++ ruoyi-ui/src/views/cost/item.vue | 337 +++++++ ruoyi-ui/src/views/cost/metric.vue | 319 ++++++ ruoyi-ui/src/views/cost/price.vue | 300 ++++++ .../mill/abnormal/components/AbnormalForm.vue | 185 ++++ .../abnormal/components/AbnormalTable.vue | 106 ++ .../abnormal/components/ExceptionManager.vue | 438 ++++++++ ruoyi-ui/src/views/mill/abnormal/log.vue | 0 .../src/views/mill/abnormal/performance.vue | 372 +++++++ ruoyi-ui/src/views/mill/roll/rollLineMixin.js | 22 + .../src/views/mill/roll/working/index.vue | 932 ++++++++++++++++++ 24 files changed, 5067 insertions(+) create mode 100644 ruoyi-ui/src/api/cost/coil.js create mode 100644 ruoyi-ui/src/api/cost/item.js create mode 100644 ruoyi-ui/src/api/cost/price.js create mode 100644 ruoyi-ui/src/api/cost/prodDetail.js create mode 100644 ruoyi-ui/src/api/cost/prodMetric.js create mode 100644 ruoyi-ui/src/api/cost/prodReport.js create mode 100644 ruoyi-ui/src/api/mill/coilAbnormal.js create mode 100644 ruoyi-ui/src/api/mill/coilAbnormalRelation.js create mode 100644 ruoyi-ui/src/api/mill/rollChange.js create mode 100644 ruoyi-ui/src/api/mill/rollStandby.js create mode 100644 ruoyi-ui/src/components/MutiSelect/index.vue create mode 100644 ruoyi-ui/src/views/cost/comprehensive.vue create mode 100644 ruoyi-ui/src/views/cost/detail.vue create mode 100644 ruoyi-ui/src/views/cost/index.vue create mode 100644 ruoyi-ui/src/views/cost/item.vue create mode 100644 ruoyi-ui/src/views/cost/metric.vue create mode 100644 ruoyi-ui/src/views/cost/price.vue create mode 100644 ruoyi-ui/src/views/mill/abnormal/components/AbnormalForm.vue create mode 100644 ruoyi-ui/src/views/mill/abnormal/components/AbnormalTable.vue create mode 100644 ruoyi-ui/src/views/mill/abnormal/components/ExceptionManager.vue create mode 100644 ruoyi-ui/src/views/mill/abnormal/log.vue create mode 100644 ruoyi-ui/src/views/mill/abnormal/performance.vue create mode 100644 ruoyi-ui/src/views/mill/roll/rollLineMixin.js create mode 100644 ruoyi-ui/src/views/mill/roll/working/index.vue diff --git a/ruoyi-ui/src/api/cost/coil.js b/ruoyi-ui/src/api/cost/coil.js new file mode 100644 index 00000000..4a747f52 --- /dev/null +++ b/ruoyi-ui/src/api/cost/coil.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +const BASE = '/wms/materialCoil' + +export function getCoilHoardingStats(data) { + return request({ + url: BASE + '/hoardingStatistics', + method: 'post', + data: data + }) +} + +export function listCoilHoardingDetail(query) { + return request({ + url: BASE + '/listWithQrcode', + method: 'get', + params: query + }) +} diff --git a/ruoyi-ui/src/api/cost/item.js b/ruoyi-ui/src/api/cost/item.js new file mode 100644 index 00000000..c9b9ad4f --- /dev/null +++ b/ruoyi-ui/src/api/cost/item.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询成本项目配置列表 +export function listItem(query) { + return request({ + url: '/cost/item/list', + method: 'get', + params: query + }) +} + +// 查询成本项目配置详细 +export function getItem(itemId) { + return request({ + url: '/cost/item/' + itemId, + method: 'get' + }) +} + +// 新增成本项目配置 +export function addItem(data) { + return request({ + url: '/cost/item', + method: 'post', + data: data + }) +} + +// 修改成本项目配置 +export function updateItem(data) { + return request({ + url: '/cost/item', + method: 'put', + data: data + }) +} + +// 删除成本项目配置 +export function delItem(itemId) { + return request({ + url: '/cost/item/' + itemId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/cost/price.js b/ruoyi-ui/src/api/cost/price.js new file mode 100644 index 00000000..d2b8da88 --- /dev/null +++ b/ruoyi-ui/src/api/cost/price.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询成本单价历史列表 +export function listPrice(query) { + return request({ + url: '/cost/price/list', + method: 'get', + params: query + }) +} + +// 查询成本单价历史详细 +export function getPrice(priceId) { + return request({ + url: '/cost/price/' + priceId, + method: 'get' + }) +} + +// 新增成本单价历史 +export function addPrice(data) { + return request({ + url: '/cost/price', + method: 'post', + data: data + }) +} + +// 修改成本单价历史 +export function updatePrice(data) { + return request({ + url: '/cost/price', + method: 'put', + data: data + }) +} + +// 删除成本单价历史 +export function delPrice(priceId) { + return request({ + url: '/cost/price/' + priceId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/cost/prodDetail.js b/ruoyi-ui/src/api/cost/prodDetail.js new file mode 100644 index 00000000..6faf103a --- /dev/null +++ b/ruoyi-ui/src/api/cost/prodDetail.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询生产成本明细列表 +export function listProdDetail(query) { + return request({ + url: '/cost/prodDetail/list', + method: 'get', + params: query + }) +} + +// 查询生产成本明细详细 +export function getProdDetail(detailId) { + return request({ + url: '/cost/prodDetail/' + detailId, + method: 'get' + }) +} + +// 新增生产成本明细 +export function addProdDetail(data) { + return request({ + url: '/cost/prodDetail', + method: 'post', + data: data + }) +} + +// 修改生产成本明细 +export function updateProdDetail(data) { + return request({ + url: '/cost/prodDetail', + method: 'put', + data: data + }) +} + +// 删除生产成本明细 +export function delProdDetail(detailId) { + return request({ + url: '/cost/prodDetail/' + detailId, + method: 'delete' + }) +} + +// 批量保存生产成本明细(先删除再插入) +export function batchSaveProdDetail(data) { + return request({ + url: '/cost/prodDetail/batch', + method: 'post', + data: data + }) +} diff --git a/ruoyi-ui/src/api/cost/prodMetric.js b/ruoyi-ui/src/api/cost/prodMetric.js new file mode 100644 index 00000000..e07730b4 --- /dev/null +++ b/ruoyi-ui/src/api/cost/prodMetric.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询生产指标明细列表 +export function listProdMetric(query) { + return request({ + url: '/cost/prodMetric/list', + method: 'get', + params: query + }) +} + +// 查询生产指标明细详细 +export function getProdMetric(metricId) { + return request({ + url: '/cost/prodMetric/' + metricId, + method: 'get' + }) +} + +// 新增生产指标明细 +export function addProdMetric(data) { + return request({ + url: '/cost/prodMetric', + method: 'post', + data: data + }) +} + +// 修改生产指标明细 +export function updateProdMetric(data) { + return request({ + url: '/cost/prodMetric', + method: 'put', + data: data + }) +} + +// 删除生产指标明细 +export function delProdMetric(metricId) { + return request({ + url: '/cost/prodMetric/' + metricId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/cost/prodReport.js b/ruoyi-ui/src/api/cost/prodReport.js new file mode 100644 index 00000000..b369c5b1 --- /dev/null +++ b/ruoyi-ui/src/api/cost/prodReport.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询生产月报列表 +export function listProdReport(query) { + return request({ + url: '/cost/prodReport/list', + method: 'get', + params: query + }) +} + +// 查询生产月报详细 +export function getProdReport(reportId) { + return request({ + url: '/cost/prodReport/' + reportId, + method: 'get' + }) +} + +// 新增生产月报 +export function addProdReport(data) { + return request({ + url: '/cost/prodReport', + method: 'post', + data: data + }) +} + +// 修改生产月报 +export function updateProdReport(data) { + return request({ + url: '/cost/prodReport', + method: 'put', + data: data + }) +} + +// 删除生产月报 +export function delProdReport(reportId) { + return request({ + url: '/cost/prodReport/' + reportId, + method: 'delete' + }) +} + +// 复制生产月报 +export function copyProdReport(sourceId, data) { + return request({ + url: '/cost/prodReport/copy/' + sourceId, + method: 'post', + data: data + }) +} diff --git a/ruoyi-ui/src/api/mill/coilAbnormal.js b/ruoyi-ui/src/api/mill/coilAbnormal.js new file mode 100644 index 00000000..6abf1d04 --- /dev/null +++ b/ruoyi-ui/src/api/mill/coilAbnormal.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询钢卷异常信息列表 +export function listCoilAbnormal(query) { + return request({ + url: '/mill/abnormal/list', + method: 'get', + params: query + }) +} + +// 查询钢卷异常信息详细 +export function getCoilAbnormal(abnormalId) { + return request({ + url: '/mill/abnormal/' + abnormalId, + method: 'get' + }) +} + +// 新增钢卷异常信息 +export function addCoilAbnormal(data) { + return request({ + url: '/mill/abnormal', + method: 'post', + data: data + }) +} + +// 修改钢卷异常信息 +export function updateCoilAbnormal(data) { + return request({ + url: '/mill/abnormal', + method: 'put', + data: data + }) +} + +// 删除钢卷异常信息 +export function delCoilAbnormal(abnormalId) { + return request({ + url: '/mill/abnormal/' + abnormalId, + method: 'delete' + }) +} + +// 异常判级 +export function judgeAbnormalLevel(params) { + return request({ + url: '/mill/abnormal/judge', + method: 'put', + params + }) +} diff --git a/ruoyi-ui/src/api/mill/coilAbnormalRelation.js b/ruoyi-ui/src/api/mill/coilAbnormalRelation.js new file mode 100644 index 00000000..284f74ed --- /dev/null +++ b/ruoyi-ui/src/api/mill/coilAbnormalRelation.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询二级-三级钢卷异常挂接/撤回关系列表 +export function listRelation(query) { + return request({ + url: '/mill/relation/list', + method: 'get', + params: query + }) +} + +// 查询二级-三级钢卷异常挂接/撤回关系详细 +export function getRelation(relationId) { + return request({ + url: '/mill/relation/' + relationId, + method: 'get' + }) +} + +// 新增二级-三级钢卷异常挂接/撤回关系 +export function addRelation(data) { + return request({ + url: '/mill/relation', + method: 'post', + data: data + }) +} + +// 修改二级-三级钢卷异常挂接/撤回关系 +export function updateRelation(data) { + return request({ + url: '/mill/relation', + method: 'put', + data: data + }) +} + +// 删除二级-三级钢卷异常挂接/撤回关系 +export function delRelation(relationId) { + return request({ + url: '/mill/relation/' + relationId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/mill/rollChange.js b/ruoyi-ui/src/api/mill/rollChange.js new file mode 100644 index 00000000..8bcf5a7d --- /dev/null +++ b/ruoyi-ui/src/api/mill/rollChange.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询换辊记录分页列表(支持按产线、机架、类型、时间筛选) +export function listRollChange(query) { + return request({ + url: '/mes/rollChange/list', + method: 'get', + params: query + }) +} + +// 查询指定产线+机架当前在机轧辊(最近一次换辊记录) +export function getCurrentRolls(lineId, standNo) { + return request({ + url: '/mes/rollChange/current', + method: 'get', + params: { lineId, standNo } + }) +} + +// 查询指定产线各机架各辊位实时工作绩效(workLength/coilCount/totalWeight) +export function getRollPerformance(lineId) { + return request({ + url: '/mes/rollChange/performance', + method: 'get', + params: { lineId } + }) +} + +// 查询换辊记录详细 +export function getRollChange(changeId) { + return request({ + url: '/mes/rollChange/' + changeId, + method: 'get' + }) +} + +// 新增换辊记录(自动同步辊状态为 Online) +export function addRollChange(data) { + return request({ + url: '/mes/rollChange', + method: 'post', + data: data + }) +} + +// 修改换辊记录 +export function updateRollChange(data) { + return request({ + url: '/mes/rollChange', + method: 'put', + data: data + }) +} + +// 删除换辊记录 +export function delRollChange(changeIds) { + return request({ + url: '/mes/rollChange/' + changeIds, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/api/mill/rollStandby.js b/ruoyi-ui/src/api/mill/rollStandby.js new file mode 100644 index 00000000..5e028436 --- /dev/null +++ b/ruoyi-ui/src/api/mill/rollStandby.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询指定产线+机架下批轧辊列表 +export function listRollStandby(lineId, standNo) { + return request({ + url: '/mes/rollStandby/list', + method: 'get', + params: { lineId, standNo } + }) +} + +// 查询下批轧辊详细 +export function getRollStandby(standbyId) { + return request({ + url: '/mes/rollStandby/' + standbyId, + method: 'get' + }) +} + +// 新增下批轧辊(自动同步辊状态为 Standby) +export function addRollStandby(data) { + return request({ + url: '/mes/rollStandby', + method: 'post', + data: data + }) +} + +// 修改下批轧辊 +export function updateRollStandby(data) { + return request({ + url: '/mes/rollStandby', + method: 'put', + data: data + }) +} + +// 删除单条下批轧辊(自动恢复辊状态为 Offline) +export function delRollStandby(standbyId) { + return request({ + url: '/mes/rollStandby/' + standbyId, + method: 'delete' + }) +} + +// 清空指定产线+机架全部下批轧辊 +export function clearRollStandby(lineId, standNo) { + return request({ + url: '/mes/rollStandby/clear', + method: 'delete', + params: { lineId, standNo } + }) +} diff --git a/ruoyi-ui/src/components/MutiSelect/index.vue b/ruoyi-ui/src/components/MutiSelect/index.vue new file mode 100644 index 00000000..a1e33fe3 --- /dev/null +++ b/ruoyi-ui/src/components/MutiSelect/index.vue @@ -0,0 +1,168 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/cost/comprehensive.vue b/ruoyi-ui/src/views/cost/comprehensive.vue new file mode 100644 index 00000000..884eb2ab --- /dev/null +++ b/ruoyi-ui/src/views/cost/comprehensive.vue @@ -0,0 +1,749 @@ + + + + + diff --git a/ruoyi-ui/src/views/cost/detail.vue b/ruoyi-ui/src/views/cost/detail.vue new file mode 100644 index 00000000..529b3290 --- /dev/null +++ b/ruoyi-ui/src/views/cost/detail.vue @@ -0,0 +1,356 @@ + + + diff --git a/ruoyi-ui/src/views/cost/index.vue b/ruoyi-ui/src/views/cost/index.vue new file mode 100644 index 00000000..2422879c --- /dev/null +++ b/ruoyi-ui/src/views/cost/index.vue @@ -0,0 +1,314 @@ + + + diff --git a/ruoyi-ui/src/views/cost/item.vue b/ruoyi-ui/src/views/cost/item.vue new file mode 100644 index 00000000..aacacbad --- /dev/null +++ b/ruoyi-ui/src/views/cost/item.vue @@ -0,0 +1,337 @@ + + + diff --git a/ruoyi-ui/src/views/cost/metric.vue b/ruoyi-ui/src/views/cost/metric.vue new file mode 100644 index 00000000..62a415b8 --- /dev/null +++ b/ruoyi-ui/src/views/cost/metric.vue @@ -0,0 +1,319 @@ + + + diff --git a/ruoyi-ui/src/views/cost/price.vue b/ruoyi-ui/src/views/cost/price.vue new file mode 100644 index 00000000..d4cff5ba --- /dev/null +++ b/ruoyi-ui/src/views/cost/price.vue @@ -0,0 +1,300 @@ + + + diff --git a/ruoyi-ui/src/views/mill/abnormal/components/AbnormalForm.vue b/ruoyi-ui/src/views/mill/abnormal/components/AbnormalForm.vue new file mode 100644 index 00000000..fa1c9692 --- /dev/null +++ b/ruoyi-ui/src/views/mill/abnormal/components/AbnormalForm.vue @@ -0,0 +1,185 @@ + + + diff --git a/ruoyi-ui/src/views/mill/abnormal/components/AbnormalTable.vue b/ruoyi-ui/src/views/mill/abnormal/components/AbnormalTable.vue new file mode 100644 index 00000000..4c77ffec --- /dev/null +++ b/ruoyi-ui/src/views/mill/abnormal/components/AbnormalTable.vue @@ -0,0 +1,106 @@ + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/mill/abnormal/components/ExceptionManager.vue b/ruoyi-ui/src/views/mill/abnormal/components/ExceptionManager.vue new file mode 100644 index 00000000..3443564e --- /dev/null +++ b/ruoyi-ui/src/views/mill/abnormal/components/ExceptionManager.vue @@ -0,0 +1,438 @@ + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/mill/abnormal/log.vue b/ruoyi-ui/src/views/mill/abnormal/log.vue new file mode 100644 index 00000000..e69de29b diff --git a/ruoyi-ui/src/views/mill/abnormal/performance.vue b/ruoyi-ui/src/views/mill/abnormal/performance.vue new file mode 100644 index 00000000..61ec51e0 --- /dev/null +++ b/ruoyi-ui/src/views/mill/abnormal/performance.vue @@ -0,0 +1,372 @@ + + + diff --git a/ruoyi-ui/src/views/mill/roll/rollLineMixin.js b/ruoyi-ui/src/views/mill/roll/rollLineMixin.js new file mode 100644 index 00000000..d04f52e0 --- /dev/null +++ b/ruoyi-ui/src/views/mill/roll/rollLineMixin.js @@ -0,0 +1,22 @@ +/** + * 从 URL query.lineId 读取产线 ID,供各轧辊页面共用。 + * 组件覆盖 onLineResolved() 执行初始化加载。 + * + * 菜单路径示例:/mes/roll/overview?lineId=1 + */ +export default { + computed: { + lineId() { + const v = this.$route.query.lineId + return v != null ? Number(v) : null + } + }, + + created() { + this.onLineResolved() + }, + + methods: { + onLineResolved() {} + } +} diff --git a/ruoyi-ui/src/views/mill/roll/working/index.vue b/ruoyi-ui/src/views/mill/roll/working/index.vue new file mode 100644 index 00000000..24785505 --- /dev/null +++ b/ruoyi-ui/src/views/mill/roll/working/index.vue @@ -0,0 +1,932 @@ + + + + + + +