From b45625254103805ce23e1a8125d6cb3148fcbf9b Mon Sep 17 00:00:00 2001 From: Yxq <2290299376@qq.com> Date: Tue, 9 Dec 2025 11:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- board/CODE/src/App.vue | 28 +++-- dev_wms_client/src/layout/goods.vue | 112 ++++++++++++++---- dev_wms_client/src/layout/goodsOut.vue | 104 ++++++++-------- dev_wms_client/src/layout/inventory.vue | 92 +++++++++----- dev_wms_client/src/layout/pda.vue | 12 +- dev_wms_client/src/layout/pickTaskMonitor.vue | 43 +++++-- dev_wms_client/src/layout/vehicle.vue | 29 ++++- dev_wms_client/src/views/SystemCenter.vue | 28 ++++- 8 files changed, 324 insertions(+), 124 deletions(-) diff --git a/board/CODE/src/App.vue b/board/CODE/src/App.vue index ea1a047..f4b72dc 100644 --- a/board/CODE/src/App.vue +++ b/board/CODE/src/App.vue @@ -36,6 +36,9 @@ import PickP2 from "@/views/PickP2.vue"; import PickP3 from "@/views/PickP3.vue"; import InboundP2 from "@/views/InboundP2.vue"; import InboundP3 from "@/views/InboundP3.vue"; +import QualityP7 from "@/views/QualityP7.vue"; +import QualityP9 from "@/views/QualityP9.vue"; +import QualityP8 from "@/views/QualityP8.vue"; const debounce = (fn, delay) => { let timer = null; @@ -64,7 +67,10 @@ export default { InboundP3, PickP1, PickP2, - PickP3 + PickP3, + QualityP7, + QualityP8, + QualityP9 }, setup() { const route = useRoute(); @@ -78,12 +84,15 @@ export default { // 动态标题映射 const titleMapping = { - '1': ' 1 号入库', - '2': ' 2 号入库', - '3': ' 3 号入库', - '4': 'P1 站台拣选', - '5': 'P2 站台拣选', - '6': 'P3 站台拣选', + '1': ' 立库 1 号入库', + '2': ' 立库 2 号入库', + '3': ' 立库 3 号入库', + '4': '立库 P1 站台拣选', + '5': '立库 P2 站台拣选', + '6': '立库 P3 站台拣选', + '7': '海关 P7 站台收货质检', + '8': '海关 P8 站台收货质检', + '9': '海关 P9 站台收货质检', }; // 动态标题 @@ -95,7 +104,7 @@ export default { } const operation = titleMapping[standId]; if (operation) { - return `丰尚立库 ${operation} 状态一览表`; + return `丰尚 ${operation} 状态一览表`; } // 如果standId不在映射中,显示默认标题 return '丰尚立库 状态一览表'; @@ -110,6 +119,9 @@ export default { if (standId === '4') return 'PickP1'; if (standId === '5') return 'PickP2'; if (standId === '6') return 'PickP3'; + if (standId === '7') return 'QualityP7'; + if (standId === '8') return 'QualityP8'; + if (standId === '9') return 'QualityP9'; return 'Inbound'; // 默认显示入库组件 }); diff --git a/dev_wms_client/src/layout/goods.vue b/dev_wms_client/src/layout/goods.vue index b434fcd..b83a1b3 100644 --- a/dev_wms_client/src/layout/goods.vue +++ b/dev_wms_client/src/layout/goods.vue @@ -179,6 +179,7 @@ import UploadExcelBaseGoods from '@/excel/UploadExcelBaseGoods.vue' import UploadExcelKanban from '@/excel/UploadExcelKanban.vue' import {exportGoodsExcel} from "@/api/excel"; import {dateFormatter} from "@/utils/formatter"; +import { getUserPermission } from '@/api/user.js' /** * 常量定义 @@ -245,14 +246,38 @@ const handleSelectionChange = (row) => { selectedRows.value = selectedRows.value.filter(item => item.goodsId !== row.goodsId) } } -// 批量编辑处理 +// 修改批量编辑处理函数 const handleBatchEdit = () => { - if (selectedRows.value.length === 0) { - ElMessage.warning('请至少选择一条记录') - return + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, + userName: USER_NAME } - batchEditForm.pickingDate = '' - showBatchEditDialog.value = true + + getUserPermission(permissionParams).then(res => { + if (res.data.code === 0) { + // 解析权限字符串,检查是否包含"D"(批量修改时间权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('B')) { + // 无批量修改时间权限提示 + ElMessage.error('您没有批量修改时间的权限') + return + } + + // 有权限,继续执行原有逻辑 + if (selectedRows.value.length === 0) { + ElMessage.warning('请至少选择一条记录') + return + } + batchEditForm.pickingDate = '' + showBatchEditDialog.value = true + } else { + ElMessage.error(res.data.message || '权限检查失败') + } + }).catch(err => { + console.log(err) + ElMessage.error('权限检查失败') + }) } const handleSelectAllChange = (val) => { @@ -328,25 +353,48 @@ const saveEdit = (editForm) => { -// 添加优先级 +// 修改加急处理函数 const handleDelete = (row) => { - // - let request = { - taskId: row.taskId, + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, + userName: USER_NAME } - upOutsType( request).then((res) => { + + getUserPermission(permissionParams).then(res => { if (res.data.code === 0) { - ElMessage({ - message: '操作成功', - type: 'success', - }); - search() + // 解析权限字符串,检查是否包含"C"(加急权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('B')) { + // 无加急权限提示 + ElMessage.error('您没有加急操作的权限') + return + } + + // 有权限,继续执行原有逻辑 + let request = { + taskId: row.taskId, + } + upOutsType(request).then((res) => { + if (res.data.code === 0) { + ElMessage({ + message: '操作成功', + type: 'success', + }); + search() + } else { + ElMessage({ + message: res.data.message, + type: 'error', + }); + } + }) } else { - ElMessage({ - message: res.data.message, - type: 'error', - }); + ElMessage.error(res.data.message || '权限检查失败') } + }).catch(err => { + console.log(err) + ElMessage.error('权限检查失败') }) } // 编辑弹窗相关 @@ -359,10 +407,26 @@ const editFormRef = ref() // 打开编辑弹窗 const handleEdit = (row) => { - editForm.taskId = row.taskId - // 使用 formatDateToDay 处理日期,避免时区问题 - editForm.pickingDate = row.pickingDate ? formatDateToDay(row.pickingDate) : '' - showEditDialog.value = true + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, + userName: USER_NAME + } + getUserPermission(permissionParams).then(res => { + if (res.data.code === 0) { + // 解析权限字符串,检查是否包含"C"(下发盘点权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('B')) { + // 无下发盘点权限提示 + ElMessage.error('您没有编辑时间的权限') + return + } + editForm.taskId = row.taskId + // 使用 formatDateToDay 处理日期,避免时区问题 + editForm.pickingDate = row.pickingDate ? formatDateToDay(row.pickingDate) : '' + showEditDialog.value = true + } + }) } const formatDateToDay = (dateString) => { diff --git a/dev_wms_client/src/layout/goodsOut.vue b/dev_wms_client/src/layout/goodsOut.vue index 30153da..ebe1110 100644 --- a/dev_wms_client/src/layout/goodsOut.vue +++ b/dev_wms_client/src/layout/goodsOut.vue @@ -2,59 +2,59 @@
- - - - - - - - - - - - +
+ +
+ + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + 确认出库 + + 清除输入 + + +
+
+
diff --git a/dev_wms_client/src/layout/inventory.vue b/dev_wms_client/src/layout/inventory.vue index cad783b..a5cf7a3 100644 --- a/dev_wms_client/src/layout/inventory.vue +++ b/dev_wms_client/src/layout/inventory.vue @@ -118,6 +118,9 @@ import {confirmInventory, getInventoryConfirm, requestInventory} from "@/api/tas import {labelPosition} from "@/constant/form"; import UploadExcelInventory from "@/excel/UploadExcelInventory.vue"; import {loading} from "@/utils/loading"; +// 在文件顶部导入必要的模块(如果还没有导入的话) +import { getUserPermission } from '@/api/user.js' + const STAND_ID = store.getters.getStandId const USER_NAME = store.getters.getUserName @@ -294,43 +297,72 @@ const clearConfirmEntity = (index) => { // 下发盘点任务 const sendInventoryRequest = () => { - inventoryRequestFormEntity.goodsId = inventoryRequestFormEntity.goodsId.trim().toUpperCase() - inventoryRequestFormEntity.vehicleId = inventoryRequestFormEntity.vehicleId.trim().toUpperCase() - inventoryRequestFormEntity.specialStock = inventoryRequestFormEntity.specialStock.trim().toUpperCase() - inventoryRequestFormEntity.specialStockNo = inventoryRequestFormEntity.specialStockNo.trim().toUpperCase() - inventoryRequestFormEntity.specialStockItemNo = inventoryRequestFormEntity.specialStockItemNo.trim().toUpperCase() - inventoryRequestFormEntity.batchNo = inventoryRequestFormEntity.batchNo.trim().toUpperCase() - if (inventoryRequestFormEntity.goodsId === '') { - ElMessage.error("料号为必须项。") - return - } - const request = { - goodsId: inventoryRequestFormEntity.goodsId, - vehicleId: inventoryRequestFormEntity.vehicleId, - specialStock: inventoryRequestFormEntity.specialStock, - specialStockNo: inventoryRequestFormEntity.specialStockNo, - specialStockItemNo: inventoryRequestFormEntity.specialStockItemNo, - batchNo: inventoryRequestFormEntity.batchNo, - standId: STAND_ID, + // 先检查用户是否有下发盘点权限(A权限) + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, userName: USER_NAME } - loading.open('处理中...') - requestInventory(request).then(res => { - const response = res.data - if (response.code === 0) { - ElMessage.success(response.message) - pauseGetPickFlag.value = false + + getUserPermission(permissionParams).then(res => { + if (res.data.code === 0) { + // 解析权限字符串,检查是否包含"A"(下发盘点权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('A')) { + // 无下发盘点权限提示 + ElMessage.error('您没有下发盘点任务的权限') + return + } + + // 有权限,继续执行原有逻辑 + inventoryRequestFormEntity.goodsId = inventoryRequestFormEntity.goodsId.trim().toUpperCase() + inventoryRequestFormEntity.vehicleId = inventoryRequestFormEntity.vehicleId.trim().toUpperCase() + inventoryRequestFormEntity.specialStock = inventoryRequestFormEntity.specialStock.trim().toUpperCase() + inventoryRequestFormEntity.specialStockNo = inventoryRequestFormEntity.specialStockNo.trim().toUpperCase() + inventoryRequestFormEntity.specialStockItemNo = inventoryRequestFormEntity.specialStockItemNo.trim().toUpperCase() + inventoryRequestFormEntity.batchNo = inventoryRequestFormEntity.batchNo.trim().toUpperCase() + + if (inventoryRequestFormEntity.goodsId === '') { + ElMessage.error("料号为必须项。") + return + } + + const request = { + goodsId: inventoryRequestFormEntity.goodsId, + vehicleId: inventoryRequestFormEntity.vehicleId, + specialStock: inventoryRequestFormEntity.specialStock, + specialStockNo: inventoryRequestFormEntity.specialStockNo, + specialStockItemNo: inventoryRequestFormEntity.specialStockItemNo, + batchNo: inventoryRequestFormEntity.batchNo, + standId: STAND_ID, + userName: USER_NAME + } + + loading.open('处理中...') + requestInventory(request).then(res => { + const response = res.data + if (response.code === 0) { + ElMessage.success(response.message) + pauseGetPickFlag.value = false + } else { + errorBox(response.message) + } + }).catch(err => { + console.log(err) + ElMessage.error("发生异常。") + }).finally(() => { + loading.close() + }) } else { - errorBox(response.message) + ElMessage.error(res.data.message || '权限检查失败') } }).catch(err => { console.log(err) - ElMessage.error("发生异常。") - }).finally(() => { - loading.close() + ElMessage.error('权限检查失败') }) } + // 确认/放行 (修改为支持索引) const confirmOrRelease = (index) => { const entity = confirmEntities[index] @@ -340,6 +372,10 @@ const confirmOrRelease = (index) => { goodsId: entity.goodsId, vehicleId: entity.vehicleId, confirmNum: entity.confirmNum, + specialStock: entity.specialStock, + specialStockNo: entity.specialStockNo, + specialStockItemNo: entity.specialStockItemNo, + batchNo: entity.batchNo, standId: getChildStandIdByIndex(index), userName: USER_NAME } diff --git a/dev_wms_client/src/layout/pda.vue b/dev_wms_client/src/layout/pda.vue index 5f1fe05..d3a2abe 100644 --- a/dev_wms_client/src/layout/pda.vue +++ b/dev_wms_client/src/layout/pda.vue @@ -24,12 +24,12 @@ - + - + @@ -204,6 +204,10 @@ export default { realRemainQty: this.bindingData.realRemainQty, isOut: this.bindingData.isOut, putArea: this.bindingData.putArea, + specialStock: this.bindingData.specialStock, + specialStockNo: this.bindingData.specialStockNo, + specialStockItemNo: this.bindingData.specialStockItemNo, + batchNo: this.bindingData.batchNo }, standId: this.bindingData.standId, userName: USER_NAME @@ -313,6 +317,10 @@ export default { this.bindingData.putArea = result.stockConfirm.putArea || '' this.bindingData.warningQty = result.stockConfirm.warningQty this.bindingData.remark = result.stockConfirm.remark + this.bindingData.specialStock = result.stockConfirm.specialStock + this.bindingData.specialStockNo = result.stockConfirm.specialStockNo + this.bindingData.specialStockItemNo = result.stockConfirm.specialStockItemNo + this.bindingData.batchNo = result.stockConfirm.batchNo } console.log(this.bindingData) } else { diff --git a/dev_wms_client/src/layout/pickTaskMonitor.vue b/dev_wms_client/src/layout/pickTaskMonitor.vue index 1ef3079..2845d82 100644 --- a/dev_wms_client/src/layout/pickTaskMonitor.vue +++ b/dev_wms_client/src/layout/pickTaskMonitor.vue @@ -128,6 +128,7 @@ import {pickingTaskStatusOptions} from '@/constant/options.js' import { addAllOptionOfOptions } from '@/utils/generator.js' import { loading } from '@/utils/loading' import {errorBox} from "@/utils/myMessageBox"; +import { getUserPermission } from '@/api/user.js' /** * 常量定义 */ @@ -177,18 +178,44 @@ const resizeHeight = () => { } const editCurrentRowFormEntity = (row) => { - pickId = row.pickId - Object.assign(pickTaskFormEntity, { - pickId: row.pickId, - vehicleId: row.vehicleId, - pickStand: row.pickStand, - pickStatus: parseInt(row.pickStatus) // 确保是数字类型 + // 检查用户是否有编辑拣选任务权限(F权限) + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, + userName: USER_NAME + } + + getUserPermission(permissionParams).then(res => { + if (res.data.code === 0) { + // 解析权限字符串,检查是否包含"F"(编辑拣选任务权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('D')) { + // 无编辑权限提示 + ElMessage.error('您没有编辑拣选任务的权限') + return + } + + // 有权限,继续执行原有逻辑 + pickId = row.pickId + Object.assign(pickTaskFormEntity, { + pickId: row.pickId, + vehicleId: row.vehicleId, + pickStand: row.pickStand, + pickStatus: parseInt(row.pickStatus) // 确保是数字类型 + }) + console.log('编辑行数据:', pickTaskFormEntity) // 调试信息 + dialogVisible.value = true + } else { + ElMessage.error(res.data.message || '权限检查失败') + } + }).catch(err => { + console.log(err) + ElMessage.error('权限检查失败') }) - console.log('编辑行数据:', pickTaskFormEntity) // 调试信息 - dialogVisible.value = true } + const submitInfo = (formData) => { const params = { pickId: formData.pickId, diff --git a/dev_wms_client/src/layout/vehicle.vue b/dev_wms_client/src/layout/vehicle.vue index d743a2c..126ba7a 100644 --- a/dev_wms_client/src/layout/vehicle.vue +++ b/dev_wms_client/src/layout/vehicle.vue @@ -133,6 +133,7 @@ import { addAllOptionOfOptions } from '@/utils/generator.js' import { loading } from '@/utils/loading' import {requireStockOutEmpty} from "@/api/task"; import {errorBox} from "@/utils/myMessageBox"; +import { getUserPermission } from '@/api/user.js' // 修改导入语句,添加正确的API函数 /** @@ -328,8 +329,34 @@ const submitUpdateRow = (rowFormEntity) => { /** * 出空箱功能相关方法 */ +// 修改出空箱对话框打开函数 const openEmptyBoxDialog = () => { - emptyBoxDialogVisible.value = true + // 检查用户是否有出空箱权限(E权限) + const permissionParams = { + loginAccountUpdate: store.getters.getUser.loginAccount, + roleIdOp: store.getters.getUser.roleId, + userName: USER_NAME + } + + getUserPermission(permissionParams).then(res => { + if (res.data.code === 0) { + // 解析权限字符串,检查是否包含"E"(出空箱权限) + const permissionStr = res.data.message || '' + if (!permissionStr.includes('C')) { + // 无出空箱权限提示 + ElMessage.error('您没有出空箱操作的权限') + return + } + + // 有权限,继续执行原有逻辑 + emptyBoxDialogVisible.value = true + } else { + ElMessage.error(res.data.message || '权限检查失败') + } + }).catch(err => { + console.log(err) + ElMessage.error('权限检查失败') + }) } const cancelEmptyBox = () => { diff --git a/dev_wms_client/src/views/SystemCenter.vue b/dev_wms_client/src/views/SystemCenter.vue index 6530c01..abb9232 100644 --- a/dev_wms_client/src/views/SystemCenter.vue +++ b/dev_wms_client/src/views/SystemCenter.vue @@ -30,6 +30,8 @@