diff --git a/dist.zip b/dist.zip deleted file mode 100644 index eeb4036..0000000 Binary files a/dist.zip and /dev/null differ diff --git a/package-lock.json b/package-lock.json index 90483d6..5423e4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "core-js": "^3.8.3", "element-plus": "^2.4.0", "file-saver": "^2.0.5", + "jsbarcode": "^3.11.6", "moment": "^2.29.4", "node-polyfill-webpack-plugin": "^2.0.1", "qrcode": "^1.5.3", @@ -7655,6 +7656,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbarcode": { + "version": "3.11.6", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz", + "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", @@ -19348,6 +19354,11 @@ "esprima": "^4.0.0" } }, + "jsbarcode": { + "version": "3.11.6", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz", + "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz", diff --git a/package.json b/package.json index 31f78bf..ebe2f9f 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "core-js": "^3.8.3", "element-plus": "^2.4.0", "file-saver": "^2.0.5", + "jsbarcode": "^3.11.6", "moment": "^2.29.4", "node-polyfill-webpack-plugin": "^2.0.1", "qrcode": "^1.5.3", diff --git a/public/index.html b/public/index.html index e8ef2d6..31e3fc6 100644 --- a/public/index.html +++ b/public/index.html @@ -21,7 +21,7 @@ // 设置一个新的定时器,用户空闲时刷新 timeout = setTimeout(() => { location.reload(); // 刷新当前页面 - }, 600000); // 10 分钟 + }, 300000); // 10 分钟 } // 监听用户活动事件 diff --git a/src/api/excel.js b/src/api/excel.js index 9b2f662..e2d6d32 100644 --- a/src/api/excel.js +++ b/src/api/excel.js @@ -60,6 +60,15 @@ const uploadExcelParts = (data) => { }) } +const uploadExcelOrderOutOut = (data) => { + return request({ + url: '/excel/uploadKateOrders', + method: 'post', + data: data, + timeout: 10000 + }) +} + const uploadBoxConfig = (data) => { return request({ url: '/excel/uploadBoxConfig', @@ -104,6 +113,21 @@ const downloadStockExcel = () => { }) } +const downloadOrderOutTableNoEnd = () => { + return request({ + url: '/excel/downloadOrderOutTableNow', + method: 'get', + responseType: 'blob' + }) +} +const downloadOrderOutTable = () => { + return request({ + url: '/excel/downloadOrderOutTable', + method: 'get', + responseType: 'blob' + }) +} + const downloadKateTaskExcel = () => { return request({ url: '/excel/downloadKateTaskExcel', @@ -164,11 +188,13 @@ export { downlocadExcel, uploadExcel, uploadExcelPeijian, + downloadOrderOutTableNoEnd, uploadExcelHejian, uploadExcelParts, distributePeijianTasks, distributeHejianTasks, downloadStockExcel, + downloadOrderOutTable, downloadKateTaskExcel, uploadExcelJinji, distributeJinjiTasks, @@ -179,5 +205,6 @@ export { downloadPackageExcel, uploadBoxConfig, uploadExcelKatePackage, - downloadMaterialExcel + downloadMaterialExcel, + uploadExcelOrderOutOut } \ No newline at end of file diff --git a/src/api/order.in.js b/src/api/order.in.js index 4ac01cd..e8045da 100644 --- a/src/api/order.in.js +++ b/src/api/order.in.js @@ -1,3 +1,4 @@ +import AddVechile from "@/components/AddVechile.vue"; import request from "@/http/request"; export default { @@ -13,13 +14,52 @@ export default { } }) }, + //新增载具 + addVechile(params){ + return request.post('/goods/addVechile', params) + }, + //新增零件 + addPartInfo(params) { + return request.post('/goods/addPartInfo', params) + }, + //查询所有用户 + getUserList(params) { + return request.post('/user/getUserList',params) + }, + //添加用户 + addUser(params) { + return request.post('/user/addUser',params) + }, + //删除用户 + deleteUser(userId) { + return request.delete('/user/deleteUser/' + userId) + }, + //修改用户密码 + changePassword(params) { + return request.post('/user/changePassword',params) + }, + //原材料申请入库 + addInByTask(params){ + return request.post('/api/orderIn/addInByTask', params) + }, //下发任务 addOrderIn(params){ return request.post('/api/orderIn/addOrderIn', params) }, + bindingVehicl(params){ + return request.post('/api/orderIn/bindingVehicl', params) + }, + //应急预案,直接生成任务 + yj(params){ + return request.post('/api/orderIn/loginInBad', params) + }, // 绑定物料 bindingVehicle(params) { return request.post('/api/orderIn/bindingVehicle', params) + }, + // 下发母托 + downEmptyBox(params) { + return request.put('/api/orderOut/downEmptyBox', params) }, //提交更新入库信息 updateForInformation(params){ diff --git a/src/api/order.out.js b/src/api/order.out.js index 226f6b0..c9f2353 100644 --- a/src/api/order.out.js +++ b/src/api/order.out.js @@ -5,14 +5,25 @@ export default { getOrderOutList(params) { return request.post('/api/orderOut/queryOrderOut', params) }, - // 下发所有出库任务 - OutAll(params) { - return request.put('/api/orderOut/outAll/', params) + // 根据条件获取全部订单 + getOrderOutListByLocation(params) { + return request.post('/api/orderOut/queryOrderOutByLocation', params) }, // 执行出库 executeOut(rowId) { return request.put('/api/orderOut/executeOrderOut/' + rowId) }, + //完成工单 + finishTask(params){ + return request.post('/api/orderOut/finishTaskFile', params) + }, + //手动完成 + handFinish(rowId){ + return request.put('/api/orderOut/handFinish/' + rowId) + }, + executeAllOut(rowId) { + return request.put('/api/orderOut/executeAllOrderOut/'+ rowId) + }, // 刪除按钮 deleteOrder(rowId){ return request.delete('/api/orderOut/deleteOrderOut/' + rowId) diff --git a/src/api/stock.js b/src/api/stock.js index cf38bb1..6307819 100644 --- a/src/api/stock.js +++ b/src/api/stock.js @@ -8,6 +8,14 @@ const getAllStocks = (params) => { }) } +const getAllStocks1 = (params) => { + return request({ + url: '/stock/getAllStocks1', + method: 'post', + data: params + }) +} + const getAllStocksByGoodsId = (params) => { return request({ url: '/stock/getAllStocksByGoodsId', @@ -16,6 +24,14 @@ const getAllStocksByGoodsId = (params) => { }) } +const getAllStocksByMultiple = (params) => { + return request({ + url: '/stock/getAllStocksByMultiple', + method: 'post', + data: params + }) +} + const updateStockInfo = (params) => { return request({ url: '/stock/updateStockInfo', @@ -24,8 +40,19 @@ const updateStockInfo = (params) => { }) } +const downCheckTask = (params) => { + return request({ + url: '/api/orderOut/downCheckTask', + method: 'put', + data: params + }) +} + export { getAllStocks, updateStockInfo, - getAllStocksByGoodsId + getAllStocksByGoodsId, + getAllStocksByMultiple, + getAllStocks1, + downCheckTask } \ No newline at end of file diff --git a/src/api/user.js b/src/api/user.js index 60ade8c..97d995f 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -18,6 +18,87 @@ export function login(username, password, code, uuid) { }) } +export function deleteUserInfo(params) { + return request({ + url: '/user/deleteUserInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function addUserInfo(params) { + return request({ + url: '/user/addUserInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function updateUserInfo(params) { + return request({ + url: '/user/updateUserInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function deleteRoleInfo(params) { + return request({ + url: '/user/deleteRoleInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function getUserList(params) { + return request({ + url: '/user/getUserList', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function getRoleOptions(params) { + return request({ + url: '/user/getRoleOptions', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function updateRoleInfo(params) { + return request({ + url: '/user/updateRoleInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function getPermissionList(params) { + return request({ + url: '/user/getPermissionList', + method: 'post', + data: params, + timeout: 5000 + }) +} + +export function addRoleInfo(params) { + return request({ + url: '/user/addRoleInfo', + method: 'post', + data: params, + timeout: 5000 + }) +} + // 注册方法 export function register(data) { return request({ @@ -30,6 +111,15 @@ export function register(data) { }) } +export function getRoleList(params) { + return request({ + url: '/user/getRoleList', + method: 'post', + data: params, + timeout: 5000 + }) +} + // 获取用户详细信息 export function getInfo() { return request({ diff --git a/src/components/BindingGoods.vue b/src/components/BindingGoods.vue index 9ee78cf..54dfd10 100644 --- a/src/components/BindingGoods.vue +++ b/src/components/BindingGoods.vue @@ -83,6 +83,13 @@ export default { type: 'error', }); return; + } + if(isNaN(this.bindingData.goodsNum) || this.bindingData.goodsNum <= 0 ) { + ElMessage({ + message: '数量必须为大于等于零的数字', + type: 'error', + }); + return; } this.bindOrderInList = [] ElMessageBox.confirm(`是否下发入库任务?`, '提示') diff --git a/src/components/addCheckOrder.vue b/src/components/addCheckOrder.vue index c5afa32..6540e7a 100644 --- a/src/components/addCheckOrder.vue +++ b/src/components/addCheckOrder.vue @@ -13,10 +13,10 @@ - + - + - + + + + + + + @@ -30,6 +36,10 @@ 重置输入 + + + 呼叫空托垛 + 下发任务 @@ -51,14 +61,15 @@ import {CircleCloseFilled, Close, RefreshRight} from "@element-plus/icons-vue"; import {formatterOrderInEnum} from "@/enum/order.in.enum"; import {formatCellValueTime} from "@/utils/formatter"; import {ElMessage, ElMessageBox} from "element-plus"; -//import apiOrderIn from '@/api/order.in'; +import apiOrderIn from '@/api/order.in'; import apiOrderOut from '@/api/order.out' + export default { // import 引入的组件需要注入到对象中才能使用 components: {Close, CircleCloseFilled, RefreshRight}, props: ['modelValue'], - emits: ['update:modelValue'], + emits: ['update:modelValue','confirm-import'], data() { // 这里存放数据 return { @@ -67,6 +78,7 @@ export default { goodsId: '', goodsNum: '', efSelect: '', + orderOutType: '' }, bindOrderInList: [] } @@ -74,7 +86,15 @@ export default { // 计算属性 类似于 data 概念 computed: {}, // 监控 data 中的数据变化 - watch: {}, + watch: { + 'bindingData.orderOutType': function(newVal) { + if (newVal === 'CP') { + this.bindingData.goodsNum = 1; + } else { + this.bindingData.goodsNum = ''; + } + } + }, // 方法集合 methods: { formatCellValueTime, @@ -88,39 +108,46 @@ export default { }); return; } - this.bindOrderInList = [] - ElMessageBox.confirm(`是否执行手动出库?`, '提示') - .then(() => { - apiOrderOut.addOrder(this.bindingData).then(res => { - const responseData = res.data; - if (responseData.code === 0) { - // 正确请求 - ElMessage({ - message: '执行成功', - type: 'success', - }); - this.bindingData.goodsNum = ''; - this.bindingData.goodsId = ''; - this.bindOrderInList = responseData['returnData']; - } else { - // 服务报错 - ElMessageBox.alert(`服务器返回失败:${responseData.message}`, '执行失败', { - type: 'warning', - confirmButtonText: '确定', - showClose: false - }) - } - }).catch(err => { - // 通讯报错 - ElMessageBox.alert(`请求服务器失败::${err}`, '任务添加失败', { + if(this.bindingData.orderOutType === 'CP' && this.bindingData.goodsNum != 1 ) { + ElMessage({ + message: '成品出库时,数量只能为1', + type: 'error', + }); + return; + } + this.bindOrderInList = [] + ElMessageBox.confirm(`是否执行手动出库?`, '提示') + .then(() => { + apiOrderOut.addOrder(this.bindingData).then(res => { + const responseData = res.data; + if (responseData.code === 0) { + // 正确请求 + ElMessage({ + message: '执行成功', + type: 'success', + }); + this.resetInput(); // 重置输入框 + this.$emit('update:modelValue', false); // 关闭弹窗 + this.$emit('confirm-import'); + } else { + // 服务报错 + ElMessageBox.alert(`服务器返回失败:${responseData.message}`, '执行失败', { type: 'warning', - confirmButtonText: '确定' + confirmButtonText: '确定', + showClose: false }) + } + }).catch(err => { + // 通讯报错 + ElMessageBox.alert(`请求服务器失败::${err}`, '任务添加失败', { + type: 'warning', + confirmButtonText: '确定' }) }) - .catch(() => { - }) - }, + }) + .catch(() => { + }) + }, test() { console.log(this.bindingData); @@ -162,9 +189,42 @@ export default { }, // 重置输入框 resetInput() { + this.bindingData.orderOutType = ''; + this.bindingData.efSelect = ''; this.bindingData.goodsNum = ''; this.bindingData.goodsId = ''; }, + downEmptyBox(){ + ElMessageBox.confirm(`是否呼叫母托下线?`, '提示') + .then(() => { + this.bindOrderInList = []; + apiOrderIn.downEmptyBox().then(res => { + const responseData = res.data + if (responseData.code === 0) { + // 正确请求 + ElMessage({ + message: '下发成功', + type: 'success', + }); + } else { + // 服务报错 + ElMessageBox.alert(`服务器返回失败:${responseData.message}`, '下发失败', { + type: 'warning', + confirmButtonText: '确定', + showClose: false + }) + } + }).catch(err => { + // 通讯报错 + ElMessageBox.alert(`请求服务器失败::${err}`, '任务添加失败', { + type: 'warning', + confirmButtonText: '确定' + }) + }) + }) + .catch(() => { + }) + }, // 绑定物料 bindingGoods() { if(this.bindingData.vehicleNo === '' || this.bindingData.code === '') { diff --git a/src/components/sideMenu.vue b/src/components/sideMenu.vue index 3680289..7ca3734 100644 --- a/src/components/sideMenu.vue +++ b/src/components/sideMenu.vue @@ -51,8 +51,11 @@ export default { } } + \ No newline at end of file + + + diff --git a/src/enum/order.out.enum.js b/src/enum/order.out.enum.js index e7b61c6..fa3087b 100644 --- a/src/enum/order.out.enum.js +++ b/src/enum/order.out.enum.js @@ -1,3 +1,4 @@ +import { warn } from "vue"; // 出库单状态 export const orderOutEnum = { @@ -11,10 +12,25 @@ export const orderOutEnum = { label: '出库中', color: 'primary' }, - error: { + error1: { value: 9, label: '执行异常', color: 'danger' + }, + error2: { + value: 76, + label: '没有库存', + color: 'danger' + }, + error3: { + value: 77, + label: '库存不足', + color: 'warning' + }, + finish: { + value: 100, + label: '已完成', + color: 'success' } } @@ -24,8 +40,14 @@ export function formatterOrderOutEnum(value) { return {label: orderOutEnum.creat.label, type: orderOutEnum.creat.color}; case orderOutEnum.running.value: return {label: orderOutEnum.running.label, type: orderOutEnum.running.color}; - case orderOutEnum.error.value: - return {label: orderOutEnum.error.label, type: orderOutEnum.error.color}; + case orderOutEnum.error1.value: + return {label: orderOutEnum.error1.label, type: orderOutEnum.error1.color}; + case orderOutEnum.error2.value: + return {label: orderOutEnum.error2.label, type: orderOutEnum.error2.color}; + case orderOutEnum.error3.value: + return {label: orderOutEnum.error3.label, type: orderOutEnum.error3.color}; + case orderOutEnum.finish.value: + return {label: orderOutEnum.finish.label, type: orderOutEnum.finish.color}; default: return {label: `未知类型:${value}`, type: 'danger'}; } diff --git a/src/http/request.js b/src/http/request.js index c92b889..9e4fc02 100644 --- a/src/http/request.js +++ b/src/http/request.js @@ -1,7 +1,8 @@ import axios from 'axios' //172.21.80.150 const request = axios.create({ -// baseURL: 'http://10.90.243.134:443/wmsServer/wms', + //baseURL: 'http://10.90.85.68:443/wmsServer/wms', + //baseURL: 'https://wxperkinsasrs.ap.cat.com/wmsServer/wms', baseURL: 'http://localhost:19990/wms', timeout: 5000 }) diff --git a/src/layout/goods.vue b/src/layout/goods.vue index 32cbeee..8e02ece 100644 --- a/src/layout/goods.vue +++ b/src/layout/goods.vue @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - - - - - + + + @@ -55,110 +40,13 @@ style="max-width: 100%" :rules="rules" status-icon> - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -172,16 +60,20 @@ + + @@ -201,6 +93,7 @@ export default { material: '', goodsFormEntity: reactive({}), labelPosition: 'top', + addList: false, goodsFormRef: ref(), rules: reactive({}) } @@ -247,23 +140,32 @@ export default { this.dialogVisible = true }, deleteCurrentRowGoods(row) { - this.material = row.material - const goods = { - material: row.material + this.roleId = row.roleId + if (this.$store.state.user.roleId != 1) { + errorBox("操作人必须是管理员级别。") + return } - deleteCurrentPartInfo(goods).then(res => { - if (res.data.code == 0) { - ElMessage({ - message: '删除零件信息成功', - type: 'success', - }) - this.search() - } else { - ElMessage.error(res.data.message) - } - }).catch(err => { - ElMessage.error('删除零件信息失败:' + err) - }) + ElMessageBox.confirm('是否删除当前数据库数据?','提示') + .then(() => { + this.material = row.material + const goods = { + material: row.material + } + deleteCurrentPartInfo(goods).then(res => { + if (res.data.code == 0) { + ElMessage({ + message: '删除零件信息成功', + type: 'success', + }) + this.search() + } else { + ElMessage.error(res.data.message) + } + }).catch(err => { + ElMessage.error('删除零件信息失败:' + err) + }) + }).catch(() => { + }) }, submitGoodsInfo(formData) { updatePartInfo(formData).then(res => { diff --git a/src/layout/goodsIn.vue b/src/layout/goodsIn.vue index 299a483..1e31610 100644 --- a/src/layout/goodsIn.vue +++ b/src/layout/goodsIn.vue @@ -16,7 +16,10 @@ 查询入库单 - 下发入库任务 + + 跳转至手持入库 + +
@@ -28,11 +31,11 @@ --> - + - - - + + + @@ -59,6 +70,7 @@ import { reactive, ref } from 'vue' import {ElMessage, ElMessageBox} from 'element-plus' import zhCn from 'element-plus/dist/locale/zh-cn.mjs' import UploadExcelPart from '@/excel/UploadExcelPart.vue' +import BindingGoods from "@/components/BindingGoods.vue"; // const taskInRequestRef = ref() // const bindingData = reactive({ // vehicleNo: '1',// 载具号 @@ -98,6 +110,8 @@ export default { goodsNum: '', rowId: '' }, + // 展示绑定物料的弹窗 + showBindingGoods: false, bindOrderInList: [] } }, @@ -106,8 +120,18 @@ export default { methods: { test() { console.log(this.bindingData); + }, + checkGoods(){ + }, updateGoodsInfo123(){ + if(this.bindingData.vehicleNo === '') { + ElMessage({ + message: '托盘号不能为空', + type: 'error', + }); + return; + } apiOrderIn.updateForInformation({vehicleNo:this.bindingData.vehicleNo,goodsId:this.bindingData.goodsId,goodsNum:this.bindingData.goodsNum,rowId:this.bindingData.rowId}).then(res => { const responseData = res.data if (responseData.code === 0) { @@ -135,6 +159,20 @@ export default { }, queryGoodsOrderIn() { + if(this.bindingData.vehicleNo === '') { + ElMessage({ + message: '请输入托盘号!', + type: 'error', + }); + return; + } + // if(this.bindingData.goodsId !== '' || this.bindingData.goodsNum !== '') { + // ElMessage({ + // message: '查询时不允许输入物料号和数量!', + // type: 'error', + // }); + // return; + // } this.goodsOrderInList = []; apiOrderIn.getOrderInWithVehicleNo(this.bindingData.vehicleNo).then(res => { const responseData = res.data @@ -151,7 +189,7 @@ export default { this.goodsOrderInList = responseData['returnData']; } else { // 服务报错 - ElMessageBox.alert(`服务器返回失败:${responseData.msg}`, '查询失败', { + ElMessageBox.alert(`服务器返回失败:${responseData.message}`, '查询失败', { type: 'warning', confirmButtonText: '确定', showClose: false @@ -241,6 +279,10 @@ export default { this.bindingData.goodsId = ''; this.bindingData.goodsNum = ''; }, + loginToWcs() { + const wcsUrl = `https://wxperkinsasrs.ap.cat.com/wms/#/PDAview`; + window.location.href = wcsUrl; // 打开新窗口 + }, // addTempTasks(formEl, formData) {// 生成入库任务 // if (!formEl) return // formEl.validate((valid) => { diff --git a/src/layout/goodsOut.vue b/src/layout/goodsOut.vue index cd8669c..08745fc 100644 --- a/src/layout/goodsOut.vue +++ b/src/layout/goodsOut.vue @@ -4,11 +4,12 @@
- + + - - + + @@ -16,9 +17,16 @@ 查询出库单 - 手动下发出库 - 一键出库 + 手动出库 + 全部执行 + 完成工单 + 导出当前工单 + 导出工单模板 + + + +
@@ -29,17 +37,10 @@ --> - - - - - - - - - + + + @@ -57,6 +58,11 @@ + + + + + @@ -70,14 +76,17 @@
- + + \ No newline at end of file diff --git a/src/layout/inTaskRecord.vue b/src/layout/inTaskRecord.vue index ef4e9d3..65e0dda 100644 --- a/src/layout/inTaskRecord.vue +++ b/src/layout/inTaskRecord.vue @@ -3,8 +3,8 @@
- - + + 搜索 重置 导出记录 @@ -13,19 +13,20 @@ - - + + + - - + + - - + + diff --git a/src/layout/inventory.vue b/src/layout/inventory.vue index 406e69e..37247e7 100644 --- a/src/layout/inventory.vue +++ b/src/layout/inventory.vue @@ -5,7 +5,6 @@ 查询盘点单 添加盘点单 - 查询盘点任务
@@ -43,43 +42,6 @@ - -
盘点任务
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -120,6 +82,9 @@ export default { loading: false } }, + activated() { + this.queryGoodsOrderCheck(); + }, methods: { queryGoodsOrderCheck(){ OrderCheck.getOrderCheckList(this.searchParams).then(res => { diff --git a/src/layout/inventoryRecord.vue b/src/layout/inventoryRecord.vue index 4e6f838..e32d0a8 100644 --- a/src/layout/inventoryRecord.vue +++ b/src/layout/inventoryRecord.vue @@ -3,31 +3,32 @@
- - + + 搜索 重置 - 刷新 +
- - - - - + + + + + + - - - - - + + + + + - - - + + + diff --git a/src/layout/outTaskRecord.vue b/src/layout/outTaskRecord.vue index 0fcf9cd..94e1133 100644 --- a/src/layout/outTaskRecord.vue +++ b/src/layout/outTaskRecord.vue @@ -3,8 +3,8 @@
- - + + 搜索 重置 @@ -12,20 +12,22 @@
- - - - + + + + + + - - + + - - - + + + diff --git a/src/layout/stock.vue b/src/layout/stock.vue index 8c72216..4947edb 100644 --- a/src/layout/stock.vue +++ b/src/layout/stock.vue @@ -2,15 +2,18 @@
- + + + 搜索 重置 导出表格 - + 多料查询 +
  - - - - - - + + + + + + - - - - - + + + + - - + + - + @@ -56,58 +60,31 @@ - - + - - - - - - - - - + + + + - - - - - - + + + + +
+ + 添加物料号 + 重置数据 +
+ + + + + + + + + +
@@ -168,11 +153,11 @@ export default { return locationFormatter(cellValue) }, isEmptyFormat: (row, column, cellValue, index) => { - if (cellValue == 0) { - return '带料' - } if (cellValue == 1) { - return '空箱' + return '大' + } + if (cellValue == 0) { + return '小' } }, reset() { @@ -184,7 +169,14 @@ export default { this.dialogVisible = true }, deleteCurrentRowVehicle(row) { - this.vehicleId = row.vehicleId + this.roleId = row.roleId + if (this.$store.state.user.roleId != 1) { + errorBox("操作人必须是管理员级别。") + return + } + ElMessageBox.confirm('是否删除当前数据库数据?','提示') + .then(() => { + this.vehicleId = row.vehicleId const vehicle = { vehicleId: row.vehicleId } @@ -201,6 +193,8 @@ export default { }).catch(err => { ElMessage.error('删除料箱信息失败:' + err) }) + }).catch(() => { + }) }, submitVehicleInfo(formData) { updateVehicleInfo(formData).then(res => { diff --git a/src/router/index.js b/src/router/index.js index 48b0039..50573b4 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -3,7 +3,10 @@ import HomeView from '@/views/HomeView.vue' import stock from '@/layout/stock.vue' import login from '@/views/login.vue' import systemCenter from'@/views/SystemCenter.vue' +import PDAview from'@/views/PDAview.vue' import goodsInPda from '@/layout/goodsInForPDA.vue' +import goodsWithPda from '@/layout/goodsInWithPDA.vue' +import goodsInBad from '@/layout/loginToBad.vue' const routes = [ { @@ -15,6 +18,7 @@ const routes = [ { path: '/stock', component: stock },// 库存 { path: '/goodsIn', component: () => import('@/layout/goodsIn.vue') },// 入库 { path: '/goodsOut', component: () => import('@/layout/goodsOut.vue') },// 出库 + { path: '/goodsOutByInFile', component: () => import('@/layout/goodsOutByInFile.vue') },// 出库 { path: '/inTaskRecord', component: () => import('@/layout/inTaskRecord.vue') },// 入库记录 { path: '/outTaskRecord', component: () => import('@/layout/outTaskRecord.vue') },// 出库记录 { path: '/location', component: () => import('@/layout/location.vue') },// 库位 @@ -25,6 +29,11 @@ const routes = [ { path: '/inventory', component: () => import('@/layout/inventory.vue') },// 盘点 { path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue') },// 盘点 { path: '/vehicle', component: () => import('@/layout/vehicle.vue') },// 料箱 + { path: '/user', component: () => import('@/layout/user.vue') },// 料箱 + { path: '/role', component: () => import('@/layout/character.vue') },// + { path: '/vehicleData', component: () => import('@/layout/vechileData.vue') },// + { path: '/updatePassword', component: () => import('@/layout/role.vue') },// + { path: '/checkNum', component: () => import('@/layout/checkNum.vue') }, ] }, { @@ -37,11 +46,26 @@ const routes = [ name: 'systemCenter', component: systemCenter }, + { + path: '/PDAview', + name: 'PDAview', + component: PDAview + }, { path: '/goodsInPda', name: 'goodsInPda', component: goodsInPda }, + { + path: '/goodsInBad', + name: 'goodsInBad', + component: goodsInBad + }, + { + path: '/goodsWithPda', + name: 'goodsWithPda', + component: goodsWithPda + }, ] const router = createRouter({ diff --git a/src/utils/formatter.js b/src/utils/formatter.js index bbfc4ed..588f246 100644 --- a/src/utils/formatter.js +++ b/src/utils/formatter.js @@ -65,16 +65,17 @@ function taskStatusFormatter(value) { function locationFormatter(locationId) { if (locationId === null || locationId == undefined) { - return '' + return '位置异常' } - const parts = locationId.split('-'); - if (parts.length === 4) { - return parts[0] + '排' + parts[1] + '列' + parts[2] + '层' + parts[3] + '深'; - } else if (parts.length === 3) { - return parts[0] + '排' + parts[1] + '列' + parts[2] + '层'; - } else { - return '格式错误'; - } + return locationId + // const parts = locationId.split('-'); + // if (parts.length === 4) { + // return parts[0] + '排' + parts[1] + '列' + parts[2] + '层' + parts[3] + '深'; + // } else if (parts.length === 3) { + // return parts[0] + '排' + parts[1] + '列' + parts[2] + '层'; + // } else { + // return '格式错误'; + // } // const parts = locationId.split('-'); // return parts[0] + '排' + parts[1] + '列' + parts[2] + '层' + parts[3] + '深度'; //return locationId.substr(0, 2) + '排' + locationId.substr(2, 2) + '列' + locationId.substr(4, 2) + '层' diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index ba910a7..ff255cb 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -36,7 +36,7 @@ - © 1970-2023 江苏菲达宝开电气股份有限公司 + © 1970-2025 江苏菲达宝开电气股份有限公司 diff --git a/src/views/SystemCenter.vue b/src/views/SystemCenter.vue index 3bc029a..76d60ac 100644 --- a/src/views/SystemCenter.vue +++ b/src/views/SystemCenter.vue @@ -5,16 +5,25 @@ WMS系统 - - 手持盘点核对系统 - - + + @@ -33,15 +42,30 @@ const token = store.getters.getToken// 密码 const loginToWms = () => { router.replace({ path: '/home' }) } +const loginWithPda = () => { + router.replace({ path: '/goodsWithPda' }) +} +const loginToPdaAll = () => { + router.replace({ path: '/PDAview' }) +} + const loginToPda = () => { router.replace({ path: '/goodsInPda' }) } +const loginToBad = () => { + router.replace({ path: '/goodsInBad' }) +} const loginToSideScan = () => { router.replace({ path: '/sideScan' }) } // 登录到WCS系统 +// const loginToWcs = () => { +// const wcsUrl = `https://cxlasrs.ecorp.cat.com/wcs/#/login?user=user&pwd=user` +//https://wxperkinsasrs.ap.cat.com/wmsServer/wms +// window.location.href = wcsUrl// 打开新窗口 +// } const loginToWcs = () => { - const wcsUrl = `https://cxlasrs.ecorp.cat.com/wcs/#/login?user=user&pwd=user` + const wcsUrl = `https://wxperkinsasrs.ap.cat.com/wcs/#/login?user=developer&pwd=developer` window.location.href = wcsUrl// 打开新窗口 } const loginToMonitor = () => { @@ -81,23 +105,21 @@ onMounted(() => { \ No newline at end of file + +.el-form-item { + margin-bottom: 20px; +} + +.el-button { + font-size: 16px; + padding: 12px 20px; +} + +@media (max-width: 600px) { + .login-container { + width: 90%; + padding: 20px; + } + + .el-button { + font-size: 14px; + padding: 10px 15px; + } +} + \ No newline at end of file