4 Commits
v3.4.7 ... main

Author SHA1 Message Date
tao
66e8bc0a52 Merge branch 'main' of http://192.168.1.132:3000/Wance/rd_mes_uniapp 2026-01-14 11:59:34 +08:00
tao
81e061d08b 采购直接入库:修复库位复制异常问题
直接入库单:过滤掉上架数量为 0 的明细
2026-01-14 11:45:51 +08:00
256bbeb705 调机记录功能修改 2026-01-13 18:43:59 +08:00
tao
7ef0b48117 修复调机记录显示异常问题 2026-01-13 15:54:12 +08:00
10 changed files with 221 additions and 315 deletions

View File

@@ -85,3 +85,10 @@ export function delEmployeeLineRel(id) {
method: 'delete' method: 'delete'
}) })
} }
export function getEmployeeByCode(code) {
return request({
url: '/basic/employee/getEmpByCode/' + code,
method: 'get'
})
}

View File

@@ -2,8 +2,8 @@
"name" : "MES", "name" : "MES",
"appid" : "__UNI__66F7FE2", "appid" : "__UNI__66F7FE2",
"description" : "", "description" : "",
"versionName": "3.4.6", "versionName" : "3.4.9",
"versionCode": 346, "versionCode" : 349,
"transformPx" : false, "transformPx" : false,
"sassImplementationName" : "node-sass", "sassImplementationName" : "node-sass",
"app-plus" : { "app-plus" : {

View File

@@ -73,7 +73,6 @@ export default {
bind(_this.formData).then(res => { bind(_this.formData).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("绑定成功!"); _this.$modal.msgSuccess("绑定成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -102,7 +101,6 @@ export default {
unBind(_this.formData.locationCode).then(res => { unBind(_this.formData.locationCode).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("解绑成功!"); _this.$modal.msgSuccess("解绑成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -117,13 +115,6 @@ export default {
}); });
}) })
}, },
reset() {
this.formData = {
locationCode: null,
batchNo: null,
};
}
} }
} }
</script> </script>

View File

@@ -75,7 +75,6 @@ export default {
addDeliveryTask(_this.formData).then(res => { addDeliveryTask(_this.formData).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("提交成功!"); _this.$modal.msgSuccess("提交成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
_this.$tab.switchTab("/pages/work/index"); _this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -85,11 +84,6 @@ export default {
} }
}) })
}, },
reset() {
this.formData.srcLocationCode = null;
this.formData.destLocationCode = null;
}
} }
} }
</script> </script>

View File

@@ -72,7 +72,6 @@ export default {
delivery(_this.formData).then(res => { delivery(_this.formData).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("提交成功!"); _this.$modal.msgSuccess("提交成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -96,7 +95,6 @@ export default {
cancel(arr).then(res => { cancel(arr).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("取消成功!"); _this.$modal.msgSuccess("取消成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -108,16 +106,6 @@ export default {
}); });
}) })
}, },
reset() {
this.formData = {
id: null,
srcLocationCode: null,
taskTyp: null,
robotType: null,
ctnrTyp: null,
};
this.destLocationCode = null;
}
} }
} }
</script> </script>

View File

@@ -66,7 +66,6 @@ export default {
addDeliveryTask(_this.formData).then(res => { addDeliveryTask(_this.formData).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("提交成功!"); _this.$modal.msgSuccess("提交成功!");
_this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -76,10 +75,6 @@ export default {
} }
}) })
}, },
reset() {
this.formData.srcLocationCode = null;
this.formData.destLocationCode = null;
}
} }
} }
</script> </script>

View File

