loulijun2021
2024-05-14 9e7bbd1a203c39c74b81624640a5ea8f6e247ba3
pages/wwgl/wxsl.vue
@@ -105,44 +105,6 @@
                  </view>
               </view>
               <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;">
                  <view style="color: #fff;margin-right: 6rpx;">*</view> 不良数量
                  <view style="margin-left: 20rpx;">
                     <view class='inputClass'>
                        <u--input placeholder="请输入" border="surround" @change='ngqtyChange' type='number'
                           v-model="ngqty">
                        </u--input>
                     </view>
                  </view>
               </view>
               <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;">
                  <view style="display: flex;" class="titleFont">
                     <view style="color: #fff;margin-right: 6rpx;">*</view> 不良原因
                  </view>
                  <view style="margin-left: 20rpx;">
                     <view @click='badSheetClick' class="custominputClass">
                        <view v-show='badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择</view>
                        <view v-show='badSheetValue.length!==0' class="ellipsis" style="width: 390rpx;">
                           {{badSheetValue}}
                        </view>
                        <u-icon :name="!badSheetShow?'arrow-down-fill':'arrow-up-fill'"></u-icon>
                     </view>
                  </view>
               </view>
               <!--    <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;">
                  <view style="display: flex;" class="titleFont">
                     <view style="color: #fff;margin-right: 6rpx;">*</view> 收料备注
                  </view>
                  <view style="margin-left: 20rpx;">
                     <view class='inputClass'>
                        <u--textarea v-model="notes" placeholder="请输入"></u--textarea>
                     </view>
                  </view>
               </view> -->
            </view>
@@ -176,27 +138,68 @@
            </view>
            <u-gap height="10" bgColor="#eff0f1"></u-gap>
            <view class="head  marginLeft10 marginRight10" style="padding-bottom: 20rpx;">
               <view class="head_block">
                  <view class="head_left">
                     <view class="head_bar"></view>
                     <view class="head_title">
                        不良统计
                     </view>
                  </view>
               </view>
               <view class="flex_column ">
                  <u-button type="primary" :plain="true" icon='plus-circle' text="添加"
                     style="width: 90%;margin: 20rpx auto;" @click="add"></u-button>
                  <view v-for='(item,index) in ngqtyArr' class="badSheetClass" :key="item.uid">
                     <view class="badNumber">{{index+1}}</view>
                     <u-icon name="trash" size="20" class="trash" v-if="ngqtyArr.length!==1"
                        @click="trashDelete(index)" color="rgb(0, 102, 255)"></u-icon>
                     <view class="flex_center titleFont" style="margin: 0rpx 20rpx 10rpx;line-height: 56rpx;">
                        <view style="color: #fff;margin-right: 6rpx;">*</view> 不良数量:
                        <view class='inputClass'>
                           <u--input placeholder="请输入" border="surround" :adjustPosition='false' type='number'
                              v-model="item.ngqty"></u--input>
                        </view>
                     </view>
                     <view class="flex_center" style="margin: 0rpx 20rpx 10rpx;line-height: 76rpx;">
                        <view style="display: flex;" class="titleFont">
                           <view style="color: #fff;margin-right: 6rpx;">*</view> 不良原因:
                        </view>
                        <view @click='badSheetClick(item)' class="custominputClass">
                           <view v-show='item.badSheetValue.length===0' style="color: rgb(192, 196, 204);">请选择
                           </view>
                           <view v-show='item.badSheetValue.length!==0' class="ellipsis"
                              style="width: 390rpx;">
                              {{item.badSheetValue}}
                           </view>
                           <u-icon :name="item.arrowDown?'arrow-down-fill':'arrow-up-fill'"></u-icon>
                        </view>
                     </view>
                     <u-divider></u-divider>
                  </view>
               </view>
            </view>
         </view>
         <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true'
            :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSheetShow=false" :show="badSheetShow"
            @select='badSheetSelect'>
            <view style="min-height: 100rpx;padding: 20rpx 20rpx 30rpx 20rpx;">
               <u-checkbox-group @change="checkboxChange" size='20px' v-model="checkBoxValue" iconPlacement="right"
                  placement="column">
                  <view v-for="(item,index) in badSelectArr">
                     <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index"
                        :name='item.name' :label="item.name">
                     </u-checkbox>
                     <u-divider :key="item.code"></u-divider>
                  </view>
               </u-checkbox-group>
            </view>
         </u-action-sheet>
         <u-picker v-if="topContent.length!==0" :show="WXSheetShow" :columns="WXColumns" :itemHeight='55'
