yangan
2025-04-11 5e08d4f61c24db589bd6d30875fcb1191f719b16
pages/driver-page/driver-index/bill-of-lading-details/weighDetail/weighDetail.vue
@@ -19,21 +19,21 @@
                  :style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/skin.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
                  皮
               </view>
               <view class="num">{{ item.skin }}</view>
               <view class="num">{{ item.skin ? item.skin.toFixed(2) : '' }}</view>
            </view>
            <view class="item">
               <view class="concrete"
                  :style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/hair.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
                  毛
               </view>
               <view class="num">{{ item.hair }}</view>
               <view class="num">{{ item.hair ? item.hair.toFixed(2) : '' }}</view>
            </view>
            <view class="item">
               <view class="concrete"
                  :style="{ backgroundImage: `url(${onlineurl}/appimg/image/banner/clean.png)`, backgroundSize: 'cover', backgroundRepeat: 'no-repeat' }">
                  净
               </view>
               <view class="num">{{ item.clean }}</view>
               <view class="num">{{ item.clean ? item.clean.toFixed(2) : '' }}</view>
            </view>
         </view>
            <view v-if="isShow(item) && isYanz()">
@@ -59,7 +59,7 @@
            <view class="weight-box">
               <view class="weigh-qualified">
               <view v-if="!unqualifiedArr(i).length">
                  <view> 扣渣后净重:<text  class="count"> {{  cleanWeight(item) ?  cleanWeight(item)  + '吨' : ''}}</text></view>
               </view>
                <view v-else-if ='unqualifiedArr(i).length && item.clean' class='weigh-qualified-no'>
@@ -67,9 +67,9 @@
                  <view >   合格净重:  <text class="count">{{ qualifiedWeight(item,i) ? qualifiedWeight(item,i) + '吨' : '' }}</text></view>
               </view>
               <view v-else-if ='unqualifiedArr(i).length && !item.clean' class='weigh-qualified-no'>
               </view>
            </view>
            <view class="weigh-qualified" v-for="el,index in unqualifiedArr(i)">
               <view>
@@ -78,7 +78,7 @@
               <view class="count">    {{el.unqualifiedWeight ? el.unqualifiedWeight  + '吨'   : ''}}</view>
            </view>
            </view>
         </view>
      </view>
         <!-- 判断是否检验质量 -->
@@ -87,9 +87,17 @@
               <view style="width: 180rpx;">
               <u--text text="供应商"
                  size='32'></u--text>
            </view>
            <view style="font-size: 35rpx;">{{ coalDetailsData.customerName || '' }}</view>
            </view>
            <view class="level">
               <view style="width: 180rpx;">
               <u--text text="车牌号"
                  size='32'></u--text>
            </view>
            <view style="font-size: 35rpx;">{{ item.carNo || '' }}</view>
            </view>
            <!-- 物资明细 -->
            <view class="level" v-if="!flag">
@@ -97,7 +105,7 @@
               <u--text text="物资明细"
                  size='32'></u--text>
            </view>
            <view class="tag-select"
               @click="goodsPopoverShow(i,'goods')"
               v-if='roleType===4'>
@@ -110,12 +118,12 @@
               <view style="width: 180rpx;">
               <u--text text="品名"
                  size='32'></u--text>
            </view>
            <!-- (coalDetailsData.coalName ? coalDetailsData.coalName: '') -->
            <view class="tag-select"   @click="productNamePopoverShow(i)">{{ item.breed }}</view>
            <view class="tag-select"   @click="productNamePopoverShow(i)">{{ item.breed }}</view>
            </view>
         <view class="level"
            v-if='item.modifygoodsName ||globalShowWeigh[i].modifyProductName'>
            <view style="width: 180rpx;">
@@ -129,7 +137,7 @@
                  {{item.spec}}
               </text>
            </view>
         </view>
         <view class="level" v-if="flag">
            <view style="width: 180rpx;">
@@ -142,7 +150,7 @@
                  {{item.spec}}
               </text>
            </view>
         </view>
         <!-- <view class="unqualifiedBreed">
            <view style="width: 180rpx;">
@@ -199,7 +207,7 @@
               {{item.num + item.numUnit}}
            </view>
         </view>
         <view class="notice-num">
         <view class="notice-num">
               <view class="num-text"
               style="margin-left: 10rpx;">
               <u--text text="通知重量"
@@ -225,7 +233,7 @@
            </view>
         </view>
         <!-- 新增扣罚种类、 扣罚金额,不合格判定种类-->
         <!-- <view class="notice-num">
         <!-- <view class="notice-num">
               <view class="num-text"
               style="margin-left: 10rpx;">
               <u--text text="扣罚种类"
