| | |
| | | </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.value2 == "" ? "点击选择" : registerInfo.value2 |
| | | registerInfo.partNo == "" ? "点击选择" : registerInfo.partNo |
| | | }}</text> |
| | | <u-icon |
| | | name="arrow-right" |
| | | color="#687792" |
| | | size="28" |
| | | @click="seachComp()" |
| | | v-show="registerInfo.value2 == ''" |
| | | v-show="registerInfo.partNo == ''" |
| | | ></u-icon> |
| | | </view> |
| | | </view> |
| | |
| | | <text class="item-one">零件描述</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one item-two">{{ registerInfo.value3 }}</text> |
| | | <text class="item-one item-two">{{ registerInfo.partName }}</text> |
| | | </view> |
| | | </view> |
| | | <view class="packing-registration-param-item param-extra"> |
| | |
| | | <view class="_label-name">批号:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.value0 }} |
| | | {{ item.outBatchNo }} |
| | | </view> |
| | | </view> |
| | | <view class="row-list"> |
| | |
| | | <view class="_label-name">下发数量:</view> |
| | | </view> |
| | | <view class="_content"> |
| | | {{ item.value1 }} |
| | | {{ item.suppliedQuantity }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <text class="item-one">批号</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <text class="item-one item-two">{{ modalList.moNO }}</text> |
| | | <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"> |
| | |
| | | <text class="item-one">下发数量</text> |
| | | </view> |
| | | <view class="packing-registration-param-item-right"> |
| | | <u-input class="item-one item-two" v-model="modalList.value1" /> |
| | | <u-input |
| | | class="item-one item-two" |
| | | v-model="modalList.suppliedQuantity" |
| | | /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | whiteSpace: "nowrap", |
| | | }, |
| | | // 弹窗列表 |
| | | modalList: { |
| | | partNo: "", |
| | | moNo: "", |
| | | }, |
| | | modalList: {}, |
| | | // 主页面列表 |
| | | registerInfo: { |
| | | operationTaskId: "", |
| | | id: "", |
| | | moNo: "", |
| | | value2: "", |
| | | value3: "", |
| | | partNo: "", |
| | | partName: "", |
| | | optaskNo: "", |
| | | workstationId: "", |
| | | }, |
| | | // 下发记录列表 |
| | | hasScanSnList: [], |
| | | codeInfoId: "", |
| | | showModal: false, |
| | | machineIndex: null, |
| | | machineList: [], |
| | | }; |
| | | }, |
| | | onShow() { |
| | | let that = this; |
| | | uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器 |
| | | if (registerInfo.moNO == null) { |
| | | uni.showToast({ |
| | | icon: "none", |
| | | title: "请先选择子件!", |
| | | duration: 2 * 1000, |
| | | }); |
| | | return; |
| | | } |
| | | 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); |
| | | this.codeInfoId = codeInfo.id; |
| | | if (codeInfo.moOn) { |
| | | that.codeInfoId = codeInfo.id; |
| | | if (codeInfo.partNo) { |
| | | if (that.registerInfo.partNo != codeInfo.partNo) { |
| | | this.$u.toast("当前子件和扫码子件不一致!"); |
| | | return; |
| | | } |
| | | // 扫描报工单二维码 |
| | | that.scanHandle(data.code); |
| | | that.scanHandle(codeInfo); |
| | | that.$forceUpdate(); |
| | | that.getHandelList(); |
| | | // that.getHandelList(); |
| | | } |
| | | } |
| | | //扫码成功后的回调,你可以写自己的逻辑代码在这里 |
| | | console.log("扫码结果:", data.code); |
| | | }); |
| | | }, |
| | | methods: { |
| | | getHandelList() { |
| | | this.$u.api.workReporting |
| | | .getProductMainV1({ |
| | | current: 1, |
| | | size: -1, |
| | | id: this.codeInfoId, |
| | | }) |
| | | .then((res) => { |
| | | this.hasScanSnList = res.data.productOutputList; |
| | | }); |
| | | //机台 |
| | | 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() { |
| | | if (!this.modalList.outBatchNo) { |
| | | this.$u.toast("批号为空不能提交"); |
| | | this.$refs.uModal.clearLoading(); // 清除加载状态 |
| | | return; |
| | | } |
| | | if (!this.modalList.locationNo) { |
| | | this.$u.toast("库位为空不能提交"); |
| | | this.$refs.uModal.clearLoading(); // 清除加载状态 |
| | | return; |
| | | } |
| | | if (!this.modalList.suppliedQuantity) { |
| | | this.$u.toast("请输入取消下发数量"); |
| | | this.$refs.uModal.clearLoading(); // 清除加载状态 |
| | | return; |
| | | } |
| | | // 处理确认逻辑 |
| | | this.$u.api.workReporting._(this.modalList).then((res) => { |
| | | console.log("res", res); |
| | | this.showModal = false; |
| | | |
| | | this.getHandelList(); |
| | | 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.value2 = val.value2; |
| | | this.registerInfo.value3 = val.value2; |
| | | this.registerInfo.partNo = val.partNo; |
| | | this.registerInfo.partName = val.partName; |
| | | }, |
| | | // 订单号回显 |
| | | setNo(val) { |
| | | console.log("11111", val); |
| | | this.registerInfo.moNo = val.moNo; |
| | | this.registerInfo.value2 = val.value2; |
| | | (this.registerInfo = { |
| | | operationTaskId: "", |
| | | id: val.id, |
| | | moNo: val.moNo, |
| | | partNo: "", |
| | | partName: "", |
| | | optaskNo: "", |
| | | workstationId: "", |
| | | }), |
| | | (this.machineList = []); |
| | | this.machineIndex = null; |
| | | this.hasScanSnList = []; |
| | | }, |
| | | //订单号 |
| | | seachPersonnelNo() { |
| | |
| | | }, |
| | | //子件 |
| | | seachComp() { |
| | | if (this.registerInfo.moNO == null) { |
| | | 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/comp", |
| | | url: |
| | | "/pages/product/WorkshopOrderIssued/WorkOrderList?id=" + |
| | | encodeURIComponent(JSON.stringify(this.registerInfo.id)), |
| | | }); |
| | | }, |
| | | // 扫码后数据回显 |
| | | scanHandle(val) { |
| | | let { moNo } = val; |
| | | this.modalList.moNo = moNo; |
| | | this.showModal = true; |
| | | 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"); |
| | |
| | | } |
| | | |
| | | .packing-registration-param-view { |
| | | height: 345rpx; |
| | | height: 550rpx; |
| | | background-color: #fff; |
| | | border-radius: 10rpx; |
| | | padding: 0rpx 23rpx; |
| | |
| | | |
| | | .item-one { |
| | | font-size: 30rpx; |
| | | color: #333333; |
| | | color: #060505; |
| | | margin-right: 6rpx; |
| | | } |
| | | |