@@ -209,6 +212,25 @@
            :closeOnClickOverlay='true' @close='userSheetShow=false' @confirm='userPickerConfirm'
            @cancel='userSheetShow=false'>
         </u-picker>
         <!-- 不良原因 -->
         <u-action-sheet v-if="topContent.length!==0" :actions="badSelectArr" :safeAreaInsetBottom='true'
            :closeOnClickOverlay="true" :closeOnClickAction="true" @close="badSelectClose" :show="badSheetShow"
            @select='badSheetSelect'>
            <view style="min-height: 100rpx;">
               <u-checkbox-group @change="checkboxChange" size='20px' v-model="checkBoxValue" iconPlacement="right"
                  placement="column">
                  <view v-for="(item,index) in badSelectArr">
                     <u-checkbox activeColor="rgb(0, 102, 255)" labelSize='18' :key="item.code+index"
                        :name='item.name' :label="item.name">
                     </u-checkbox>
                  </view>
               </u-checkbox-group>
            </view>
         </u-action-sheet>
      </view>
@@ -303,6 +325,21 @@
            badSheetValue: '',
            ngqtyArr: [{
                  uid: new Date().getTime(),
                  ngqty: '',
                  badSheetValue: '',
                  arrowDown: true //向下箭头
               },
               // {
               //    ngqty: '',
               //    badSheetValue: '',
               //    arrowDown: true //向下箭头
               // },
            ], //不良数量、不良原因数组
            notes: null //备注
@@ -317,7 +354,7 @@
         this.init()
         this.getMesOrderStepStart('MO-2023-09-0002_1;106')
         // this.getMesOrderStepStart('MO-2023-09-0002_1;106')
         this.handleSelectAllApi()