@@ -245,7 +253,7 @@
            </view>
         </view> -->
         <!-- 单价 -->
         <view class="notice-num">
         <view class="notice-num">
               <view class="num-text"
               style="margin-left: 10rpx;">
               <u--text text="单价"
@@ -271,7 +279,7 @@
         <!-- 扣罚容器 -->
         <view class="kouFa-box">
         <!-- 超尺扣罚金额 -->
         <view class="notice-num koufaBox-item">
         <view class="notice-num koufaBox-item">
               <view class="num-text"
               v-if="(roleType===4&&!flag) || (flag && item.oveForfeit)"
               style="margin-left: 10rpx;">
@@ -281,7 +289,7 @@
            <view class="num-input"
            v-if='roleType===4&&!flag'
            >
            <u-input
            <u-input
            v-model="item.oveForfeit"
            placeholder="请输入"
                  border="bottom"
@@ -297,8 +305,8 @@
               {{ item.oveForfeit + '元'}}
            </view>
         </view>
         <view class="notice-num koufaBox-item" >
         <view class="notice-num koufaBox-item" >
               <view class="num-text"
               v-if="(roleType===4&&!flag) || (flag && item.thiForfeit)"
               style="margin-left: 10rpx;">
@@ -322,8 +330,8 @@
               {{ item.thiForfeit+ '元' }}
            </view>
         </view>
         <view class="notice-num koufaBox-item" >
         <view class="notice-num koufaBox-item" >
               <view class="num-text"
               v-if="(roleType===4&&!flag) || (flag && item.obtForfeit)"
               style="margin-left: 10rpx;">
@@ -347,7 +355,7 @@
            </view>
         </view>
         <view class="notice-num koufaBox-item">
         <view class="notice-num koufaBox-item">
               <view class="num-text"
               v-if="(roleType===4&&!flag) || (flag && item.othForfeit)"
               style="margin-left: 10rpx;">
@@ -371,10 +379,10 @@
            </view>
         </view>
         </view>
         <!--不合格判定种类  -->
         <!-- <view class="notice-num">
         <!-- <view class="notice-num">
               <view class="num-text"
               style="margin-left: 10rpx;">
               <u--text text="扣罚类型"
@@ -396,17 +404,25 @@
            <u-checkbox  :label-size="25" :name="'2'" :label="'厚度扣罚'"  :value="item.thickPenaltyAmount"   :checked="item.thickPenaltyAmount" :disabled="disabled">厚度扣罚</u-checkbox>
            <u-checkbox :label-size="25" :name="'3'" :label="'密闭器'"  :value="item.obturatorPenaltyAmount"   :checked="item.obturatorPenaltyAmount"  :disabled="disabled">密闭器</u-checkbox>
            <u-checkbox :label-size="25" :name="'4'" :label="'其他扣罚'" :value="item.qita"   :checked="item.qita" :disabled="disabled">其他扣罚</u-checkbox>
        </u-checkbox-group>
        </u-checkbox-group>
            </view>
            <view class="num-show"
               v-else-if="flag">
               <view>
                  <text> {{item.penaltyType == 1 ? '超尺扣罚' : item.penaltyType == 2 ? '厚度扣罚' :item.penaltyType == 3 ? '密闭器' : null }} </text>
               </view>
            </view>
         </view> -->
         </view>
         <view v-if="!isYanz()"><view class="level">
               <view style="width: 180rpx;">
               <u--text text="车牌号"
                  size='32'></u--text>
            </view>
            <view style="font-size: 35rpx;">{{ item.carNo || '' }}</view>
            </view></view>
         <u-empty v-if=" isYanz() && !isShow(item) " icon-size="200"  text="''" >
            <text>暂未验质</text>
         </u-empty>
@@ -448,7 +464,7 @@
         style="   margin-left: 50rpx;margin-top: 30rpx;"
         >
            <u--list-item
                v-for="(el,index) in unqualifiedArr(i) "
                style=" box-shadow: 0px 0 0 0px #ccc;"
               :key="index"
@@ -461,7 +477,7 @@
               >
               <text slot="value" @click.stop="deleteItem(i,index)" style="color: red;">删除</text>
            </u-cell>
         <view>
            <view class="unqualifiedBreed">
            <view style="width: 180rpx;">
@@ -510,7 +526,7 @@
               v-else-if="flag">
               {{el.unqualifiedWeight ? el.unqualifiedWeight + '吨':   ''}}
            </view>
         </view>
         <!-- <view class="notice-num">
            <view class="num-text">
