// 车间订单下发
|
<template>
|
<view class="page">
|
<view class="packing-registration-bg" />
|
<u-navbar title="订单下发" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
|
back-icon-color="#000" />
|
<view class="packing-registration-param">
|
<view class="packing-registration-param-view">
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">订单号</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two" @click="seachPersonnelNo()">{{
|
registerInfo.moNo == "" ? "点击选择" : registerInfo.moNo
|
}}</text>
|
<u-icon name="arrow-right" color="#687792" size="28" @click="seachPersonnelNo()"
|
v-show="registerInfo.moNo == ''"></u-icon>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">工单</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two" @click="seachWork()">{{
|
registerInfo.optaskNo == "" ? "点击选择" : registerInfo.optaskNo
|
}}</text>
|
<u-icon name="arrow-right" color="#687792" size="28" @click="seachWork()"
|
v-show="registerInfo.optaskNo == ''"></u-icon>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">机台</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<picker class="item-one item-two" style="width: 100%; text-align: right"
|
@change="machineChange($event, machineList)" :value="machineIndex" :range="machineList"
|
range-key="label">
|
<view>
|
<text :style="{ color: machineIndex == null ? '#a5abb4' : '#a5abb4' }">{{
|
machineIndex == null
|
? "点击选择"
|
: machineList[machineIndex].label
|
}}</text>
|
</view>
|
</picker>
|
<u-icon v-if="machineIndex == null" name="arrow-right" color="#687792" size="28"></u-icon>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">子件</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two" @click="seachComp()">{{
|
registerInfo.partNo == "" ? "点击选择" : registerInfo.partNo
|
}}</text>
|
<u-icon name="arrow-right" color="#687792" size="28" @click="seachComp()"
|
v-show="registerInfo.partNo == ''"></u-icon>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">零件描述</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two">{{ registerInfo.partName }}</text>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">下发记录:</text>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="wrap">
|
<scroll-view class="packing-registration-scroll-list" scroll-y="true">
|
<u-cell-group class="packing-registration-scroll-list-group" :border="false">
|
<!-- <div class="tip" style="text-align: center;" v-if="hasScanSnList.length==0">-请扫码-</div> -->
|
<view class="content" v-for="(item, index) in hasScanSnList" :key="index" :index="index">
|
<view class="content-header">
|
<view class="content-header-title">{{ index + 1 }}</view>
|
</view>
|
<view class="content-body">
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-name">批号:</view>
|
</view>
|
<view class="_content">
|
{{ item.outBatchNo }}
|
</view>
|
</view>
|
<view class="row-list">
|
<view class="_label">
|
<view class="_label-name">下发数量:</view>
|
</view>
|
<view class="_content">
|
{{ item.suppliedQuantity }}
|
</view>
|
</view>
|
</view>
|
</view>
|
</u-cell-group>
|
</scroll-view>
|
<scan></scan>
|
</view>
|
<u-modal v-model="showModal" title="" :show-cancel-button="true" :show-confirm-button="true" @confirm="confirm"
|
@cancel="cancel">
|
<view class="popup-content">
|
<view class="packing-registration-param">
|
<view class="packing-registration-param-view">
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">批号</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two">{{
|
modalList.outBatchNo
|
}}</text>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">库位</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<text class="item-one item-two">{{
|
modalList.locationNo
|
}}</text>
|
</view>
|
</view>
|
<view class="packing-registration-param-item param-extra">
|
<view class="packing-registration-param-item-left">
|
<text class="item-one">下发数量</text>
|
</view>
|
<view class="packing-registration-param-item-right">
|
<u-input class="item-one item-two" v-model="modalList.suppliedQuantity" />
|
</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
</u-modal>
|
</view>
|
</template>
|
<script>
|
import scan from "@/components/scan/scan.vue";
|
import content_bg from "@/static/custom/packing/backBg.png";
|
export default {
|
components: {
|
scan,
|
},
|
|
data() {
|
return {
|
background: {
|
backgroundImage: `url(${content_bg})`,
|
backgroundAttachment: "fixed",
|
backgroundSize: "100% auto",
|
backgroundRepeat: "no-repeat",
|
},
|
labelStyle: {
|
fontSize: "32rpx",
|
whiteSpace: "nowrap",
|
},
|
// 弹窗列表
|
modalList: {},
|
// 主页面列表
|
registerInfo: {
|
operationTaskId: '',
|
id: "",
|
moNo: "",
|
partNo: "",
|
partName: "",
|
optaskNo: "",
|
workstationId: ''
|
},
|
// 下发记录列表
|
hasScanSnList: [],
|
codeInfoId: "",
|
showModal: false,
|
machineIndex: null,
|
machineList: [],
|
|
};
|
},
|
onShow() {
|
let that = this;
|
uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
|
uni.$on("scan", function(data) {
|
console.log("onscan");
|
if (that.registerInfo.partNo == "") {
|
uni.showToast({
|
icon: "none",
|
title: "请先选择子件!",
|
duration: 2 * 1000,
|
});
|
return;
|
}
|
if (that.registerInfo.workstationId == "") {
|
uni.showToast({
|
icon: "none",
|
title: "请先选择机台!",
|
duration: 2 * 1000,
|
});
|
return;
|
}
|
if (data.code) {
|
//扫码成功后的回调,你可以写自己的逻辑代码在这里
|
console.log("扫码结果:", data.code);
|
let codeInfo = JSON.parse(data.code);
|
that.codeInfoId = codeInfo.id;
|
if (codeInfo.partNo) {
|
if (that.registerInfo.partNo != codeInfo.partNo) {
|
this.$u.toast("当前子件和扫码子件不一致!");
|
return;
|
}
|
// 扫描报工单二维码
|
that.scanHandle(codeInfo);
|
that.$forceUpdate();
|
// that.getHandelList();
|
}
|
}
|
});
|
},
|
methods: {
|
//机台
|
machineChange(e, storage, code) {
|
this.hasScanSnList = []
|
if (storage.length <= 0) {
|
this.machineIndex = null;
|
return;
|
}
|
this.machineIndex = e.target.value;
|
this.registerInfo.workstationId = storage[this.machineIndex].value;
|
},
|
// getHandelList() {
|
// this.$u.api.workReporting
|
// .getProductMainV1({
|
// current: 1,
|
// size: -1,
|
// id: this.codeInfoId,
|
// })
|
// .then((res) => {
|
// this.hasScanSnList = res.data.productOutputList;
|
// });
|
// },
|
// 点击确认后获取下发记录
|
confirm() {
|
// 处理确认逻辑
|
this.$u.api.WorkshopOrderIssued.feeding({
|
feedingFrom: "stocker",
|
operationTaskId: this.registerInfo.operationTaskId,
|
feeds: [{
|
...this.modalList
|
}]
|
}).then(
|
(res) => {
|
console.log("res", res);
|
if (res.code === 0) {
|
this.$u.toast("提交成功");
|
this.showModal = false;
|
const obj = {
|
suppliedQuantity: this.modalList.suppliedQuantity,
|
outBatchNo: this.modalList.outBatchNo,
|
}
|
this.hasScanSnList.push(obj)
|
}
|
}
|
);
|
},
|
// 模态框取消
|
cancel() {
|
this.showModal = false; // 关闭弹窗
|
},
|
// 工单回显
|
workNo(val) {
|
this.machineList = []
|
this.machineIndex = null
|
this.registerInfo.workstationId = ''
|
this.registerInfo.partName = ''
|
this.registerInfo.partNo = ''
|
this.$u.api.WorkshopOrderIssued
|
.selWorkStation(val)
|
.then((res) => {
|
console.log('111', res)
|
if (res.code === 0 && res.data.length > 0) {
|
res.data.forEach(i => {
|
const obj = Object.assign({
|
label: i.name,
|
value: i.id,
|
})
|
this.machineList.push(obj)
|
})
|
}
|
});
|
this.registerInfo.optaskNo = val.optaskNo;
|
this.registerInfo.operationTaskId = val.id;
|
this.hasScanSnList = []
|
},
|
// 子件回显
|
compNo(val) {
|
this.registerInfo.partNo = val.partNo;
|
this.registerInfo.partName = val.partName;
|
},
|
// 订单号回显
|
setNo(val) {
|
console.log("11111", val);
|
this.registerInfo = {
|
operationTaskId: '',
|
id: val.id,
|
moNo: val.moNo,
|
partNo: "",
|
partName: "",
|
optaskNo: "",
|
workstationId: ''
|
},
|
this.machineList = []
|
this.machineIndex = null
|
this.hasScanSnList = []
|
},
|
//订单号
|
seachPersonnelNo() {
|
console.log("车间订单号");
|
uni.navigateTo({
|
url: "/pages/product/report/orderList",
|
});
|
},
|
//子件
|
seachComp() {
|
if (this.registerInfo.optaskNo == "") {
|
this.$u.toast("请选择工单号");
|
return;
|
}
|
console.log("子件");
|
// 使用uni.navigateTo方法跳转,并通过queryParams传递参数
|
uni.navigateTo({
|
url: "/pages/product/WorkshopOrderIssued/comp?operationTaskId=" +
|
encodeURIComponent(JSON.stringify(this.registerInfo.operationTaskId)),
|
});
|
},
|
//工单
|
seachWork() {
|
if (this.registerInfo.moNo == "") {
|
this.$u.toast("请选择订单号");
|
return;
|
}
|
console.log("子件");
|
// 使用uni.navigateTo方法跳转,并通过queryParams传递参数
|
uni.navigateTo({
|
url: "/pages/product/WorkshopOrderIssued/WorkOrderList?id=" +
|
encodeURIComponent(JSON.stringify(this.registerInfo.id)),
|
});
|
},
|
// 扫码后数据回显
|
scanHandle(val) {
|
const {
|
outBatchNo
|
} = val
|
const {
|
workstationId,
|
operationTaskId
|
} = this.registerInfo
|
const obj = {
|
outBatchNo: outBatchNo,
|
workstationId: workstationId,
|
operationTaskId: operationTaskId,
|
}
|
this.$u.api.WorkshopOrderIssued.checkRawPartPDA(obj).then(
|
(res) => {
|
console.log("res", res);
|
if (res.code === 0) {
|
res.data.workstationId = workstationId,
|
this.modalList = res.data;
|
this.showModal = true;
|
}
|
}
|
);
|
},
|
},
|
};
|
</script>
|
<style lang="scss" scoped>
|
.popup-content {
|
width: 600rpx;
|
height: 350rpx;
|
background-color: #fff;
|
border-radius: 8px;
|
z-index: 10;
|
/* 确保内容在蒙版之上 */
|
}
|
|
.packing-registration-bg {
|
background-color: #f6f9ff;
|
background-image: url("~@/static/custom/packing/backBg.png");
|
padding: 0 20rpx;
|
background-attachment: fixed;
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
position: fixed;
|
top: 0;
|
bottom: 0;
|
width: 100%;
|
z-index: -1;
|
}
|
|
.packing-registration-param {
|
padding: 40rpx 30rpx 10rpx 30rpx;
|
|
.packing-registration-param-title {
|
display: flex;
|
flex-direction: row;
|
align-items: center;
|
margin-bottom: 30rpx;
|
|
.title-label {
|
margin-left: 14rpx;
|
font-size: 34rpx;
|
font-weight: bold;
|
color: #283E65;
|
}
|
}
|
|
.packing-registration-param-view {
|
height: 550rpx;
|
background-color: #fff;
|
border-radius: 10rpx;
|
padding: 0rpx 23rpx;
|
margin-bottom: 30rpx;
|
|
.packing-registration-param-item {
|
height: 90rpx;
|
border: 1px solid #ADC8E4;
|
line-height: 90rpx;
|
display: flex;
|
justify-content: space-between;
|
border: none;
|
|
.packing-registration-param-item-left {
|
.item-one {
|
font-size: 30rpx;
|
color: #666666;
|
}
|
}
|
|
.packing-registration-param-item-right {
|
display: flex;
|
justify-content: space-between;
|
|
.item-one {
|
font-size: 30rpx;
|
color: #060505;
|
margin-right: 6rpx;
|
}
|
|
.item-two {
|
font-size: 30rpx;
|
color: #a6b4cc;
|
margin-right: 6rpx;
|
}
|
|
.item-three {
|
font-size: 30rpx;
|
color: #214ded;
|
margin-right: 6rpx;
|
}
|
}
|
}
|
|
.param-extra {
|
border-bottom: 1px solid #EDEDED;
|
}
|
}
|
}
|
|
.wrap .packing-registration-scroll-list {
|
height: calc(100vh - var(--window-top) - var(--window-bottom) - 550rpx);
|
width: 100%;
|
}
|
|
.packing-registration-scroll-list-group {
|
::v-deep .u-cell-item-box {
|
background-color: rgba(250, 252, 255, 0.36) !important;
|
padding: 0rpx 30rpx;
|
}
|
|
.content {
|
font-size: 12px;
|
background-color: #ffffff;
|
box-sizing: border-box;
|
border-radius: 10rpx;
|
margin: 0rpx 0rpx 16rpx;
|
padding: 20rpx 8rpx;
|
box-shadow: none;
|
display: flex;
|
align-items: center;
|
|
.content-header {
|
width: 40rpx;
|
height: 90rpx;
|
display: flex;
|
align-items: center;
|
|
.content-header-icon {
|
background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
|
background-size: 100% auto;
|
background-repeat: no-repeat;
|
height: 28rpx;
|
width: 28rpx;
|
}
|
|
.content-header-title {
|
margin-left: 11rpx;
|
font-size: 26rpx;
|
font-weight: bold;
|
color: #626369;
|
}
|
}
|
|
.content-body {
|
flex: 1;
|
background-color: #ffffff;
|
border-radius: 10rpx;
|
padding: 0rpx 23rpx;
|
|
.row-list {
|
height: 60rpx;
|
display: flex;
|
flex-direction: row;
|
padding: 0px;
|
align-items: center;
|
}
|
|
.row-list ._label {
|
display: flex;
|
flex: 0.8;
|
color: #909399;
|
align-items: center;
|
|
._label-name {
|
margin-left: 11rpx;
|
font-size: 26rpx;
|
font-weight: 500;
|
color: #666666;
|
}
|
}
|
|
.row-list ._content {
|
flex: 1.5;
|
text-align: right;
|
color: #909399;
|
font-size: 24rpx;
|
}
|
|
.row-list .s1 {
|
color: #d35651;
|
}
|
}
|
}
|
}
|
</style>
|