@@ -1,49 +1,49 @@
<template> <template>
<view class="form-container"> <view class="form-container">
<uni-forms ref="form" :modelValue="formData" :rules="rules"> <uni-forms ref="form" :modelValue="formData" :rules="rules" label-width="80" label-align="right">
<uni-forms-item label="作业编码" :labelWidth='90' name="pwoJobCode"> <uni-forms-item label="作业编码" name="pwoJobCode">
<uni-easyinput @confirm="searchData" suffixIcon="scan" @iconClick="scanBar" type="text" <uni-easyinput @confirm="searchData" suffixIcon="scan" @iconClick="scanBar" type="text"
v-model="formData.pwoJobCode" /> v-model="formData.pwoJobCode" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="工单" :labelWidth='90' name="pwoCode"> <uni-forms-item label="工单编码" name="pwoCode">
<uni-easyinput type="text" v-model="formData.pwoCode" /> <uni-easyinput type="text" v-model="formData.pwoCode" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="产品编码" :labelWidth='90' name="ptNoTar"> <uni-forms-item label="产品编码" name="ptNoTar">
<uni-easyinput type="text" v-model="formData.ptNoTar" /> <uni-easyinput type="text" v-model="formData.ptNoTar" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="产品名称" :labelWidth='90' name="ptTitleTar"> <uni-forms-item label="产品名称" name="ptTitleTar">
<uni-easyinput type="text" v-model="formData.ptTitleTar" /> <uni-easyinput type="text" v-model="formData.ptTitleTar" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="制程编码" :labelWidth='90' name="opCode"> <uni-forms-item label="制程编码" name="opCode">
<uni-easyinput type="text" v-model="formData.opCode" /> <uni-easyinput type="text" v-model="formData.opCode" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="制程名称" :labelWidth='90' name="opTitle"> <uni-forms-item label="制程名称" name="opTitle">
<uni-easyinput type="text" v-model="formData.opTitle" /> <uni-easyinput type="text" v-model="formData.opTitle" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="开始时间" :labelWidth='90' name="startTime"> <uni-forms-item label="开始时间" name="startTime">
<view>
<uni-datetime-picker type="datetime" v-model="formData.startTime" /> <uni-datetime-picker type="datetime" v-model="formData.startTime" />
</view>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="结束时间" :labelWidth='90' name="endTime"> <uni-forms-item label="结束时间" name="endTime">
<view>
<uni-datetime-picker type="datetime" v-model="formData.endTime" /> <uni-datetime-picker type="datetime" v-model="formData.endTime" />
</view>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="人员:" :labelWidth='90' name="staff"> <uni-forms-item label="操作人员" name="staff">
<uni-easyinput type="text" v-model="formData.staff" @confirm="searchStaff" /> <uni-easyinput type="text" v-model="formData.staff" @confirm="searchStaff" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="调试单价" :labelWidth='90' name="programmingDebuggingUnitPrice"> <uni-forms-item label="调试单价" name="programmingDebuggingUnitPrice">
<uni-easyinput type="text" v-model="formData.programmingDebuggingUnitPrice" /> <uni-easyinput type="text" v-model="formData.programmingDebuggingUnitPrice" />
</uni-forms-item> </uni-forms-item>
<view class="form-row"> <uni-row>
<uni-forms-item label="调机时长:" :labelWidth='90' name="timeTake" class="form-col"> <uni-col :span="12">
<uni-forms-item label="调机时长" name="timeTake" class="form-col">
<uni-easyinput type="text" v-model="timeTake" /> <uni-easyinput type="text" v-model="timeTake" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="时间单位:" :labelWidth='90' name="timeUnit" class="form-col"> </uni-col>
<uni-col :span="12">
<uni-forms-item label="时间单位" name="timeUnit" class="form-col">
<uni-data-select v-model="timeUnit" :localdata="unitOptions" placeholder="选择时间单位" /> <uni-data-select v-model="timeUnit" :localdata="unitOptions" placeholder="选择时间单位" />
</uni-forms-item> </uni-forms-item>
</view> </uni-col>
</uni-row>
</uni-forms> </uni-forms>
<u-button type="primary" @click="submit">提交</u-button> <u-button type="primary" @click="submit">提交</u-button>
</view> </view>
@@ -52,7 +52,9 @@
<script> <script>
import { addRecord } from "@/api/mes/mesMachineSetUpRecord.js"; import { addRecord } from "@/api/mes/mesMachineSetUpRecord.js";
import { listPwoJob } from "@/api/mes/jobReport.js"; import { listPwoJob } from "@/api/mes/jobReport.js";
import { getUserInfo } from "@/api/system/user.js" import { getUserInfo } from "@/api/system/user.js";
import { getEmployeeByCode } from "@/api/basic/employee.js";
export default { export default {
data() { data() {
return { return {
@@ -77,7 +79,7 @@ export default {
} }
}, },
created() { created() {
this.$set(this.formData, "staff", this.$store.state.user.name); this.$set(this.formData, "staff", this.$store.state.employee.empName);
}, },
methods: { methods: {
scanBar() { scanBar() {
@@ -92,8 +94,12 @@ export default {
}, },
searchStaff() { searchStaff() {
const _this = this; const _this = this;
getUserInfo(_this.formData.staff).then(async res => { getEmployeeByCode(_this.formData.staff).then(async res => {
_this.$set(_this.formData, "staff", res.data.userName); if(res.data != null){
_this.$set(_this.formData, "staff", res.data.name);
}else{
_this.$modal.msg("未查询到该员工!");
}
}) })
}, },
searchData() { searchData() {
@@ -155,7 +161,7 @@ export default {
addRecord(_this.formData).then(res => { addRecord(_this.formData).then(res => {
_this.$modal.closeLoading(); _this.$modal.closeLoading();
_this.$modal.msgSuccess("提交成功!"); _this.$modal.msgSuccess("提交成功!");
_this.reset(); // _this.reset();
setTimeout(() => { setTimeout(() => {
this.$tab.switchTab("/pages/work/index"); this.$tab.switchTab("/pages/work/index");
}, 500); }, 500);
@@ -193,21 +199,6 @@ export default {
// 拼接为 "YYYY-MM-DD HH:mm" 格式 // 拼接为 "YYYY-MM-DD HH:mm" 格式
return `${year}-${month}-${day} ${hour}:${minute}:${second}`; return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}, },
reset() {
this.timeTake = null;
this.timeUnit = 'h';
this.formData = {
startTime: null,
endTime: null,
pwoJobCode: null,
pwoCode: null,
ptNoTar: null,
ptTitleTar: null,
opCode: null,
opTitle: null,
machineAdjustmentDuration: null
};
}
} }
} }
</script> </script>
@@ -215,40 +206,12 @@ export default {
<style scoped> <style scoped>
.form-container { .form-container {
padding: 15px; padding: 15px;
}
.form-row {
display: flex; display: flex;
align-items: center; flex-direction: column;
gap: 15px; gap: 10px;
/* 两个项之间的间距 */
width: 100%;
margin: 10px 0;
/* 与上下表单项保持默认间距 */
} }
/* 并列项平分宽度 */ .uni-forms-item {
.form-col { margin-bottom: 1rem;
flex: 1;
min-width: 0;
}
/* 可选统一并列项的label样式避免对齐错乱 */
:deep(.form-col .uni-forms-item__label) {
width: 80px !important;
/* 固定label宽度 */
text-align: left;
}
/* 其他表单项保持默认样式,无需额外修改 */
:deep(.uni-forms-item) {
margin-bottom: 80px;
/* 统一所有表单项的底部间距 */
}
.u-button {
height: 10% !important;
position: absolute;
bottom: 0;
} }
</style> </style>

View File

@@ -8,8 +8,7 @@
v-model="workOrderCode" type="text" /> v-model="workOrderCode" type="text" />
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="产品入库任务单" :labelWidth='80' name="productInTaskCode"> <uni-forms-item label="产品入库任务单" :labelWidth='80' name="productInTaskCode">
<uni-combox :candidates="productInTaskCodeList" emptyTips="无" @input="fetchTaskInfo" <uni-easyinput @change="fetchTaskInfo" v-model="formData.productInTaskCode" />
v-model="formData.productInTaskCode"></uni-combox>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="上架员" :labelWidth='80' name="shelfPutBy"> <uni-forms-item label="上架员" :labelWidth='80' name="shelfPutBy">
<uni-easyinput suffixIcon="scan" @iconClick="scanPutBy" v-model="formData.shelfPutBy" type="text" /> <uni-easyinput suffixIcon="scan" @iconClick="scanPutBy" v-model="formData.shelfPutBy" type="text" />
@@ -106,13 +105,6 @@ import { listLocation } from '@/api/basic/location';
export default { export default {
mounted() { mounted() {
// 获取任务单编码列表
listTask({
pageNum: 1,
pageSize: 25
}).then(res => {
this.productInTaskCodeList = res.rows.map(item => item.productInTaskCode);
});
// 获取部门列表 // 获取部门列表
listDepartment().then((res) => { listDepartment().then((res) => {
this.dptList = res.rows this.dptList = res.rows
@@ -133,7 +125,6 @@ export default {
show: false, show: false,
materialLabel: null, materialLabel: null,
workOrderCode: '', workOrderCode: '',
productInTaskCodeList: [],
legalLocation: true, legalLocation: true,
dptList: [], dptList: [],
empList: [], empList: [],
@@ -190,27 +181,10 @@ export default {
methods: { methods: {
// 工单改变 // 工单改变
handleChangeWorkOrderCode() { handleChangeWorkOrderCode() {
// 重置任务单列表
this.productInTaskCodeList = [];
// 重置任务单编码 // 重置任务单编码
this.formData.productInTaskCode = ''; this.formData.productInTaskCode = '';
// 重置明细 // 重置明细
this.formData.wmsProductInDetailList = []; this.formData.wmsProductInDetailList = [];
// 获取任务单列表
this.fetchTaskList();
},
// 获取任务单列表
fetchTaskList() {
if (!this.workOrderCode) return;
listTask({
workOrderCode: this.workOrderCode
}).then(async res => {
this.productInTaskCodeList = res.rows.map(item => item.productInTaskCode);
}).catch(err => {
console.error(`获取工单号为${this.workOrderCode}的产品入库任务单列表失败,详情:${err}`);
});
}, },
// 扫描工单号 // 扫描工单号
scanWorkOrderCode() { scanWorkOrderCode() {
@@ -337,16 +311,6 @@ export default {
} }
}); });
}, },
selectTypeList() {
listTask({
pageNum: 1,
pageSize: 25
}).then(async res => {
for (var i in res.rows) {
this.productInTaskCodeList.push(res.rows[i].productInTaskCode);
}
});
},
// 依次获取推荐库位 // 依次获取推荐库位
async fetchLocation(taskDetail) { async fetchLocation(taskDetail) {
const promises = taskDetail.map(async (item) => { const promises = taskDetail.map(async (item) => {
@@ -389,7 +353,7 @@ export default {
// 根据任务单 id 获取任务单明细 // 根据任务单 id 获取任务单明细
await getTask(taskId).then(res => { await getTask(taskId).then(res => {
taskDetail = res.data.wmsProductInTaskDetailList taskDetail = res.data.wmsProductInTaskDetailList.filter(item => item.notInNumber);
}).catch(err => { }).catch(err => {
console.error(`获取入库任务单 id 为${taskId}的任务单明细失败,详情:${err}`); console.error(`获取入库任务单 id 为${taskId}的任务单明细失败,详情:${err}`);
}) })

View File

@@ -3,7 +3,7 @@
<div class="header"> <div class="header">
<table> <table>
<tr> <tr>
<td>物料:</td> <td>物料:</td>
<td> <td>
<uni-easyinput placeholder="请输入内容" :focus="PTfocus" v-model="PTCode" primaryColor="red" @confirm="getCode" <uni-easyinput placeholder="请输入内容" :focus="PTfocus" v-model="PTCode" primaryColor="red" @confirm="getCode"
prefixIcon="scan" @iconClick="scanClick('primary')" /> prefixIcon="scan" @iconClick="scanClick('primary')" />
@@ -38,7 +38,7 @@
<td> <td>
<uni-easyinput :key="keyBol" class="uni-mt-5" v-model="form.recommend" disabled> <uni-easyinput :key="keyBol" class="uni-mt-5" v-model="form.recommend" disabled>
<template #right> <template #right>
<uni-icons custom-prefix="iconfont" type="icon-fuzhi" size="40" @click="iconClick"></uni-icons> <uni-icons custom-prefix="iconfont" type="icon-fuzhi" size="40" @click="handleCopy"></uni-icons>
</template> </template>
</uni-easyinput> </uni-easyinput>
</td> </td>
@@ -134,14 +134,11 @@ export default {
}) })
}, },
/** /**
* 图标点击事件 * 复制库位
*/ */
iconClick(value) { handleCopy() {
const _self = this; this.form.storageLocationBarcode = this.form.recommend;
// const arr = this.keyBol = !this.keyBol;
_self.form = Object.assign({}, _self.form, {
storageLocationBarcode: value || _self.form.recommend
})
}, },
/** /**
* 扫描收货单明细标签 * 扫描收货单明细标签

View File

@@ -28,7 +28,11 @@
</view> </view>
<uni-popup ref="popup" type="bottom" border-radius="10px 10px 0 0" background-color="#fff"> <uni-popup ref="popup" type="bottom" border-radius="10px 10px 0 0" background-color="#fff">
<scroll-view scroll-y class="err-logs-container" v-if="errorLogs.length"> <scroll-view scroll-y class="err-logs-container" v-if="errorLogs.length">
<uni-section :title="'共有' + errorLogs.length + '条错误记录'" type="line" /> <uni-section :title="'共有' + errorLogs.length + '条错误记录'" type="line">
<template v-slot:right>
<u-button size="mini" text="清空" @click="removeAllErrLogs"></u-button>
</template>
</uni-section>
<uni-card v-for="(err, index) in errorLogs" :key="err.pieceBarcode"> <uni-card v-for="(err, index) in errorLogs" :key="err.pieceBarcode">
<template #title> <template #title>
<view class="err-logs-card__title"> <view class="err-logs-card__title">
@@ -194,6 +198,9 @@ export default {
removeErrPiece(pieceBarcode) { removeErrPiece(pieceBarcode) {
this.errorLogs = this.errorLogs.filter(i => i.pieceBarcode !== pieceBarcode); this.errorLogs = this.errorLogs.filter(i => i.pieceBarcode !== pieceBarcode);
}, },
removeAllErrLogs() {
this.errorLogs = [];
},
// 通过销售单号获取任务单明细 // 通过销售单号获取任务单明细
async fetchDetail() { async fetchDetail() {
//当输入值明显不合法时不执行后续操作 //当输入值明显不合法时不执行后续操作