@@ -527,7 +543,7 @@
               v-else-if="flag">
               {{selectlist.find(item=>item.value ==el.unqualifiedType ) ? selectlist.find(item=>item.value ==el.unqualifiedType ).name : ''  }}
            </view>
         </view> -->
         <view class="notice-num">
            <view class="num-text">
@@ -550,9 +566,9 @@
               v-else-if="flag">
               {{el.penaltyUnitPrice ?  el.penaltyUnitPrice + '元' : ''}}
            </view>
         </view>
         </view>
         </u--list-item>
      </u--list>
@@ -585,6 +601,19 @@
               @select="selectUnqualifiedClick"></u-action-sheet>
         </view>
      </view>
      <!-- 原发出场时间 -->
      <!-- <view v-if="roleType!==3">
         <view>
            <text>货物发货地出场时间或发货磅单时间:</text>
         </view>
         <view>
            <uni-datetime-picker
            v-model="outDate"
            type="datetime"
            @change="datechange"
         />
         </view>
      </view> -->
      <!-- 新增 验质备注。验质说明 -->
      <view v-if=" isYanz()">
         <view v-if="coalDetailsData.orderType == '外购'">
@@ -638,7 +667,7 @@
            loading-text="确认"></u-button>
      </view></view>
      </view>
      <!-- 物料明细 -->
      <view v-if="!current">
         <view class="main-block"
@@ -725,7 +754,8 @@
               @close='unqualifiedClose'
               @select="selectUnqualifiedClick"></u-action-sheet>
         </view>
      </view>
      </view>
         <!-- 图片预览弹出框 -->
@@ -745,12 +775,16 @@
<script>
   import BigNumber from "bignumber.js"
   import formatDate from  '@/utils/date'
   import { BaseUrl } from '@/api/publicInterface.js';
   import { onlineurl } from '@/api/request.js'
   import { mapState, mapMutations } from "vuex"
   export default {
      data() {
         return {
            dateInpShow:false,
            outDate:'',
            dateValue:'',
            previewImageShow:false,
            qualityInstructions:"",
            previewImageSrc: '',
@@ -801,10 +835,10 @@
            list: [
               {
                  name: '物资明细'
               },
               },
               {
                  name: '称重明细'
               },
               },
            ],
            current: 1,
            showWeigh: [],
@@ -867,7 +901,7 @@
         //判断需不需要验质
         isYanz(){
            return function(item){
            // return     ( this.coalDetailsData.orderType !=='外购' ||   this.coalDetailsData.weighingType !=='回磅') ? false : true;
            // return     ( this.coalDetailsData.orderType !=='外购' ||   this.coalDetailsData.weighingType !=='回磅') ? false : true;
            if(this.coalDetailsData.orderType =='外购'){
               if(this.coalDetailsData.weighingType == '回磅'){
                  return true
@@ -905,7 +939,7 @@
                  //  if(item.penaltyType){
                  //    noPin = item.penaltyType.toString().split(',');
                  // }
                   let result =  arr.length && arr.map((el,index)=>{
                  const pinming = el.split("/")[0];
                  const guige = el.split("/")[1];
@@ -916,24 +950,35 @@
                  })
                  console.log(result,temp,'arr')
                  return result;
               }else{
                  return []
               }
               }
            }
         },
         cleanWeight(){
            return function(item){
               if(!item.weight){
               // if(!item.weight){
               //    return ''
               // }else if(item.weight && !item.unqualifiedWeight){
               //    return item.weight
               // }else if(item.weight && item.unqualifiedWeight){
               //    return item.weight
               // }
               if(item.weight){
                  return item.weight
               }else if(!item.clean){
                  return ''
               }else if(item.weight && !item.unqualifiedWeight){
                  return item.weight
               }else if(item.weight && item.unqualifiedWeight){
                  return item.weight
               } else if(item.clean && !item.unqualifiedWeight){
                  return item.clean
               }else if(item.clean && item.cinderWeight){
                  return  new BigNumber(item.clean - 0).minus(item.cinderWeight - 0);
               }
               console.log(item,'clearnWeight')
            }
         },
         //合格净重
@@ -949,16 +994,17 @@
               let z =  new BigNumber(znums.reduce((p,n)=>{
                  return (p - 0) + (n - 0)
               },0))
            return (item.weight - z).toFixed(2);
               let y = new BigNumber(item.cinderWeight)
            return new BigNumber(item.clean - 0).minus(z).minus(y);
            }
         }
      },
      mounted() {
         this.roleType === 1 ? this.GetOrderPlan() : this.getTakeCoal();
      },
      onLoad(params) {
         console.log(params,this.showWeighCopyStorge,this.globalShowWeigh,'params路由')
@@ -980,8 +1026,8 @@
               this.showWeigh[res.index].spec = res.data.specifications;
               this.showWeigh[res.index].firstClass = res.data.firstClass;
            }
         })
      },
      onShow(){
@@ -999,10 +1045,10 @@
            let z = new BigNumber(this.showWeigh[index].cinderWeight -  0);
            let y;
            // if(value.filter(Boolean) .length){
            //     y = value.reduce((p,n)=>{
            //     y = value.reduce((p,n)=>{
            // return (p - 0) + (n - 0);
             // },0);
            // }else{
            //     y = 0;
            // }
@@ -1011,10 +1057,10 @@
                  this.showWeigh[index].weight = '0';
                  this.$u.toast('当前净重不合格,请检查皮重,毛重是否准确')
               }else{
                  this.showWeigh[index].weight = x.minus(z).toFixed(2) ;
                  this.showWeigh[index].weight = x.minus(z).toFixed(4);
               }
            }
         },
         checkboxChange(n,item) {
@@ -1030,7 +1076,7 @@
               if(!n.includes('4')){
                  item.qita = ''
               }
            },
         getTakeCoal() {
@@ -1042,6 +1088,8 @@
                  uni.hideLoading()
                  this.coalDetailsData = res.data;
                  this.remarks  = res.data.remarks;
                  this.dateValue = res.data.startTime;
                  this.outDate = res.data.startTime;
                  this.qualityInstructions = res.data.qualityInstructions
                  this.orderCode = res.data.orderCode
                  this.showWeigh = this.coalDetailsData.tmTaskCoalItems ? this.coalDetailsData
@@ -1063,6 +1111,7 @@
                        tempArr:v.tempArr
                     }
                  })
                  console.log(this.showWeigh,'showWeigh')
                  this.showWeighCopy = JSON.parse(JSON.stringify(this.showWeigh))
                  uni.setStorageSync("showWeighCopyStorge", this.showWeighCopy)
                  uni.setStorageSync('showWeighCopyStorgeOther',this.showWeighCopy)
