diff --git a/src/api/ssdl/product&recipe.js b/src/api/ssdl/product&recipe.js new file mode 100644 index 00000000..408b1fa5 --- /dev/null +++ b/src/api/ssdl/product&recipe.js @@ -0,0 +1,139 @@ +/* + * @Author: zwq + * @Date: 2025-11-17 09:25:12 + * @LastEditors: zwq + * @LastEditTime: 2025-11-19 13:11:54 + * @Description: + */ +import request from '@/utils/request' + + +// 获得原料分页 +export function getProductPage(query) { + return request({ + url: '/wms/material/page', + method: 'get', + params: query + }) +} +// 获得原料 +export function getProduct(id) { + return request({ + url: '/wms/material/get?id=' + id, + method: 'get' + }) +} +// 删除原料 +export function deleteProduct(id) { + return request({ + url: '/wms/material/delete?id=' + id, + method: 'delete' + }) +} +// 更新 +export function updateProduct(data) { + return request({ + url: '/wms/material/update', + method: 'put', + data: data + }) +} + +// 创建 +export function createProduct(data) { + return request({ + url: '/wms/material/create', + method: 'post', + data: data + }) +} + + +// 获得工艺分页 +export function getProcessPage(query) { + return request({ + url: '/wms/process/page', + method: 'get', + params: query + }) +} +// 删除工艺 +export function deleteProcess(id) { + return request({ + url: '/wms/process/delete?id=' + id, + method: 'delete' + }) +} +// 更新 +export function updateProcess(data) { + return request({ + url: '/wms/process/update', + method: 'put', + data: data + }) +} + +// 创建 +export function createProcess(data) { + return request({ + url: '/wms/process/create', + method: 'post', + data: data + }) +} +// 获得工艺 +export function getProcess(id) { + return request({ + url: '/wms/process/get?id=' + id, + method: 'get' + }) +} +// 工艺设备原料分页 +export function getProcessMaterialPage(query) { + return request({ + url: '/wms/process-equipment-material/page', + method: 'get', + params: query + }) +} +// 删除工艺设备原料 +export function deleteProcessMaterial(id) { + return request({ + url: '/wms/process-equipment-material/delete?id=' + id, + method: 'delete' + }) +} + +// 更新 +export function updateProcessMaterial(data) { + return request({ + url: '/wms/process-equipment-material/update', + method: 'put', + data: data + }) +} + +// 创建 +export function createProcessMaterial(data) { + return request({ + url: '/wms/process-equipment-material/create', + method: 'post', + data: data + }) +} +// 获得工艺 +export function getProcessMaterial(id) { + return request({ + url: '/wms/process-equipment-material/get?id=' + id, + method: 'get' + }) +} + +// 获得设备分页 +export function getEquipmentPage(query) { + return request({ + url: '/wms/equipment/page', + method: 'get', + params: query + }) +} diff --git a/src/api/ssdl/taskList.js b/src/api/ssdl/taskList.js new file mode 100644 index 00000000..b1092fca --- /dev/null +++ b/src/api/ssdl/taskList.js @@ -0,0 +1,60 @@ +/* + * @Author: zwq + * @Date: 2025-11-17 09:25:12 + * @LastEditors: zwq + * @LastEditTime: 2025-11-18 15:42:19 + * @Description: + */ +import request from '@/utils/request' + + +// 获得任务分页 +export function getTaskPage(query) { + return request({ + url: '/wms/job-main-task/page', + method: 'get', + params: query + }) +} +// 获得任务 +export function getTask(id) { + return request({ + url: '/wms/job-main-task/get?id=' + id, + method: 'get' + }) +} + +// 获得任务日志分页 +export function getTaskLogPage(query) { + return request({ + url: '/wms/job-main-task-log/page', + method: 'get', + params: query + }) +} + +// 更新 +export function updateTask(data) { + return request({ + url: '/wms/job-main-task/update', + method: 'put', + data: data + }) +} + +// 根据区域id获取该区域下的库位信息 +export function getRegion(id) { + return request({ + url: '/wms/line-edge-library/get-by-region-id?regionId=' + id, + method: 'get' + }) +} + +// 创建 +export function createPCTask(data) { + return request({ + url: '/wms/job-main-task/pc-create-task', + method: 'post', + data: data + }) +} diff --git a/src/mixins/basic-page.js b/src/mixins/basic-page.js index 549a15a6..978497c4 100644 --- a/src/mixins/basic-page.js +++ b/src/mixins/basic-page.js @@ -2,7 +2,7 @@ * @Author: zwq * @Date: 2022-08-24 11:19:43 * @LastEditors: zwq - * @LastEditTime: 2024-04-02 09:33:29 + * @LastEditTime: 2025-11-19 13:20:30 * @Description: */ export default { @@ -69,7 +69,7 @@ export default { this.$refs.addOrUpdate.init(val.data.id); }); } else if (val.type === "delete") { - this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex) + this.deleteHandle(val.data.id, val.data.name, val.data._pageIndex,val.data) } else { this.otherMethods(val) } diff --git a/src/views/cost/components/SmallTitle.vue b/src/views/cost/components/SmallTitle.vue new file mode 100644 index 00000000..8e04d268 --- /dev/null +++ b/src/views/cost/components/SmallTitle.vue @@ -0,0 +1,65 @@ + + + + + + diff --git a/src/views/cost/components/add-or-updata.vue b/src/views/cost/components/add-or-updata.vue new file mode 100644 index 00000000..e0c75ee0 --- /dev/null +++ b/src/views/cost/components/add-or-updata.vue @@ -0,0 +1,442 @@ + + + + + + + + + + + diff --git a/src/views/cost/components/detailDrawer.vue b/src/views/cost/components/detailDrawer.vue new file mode 100644 index 00000000..f98e25a9 --- /dev/null +++ b/src/views/cost/components/detailDrawer.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/views/cost/components/stopInStock.vue b/src/views/cost/components/stopInStock.vue new file mode 100644 index 00000000..46bafa01 --- /dev/null +++ b/src/views/cost/components/stopInStock.vue @@ -0,0 +1,65 @@ + + + + + + diff --git a/src/views/cost/components/subSpan1.vue b/src/views/cost/components/subSpan1.vue new file mode 100644 index 00000000..931ecb10 --- /dev/null +++ b/src/views/cost/components/subSpan1.vue @@ -0,0 +1,32 @@ + + + + diff --git a/src/views/cost/components/subSpan2.vue b/src/views/cost/components/subSpan2.vue new file mode 100644 index 00000000..6519543c --- /dev/null +++ b/src/views/cost/components/subSpan2.vue @@ -0,0 +1,32 @@ + + + + diff --git a/src/views/cost/components/subSpan3.vue b/src/views/cost/components/subSpan3.vue new file mode 100644 index 00000000..00322b68 --- /dev/null +++ b/src/views/cost/components/subSpan3.vue @@ -0,0 +1,57 @@ + + + + diff --git a/src/views/cost/components/subSpan4.vue b/src/views/cost/components/subSpan4.vue new file mode 100644 index 00000000..931ecb10 --- /dev/null +++ b/src/views/cost/components/subSpan4.vue @@ -0,0 +1,32 @@ + + + + diff --git a/src/views/product&recipe/product/changeStatus.vue b/src/views/cost/raw/costMaterial/changeStatus.vue similarity index 100% rename from src/views/product&recipe/product/changeStatus.vue rename to src/views/cost/raw/costMaterial/changeStatus.vue diff --git a/src/views/product&recipe/product/add-or-updata.vue b/src/views/product&recipe/product/add-or-updata.vue index 95abfaa7..15282c6f 100644 --- a/src/views/product&recipe/product/add-or-updata.vue +++ b/src/views/product&recipe/product/add-or-updata.vue @@ -2,7 +2,7 @@ * @Author: zwq * @Date: 2021-11-18 14:16:25 * @LastEditors: zwq - * @LastEditTime: 2025-11-12 15:35:21 + * @LastEditTime: 2025-11-18 15:01:42 * @Description: --> diff --git a/src/views/product&recipe/recipe/SmallTitle.vue b/src/views/product&recipe/recipe/SmallTitle.vue new file mode 100644 index 00000000..93b4a18f --- /dev/null +++ b/src/views/product&recipe/recipe/SmallTitle.vue @@ -0,0 +1,65 @@ + + + + + + diff --git a/src/views/product&recipe/recipe/add-or-updata.vue b/src/views/product&recipe/recipe/add-or-updata.vue index 95abfaa7..aa3cedad 100644 --- a/src/views/product&recipe/recipe/add-or-updata.vue +++ b/src/views/product&recipe/recipe/add-or-updata.vue @@ -1,114 +1,395 @@ - + + diff --git a/src/views/product&recipe/recipe/attr-add.vue b/src/views/product&recipe/recipe/attr-add.vue new file mode 100644 index 00000000..1c6e9973 --- /dev/null +++ b/src/views/product&recipe/recipe/attr-add.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/src/views/product&recipe/recipe/changeStatus.vue b/src/views/product&recipe/recipe/changeStatus.vue deleted file mode 100644 index b9744b78..00000000 --- a/src/views/product&recipe/recipe/changeStatus.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/src/views/product&recipe/recipe/index.vue b/src/views/product&recipe/recipe/index.vue index 5c070dd9..ad8c5451 100644 --- a/src/views/product&recipe/recipe/index.vue +++ b/src/views/product&recipe/recipe/index.vue @@ -1,3 +1,10 @@ + diff --git a/src/views/taskCenter/taskList/components/add-or-updata.vue b/src/views/taskCenter/taskList/components/add-or-updata.vue index e0c75ee0..4cb92b54 100644 --- a/src/views/taskCenter/taskList/components/add-or-updata.vue +++ b/src/views/taskCenter/taskList/components/add-or-updata.vue @@ -2,7 +2,7 @@ * @Author: zwq * @Date: 2025-10-13 15:07:24 * @LastEditors: zwq - * @LastEditTime: 2025-11-07 15:35:14 + * @LastEditTime: 2025-11-19 11:16:34 * @Description: --> @@ -347,7 +577,7 @@ export default { display: flex; } .potTitle { - width: 82px; + width: 190px; background-color: rgb(169, 235, 249); border-radius: 3px; margin-right: 5px; @@ -355,17 +585,19 @@ export default { color: #000000; letter-spacing: 1px; margin-bottom: 10px; + font-size: 16px; } .potList { - width: 82px; + width: 190px; display: grid; - grid-template-columns: 40px 40px; - gap: 2px; + grid-template-columns: 90px 90px; + gap: 8px; } .pot { - width: 40px; + width: 90px; text-align: center; border: 1px solid gainsboro; + color: black; border-radius: 3px; padding: 5px 0; margin-bottom: 5px; @@ -373,6 +605,29 @@ export default { overflow: hidden; text-overflow: ellipsis; } +/* 空闲状态 */ +.free { + background-color: #edf7ff; + border: 1px solid #57a5f4; +} + +/* 满位状态 */ +.full { + background-color: #fff1d4; + border: 1px solid #f8b881; +} + +/* 不可用状态 */ +.unavailable { + background-color: #e9e8e8; + border: 1px solid #b4b4b4; +} + +/* 锁定状态 */ +.locked { + background-color: #e8d7ff; + border: 1px solid #722ed1; +} @@ -433,7 +688,7 @@ export default { } .connector { - width: 160px; /* 计算连接线长度 */ + width: 220px; /* 计算连接线长度 */ height: 2px; border-bottom: 1px dashed rgb(11, 88, 255, 1); margin: 0 5px; diff --git a/src/views/taskCenter/taskList/components/detailDrawer.vue b/src/views/taskCenter/taskList/components/detailDrawer.vue index f98e25a9..524a0ce2 100644 --- a/src/views/taskCenter/taskList/components/detailDrawer.vue +++ b/src/views/taskCenter/taskList/components/detailDrawer.vue @@ -2,7 +2,7 @@ * @Author: zwq * @Date: 2025-11-07 17:01:51 * @LastEditors: zwq - * @LastEditTime: 2025-11-07 22:31:17 + * @LastEditTime: 2025-11-17 15:47:16 * @Description: --> diff --git a/src/views/taskCenter/taskList/components/subSpan4.vue b/src/views/taskCenter/taskList/components/subSpan4.vue index 931ecb10..fc94d4e5 100644 --- a/src/views/taskCenter/taskList/components/subSpan4.vue +++ b/src/views/taskCenter/taskList/components/subSpan4.vue @@ -2,15 +2,13 @@ * @Author: zwq * @Date: 2025-10-13 16:18:41 * @LastEditors: zwq - * @LastEditTime: 2025-11-06 15:19:24 + * @LastEditTime: 2025-11-17 09:32:07 * @Description: --> diff --git a/src/views/taskCenter/taskList/components/subSpan5.vue b/src/views/taskCenter/taskList/components/subSpan5.vue new file mode 100644 index 00000000..810bbb68 --- /dev/null +++ b/src/views/taskCenter/taskList/components/subSpan5.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/taskCenter/taskList/index.vue b/src/views/taskCenter/taskList/index.vue index 943d749d..96c9e0e1 100644 --- a/src/views/taskCenter/taskList/index.vue +++ b/src/views/taskCenter/taskList/index.vue @@ -4,10 +4,9 @@
- 自动刷新(5s) + 自动刷新(10s)
@@ -17,11 +16,12 @@ :page="listQuery.pageNo" :limit="listQuery.pageSize" :max-height="tableH" - :table-data="tableData"> + :table-data="tableData" + @emitFun="getDataList"> @@ -61,21 +61,12 @@ @click="handleCancel"> 取消 - - 创建任务 - - {{ stepNum < 3 ? '下一步' : '创建并下发' }} + {{ stepNum < 3 ? '下一步' : '创建任务' }} @@ -106,29 +97,31 @@ import subSpan1 from './components/subSpan1.vue'; import subSpan2 from './components/subSpan2.vue'; import subSpan3 from './components/subSpan3.vue'; import subSpan4 from './components/subSpan4.vue'; +import subSpan5 from './components/subSpan5.vue'; import detailDrawer from './components/detailDrawer.vue'; -import stopInStock from './components/stopInStock.vue' +import stopInStock from './components/stopInStock.vue'; import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; import { parseTime } from '@/filter/code-filter'; +import { getTaskPage } from '@/api/ssdl/taskList'; const tableProps = [ { - prop: 'code', + prop: 'mainTaskCode', label: '任务编号', width: 140, }, { - prop: 'val1', + prop: 'taskAttribute', label: '创建方式', - filter: (val) => (val ? ['自动', '人工'][val] : '-'), + filter: (val) => (val ? ['', '自动', '人工'][val] : '-'), }, { - prop: 'val2', + prop: 'mainTaskType', label: '任务类型', subcomponent: subSpan1, }, { - prop: 'val3', + prop: 'mainTaskState', label: '状态', subcomponent: subSpan2, }, @@ -136,19 +129,19 @@ const tableProps = [ prop: 'val4', label: '搬运对象(L/R)', subcomponent: subSpan3, - width: 160, + width: 220, }, { prop: 'val5', label: '起点(L/R)', subcomponent: subSpan3, - width: 160, + width: 220, }, { prop: 'val6', label: '终点(L/R)', subcomponent: subSpan3, - width: 160, + width: 220, }, { prop: 'val7', @@ -156,17 +149,16 @@ const tableProps = [ subcomponent: subSpan4, }, { - prop: 'creatTime', + prop: 'val8', + label: '优先级', + subcomponent: subSpan5, + }, + { + prop: 'createTime', label: '创建时间', filter: parseTime, width: 150, }, - { - prop: 'Time', - label: '执行时长', - filter: (val) => parseTime(val, '{HH}:{mm}:{ss}'), - width: 100, - }, ]; export default { @@ -179,46 +171,20 @@ export default { type: 'detail', btnName: '详情', }, - { - type: 'issue', - btnName: '下发', - showParam: { - type: '&', - data: [ - { - type: 'equal', - name: 'status', - value: 1, - }, - ], - }, - }, - { - type: 'pause', - btnName: '暂停', - showParam: { - type: '&', - data: [ - { - type: 'unequal', - name: 'status', - value: 1, - }, - ], - }, - }, - { - type: 'reassign', - btnName: '改派', - }, - { - type: 'stop', - btnName: '终止', - }, - { - type: 'recycle', - btnName: '回收', - }, + // { + // type: 'stop', + // btnName: '终止', + // showParam: { + // type: '&', + // data: [ + // { + // type: 'equal', + // name: 'mainTaskState', + // value: 2, + // }, + // ], + // }, + // }, ].filter((v) => v), tableData: [], listQuery: { @@ -238,15 +204,11 @@ export default { }, { id: 2, - name: '备料搬运', + name: '空盘搬运', }, { id: 3, - name: '临时搬运', - }, - { - id: 4, - name: '空盘搬运', + name: '备料搬运', }, ], param: 'val1', @@ -254,23 +216,15 @@ export default { }, { type: 'select', - label: '业务类型', + label: '创建方式', selectOptions: [ { id: 1, - name: '满盘搬运', + name: '自动任务', }, { id: 2, - name: '空盘搬运', - }, - { - id: 3, - name: '备料搬运', - }, - { - id: 4, - name: '临时搬运', + name: '人工任务', }, ], param: 'val2', @@ -281,20 +235,24 @@ export default { label: '状态', selectOptions: [ { - id: 1, + id: 0, name: '待下发', }, { - id: 2, + id: 1, name: '待执行', }, { - id: 3, + id: 2, name: '执行中', }, + { + id: 3, + name: '取货完成', + }, { id: 4, - name: '已完成', + name: '完成', }, { id: 5, @@ -302,7 +260,7 @@ export default { }, { id: 6, - name: '已终止', + name: '终止', }, { id: 7, @@ -312,46 +270,10 @@ export default { param: 'val3', filterable: true, }, - { - type: 'select', - label: '执行车辆', - selectOptions: [], - param: 'val4', - labelField: 'label', - valueField: 'name', - filterable: true, - }, - { - type: 'datePicker', - label: '创建日期', - dateType: 'daterange', - format: 'yyyy-MM-dd', - valueFormat: 'yyyy-MM-dd HH:mm:ss', - rangeSeparator: '-', - startPlaceholder: '开始时间', - endPlaceholder: '结束时间', - param: 'searchTime', - }, - { - type: 'select', - label: '回收任务', - selectOptions: [ - { - id: 1, - name: '是', - }, - { - id: 0, - name: '否', - }, - ], - param: 'val5', - filterable: true, - }, { type: 'input', - label: '编号', - placeholder: '编号', + label: '任务编号', + placeholder: '任务编号', param: 'code', }, { @@ -372,9 +294,7 @@ export default { type: 'separate', }, { - type: this.$auth.hasPermi('monitoring:cost-othercost-log:create') - ? 'button' - : '', + type: 'button', btnName: '新增', name: 'add', color: 'success', @@ -396,7 +316,7 @@ export default { this.getDataList(); this.refreshTimer = setInterval(() => { this.getDataList(); - }, 5000); + }, 10000); } else { // 关闭时清除定时器 if (this.refreshTimer) { @@ -415,9 +335,11 @@ export default { components: { AddOrUpdate, detailDrawer, - stopInStock, + stopInStock, + }, + created() { + this.getDataList(); }, - created() {}, mounted() { this.autoRefresh = true; }, @@ -427,11 +349,10 @@ export default { case 'search': this.listQuery.pageNo = 1; this.listQuery.pageSize = 20; - this.listQuery.name = val.name || null; - this.listQuery.startTime = val.searchTime ? val.searchTime[0] : null; - this.listQuery.endTime = val.searchTime - ? val.searchTime[1].substr(0, 10) + ' 23:59:59' - : null; + this.listQuery.mainTaskType = val.val1 || null; + this.listQuery.taskAttribute = val.val2 || null; + this.listQuery.mainTaskState = val.val3 || null; + this.listQuery.mainTaskCode = val.code || null; this.getDataList(); break; case 'add': @@ -452,17 +373,12 @@ export default { }, // 获取数据列表 getDataList() { - this.tableData = [ - { - code: 1, - }, - ]; - // this.dataListLoading = true - // this.urlOptions.getDataListURL(this.listQuery).then(response => { - // this.tableData = response.data.list; - // this.listQuery.total = response.data.total; - // this.dataListLoading = false - // }); + this.dataListLoading = true; + getTaskPage(this.listQuery).then((response) => { + this.tableData = response.data.list; + this.listQuery.total = response.data.total; + this.dataListLoading = false; + }); }, // 每页数 sizeChangeHandle(val) { @@ -490,29 +406,32 @@ export default { //tableBtn点击 handleClick(val) { if (val.type === 'stop') { - if (val.data === '无货') { - this.stopFun(val.data); - } else { - this.stopStockVisible = true; - this.$nextTick(() => { - this.$refs.stopStockRef.init(); - }); - } + this.stopFun(val.data); + // if (val.data === '无货') { + // this.stopFun(val.data); + // } else { + // this.stopStockVisible = true; + // this.$nextTick(() => { + // this.$refs.stopStockRef.init(); + // }); + // } } else if (val.type === 'detail') { this.$nextTick(() => { - this.$refs.detailDrawer.init(val.data, 'detail'); + this.$refs.detailDrawer.init(val.data.id, 'detail'); }); - } else { - this.otherMethods(val); } }, stopFun(val) { - this.$prompt('确认终止空载该任务?此操作不可恢复', '终止任务', { - confirmButtonText: '确定', - cancelButtonText: '取消', - inputType: 'textarea', - inputPlaceholder: '请输入终止原因', - }) + this.$prompt( + '确认终止该任务?此操作任务立即终止,车辆保持暂停,请人工回收货物,释放车辆!', + '终止任务', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + inputType: 'textarea', + inputPlaceholder: '请输入终止原因', + } + ) .then(({ value }) => { console.log('终止原因' + value); })