小小儁爺
2025-05-12 8081e115c0d8ffd0dd572e02a4dfa28818ad2d5a
pages/wlgl/cgrk3.vue
@@ -0,0 +1,483 @@
<template>
   <view>
      <page-nav title="采购入库3"></page-nav>
      <view v-if="purchorderArr.length===0">
         <div class="sacnBody">
            <div class="scanImg" @click="topScanClick"></div>
            <div class="scanText">扫描物料标签</div>
         </div>
      </view>
      <view v-if='purchorderArr.length!==0' class="mainContent" style="">
         <view>
            <u-gap height="10" bgColor="#eff0f1"></u-gap>
            <view class="head">
               <view style="max-height: 940rpx;overflow: auto;">
                  <view class="head" style="position: relative;">
                     <u-radio-group v-model="radioValue" class="flex_column">
                        <view class=" flex_column" style="width: 100%;" @click="radioValueClick(item.hbarcode)"
                           v-for="(item,index) in purchorderDetailArr" :key="item.hbarcode">
                           <view class="head_block" style="position: absolute;margin: 38rpx 0 0 0;">
                              <view class="head_left">
                                 <view class="head_bar"></view>
                                 <view class="head_title" style="font-weight: bold;">
                                    标签信息
                                 </view>
                              </view>
                           </view>
                           <view class="orderNumber" :key="item.hbarcode">
                              {{(index+1).toString().padStart(2,0)}}
                           </view>
                           <view class="trash" v-show="purchorderDetailArr.length>1"
                              @click="trashClick(index)">
                              <u-icon name="trash" size='20'></u-icon>
                           </view>
                           <view v-show="purchorderDetailArr.length===1" style="width: 48rpx;height: 48rpx;">
                           </view>
                           <view class="flex_between marginBottom20 marginLeft20 marginTop20">
                              <view style="display: flex;">
                                 <view class="flex_column titleFont">
                                    <view>物料标签:</view>
                                    <view>标签数量:</view>
                                    <view>供方信息:</view>
                                    <view>采购批次:</view>
                                    <view>质量状态:</view>
                                 </view>
                                 <view class="flex_column contentFont">
                                    <view>{{item.hbarcode}}</view>
                                    <view>{{item.hqty}}</view>
                                    <view class="ellipsis" style="width: 460rpx;">{{item.hcustomername}}
                                    </view>
                                    <view>{{item.hbatchno}}</view>
                                    <!-- <view>{{item.qualitystatus?item.qualitystatus:'/'}}</view> -->
                                    <view v-if="item.qualitystatus===null">/</view>
                                    <view v-else style="display: flex;align-items: center;">
                                       <!--    <u-icon
                                          :name="item.qualitystatus==='OK'?'checkmark-circle-fill':'close-circle-fill'"
                                          :color="item.qualitystatus==='OK'?'#55ff00':'#FF0000'"
                                          size="40"></u-icon>
                                       <view style="margin-left: 10rpx;">
                                          {{item.qualitystatus==='OK'?'合格':'不合格'}}
                                       </view> -->
                                       <u-icon name="more-circle-fill" color="#55aaff" size="20"></u-icon>
                                       <view style="margin-left: 10rpx;">
                                          待检
                                       </view>
                                    </view>
                                 </view>
                              </view>
                              <u-radio size='20' class="marginRight20" :key="item.hbarcode"
                                 :name="item.hbarcode" activeColor="red"></u-radio>
                           </view>
                           <u-gap height="10" v-if="index!==purchorderDetailArr.length-1"
                              bgColor="#eff0f1"></u-gap>
                        </view>
                     </u-radio-group>
                  </view>
               </view>
            </view>
         </view>
      </view>
      <!--       <view v-if='purchorderArr.length!==0' class="footer">
         <view class="head_block" style="align-items: center;padding: 0 23rpx;">
            <view class="head_left">
               <view class="head_bar"></view>
               <view class="head_title" style="font-weight: bold;">
                  选择质检方案
               </view>
            </view>
            <view class="flex_center" style="margin-right: 20rpx;">
               <view @click='sheetClick' class="custominputClass">
                  <view v-show='sheetValue===""' style="color: rgb(192, 196, 204);">请选择</view>
                  <view v-show='sheetValue!==""' class="ellipsis" style="width: 390rpx;">
                     {{sheetValue}}
                  </view>
                  <u-icon :name="!sheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon>
               </view>
            </view>
         </view>
      </view> -->
      <u-picker :show="sheetShow" :columns="columns" :itemHeight='55' :closeOnClickOverlay='true'
         @close='sheetShow=false' @confirm='pickerConfirm' @cancel='sheetShow=false'></u-picker>
      <view class="footer">
         <u-button :disabled="!sheetValue" v-if='purchorderArr.length!==0' type="primary" size='large'
            :hairline="true" @click="navigateTo" text="下一步"></u-button>
      </view>
      <!--       <scan-code></scan-code> -->
      <!-- 悬浮球 -->
      <!-- <view v-show="purchorderArr.length!==0&&!sheetShow" @click="topScanClick">
         <drag-ball :x='$DeviceInformation.screenWidth*0.8' :y="$DeviceInformation.screenHeight*0.7"></drag-ball>
      </view> -->
      <!-- <navigator :url="'./rcjy2?item='+ encodeURIComponent(JSON.stringify(item))"> -->
      <!--    <navigator :url="'./rcjy2?item='+encodeURIComponent(1)">
      </navigator>
 -->
   </view>
