|
@@ -0,0 +1,434 @@
|
|
|
|
+<template>
|
|
|
|
+ <view class="page-container uni-column">
|
|
|
|
+ <view class="consultation-container uni-column">
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">批次号</view>
|
|
|
|
+ <view class="value">{{ lot.lotCode }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">图号</view>
|
|
|
|
+ <view class="value">{{ lot.drawingNumber }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">工艺版本</view>
|
|
|
|
+ <view class="value">{{ lot.technologyVersion }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">产品描述</view>
|
|
|
|
+ <view class="value">{{ lot.productDescription }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">当前工序</view>
|
|
|
|
+ <view class="value">{{ lot.processAlias }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">当前工段</view>
|
|
|
|
+ <view class="value">{{ lot.deptName }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row" style="margin-top: 40rpx;">
|
|
|
|
+ <view class="label">操作者</view>
|
|
|
|
+ <view class="value">
|
|
|
|
+ <uni-data-select v-model="userId" :localdata="userList"
|
|
|
|
+ :clear="false" @change="handleGetEquipmentList"
|
|
|
|
+ style="margin: 0 0 0 16rpx;outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row" style="margin-top: 40rpx;">
|
|
|
|
+ <view class="label">加工设备</view>
|
|
|
|
+ <view class="value">
|
|
|
|
+ <uni-data-select v-model="equipment" :localdata="equipmentList" :clear="false"
|
|
|
|
+ style="outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">所有箱号</view>
|
|
|
|
+ <view class="value">{{ lot.allCarrierName }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="info-row uni-row">
|
|
|
|
+ <view class="label">巡检箱号</view>
|
|
|
|
+ <view class="value">{{ lot.inspectionCarrierCode }}</view>
|
|
|
|
+ </view>
|
|
|
|
+ <!-- <input type="text" v-model="carrierCode" placeholder="请输入箱号" /> -->
|
|
|
|
+ <view class="btn uni-row" style="background-color: #ff5555;" @click.stop="handleScanCode">
|
|
|
|
+ <uni-icons type="scan" size="16" style="color: #ffffff; margin-right: 8rpx;" />
|
|
|
|
+ <text>扫描箱码及检测箱码</text>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="btn uni-row" style="margin-top: 48rpx;" @click.stop="handleConfirm">确定</view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script setup>
|
|
|
|
+ import {
|
|
|
|
+ ref
|
|
|
|
+ } from 'vue'
|
|
|
|
+ import {
|
|
|
|
+ onLoad,
|
|
|
|
+ onReady,
|
|
|
|
+ onUnload,
|
|
|
|
+ onShow
|
|
|
|
+ } from '@dcloudio/uni-app'
|
|
|
|
+ import {
|
|
|
|
+ getLotInfoByFirstInspection,
|
|
|
|
+ getCarrierInfoProcess,
|
|
|
|
+ getCarrierInfo,
|
|
|
|
+ getFirstInspectionLotInfo,
|
|
|
|
+ } from '@/api/business/processInspection.js'
|
|
|
|
+ import {
|
|
|
|
+ debounce
|
|
|
|
+ } from '../../utils/common';
|
|
|
|
+ import {
|
|
|
|
+ store
|
|
|
|
+ } from '../../store';
|
|
|
|
+ import {
|
|
|
|
+ getDayWorkItemHistory
|
|
|
|
+ } from '../../api/business/dayWorkItem';
|
|
|
|
+ const carrierCode = ref('')
|
|
|
|
+ const equipmentList = ref([])
|
|
|
|
+ const inspectionChamber = ref(null)
|
|
|
|
+ const userList = ref([])
|
|
|
|
+ const userId = ref(null)
|
|
|
|
+ const equipment = ref(null)
|
|
|
|
+ const lot = ref({})
|
|
|
|
+ const query = ref({})
|
|
|
|
+ // 页面生命周期函数
|
|
|
|
+ const handleScanCode = () => {
|
|
|
|
+ // 引入原生插件
|
|
|
|
+ const mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module");
|
|
|
|
+ if (mpaasScanModule) {
|
|
|
|
+ // 调用插件的 mpaasScan 方法
|
|
|
|
+ mpaasScanModule.mpaasScan({
|
|
|
|
+ // 扫码识别类型,参数可多选,qrCode、barCode,
|
|
|
|
+ // 如不设置,默认识别所有扫码类型,可能有些许影响识别效率
|
|
|
|
+ scanType: ["qrCode", "barCode"],
|
|
|
|
+ // 是否隐藏相册,默认false不隐藏
|
|
|
|
+ hideAlbum: false,
|
|
|
|
+ },
|
|
|
|
+ (ret) => {
|
|
|
|
+ console.log(ret)
|
|
|
|
+ const result = {
|
|
|
|
+ carrierCode: ret.resp_result,
|
|
|
|
+ processCode: '',
|
|
|
|
+ deptId : store.curDeptDetails.deptId
|
|
|
|
+ }
|
|
|
|
+ if (!result.carrierCode || result.carrierCode == "") {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: "none",
|
|
|
|
+ title: "请扫载具码",
|
|
|
|
+ duration: 1000
|
|
|
|
+ })
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ //判断该箱是否绑定批次
|
|
|
|
+
|
|
|
|
+ result.processCode = store.outsourcedCode;
|
|
|
|
+ // console.log(result.processCode)
|
|
|
|
+ /************************ 根据扫码查询到的数据和需要检查的工序查询信息 ************************/
|
|
|
|
+ getCarrierInfo(result).then(response => {
|
|
|
|
+ if (response.code == 200) {
|
|
|
|
+ // 判断是哪种返回值 假设是想信息则给lot附检查箱信息
|
|
|
|
+ // 假设是dayworkCarriers 则 判断是几个批次,假设为多批,则弹出选择框。
|
|
|
|
+ if (response.data.dayworkCarriers != null) {
|
|
|
|
+ if (response.data.dayworkCarriers.length > 1) {
|
|
|
|
+ query.value = result;
|
|
|
|
+ selectProcessInspection.value.open(response.data.dayworkCarriers)
|
|
|
|
+ } else {
|
|
|
|
+ // console.log(response)
|
|
|
|
+ uni.showLoading({
|
|
|
|
+ title: '加载中'
|
|
|
|
+ });
|
|
|
|
+ // 此处根据拿到的箱子id, 获取到相对应的【 lot_id】,【 lot_code】, 以及该批次关联的其它箱号
|
|
|
|
+ // 需要定义一个请求方法, 从后端获取
|
|
|
|
+ result.deptId = store.curDeptDetails.deptId
|
|
|
|
+ getFirstInspectionLotInfo(result).then(res => {
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
+ console.log(res)
|
|
|
|
+ getUser(res.data.dayworkItemList)
|
|
|
|
+ getEquipment(res.data.dayworkItemList)
|
|
|
|
+ lot.value = {
|
|
|
|
+ ...lot.value,
|
|
|
|
+ ...res.data
|
|
|
|
+ };
|
|
|
|
+ lot.value.carrierCode = result.carrierCode
|
|
|
|
+ carrierCode.value = result.carrierCode;
|
|
|
|
+ // console.log("res", res);
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ // 判断是否批次号和检查箱码都扫完
|
|
|
|
+ checkSave()
|
|
|
|
+ } else {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: res.msg,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: err.message,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ } else if (response.data.inspectionCarrier != null) {
|
|
|
|
+ console.log(response)
|
|
|
|
+ lot.value.inspectionCarrierCode = response.data.inspectionCarrier.code
|
|
|
|
+ lot.value.inspectionCarrierId = response.data.inspectionCarrier.id
|
|
|
|
+ // 判断是否批次号和检查箱码都扫完
|
|
|
|
+ checkSave()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: response.msg,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: err.message,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+ } else {
|
|
|
|
+ const result = {
|
|
|
|
+ carrierCode: '000613',
|
|
|
|
+ deptId : store.curDeptDetails.deptId
|
|
|
|
+ }
|
|
|
|
+ getCarrierInfo(result).then(response => {
|
|
|
|
+ if (response.code == 200) {
|
|
|
|
+ // 判断是哪种返回值 假设是想信息则给lot附检查箱信息
|
|
|
|
+ // 假设是dayworkCarriers 则 判断是几个批次,假设为多批,则弹出选择框。
|
|
|
|
+ if (response.data.dayworkCarriers != null) {
|
|
|
|
+ if (response.data.dayworkCarriers.length > 1) {
|
|
|
|
+ query.value = result;
|
|
|
|
+ query.value.deptId = store.curDeptDetails.deptId
|
|
|
|
+ selectProcessInspection.value.open(response.data.dayworkCarriers)
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ // console.log(response)
|
|
|
|
+ uni.showLoading({
|
|
|
|
+ title: '加载中'
|
|
|
|
+ });
|
|
|
|
+ // 此处根据拿到的箱子id, 获取到相对应的【 lot_id】,【 lot_code】, 以及该批次关联的其它箱号
|
|
|
|
+ // 需要定义一个请求方法, 从后端获取
|
|
|
|
+
|
|
|
|
+ getFirstInspectionLotInfo(result).then(res => {
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
+ console.log(res)
|
|
|
|
+ console.log("888")
|
|
|
|
+ getUser(res.data.dayworkItemList)
|
|
|
|
+ getEquipment(res.data.dayworkItemList)
|
|
|
|
+ lot.value = {
|
|
|
|
+ ...lot.value,
|
|
|
|
+ ...res.data
|
|
|
|
+ };
|
|
|
|
+ lot.value.carrierCode = result.carrierCode
|
|
|
|
+ carrierCode.value = result.carrierCode;
|
|
|
|
+ lot.value.inspectionCarrierId = '1803605009533812739'
|
|
|
|
+ lot.value.inspectionCarrierCode = "300022"
|
|
|
|
+ // console.log("res", res);
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ // 判断是否批次号和检查箱码都扫完
|
|
|
|
+ checkSave()
|
|
|
|
+ } else {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: res.msg,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: err.message,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ } else if (response.data.inspectionCarrier != null) {
|
|
|
|
+ console.log(response)
|
|
|
|
+ lot.value.inspectionCarrierCode = response.data.inspectionCarrier.code
|
|
|
|
+ lot.value.inspectionCarrierId = response.data.inspectionCarrier.id
|
|
|
|
+ // 判断是否批次号和检查箱码都扫完
|
|
|
|
+ checkSave()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: response.msg,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }).catch(err => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: err.message,
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ function getUser(data) {
|
|
|
|
+
|
|
|
|
+ const uniqueUserMap = new Map();
|
|
|
|
+ console.log(data)
|
|
|
|
+ data.forEach(item => {
|
|
|
|
+ // 检查 Map 中是否已经有这个 equimentDetailId
|
|
|
|
+ if (!uniqueUserMap.has(item.userId)) {
|
|
|
|
+ // 如果没有,添加到 Map 中
|
|
|
|
+ uniqueUserMap.set(item.userId, {
|
|
|
|
+ value: item.userId,
|
|
|
|
+ text: item.nickName
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ console.log(uniqueUserMap)
|
|
|
|
+ // 将 Map 的值转换为数组
|
|
|
|
+ userList.value = Array.from(uniqueUserMap.values());
|
|
|
|
+ console.log(userList.value)
|
|
|
|
+ userId.value = userList.value[0].value
|
|
|
|
+ }
|
|
|
|
+ function checkSave() {
|
|
|
|
+ if (lot.value.lotCode == '' || lot.value.lotCode == null) {
|
|
|
|
+ debounce(handleScanCode, 700)
|
|
|
|
+ }
|
|
|
|
+ if (lot.value.inspectionCarrierId == null || lot.value.inspectionCarrierId == '') {
|
|
|
|
+ debounce(handleScanCode, 700)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function handleGetEquipmentList() {
|
|
|
|
+ getEquipment(lot.value.dayworkItemList)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function getEquipment(data) {
|
|
|
|
+ const uniqueEquipmentMap = new Map();
|
|
|
|
+ console.log(userId.value)
|
|
|
|
+ let filterList = data.filter(info => info.userId == userId.value)
|
|
|
|
+ console.log(filterList)
|
|
|
|
+ filterList.forEach(item => {
|
|
|
|
+ // 检查 Map 中是否已经有这个 equimentDetailId
|
|
|
|
+ if (!uniqueEquipmentMap.has(item.equipmentDetailId)) {
|
|
|
|
+ // 如果没有,添加到 Map 中
|
|
|
|
+ uniqueEquipmentMap.set(item.equipmentDetailId, {
|
|
|
|
+ value: item.equipmentDetailId,
|
|
|
|
+ text: item.equipmentDetailCode
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ // 将 Map 的值转换为数组
|
|
|
|
+ equipmentList.value = Array.from(uniqueEquipmentMap.values());
|
|
|
|
+ equipment.value = equipmentList.value[0].value
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //确定后,将批次id,批次号,传递过去
|
|
|
|
+ const handleConfirm = () => {
|
|
|
|
+ console.log(lot.value)
|
|
|
|
+ if (lot.value.inspectionCarrierId != undefined) {
|
|
|
|
+ if (equipment.value == null) {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: "请选择加工设备",
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ lot.value.equipmentDetailId = equipment.value
|
|
|
|
+ lot.value.equipmentDetailCode = equipmentList.value[equipmentList.value.findIndex(item => item.value ==
|
|
|
|
+ equipment.value)].text
|
|
|
|
+ lot.value.userId = userId.value
|
|
|
|
+ lot.value.nickName = userList.value[userList.value.findIndex(item =>item.value == userId.value)].text
|
|
|
|
+ store.processInspection = null
|
|
|
|
+ //判断选择了那种检测类型
|
|
|
|
+ //选择首检
|
|
|
|
+ uni.navigateTo({
|
|
|
|
+ url: "/pages/firstInspection/form",
|
|
|
|
+ success: (res) => {
|
|
|
|
+ // 通过eventChannel向被打开页面传送数据
|
|
|
|
+ res.eventChannel.emit("firstInspectionFrom", {
|
|
|
|
+ data: lot.value
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (lot.value.inspectionCarrierId == undefined) {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ icon: 'none',
|
|
|
|
+ title: "请扫描检测载具",
|
|
|
|
+ duration: 2000
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style lang="scss">
|
|
|
|
+ .page-container {
|
|
|
|
+ height: 100%;
|
|
|
|
+ background-color: #ececec;
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
+ padding: 24rpx;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .consultation-container {
|
|
|
|
+ background-color: #ffffff;
|
|
|
|
+ padding: 24rpx;
|
|
|
|
+ border-radius: 12rpx;
|
|
|
|
+
|
|
|
|
+ .title {
|
|
|
|
+ justify-content: center;
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .info-row {
|
|
|
|
+ margin-top: 24rpx;
|
|
|
|
+
|
|
|
|
+ .label {
|
|
|
|
+ width: 160rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .value {
|
|
|
|
+ flex: 1;
|
|
|
|
+
|
|
|
|
+ textarea {
|
|
|
|
+ flex: 1;
|
|
|
|
+ border: 1px solid #888888;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ padding: 16rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .btn {
|
|
|
|
+ background-color: #1684fc;
|
|
|
|
+ color: #ffffff;
|
|
|
|
+ border-radius: 8rpx;
|
|
|
|
+ margin: 4rpx 24rpx 24rpx 24rpx;
|
|
|
|
+ height: 64rpx;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ input {
|
|
|
|
+ margin: 48rpx 24rpx 0 24rpx;
|
|
|
|
+ height: 64rpx;
|
|
|
|
+ border: 1px solid #888888;
|
|
|
|
+ text-align: center;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</style>
|