diff --git a/dev_wms_client/package-lock.json b/dev_wms_client/package-lock.json index 5e94a4d..1f24ff9 100644 --- a/dev_wms_client/package-lock.json +++ b/dev_wms_client/package-lock.json @@ -11,6 +11,7 @@ "@element-plus/icons-vue": "^2.3.1", "axios": "^1.3.3", "core-js": "^3.8.3", + "echarts": "^5.4.3", "element-plus": "^2.9.8", "file-saver": "^2.0.5", "moment": "^2.29.4", @@ -5558,6 +5559,20 @@ "node": ">=6.0.0" } }, + "node_modules/echarts": { + "version": "5.4.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz", + "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.4.4" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -12223,6 +12238,19 @@ "engines": { "node": ">=10" } + }, + "node_modules/zrender": { + "version": "5.4.4", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz", + "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" } }, "dependencies": { @@ -16416,6 +16444,22 @@ "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", "dev": true }, + "echarts": { + "version": "5.4.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz", + "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.4.4" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -21683,6 +21727,21 @@ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true + }, + "zrender": { + "version": "5.4.4", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz", + "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } } } } diff --git a/dev_wms_client/package.json b/dev_wms_client/package.json index f57c645..95f6388 100644 --- a/dev_wms_client/package.json +++ b/dev_wms_client/package.json @@ -11,6 +11,7 @@ "@element-plus/icons-vue": "^2.3.1", "axios": "^1.3.3", "core-js": "^3.8.3", + "echarts": "^5.4.3", "element-plus": "^2.9.8", "file-saver": "^2.0.5", "moment": "^2.29.4", diff --git a/dev_wms_client/src/api/excel.js b/dev_wms_client/src/api/excel.js index 1ebda5e..68b5122 100644 --- a/dev_wms_client/src/api/excel.js +++ b/dev_wms_client/src/api/excel.js @@ -172,4 +172,13 @@ export const exportLocationDetailExcel = (data) => { data: data, timeout: 600000 }) +} +// 导入盘点任务 +export const importInventoryExcel = (data) => { + return request({ + url: '/excel/importGoods', // 根据你提供的地址修改 + method: 'post', + data: data, + timeout: 600000 + }) } \ No newline at end of file diff --git a/dev_wms_client/src/api/goods.js b/dev_wms_client/src/api/goods.js index 3691170..20a532d 100644 --- a/dev_wms_client/src/api/goods.js +++ b/dev_wms_client/src/api/goods.js @@ -1,5 +1,13 @@ import request from "@/http/request"; +export function batchIssueTasks(params) { + return request({ + url: '/taskQuery/updateOutsTaskStatus', + method: 'post', + data: params + }) +} + /** * 分页查找物料 */ diff --git a/dev_wms_client/src/api/stock.js b/dev_wms_client/src/api/stock.js index afffb7e..9739e31 100644 --- a/dev_wms_client/src/api/stock.js +++ b/dev_wms_client/src/api/stock.js @@ -8,6 +8,14 @@ export const queryStocksByPage = (params) => { }) } +export const querySpecialEmptyStocksForMix = (params) => { + return request({ + url: '/stock/querySpecialEmptyStocksForMix', + method: 'post', + data: params + }) +} + export const queryStocks = (params) => { return request({ url: '/stock/queryStocks', @@ -16,10 +24,27 @@ export const queryStocks = (params) => { }) } +export const queryStocksBySpecial = (params) => { + return request({ + url: '/stock/queryStocksBySpecial', + method: 'post', + data: params + }) +} + +export const querySpecialEmptyStocksForPDA = (params) => { + return request({ + url: '/stock/querySpecialEmptyStocksForPDA', + method: 'post', + data: params + }) +} + export const queryStockUpdateByPage = (params) => { return request({ url: '/stock/queryStockUpdateByPage', method: 'post', data: params }) -} \ No newline at end of file +} + diff --git a/dev_wms_client/src/api/task.js b/dev_wms_client/src/api/task.js index a25c400..3c99613 100644 --- a/dev_wms_client/src/api/task.js +++ b/dev_wms_client/src/api/task.js @@ -73,6 +73,14 @@ export const confirmCurrentTask = (params, config = {}) => { }) } +export const mergeStocks = (params) => { + return request({ + url: '/task/createInventoryFromMixStock', + method: 'post', + data: params + }) +} + export const confirmCurrentTaskByPDA = (params) => { return request({ @@ -115,6 +123,39 @@ export const confirmInventory = (params) => { data: params }) } +export const confirmMixStock = (params) => { + return request({ + url: '/task/confirmMixStock', + method: 'post', + data: params, + timeout: 30000 + }) +} + +export const pdaOutTask = (params) => { + return request({ + url: '/task/pdaOutTask', + method: 'post', + data: params + }) +} + +export const queryInOutBoundStatistics = (params) => { + return request({ + url: '/board/queryInOutBoundStatistics', + method: 'post', + data: params + }) +} + +export const queryStockAgeDistribution = (params) => { + return request({ + url: '/board/queryStockAgeDistribution', + method: 'get', + data: params + }) +} + // 获取缺料数量 export const getGoodsLackQty = (params) => { return request({ diff --git a/dev_wms_client/src/http/request.js b/dev_wms_client/src/http/request.js index 485004c..7c7698e 100644 --- a/dev_wms_client/src/http/request.js +++ b/dev_wms_client/src/http/request.js @@ -2,6 +2,7 @@ import axios from 'axios' const request = axios.create({ baseURL: 'http://172.18.222.253:12315/wms', + //baseURL: 'http://172.18.222.253:12306/wms', //baseURL: 'http://localhost:12315/wms', timeout: 5000 }) diff --git a/dev_wms_client/src/layout/batchInventory.vue b/dev_wms_client/src/layout/batchInventory.vue index 0a9946a..bfe9da4 100644 --- a/dev_wms_client/src/layout/batchInventory.vue +++ b/dev_wms_client/src/layout/batchInventory.vue @@ -274,6 +274,7 @@ const handleSelectionChange = (row) => { } } +// 处理全选变化 // 处理全选变化 const handleSelectAllChange = (val) => { displayStocks.value.forEach(row => { @@ -281,12 +282,15 @@ const handleSelectAllChange = (val) => { }) if (val) { - // 全选 + // 全选 - 添加到选中数组 selectedRows.value = [...displayStocks.value] } else { - // 取消全选 + // 取消全选 - 清空选中数组 selectedRows.value = [] } + + // 强制更新视图 + displayStocks.value = [...displayStocks.value] } // 处理批量盘点按钮点击 const handleBatchInventory = () => { @@ -320,14 +324,13 @@ const confirmBatchInventory = () => { if (res.data.code === 0) { ElMessage.success('批量盘点成功'); showBatchInventoryDialog.value = false; - search(); // 刷新表格数据 - // 清空选择 - selectedRows.value.forEach(row => { - row.checked = false; - }); - selectedRows.value = []; - isSelectAll.value = false; + // 先清空选择状态 + selectedRows.value = [] + isSelectAll.value = false + + // 然后刷新数据 + search(); // 刷新表格数据 } else { ElMessage.error(res.data.message); } @@ -336,6 +339,18 @@ const confirmBatchInventory = () => { }); }; +// 重置选择状态 +const resetSelection = () => { + selectedRows.value = [] + isSelectAll.value = false + if (displayStocks.value && displayStocks.value.length > 0) { + displayStocks.value.forEach(row => { + row.checked = false + }) + // 强制更新视图 + displayStocks.value = [...displayStocks.value] + } +} // 查询 const search = () => { @@ -356,11 +371,21 @@ const search = () => { const data = response.data console.log(data) if (data != null) { - displayStocks.value = data.lists + // 重置每行的checked状态 + displayStocks.value = data.lists.map(item => ({ + ...item, + checked: false + })) baseTableQuery.total = data.total + + // 重置选择状态 + selectedRows.value = [] + isSelectAll.value = false } else { displayStocks.value = [] baseTableQuery.total = 0 + selectedRows.value = [] + isSelectAll.value = false } } else { ElMessage.error(response.message) @@ -381,6 +406,7 @@ const clearQuery = () => { stockQuery.fromDate = null, stockQuery.toDate = null, stockQuery.noUseDays = null + resetSelection() } const loadAllGoodsInfo = () => { const request = { diff --git a/dev_wms_client/src/layout/excelInventory.vue b/dev_wms_client/src/layout/excelInventory.vue new file mode 100644 index 0000000..373e7c2 --- /dev/null +++ b/dev_wms_client/src/layout/excelInventory.vue @@ -0,0 +1,426 @@ + + + + diff --git a/dev_wms_client/src/layout/goods.vue b/dev_wms_client/src/layout/goods.vue index b83a1b3..5336f00 100644 --- a/dev_wms_client/src/layout/goods.vue +++ b/dev_wms_client/src/layout/goods.vue @@ -15,24 +15,30 @@ - - - - + + + +
查询 清除输入 + + + 批量下发({{ selectedRows.length }}) + - - - - - - - - + + + + + + + +
@@ -46,6 +52,7 @@