</template>
<script>
   import {
      MesAppPurchInStorScanLabCode
   } from '../../config/api.js';
   // import scanCode from '@/components/scan-code/scan-code.vue'
   const App = getApp()
   export default {
      // components: {
      //    scanCode
      // },
      onLoad(option) {
         // if (option.length !== undefined) {
         //    let t1 = JSON.parse(uni.getStorageSync('purchorderArr'))
         //    let t2 = JSON.parse(uni.getStorageSync('purchorderDetailArr'))
         //    // 是否同步批次
         //    if (option.issyncbatch === 'true') { //是
         //       console.log('执行1')
         //       this.purchorderArr = t1.filter(i => {
         //          return !(i.hbillno === option.hbillno && i.partcode === option.partcode && i.hbatchno ===
         //             option.hbatchno)
         //       })
         //       this.purchorderDetailArr = t2.filter(i => {
         //          console.log(!(i.hbillno === option.hbillno && i.partcode === option.partcode && i
         //             .hbatchno ===
         //             option.hbatchno))
         //          return !(i.hbillno === option.hbillno && i.partcode === option.partcode && i.hbatchno ===
         //             option.hbatchno)
         //       })
         //    } else if (option.issyncbatch === 'false') { //否
         //       console.log('执行2')
         //       this.purchorderDetailArr = t2.filter(i => i.hbarcode !== option.labcode)
         //       this.purchorderArr = t1.filter(i => i.hbarcode !== option.labcode)
         //    }
         //    console.log('执行3')
         //    this.radioValue = this.purchorderDetailArr[0].hbarcode
         //    const t = this.purchorderDetailArr.find(i => i.hbarcode === this.radioValue).hbillno
         //    this.purchorderObj = this.purchorderArr.find(i => i.hbillno === t)
         //    this.$forceUpdate()
         // }
      },
      onPullDownRefresh() {
         setTimeout(() => {
            this.init(() => {
               uni.stopPullDownRefresh();
            })
         }, 1000);
      },
      data() {
         return {
            // "hbillno": "DH2303311361", //单据编号
            // "partcode": "102", //产品编码
            // "partname": "内存", //产品名称
            // "partspec": "", //产品规格
            // "hbarcode": "DH2303311360", //物料标签
            // "stocktype_code": "1", //存货类型编码
            // "hqty": 300.00, //标签数量
            // "hcustomercode": "0010002", //供应商编码
            // "hcustomername": "蒂森克虏伯发动机系统(常州)有限公司", //供应商名称
            // "hbatchno": "2", //采购批次
            // "qualitystatus": null //质量状态
            purchorderObj: {},
            purchorderArr: [
               // {
               //    hbillno: 'DH2304041465',
               //    partcode: 'ZG-Y-001',
               //    partname: 'ZG原材料001',
               //    partspec: '#001'
               // },
               // {
               //    hbillno: 'DH2304041463',
               //    partcode: 'ZG-Y-002',
               //    partname: 'ZG原材料002',
               //    partspec: '#002'
               // }
            ],
            purchorderDetailArr: [
               // {
               //    hbillno: 'DH2304041465',
               //    hbarcode: 'DH2304041464',
               //    hqty: 100,
               //    hcustomername: 'ZG外购供应商',
               //    hbatchno: '#101',
               //    qualitystatus: 'NG'
               // },
               // {
               //    hbillno: 'DH2304041463',
               //    hbarcode: 'DH2304041462',
               //    hqty: 400,
               //    hcustomername: 'ZG外购供应商',
               //    hbatchno: '#101',
               //    qualitystatus: 'OK'
               // },
               // {
               //    hbillno: 'DH2304041463',
               //    hbarcode: 'DH2304041461',
               //    hqty: 300,
               //    hcustomername: 'ZG外购供应商',
               //    hbatchno: '#101',
               //    qualitystatus: 'NG'
               // }, {
               //    hbillno: 'DH2304041463',
               //    hbarcode: 'DH2304041460',
               //    hqty: 200,
               //    hcustomername: 'ZG外购供应商',
               //    hbatchno: '#101',
               //    qualitystatus: 'OK'
               // },
            ],
            radioValue: '',
            sheetShow: false, //上拉列表是否展开
            sheetValue: '',
            sheetList: [],
            columns: []
         }
      },
      created() {
      },
      mounted() {
         this.init()
         this.getMesAppPurchInStorScanLabCode('DH25050900016')
      },
      methods: {
         init() {
            uni.stopPullDownRefresh();
         },
         //来自于页面3的值  进行数据处理
         fromSubmitData(option) {
            let t1 = JSON.parse(uni.getStorageSync('purchorderArr'))
            let t2 = JSON.parse(uni.getStorageSync('purchorderDetailArr'))
            // 是否同步批次
            if (option.issyncbatch === 'Y') { //是
               console.log('执行1')
               this.purchorderArr = t1.filter(i => {
                  return !(i.hbillno === option.hbillno && i.partcode === option.partcode && i.hbatchno ===
                     option.hbatchno)
               })
               this.purchorderDetailArr = t2.filter(i => {
                  return !(i.hbillno === option.hbillno && i.partcode === option.partcode && i.hbatchno ===
                     option.hbatchno)
               })
            } else if (option.issyncbatch === 'N') { //否
               console.log('执行2')
               this.purchorderDetailArr = t2.filter(i => i.hbarcode !== option.labcode)
               this.purchorderArr = t1.filter(i => i.hbarcode !== option.labcode)
            }
            console.log('执行3')
            if (this.purchorderDetailArr.length > 0) {
               this.radioValue = this.purchorderDetailArr[0].hbarcode
               const t = this.purchorderDetailArr.find(i => i.hbarcode === this.radioValue).hbillno
               this.purchorderObj = this.purchorderArr.find(i => i.hbillno === t)
            }
            this.$forceUpdate()
         },
         // 扫描
         topScanClick() {
            let that = this;
            uni.scanCode({
               onlyFromCamera: true,
               // scanType: ['barCode', 'qrCode'],
               scanType: ['qrCode'],
               success: function(res) {
                  console.log('条码类型:' + res.scanType);
                  console.log('条码内容:' + res.result);
                  that.scanContent = res.result;
                  let flag = false
                  that.purchorderDetailArr.forEach(item => {
                     if (item.hbarcode === res.result) {
                        flag = true
                     }
                  })
                  if (flag) {
                     that.$u.toast('此条码已扫描,已在列表中!')
                  } else {
                     //处理扫码事件
                     that.getMesAppPurchInStorScanLabCode(that.scanContent);
                  }
               },
               complete: function(res) {
               },
               fail: function(res) {
                  console.log('条码类型:' + res.scanType);
                  console.log('条码内容:' + res.result);
               }
            });
         },
         // 获取标签信息
         async getMesAppPurchInStorScanLabCode(labcode) {
            const data = {
               labcode
            }
            const res = await MesAppPurchInStorScanLabCode(this.global.formatData(data))
            if (res.code === '200') {
               console.log(res)
               this.purchorderArr.unshift({
                  hbillno: res.data[0].hbillno,
                  partcode: res.data[0].partcode,
                  partname: res.data[0].partname,
                  partspec: res.data[0].partspec,
                  hbarcode: res.data[0].hbarcode,
                  hbatchno: res.data[0].hbatchno ? res.data[0].hbatchno : '/',
               })
               this.purchorderDetailArr.unshift({
                  hbillno: res.data[0].hbillno,
                  partcode: res.data[0].partcode,
                  hbarcode: res.data[0].hbarcode,
                  hqty: res.data[0].hqty,
                  hcustomername: res.data[0].hcustomername,
                  hcustomercode: res.data[0].hcustomercode,
                  hbatchno: res.data[0].hbatchno ? res.data[0].hbatchno : '/',
                  qualitystatus: res.data[0].qualitystatus,
               })
               this.purchorderObj = this.purchorderArr[0]
               this.radioValue = res.data.labcont[0].hbarcode
            }
         },
         // picker确认按钮
         pickerConfirm(val) {
            this.sheetValue = val.value[0]
            this.sheetShow = false
         },
         // 选择质检方案
         sheetClick(val) {
            this.sheetShow = true
         },
         // 页面跳转
         navigateTo() {
            uni.setStorageSync('purchorderArr', JSON.stringify(this.purchorderArr))
            uni.setStorageSync('purchorderDetailArr', JSON.stringify(this.purchorderDetailArr))
            // uni.navigateTo({
            //  url:'./rcjy2?purchorderObj=' + JSON.stringify(this.purchorderObj)+
            // })
            uni.navigateTo({
               url: './rcjy2?checkstandcode=' + this.sheetList.find(i => i.name === this.sheetValue).code +
                  '&checkstandname=' + this.sheetValue + '&sampmethod=' + this.sheetList.find(i => i.name ===
                     this.sheetValue).sampmethod + '&sampscare=' + this.sheetList.find(i => i.name === this
                     .sheetValue).sampscare + '&purchorderObj=' + JSON.stringify(this
                     .purchorderObj) + '&radioSelectValue=' + JSON.stringify(this.purchorderDetailArr.find(
                     i => i.hbarcode === this.radioValue))
            });
         },
         // 单选按钮点击事件
         radioValueClick(val) {
            this.radioValue = val
            const t = this.purchorderDetailArr.find(i => i.hbarcode === val).hbillno
            this.purchorderObj = this.purchorderArr.find(i => i.hbillno === t)
         },
         // 删除事件点击
         trashClick(val) {
            this.purchorderDetailArr.splice(val, 1)
         },
      }
   }
</script>
<style lang="scss" scoped>
   @import url('@/style/global.css');
   ::v-deep .uicon-arrow-left>span {
      display: block;
   }
   .orderNumber {
      width: 60rpx;
      height: 40rpx;
      // margin: -22rpx 0 0 -30rpx;
      background-color: #d3daf9;
      color: #2979FF;
      font-size: 26rpx;
      padding: 4rpx 0 0 10rpx;
      border-radius: 0 0 90% 0;
   }
   .trash {
      width: 48rpx;
      height: 48rpx;
      margin: -26rpx 0 0 646rpx;
      background-color: #d3daf9;
      font-size: 26rpx;
      padding: 6rpx 0 0 10rpx;
      border-radius: 100%;
   }
   .custominputClass {
      width: 424rpx;
      display: flex;
      justify-content: space-between;
      border: 3rpx #eff0f1 solid;
      border-radius: 10rpx;
      padding: 0 10rpx;
   }
</style>