@@ -1077,7 +1126,7 @@
                      this.changeglobalShowWeigh(uni.getStorageSync('showWeighCopyStorgeOther'))
                  //称重明细无数据时显示物资明细
                  if(!this.coalDetailsData.tmTaskCoalItems.length){
                     this.current = 0;
                     this.current = 0;
                  }
                  this.isWeighingType = res.data.weighingType //当前磅单是否回磅
               } else {
@@ -1092,6 +1141,12 @@
                        name: v.breed + '/' + v.spec
                     }
                  })
                  //新增默认回显第一个
                  if(r.data.length && !this.flag){
                     this.goodsIndex = 0;
                     this.goodsselectClick(this.goodsList[0])
                  }
                  uni.hideLoading()
               })
            })
@@ -1133,11 +1188,11 @@
         imageClick(imgStr){
            console.log(imgStr,'触发')
               this.previewImageSrc = imgStr;
            this.$nextTick(() => {
               this.previewImageShow = true;
            });
         },
         // 点击确认
@@ -1146,13 +1201,14 @@
            let params = {},unqualifiedWeightAll;
            params.qualityInstructions = this.qualityInstructions;
            params.remarks = this.remarks;
            params.startTime = this.dateValue;
            console.log( this.showWeigh,' this.showWeigh')
            this.showWeigh = this.showWeigh.map((v, i) => {
            console.log(this.penaltyType,this.$refs.checkbox,'123')
            // let tempArr = v.penaltyType.split(',');
             v.unqualifiedType = '';
               if(this.globalShowWeigh[i].unqualifiedWeights){
               unqualifiedWeightAll = this.globalShowWeigh[i].unqualifiedWeights.split(",").reduce((p,n)=>{return (p - 0) + (n - 0)},0).toFixed(2)  || ''
               unqualifiedWeightAll = this.globalShowWeigh[i].unqualifiedWeights.split(",").reduce((p,n)=>{return (p - 0) + (n - 0)},0).toFixed(4)  || ''
               }else{
                  unqualifiedWeightAll = 0;
               }
@@ -1166,14 +1222,14 @@
                  unqualifiedWeight :unqualifiedWeightAll ,
                  tempArr:this.globalShowWeigh[i].tempArr ? JSON.stringify(this.globalShowWeigh[i].tempArr) : '',
                  penaltyUnitPrice:this.globalShowWeigh[i].penaltyUnitPrice,
               }
            });
            // if(flag){
            this.loading = true;
            params.tmTaskCoalItems = this.showWeigh;
            console.log(params,'params')
            this.$reqPost('updateTmTaskCoalItem', params, 'json').then(
               res => {
                  if (res.code == 0) {
@@ -1191,11 +1247,11 @@
               })
            // }else{
            //    this.$u.toast('请输入单价')
            //    return
            //    return
            // }
         },
         // 校验数据是否合格
         // 校验数据是否合格
         checkValue(data,target){
            if(!data.length){
               return
@@ -1203,7 +1259,7 @@
            let flag = data.find(item=>item[target] <=0);
            console.log(flag,'flag');
             if(flag){
               return false
               return false
            }else{
               return true;
            }
@@ -1268,12 +1324,12 @@
            value = parseFloat(value);
            value = value + ""; // 变回为字符串
         }else{
            value =  value.replace(/^(-)*(\d+)\.(\d\d).*$/,"$1$2.$3");
            value =  value.replace(/^(-)*(\d+)\.(\d\d\d\d).*$/,"$1$2.$3");
            this.$nextTick(()=>{
               this.showWeigh[index].cinderWeight  = value.replace(/[^\d.]/g, "");
            });
         } // 如果没有小数点,首位不能为类似于 01、02的值
            // 如果没有净重 ,则不进行计算
            if(clean){
               this.showWeigh[index].cinderWeight = (value - 0)
@@ -1293,9 +1349,9 @@
            }else{
               this.$u.toast('当前无净重')
            }
         },
         // 选择不合格品名
         selectunqualifiedBreed(index) {
@@ -1324,10 +1380,10 @@
                  this.showWeigh[index].weight = '0';
                  this.$u.toast('当前净重不合格,请检查皮重,毛重是否准确')
               }else{
                  this.showWeigh[index].weight = x.minus(y).minus(z).toFixed(2) ;
                  this.showWeigh[index].weight = x.minus(y).minus(z).toFixed(4) ;
               }
         },
         // 删除图片
         deletePic(event) {
@@ -1438,7 +1494,7 @@
            }
             this.globalShowWeigh[i].unqualifiedBreed = unqualifiedBreed;
             this.globalShowWeigh[i].unqualifiedWeights = unqualifiedWeights;
            //  this.globalShowWeigh[i].unqualifiedType = unqualifiedType;
            //  this.globalShowWeigh[i].unqualifiedType = unqualifiedType;
             this.globalShowWeigh[i].penaltyUnitPrice = penaltyUnitPrice;
             this.globalShowWeigh[i].tempArr.splice(index,1)
             console.log(this.globalShowWeigh[i].unqualifiedBreed,'unqualifiedBreed')