@@ -341,11 +378,9 @@
            this.userColumns = [res.data.map(i => i.username)]
         },
         async getCustomerPermissions(val) {
            const data = {
               orderstepqrcode: val
            }
            const res = await CustomerPermissions(this.global.formatData(data))
         async getCustomerPermissions() {
            const res = await CustomerPermissions()
            this.WXSheetList = res.data
            this.WXColumns = [res.data.map(i => i.name)]
         },
@@ -412,10 +447,13 @@
            });
         },
         badSheetClick() {
            if (!this.ngqty) {
         badSheetClick(item) {
            if (!item.ngqty) {
               return uni.$u.toast('请先填写不良数量!')
            }
            item.arrowDown = !item.arrowDown
            this.checkBoxValue = item.badSheetValue.split(',')
            this.badSheetShow = true
         },
@@ -445,11 +483,35 @@
            this.userSheetShow = false
         },
         ngqtyChange(val) {
            if (!parseFloat(val)) {
               this.badSheetValue = ''
               this.checkBoxValue = ''
            }
         // 添加
         add() {
            // if (this.ngqtyArr.find(i => i.badSheetValue === '')) {
            //    return uni.$u.toast('请先完善前面不良选项!')
            // }
            this.ngqtyArr.unshift({
               uid: new Date().getTime(),
               ngqty: '',
               badSheetValue: '',
               arrowDown: true //向下箭头
            })
         },
         //删除
         trashDelete(index) {
            this.ngqtyArr.splice(index, 1)
         },
         badSelectClose() {
            let index = this.ngqtyArr.findIndex(i => !i.arrowDown)
            this.ngqtyArr[index].badSheetValue = this.checkBoxValue.join(',')
            this.ngqtyArr[index].arrowDown = true
            this.checkBoxValue = []
            this.badSheetShow = false
         },
@@ -469,39 +531,39 @@
            let t = this.topContent[0].list.find(i => i.tp === this.WXSheetValue)
            if (!this.ngqty && (parseFloat(this.sqty) > parseFloat(t.fqty) - parseFloat(t.sqty) - parseFloat(t
                  .ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) {
            if (!t) {
               return uni.$u.toast('请选择可收料的供应商!')
            }
            if (!this.ngqtyArr[0].ngqty && (parseFloat(this.sqty) > parseFloat(t.fqty) - parseFloat(t.sqty) -
                  parseFloat(t
                     .ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) {
               return uni.$u.toast('收料数量不能大于该供应商的可收收料!')
            }
            if (this.ngqty && (parseFloat(this.sqty) + parseFloat(this.ngqty) > parseFloat(t.fqty) - parseFloat(t
            // 不良原因
            const defectlist = []
            //不良数量
            let ngqtyNumber = 0
            this.ngqtyArr.forEach(i => {
               if (i.badSheetValue.toString().length > 0) {
                  let codeArr = []
                  ngqtyNumber += parseFloat(i.ngqty)
                  i.badSheetValue.split(',').forEach(j => {
                     codeArr.push(this.badSelectArr.find(i => i.name === j).code)
                  })
                  defectlist.push({
                     badqty: i.ngqty,
                     defect_code: codeArr.join(',')
                  })
               }
            })
            if ((parseFloat(this.sqty) + parseFloat(ngqtyNumber) > parseFloat(t.fqty) - parseFloat(t
                  .sqty) - parseFloat(t.ng_qty) - parseFloat(t.laborbad_qty) - parseFloat(t.materielbad_qty))) {
               return uni.$u.toast('收料数量+不良数量不能大于该供应商的可收收料!')
            }
            if (this.ngqty && !this.badSheetValue) {
               return uni.$u.toast('不良原因不能为空!')
            }
            let badcode = []
            if (this.badSheetValue.length > 0) {
               this.badSelectArr.forEach(i => {
                  if (this.badSheetValue.split(',').includes(i.name)) {
                     badcode.push(i.code)
                  }
               })
            }
            // const header = {
            //    'Content-Type': 'application/x-www-form-urlencoded',
            //    'rediskey': uni.getStorageSync('rediskey'),
            //    'admin': uni.getStorageSync('usercode'),
            //    'username': encodeURIComponent(uni.getStorageSync('username')),
            //    'navTabId': uni.getStorageSync('usercode'),
            //    'userid': uni.getStorageSync('userid'),
            //    'guid': uni.getStorageSync('guid'),
            //    'usertype': 'APP'
            // }
            const D = {
@@ -526,10 +588,7 @@
               sqty: this.sqty, // 收料数量
               // ngqty: !this.ngqty ? 0 : this.ngqty,
               remarks: this.notes,
               defectlist: badcode.length > 0 ? [{
                  defect_code: badcode.join(','),
                  badqty: this.ngqty
               }] : [],
               defectlist,
               inbarcode: R[0].labcode, //入库条码
            }
@@ -553,39 +612,6 @@
               this.isDisabledSubmitButton = false
            }
            // this.isDisabledSubmitButton = true
            // uni.uploadFile({
            //    url: this.$baseUrl + '/AppProductionManagement/SavaMesOrderStepIn',
            //    files: [{
            //       "uri": "/"
            //    }],
            //    header: header,
            //    formData: data,
            //    success: (res) => {
            //       console.log(res, 77)
            //       uni.$u.toast('收料成功!')
            //       this.WXSheetValue = ''
            //       this.userSheetValue = ''
            //       this.checkBoxValue = ''
            //       this.badSheetValue = ''
            //       this.sqty = null
            //       this.ngqty = null
            //       this.notes = null
            //       this.topContent = []
            //       this.isDisabledSubmitButton = false
            //    },
            //    fail(res) {
            //       uni.$u.toast('收料失败!')
            //       this.isDisabledSubmitButton = false
            //    },
            // })
         }
      }
   }
@@ -598,6 +624,16 @@
      display: block;
   }
   ::v-deep .u-action-sheet {
      max-height: 600rpx !important;
      overflow: auto !important;
   }
   ::v-deep .u-checkbox-label--right {
      padding: 30rpx;
      border-bottom: 1rpx solid #eee;
   }
   .custominputClass {
      width: 412rpx;
      display: flex;
@@ -607,4 +643,24 @@
      padding: 0 16rpx;
      line-height: 68rpx;
   }
   .badSheetClass {
      position: relative;
   }
   .badNumber {
      position: absolute;
      top: 20rpx;
      left: 20rpx;
      font-size: 26rpx;
      color: rgb(0, 102, 255)
   }
   .trash {
      position: absolute;
      top: 20rpx;
      right: 30rpx;
      font-size: 26rpx;
   }
</style>