@@ -1448,7 +1504,7 @@
             this.numAll(this.globalShowWeigh[this.indexFlag].unqualifiedWeights.split(","),this.indexFlag,this.showWeigh[this.indexFlag].clean)
             console.log(this.globalShowWeigh[i],'deleteItem');
           }
         },
         editItem(i,index){
            this.indexFlag  = i; // 记录标识位
@@ -1461,7 +1517,7 @@
            }
         },
         amountChange(value,event){
            // //超尺扣罚
            // if(event.penaltyAmount){
            //    console.log("触发1")
@@ -1489,6 +1545,16 @@
            //    }
            // }
            console.log(event,'event')
         },
         dateInpFoucs(){
            console.log('聚焦');
            this.dateInpShow = true;
         },
         datechange(value){
            console.log('dateChange',value,formatDate.formatDate(new Date(value)) );
            this.dateValue = (formatDate.formatDate(new Date(value)) + ':' + '00');
         }
      },
@@ -1526,13 +1592,15 @@
   }
   .main {
      width: 96%;
      width: 100%;
      height: 100%;
      min-height: 400rpx;
      background-color: #fff;
      margin: 10rpx auto;
      padding: 10rpx 0;
    box-sizing: border-box;
      display: flex;
      flex-direction: column;
    overflow-x: hidden;
      .main-block {
         width: 690rpx;
@@ -1692,17 +1760,17 @@
   .tabs{
      font-size: 20rpx!important;
   }
   .u-card-wrap {
   .u-card-wrap {
      background-color: $u-bg-color;
      padding: 1px;
   }
   .u-body-item {
      font-size: 32rpx;
      color: #333;
      padding: 20rpx 10rpx;
   }
   .u-body-item image {
      width: 120rpx;
      flex: 0 0 120rpx;
@@ -1723,4 +1791,4 @@
      }
   }
</style>
</style>