yangan
2025-01-06 9d7c0455ed9be167b09600ca98a1e25aafcc3ba7
pages/loadUnload-page/selectTarget/selectTarget.vue
@@ -1,6 +1,34 @@
<template>
   <view class="main">
      <u--form labelPosition="top"
      <!-- 当前选择仓库 -->
      <view class="top-tag">
         <text style="margin-right:20rpx">点击切换/选择仓库</text>
         <u-tag
         size='large'
         icon='map'
         :text="dataForm.firstClass ? dataForm.firstClass : '请选择仓库'"
         @click="firstClassSelect"
         ></u-tag>
      </view>
      <!-- 点击查看原盐钙镁 -->
         <view class="self-deliver">
               <view class="self-deliver_text">
                  查看原盐钙镁结果
               </view>
               <view class="self-deliver_btn">
                  <u-button text="查看"
                     type="primary"
                     shape="cirle"
                     @click="todoDetail"></u-button>
               </view>
            </view>
            <view
            v-if="messageObj.carNo"
         class="notice-bar"><u-notice-bar :text="messageText"
          :fontSize="30" :showIcon = 'true'
          ></u-notice-bar></view>
      <!-- <u--form labelPosition="top"
         labelWidth="20%"
         :borderBottom="false"
         :model="dataForm"
@@ -17,63 +45,470 @@
                     size="30"></u-icon></u-cell>
            </u-cell-group>
         </u-form-item>
         <!-- <u-form-item label="煤仓"
            prop="secondClass"
            :borderBottom="false">
            <u-cell-group>
               <u-cell :title="dataForm.secondClass"
                  value="请选择"
                  @click="secondClassSelect"
                  :disabled="!dataForm.firstClass">
                  <u-icon name="arrow-right"
                     slot="right-icon"
                     size="30"></u-icon></u-cell>
            </u-cell-group>
         </u-form-item>
         <u-form-item label="磅单"
            prop="orderType"
            :borderBottom="false">
            <u-cell-group>
               <u-cell :title="dataForm.orderType"
                  :value="isOrderType"
                  @click="orderTypeSelect">
                  <view slot="right-icon"
                     @click.stop="cleanOrderType">
                     <u-icon :name="!dataForm.orderType?'arrow-right':'close-circle'"
                        size="30"></u-icon>
                  </view>
               </u-cell>
            </u-cell-group>
         </u-form-item> -->
      </u--form>
      <view class="coal-name"
         v-show="coalList.length!==0">
         <u-checkbox-group v-model="checkedCoal"
            placement="column"
            @change="checkboxChange"
            size="30">
            <u-checkbox :customStyle="{marginBottom: '8px',fontSize:'20px'}"
               v-for="(item, index) in coalList"
               :key="item.id"
               :label="item.name"
               :name="item.name"
               labelSize='40'
               iconSize='40'></u-checkbox></u-checkbox-group>
      </view>
      <view style="margin-top: 20rpx;">
      </u--form> -->
      <!-- <view style="margin-top: 20rpx;">
         <u-button type="primary"
            shape="circle"
            text="查看该仓库收发单"
            @click.stop="formHandle"></u-button>
      </view> -->
      <!-- 场地 -->
      <view class='div-box'>
         <!-- 渲染区域 -->
         <u-collapse
               :value='["1"]'
               ref="myCollapse"
               >
                <u-collapse-item
                name='1'
                 ref="collapseHeight"
               class="collItem"
               :title="'待装卸收发单'">
               <view class="history-information"
                  v-for="item,i in detailData"
         :key="i">
                     <view class="first">
                        <view class="">{{ item.carNo || '' }}</view>
                        <view class=""></view>
                     </view>
                     <view class="second">
                        <view class="coal-name">{{ item.productNames?limitString(item.productNames,20,'...'):'' || ''}}</view>
                        <view class="order-type">{{ item.orderType || '' }}</view>
                     </view>
                     <view class="third">
                        <view class="third-line">
                           <view class="third-line_text">客户名称:</view>
                           <view>{{ item.customerName }}</view>
                        </view>
                           <view class="third-line" v-if="/聚氯乙烯树脂/.test(item.productName)">
                           <view class="third-line_text">包装类型:</view>
                           <view>{{ proType[item.packingType] }}</view>
                        </view>
                        <view class="third-line"  v-if="item.productName === '二氯乙烷(EDC)'">
                           <view class="third-line_text">质检状态:</view>
                           <view> <u-tag :text="checkStatusList[item.checkStatus]" plain > </u-tag></view>
                        </view>
                     </view>
                     <view class="fourth">
                        <view class="fourth-icon">
                           <view
                              style="width: 24rpx;height: 24rpx;line-height: 24rpx;background: url('https://wrzs.czjlchem.com:9090/appimg/image/banner/clock.png') no-repeat;background-size: cover">
                           </view>
                        </view>
                        <view class="senddate">{{ item.sendDate }}</view>
                     </view>
                     <view class="fourth">
                        <view class="fourth-icon">
                           <view
                              style="width: 26rpx;height: 26rpx;line-height: 26rpx;background: url('https://wrzs.czjlchem.com:9090/appimg/image/banner/carnNUm.png') no-repeat;background-size: cover;">
                           </view>
                        </view>
                        <view class="senddate">{{ item.orderCode }}</view>
                        <!-- v-if="item.isWeight === 0 && item.tmTaskCoalList.length >1 && item.packingType !== 1"  -->
                        <view class="rightBtn"><u-button type='primary'  v-if="  item.tmTaskCoalList.length >1 && !item.tmTaskCoalList.find(item=>item.isWeight !== 0) &&  item.packingType !== 1" text='一键确认' @click.native.stop="allOkBtn(item)"></u-button></view>
                     </view>
                     <view class="fourth">
                        <view class="senddate">{{ proType[item.packingType] }}</view>
                     </view>
                                     <view class="table">
         <uni-table border stripe
         emptyText="暂无更多数据">
               <uni-tr>
                  <uni-th width='120'
                  align="center">操作</uni-th>
                   <uni-th align="center" width='800'>产品</uni-th>
                  <!-- <uni-th align="center" width='200'>仓库</uni-th>
                  <uni-th align="center" width='100'>皮重</uni-th>
                  <uni-th align="center" width='100'>毛重</uni-th>
                  <uni-th align="center" width='100'>净重</uni-th>
                  <uni-th align="center" width='100'>数量</uni-th> -->
                  <uni-th align="center"  width='120'>确认量</uni-th>
                   <uni-th align="center"  width='120'>计划量</uni-th>
                  <uni-th align="center"  width='150'>计重方式</uni-th>
                   <!-- <uni-th align="center"  width='100'>实际量</uni-th>  -->
               </uni-tr>
               <uni-tr v-for="(subItem, index) in item.tmTaskCoalList" :key="index">
                   <uni-td  align="center">
               <view class="btnBox">
                  <!--   -->
                  <u-button  size='mini' v-if="item.isPindan === 1 && $store.state.pvcIdList.includes(subItem.productId) "   type='primary' text='查看拼单'  @click.native.stop="toViewPindan(subItem)"></u-button>
                  <u-button type='primary' text='确认装卸'  size='mini' v-if="subItem.flag && isBtnShow(item) && !( item.tmTaskCoalList.length >1 && !item.tmTaskCoalList.find(item=>item.isWeight !== 0) &&  item.packingType !== 1) && subItem.isPindan!==2" @click.native.stop="enterOk(item,subItem)"></u-button>
                  </view></uni-td>
                  <uni-td align="left">
                     <view>{{ subItem.productName  +  ( subItem.productGrade  ? '-' + subItem.productGrade :'')   }}</view></uni-td>
               <!-- <uni-td>
                  <view>{{ subItem.bunkerName }}</view>
               </uni-td>
               <uni-td>
                  <view class="name" v-if="subItem.skin">{{ Number(subItem.skin).toFixed(2) || ''  }}</view>
               </uni-td>
               <uni-td>
                  <view class="name" v-if="subItem.hair"> {{  Number(subItem.hair).toFixed(2) || ''  }}</view>
               </uni-td>
                  <uni-td>
                  <view class="name" v-if="(subItem.clean || (subItem.clean && subItem.clean === 0))">{{ Number(subItem.clean).toFixed(2) || ''}}</view>
               </uni-td>
               <uni-td>
                  <view class="name">{{ subItem.productQuantity }}</view>
               </uni-td> -->
               <uni-td align="right">
                  <view class="name">{{ subItem.productQuantity }}</view>
               </uni-td>
               <uni-td align="right">
                  <view class="name">{{ subItem.planMeasure }}</view>
               </uni-td>
               <uni-td align="right">
                     <u-tag :text="'计数'" plain v-if="subItem.isWeight==0"></u-tag>
                     <u-tag  :text="'称重'"  plain v-else-if="subItem.isWeight==1"></u-tag>
                     <u-tag :text="'称重计数'"  plain v-else-if="subItem.isWeight==2"></u-tag>
                     <u-tag v-else></u-tag>
               </uni-td>
               <!-- <uni-td>
                  <view class="name">{{ subItem.realityMeasure }}</view>
               </uni-td> -->
<!--
                <uni-td align="center">
               <view>{{ subItem.bunkerName }}</view></uni-td> -->
                 <!-- <uni-td align="center">
               <view  class="name">{{ subItem.statusView }}</view></uni-td> -->
            </uni-tr>
            </uni-table>
       </view>
               </view>
                  <u-empty mode="data"
                     icon="http://cdn.uviewui.com/uview/empty/data.png"
                     text="暂无数据"
                     textSize="30"
                     iconSize="1000"
                     v-if="detailData.length===0"></u-empty>
                </u-collapse-item>
         </u-collapse>
      </view>
      <!-- 煤场 -->
      <!-- 已装卸收发单 -->
      <view class='div-box'>
         <!-- 渲染区域 -->
         <u-collapse
               ref="myCollapse"
               >
                <u-collapse-item
                name='1'
               class="collItem"
               :title="'已装卸收发单'">
               <view class="history-information"    v-for="item,i in historyData"
         :key="i">
                     <view class="first">
                        <view class="">装卸日期: {{ item.sendDate || '' }}</view>
                        <view class=""></view>
                     </view>
                     <view class="second">
                        <view class="coal-name">{{ item.productNames?limitString(item.productNames,20,'...'):'' || ''}}</view>
                        <view class="order-type">{{ item.orderType || '' }}</view>
                     </view>
                     <view class="third">
                        <view class="third-line">
                           <view class="third-line_text">客户名称:</view>
                           <view>{{ item.customerName }}</view>
                        </view>
                           <view class="third-line" v-if="/聚氯乙烯树脂/.test(item.productName)">
                           <view class="third-line_text">包装类型:</view>
                           <view>{{ proType[item.packingType] }}</view>
                        </view>
                        <view class="third-line"  v-if="item.productName === '二氯乙烷(EDC)'">
                           <view class="third-line_text">质检状态:</view>
                           <view> <u-tag :text="checkStatusList[item.checkStatus]" plain > </u-tag></view>
                        </view>
                     </view>
                     <view class="fourth">
                           <view
                              style="height: 24rpx">
                           </view>
                        <view class="senddate">{{ item.carNo }}</view>
                     </view>
                     <view class="fourth">
                        <view class="fourth-icon">
                           <view
                              style="width: 26rpx;height: 26rpx;line-height: 26rpx;background: url('https://wrzs.czjlchem.com:9090/appimg/image/banner/carnNUm.png') no-repeat;background-size: cover;">
                           </view>
                        </view>
                        <view class="senddate">{{ item.orderCode }}</view>
                     </view>
                     <view class="fourth">
                        <view class="senddate">{{ proType[item.packingType] }}</view>
                     </view>
                                     <view class="table">
         <uni-table border stripe
         emptyText="暂无更多数据">
               <uni-tr>
                  <uni-th width='120'
                  align="center">操作</uni-th>
                   <uni-th align="center" width='800'>产品</uni-th>
                  <!-- <uni-th align="center" width='200'>仓库</uni-th>
                  <uni-th align="center" width='100'>皮重</uni-th>
                  <uni-th align="center" width='100'>毛重</uni-th>
                  <uni-th align="center" width='100'>净重</uni-th>
                  <uni-th align="center" width='100'>数量</uni-th> -->
                  <uni-th align="center"  width='120'>确认量</uni-th>
                   <uni-th align="center"  width='120'>计划量</uni-th>
                  <uni-th align="center"  width='150'>计重方式</uni-th>
               </uni-tr>
               <uni-tr v-for="(subItem, index) in item.tmTaskCoalList" :key="index">
                   <uni-td  align="center">
               <view class="btnBox">
                  <!--   -->
                  <!-- <u-button type='primary' text='修改' size='mini' v-if="subItem.isWeight === 0 || subItem.isWeight === 2 "   @click="editOrder(subItem)"></u-button> -->
                  <u-button type='primary' text='拼单' size='mini'  v-if="isPinShow(item)" @click="pinDan(subItem)"></u-button>
                  </view></uni-td>
                  <uni-td align="left">
                     <view>{{ subItem.productName  +  ( subItem.productGrade  ? '-' + subItem.productGrade :'')   }}</view></uni-td>
               <!-- <uni-td>
                  <view>{{ subItem.bunkerName }}</view>
               </uni-td>
               <uni-td>
                  <view class="name" v-if="subItem.skin">{{ Number(subItem.skin).toFixed(2) || ''  }}</view>
               </uni-td>
               <uni-td>
                  <view class="name" v-if="subItem.hair"> {{  Number(subItem.hair).toFixed(2) || ''  }}</view>
               </uni-td>
                  <uni-td>
                  <view class="name" v-if="(subItem.clean || (subItem.clean && subItem.clean === 0))">{{ Number(subItem.clean).toFixed(2) || ''}}</view>
               </uni-td>
               <uni-td>
                  <view class="name">{{ subItem.productQuantity }}</view>
               </uni-td> -->
               <uni-td align="right">
                  <view class="name">{{ subItem.productQuantity }}</view>
               </uni-td>
               <uni-td align="right">
                  <view class="name">{{ subItem.planMeasure }}</view>
               </uni-td>
               <uni-td align="right">
                  <u-tag :text="'计数'" plain v-if="subItem.isWeight==0"></u-tag>
                     <u-tag  :text="'称重'"  plain v-else-if="subItem.isWeight==1"></u-tag>
                     <u-tag :text="'称重计数'"  plain v-else-if="subItem.isWeight==2"></u-tag>
                     <u-tag v-else></u-tag>
               </uni-td>
            <!--     <uni-td align="center">
               <view>{{ subItem.bunkerName }}</view></uni-td>  -->
                 <!-- <uni-td align="center">
               <view  class="name">{{ subItem.statusView }}</view></uni-td> -->
            </uni-tr>
            </uni-table>
       </view>
               </view>
                  <u-empty mode="data"
                     icon="http://cdn.uviewui.com/uview/empty/data.png"
                     text="暂无数据"
                     textSize="30"
                     iconSize="1000"
                     v-if="detailData.length===0"></u-empty>
                </u-collapse-item>
         </u-collapse>
      </view>
      <u-action-sheet :actions="firstClassActionsList"
         :show="firstClassShow"
         cancelText='取消'
         :closeOnClickOverlay='true'
         @close='firstClassClose'
         @select="firstClassSelectClick"></u-action-sheet>
      <!-- 煤仓 -->
         <u-modal :show="enterZx"
            :title="'确认装卸'"
            @close="closeModal"
            :width='740'
            @cancel="cancelModal"
            @confirm="confirmModal"
            :closeOnClickOverlay="true"
            :showCancelButton="true">
            <view class="slot-content">
               <view v-if="isNumOk || isClean||isFlagNum || blend">
                  <view>产品名称:{{activeObj.productName}}</view>
                  <view>仓库:{{activeObj.bunkerName}}</view>
                  <view v-if="activeObj.isWeight === 1 || activeObj.isWeight === 2">
                  <view v-if="activeObj.skin">皮重:{{activeObj.skin.toFixed(2) || ''}}</view>
                  <view v-if="activeObj.hair">毛重:{{activeObj.hair.toFixed(2) || ''}}</view>
                  </view>
                  <view v-if="activeObj.isContainerNum"><span>集装箱号: </span>
                        <u--input v-model="activeObj.containerNumber"
                        clearable
                        readonly
                        style="border: solid 1px #ccc;"
                        placeholder="输入集装箱号"
                        prefixIconStyle="color: #909399"></u--input>
                        <!-- <view><text style="color: red;">请认真核对集装箱号再提交!</text></view> -->
                     </view>
                  <!-- <view v-if="/聚氯乙烯树脂/.test(activeObj.productName)">
                     <view>计划量:{{Number(activeObj.planMeasure)}}</view>
                     <view >实际量:{{ Number(activeObj.productQuantity)}}</view>
                  </view> -->
                  <view class="queren" v-show="isCleanFlag === '1'">
                     <text v-if="isNumOk || isFlagNum">确认量:</text>
                     <text v-if="isClean  || blend">请输入:</text>
                       <u--input
                          type='digit'
                         :disabled="yelvFlag"
                          border="bottom"
                        :placeholder="/聚氯乙烯树脂/.test(activeObj.productName) ? '实际吨数' :  isNumOk ?  '确认数量' : blend ? '确认数量' : '折吨'"
                        v-model="checkNum"
                     >
                     </u--input>
                     <text v-if="isNumOk || isFlagNum || blend"> {{ activeObj.productUnit  ||  '件' }}</text>
                     <text v-if="isClean"> {{activeObj.productUnit  ||  '吨' }}</text>
                     </view>
                     <!-- v-if="activeObj.containerNumber" -->
                     <!-- 是否输入折吨 -->
                      <view style="display:flex;margin-top:20rpx" v-if="isClean">是否需要折吨: <u-radio-group
                        v-model="isCleanFlag"
                         placement="row"
                         @change="isCleanChange"
                         iconPlacement="right"
                         style="justify-content: space-evenly"
                     >
                        <u-radio
                        :key="1"
                        :label="'是'"
                        :name="'1'"
                        shape="circle"
                        iconSize="32"
                        label-size="32"
                        size="40"
                        >
                        </u-radio>
                        <u-radio
                        :key="0"
                        :label="'否'"
                        :name="'0'"
                        shape="circle"
                        iconSize="32"
                        label-size="32"
                        size="40"
                        >
                        </u-radio>
                     </u-radio-group></view>
                     <!-- 聚氯乙烯树脂 并且是大包 -->
                     <view class="pvcBig" v-if="activeObj.productName === '聚氯乙烯树脂' && activeObj.packingType === 5">
                     </view>
                     <view v-if=" activeObj.planMeasure">计划量:{{activeObj.planMeasure}}{{ activeObj.productUnit || '件' }}</view>
               </view>
                     <view style="display:flex;margin-top:20rpx">是否空车出厂: <u-radio-group
                        v-model="isEmptyCar"
                         placement="row"
                         iconPlacement="right"
                         style="justify-content: space-evenly"
                     >
                        <u-radio
                        :key="1"
                        :label="'是'"
                        :name="'1'"
                        shape="circle"
                        iconSize="32"
                        label-size="32"
                        size="40"
                        >
                        </u-radio>
                        <u-radio
                        :key="0"
                        :label="'否'"
                        :name="'0'"
                        shape="circle"
                        iconSize="32"
                        label-size="32"
                        size="40"
                        >
                        </u-radio>
                     </u-radio-group></view>
                     <!-- 折吨原因 -->
                     <view class="queren" style="display: flex;" v-if="isClean && isCleanFlag === '1'">
                        <text>折吨原因:
                           </text><u--input
                           clearable
                           type='text'
                           border="bottom"
                           v-model="discountReason"
                           placeholder="请输入折吨原因"
                           />
                     </view>
                     <view v-if="isClean && isCleanFlag === '1'"><text>折吨照片:</text><u-upload :fileList="fileList1"
                        @afterRead="afterRead"
                        @delete="deletePic"
                        name="1"
                        multiple
                        :maxCount="2"
                        width="250"
                        height="150"
                        :previewFullImage="true"></u-upload></view>
            </view>
         </u-modal>
         <!-- 修改弹窗 -->
         <u-modal :show="enterXg"
            :title="'修改确认信息'"
            @close="closeModaledit"
            :width='740'
            @cancel="cancelModaledit"
            @confirm="confirmModaledit"
            :closeOnClickOverlay="true"
            :showCancelButton="true">
            <view class="slot-content">
               <view>
                  <view>产品名称:{{activeObjedit.productName}}</view>
                  <view class="queren">
                     <text>修改数量</text>:
                       <u--input
                          type='digit'
                          border="bottom"
                        :placeholder="'数量'"
                        v-model="checkNumEdit"
                     >
                     </u--input>
                     </view>
                     <view >原确认数量:{{activeObjedit.productQuantity}}件</view>
               </view>
            </view>
         </u-modal>
         <u-modal :show="showConfim" @confirm="confirmEnter"  :showCancelButton="true"   @cancel="showConfim = false;isOkNum = ''" ref="uModal" :asyncClose="true">
            <view class="modalBody">
               <view style="text-align: center;"> 是否确定一键装卸?</view>
            <view style="display: flex;align-items: center;"><text> 到货:</text>  <u--input
                           style="display: inline-block;width: 200rpx;border-bottom: solid 1px #ccc;"
                          type="digit"
                        :placeholder="'数量'"
                        v-model="isOkNum"
                     >
                     </u--input> 件</view>
            </view>
         </u-modal>
      <!-- 仓库 -->
      <!-- <u-action-sheet :actions="secondClassActionsList"
         :show="secondClassShow"
         cancelText='取消'
@@ -91,28 +526,149 @@
</template>
<script>
   import { mapState, mapMutations, mapGetters } from 'vuex';
   import { BaseUrl } from '@/api/publicInterface.js'
   import combinedTitle from '@/components/combined-title/combined-title.vue';
   export default {
      props: {
         loadUnloadData: {
            type: Object,
            default: {}
         }
      },
      computed:{
         isBtnShow(){
            return function(item){
               if(!item){
                  return false
               }else{
                  if(this.errorStatusList.includes(item.status)){
                     return false
                  }else if (item.productName ==='二氯乙烷(EDC)' && item.checkStatus !== 7){
                     return false;
                  }else{
                     return true;
                  }
               }
            }
         },
         isPinShow(){
            return function(item){
               if(!item){
                  return false
               }else{
                  if(   item.status === 6 || item.isPindan == 1){
                     return false
                  }else{
                     return true;
                  }
               }
            }
         },
         messageText(){
            if(this.messageObj.carNo){
               return `时间:${this.messageObj.now},${this.messageObj.carNo},产品${this.messageObj.productNames}在${this.messageObj.bunkerName}入场了,请及时检查!`
            }else{
               return '暂无消息'
            }
         },
           ...mapGetters(['websocketData'])
      },
      watch: {
         loadUnloadData: {
            handler(v) {
               console.log(v,'vvvvvv')
               this.loadUnloadData = v;
               this.getTodayOrder();
            },
            deep: true,
            immediate: true
         },
         //监听消息
         'websocketData': {
        handler(v) {
          console.log(v, '接受的ws数据');
          if(v) {
            if (v.startsWith('kgTipHead')) {
            console.log('vvvvv',v.slice(11))
               let nowWeighObj = JSON.parse(v.slice(11));
            console.log(nowWeighObj,'nowWeight');
            this.messageObj = nowWeighObj;
            //   this.messageList = JSON.parse(v.slice(5));
            //   this.messageList = {
            //     ...this.messageList,
            //     title: this.messageList.title.slice(0, 8) + '...',
            //     content: removeTags(this.messageList.content).trim().slice(0, 8) + '...'
            //   }
            //   this.messagePushShow = true;
            }
          }
        },
        deep: true,
        immediate: true
         }
      },
      data() {
         return {
            enterXg:false,
            isOkNum:'',
            fileList1:[],
            discountReason:'',
            activeObjedit:{},
            discountJpg:'',
            proType:['散装','液氯瓶装','罐装','PVC25','PVC80','PVC1150','PVc1200'],
            coalStatus: ['领取', '预约', '签到', '入场', '称皮', '称毛', '离场', '入磅房', '出磅房', '入仓库', '出仓库', '放空', '作废', '入场申请',
               '进入场院', '异常审核中', '返回加减吨', '超时', '打印中', '打印中', '填写', '放空确认中', '超最大毛重确认中','补打','入场检查','质检中',
               '离场检查','已打印','装卸','返回加减吨确认中'
            ],
            isCleanFlag:'1',
            checkNumEdit:'',
            showConfim:false,
            remarkContent:'',
            dataForm: {
               firstClass: "",
               secondClass: "",
               orderType: '',
               bunkerId:""
               bunkerIds:""
            },
            historyData:[],
            paramsItem:{},
            messageObj:{
               carNo:'',
            },
            isEmptyCar:null, //是否空车出厂
            checkStatusList:[
               '待取样','已取样','质检中','待复核','复核中','待审定','审定中','已完成'
            ],
            index: '',
            // 煤场操作菜单
            enterZx:false,
            typeText:'', // 确认装卸三种类型
            isNumOk:false, //计件
            isClean:false, // 折吨
            yelvFlag:false,
            isFlagNum:false,// PVCV
            // 场地操作菜单
            firstClassActionsList: [],
            firstClassShow: false,
            // 煤仓操作菜单
            // 仓库操作菜单
            secondClassActionsList: [],
            secondClassShow: false,
            coalList: [],
            checkedCoal: [],
            blend:false,
            checkNum:'',
            activeObj:{},
            userInfo: {},
            detailData:[],
            filedId: "",
            selectedCoal: [],
            orderTypeShow: false,
            pvcWeight:'',
            orderTypeList: [{
                  name: '外销',
                  id: Math.floor(Math.random() * 100) + 1,
@@ -124,17 +680,53 @@
            ],
            isOrderType: '请选择', //磅房类型是否选择了 选择了清空
            cleanIconClick: true, //修改点击清空磅房选择会出现
            errorStatusList:[0,1,6,24,27,26] // 不能点击确认装卸的状态
         };
      },
      methods: {
            limitString(str, limit, suffix = '...') {
                     if (str.length <= limit) return str;
                     return str.slice(0, limit) + suffix;
                  },
            getPVCWeight(){
         },
           handleOpenChange() {
                 // 方法一
      console.log(this.$refs.collapseHeight);
    //   let long = this.$refs.collapseHeight.length;
    //   setTimeout(() => {
    //     for (let i = 0; i < long; i++) {
    //       this.$refs.collapseHeight[i].queryRect();// 计算高度
    //     }
    //   }, 20);
        // 方法二
        this.$nextTick(() => {
        this.$refs.collapseHeight.init()
      });
         },
         //获取已装卸收发单
         getTodayOrder(){
            this.$reqGet('getTodayConfirmedTaskCoalList',{ bunkerIds:this.dataForm.bunkerIds,productIds:uni.getStorageSync('productIds')}).then(res=>{
             if(res.code === 0){
               this.historyData = res.data;
             }else{
                  this.historyData = [];
             }
            })
         },
         getUserInfo() {
            this.$reqGet('getUserEntity').then(res => {
               this.userInfo = res.data;
               this.userInfo.password = null
            })
         },
         // 获取煤场
         // 获取场地
         getDeptIdFiled() {
            uni.showLoading({
               title: "加载中"
@@ -143,22 +735,31 @@
               uni.hideLoading()
               if (res.code === 0) {
                  this.firstClassActionsList = res.data;
                  if(res.data.length === 1){
                     this.dataForm.bunkerId = res.data[0].id;
                     this.dataForm.firstClass = res.data[0].name;
                     setTimeout(()=>{
                        uni.navigateTo({
                     url: `/pages/loadUnload-page/loadUnload-detail/loadUnload-detail?bunkerId=${this.dataForm.bunkerId}`
               })
                     },300)
                  this.firstClassActionsList.unshift({name:'全部',id:res.data.map(item=>item.id).join(',')})
                  if(res.data.length){
                     if(!uni.getStorageSync('bunkerIds')){
                        this.dataForm.firstClass = '全部'
                        this.dataForm.bunkerIds = res.data.map(item=>item.id).join(',')
                         uni.setStorageSync('bunkerIds',res.data.map(item=>item.id).join(','))
                     }else{
                        this.dataForm.bunkerIds = uni.getStorageSync('bunkerIds');
                        uni.setStorageSync('bunkerIds',this.dataForm.bunkerIds)
                     }
                     this.getDetailData();
                     this.getTodayOrder();
                  }
               } else {
                  this.$u.toast('加载失败')
               }
            }).then(() => {
               this.getUserInfo()
            })
         },
         deletePic(event) {
            this.changeisUploadimg(true);
            this[`fileList${event.name}`].splice(event.index, 1);
         },
         firstClassSelect() {
            this.firstClassShow = true
@@ -166,64 +767,381 @@
         firstClassClose() {
            this.firstClassShow = false
         },
         getDetailData(){
                 uni.showLoading({
                    title:'加载中'
                })
               this.$reqGet('getTaskCoalListByBunkerId', { bunkerIds:this.dataForm.bunkerIds, productIds:uni.getStorageSync('productIds')}).then(res => {
               uni.hideLoading();
               if (res.code === 0) {
                  this.detailData = res.data.map(item=>{
                     item.tmTaskCoalList.map(el=>{
                      el.flag = el.isPretendDischar ? false : true
                     return el
                     })
                   return item;
                  });
                  this.handleOpenChange();
                  console.log(this.detailData,'detailData')
               }else if(res.code === 1){
                  this.detailData = [];
                  this.$u.toast(res.msg ? res.msg : '操作失败!!')
               }
            }).catch(err=>{
               this.detailData = [];
               this.$u.toast(res.msg ? res.msg : '操作失败!!')
            })
         },
                  viewDetail(value){
            //查看收发单详情
               uni.navigateTo({
               url: `/subPages/fayunPlanDetails/fayunPlanMore/fayunPlanMore?id=${value.id}&orderType=${value.orderType}`,
               })
                  },
         firstClassSelectClick(val) {
            this.dataForm.firstClass = val.name;
            this.dataForm.bunkerId= val.id;
            this.dataForm.bunkerIds= val.id;
            uni.removeStorageSync('bunkerIds')
            uni.setStorageSync('bunkerIds', val.id);
            this.getDetailData();
            this.filedId = val.id
         },
         // 获取煤仓
         // getFiledIdCoalBunker(filedId) {
         //    this.$reqGet('getFiledIdCoalBunker', { filedId, }).then(res => {
         //       this.secondClassActionsList = res.data
         // formHandle() {
         //    if (!this.dataForm.firstClass) return this.$u.toast('请选择场地或者仓库');
         //    this.$nextTick(()=>{
          //       uni.navigateTo({
         //          url: `/pages/loadUnload-page/loadUnload-detail/loadUnload-detail?bunkerId=${this.dataForm.bunkerId}`
         //       })
         //    })
         // },
         //煤仓菜单
         // secondClassSelect() {
         //    this.secondClassShow = true
         // },
         // secondClassClose() {
         //    this.secondClassShow = false
         // },
         // secondClassSelectClick(val) {
         //    this.dataForm.secondClass = val.name
         //    this.coalList = this.secondClassActionsList.find(v => v.id === val.id).coalNames.split(',').map(v => {
         //       return {
         //          name: v,
         //          id: Math.floor(Math.random() * 100) + 1,
         //          checked: false
         //       }
         //    })
         // },
         // orderTypeSelect() {
         //    this.orderTypeShow = true
         // },
         // orderTypeClose() {
         //    this.orderTypeShow = false
         // },
         // orderTypeSelectClick(val) {
         //    this.orderTypeShow = false
         //    this.dataForm.orderType = val.name
         //    this.isOrderType = ''
         // },
         // cleanOrderType() {
         //    this.dataForm.orderType = null
         //    this.isOrderType = '请选择'
         //    this.orderTypeShow = false
         // },
         // checkboxChange(e) {
         //    this.selectedCoal = e
         // },
         formHandle() {
            if (!this.dataForm.firstClass) return this.$u.toast('请选择煤场或者煤仓');
            this.$nextTick(()=>{
                uni.navigateTo({
                  url: `/pages/loadUnload-page/loadUnload-detail/loadUnload-detail?bunkerId=${this.dataForm.bunkerId}`
               })
            })
            
         // },
         change(){
         },
         close(){
         },
         toViewPindan(item){
            uni.navigateTo({
               url: `/subPages/pvcSplicePage/view?item=${JSON.stringify(item) }`
            });
         },
         uploadFilePromise(url, num) {
            return new Promise((resolve, reject) => {
               let a = uni.uploadFile({
                  url: '/admin/sys-file/uploadUnToken',
                  filePath: url,
                  name: 'file',
                  success: res => {
                     if (num == 1) {
                        this.discountJpg = JSON.parse(res.data)
                           .data.url;
                        resolve(`${BaseUrl}${JSON.parse(res.data).data.url}`);
                     }
                  }
               });
            });
         },
         async afterRead(event) {
            // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
            let lists = [].concat(event.file);
            let fileListLen = this[`fileList${event.name}`].length;
            lists.map(item => {
               this[`fileList${event.name}`].push({
                  ...item,
                  status: 'uploading',
                  message: '上传中'
               });
            });
            for (let i = 0; i < lists.length; i++) {
               const result = await this.uploadFilePromise(lists[i].url, event.name);
               let item = this[`fileList${event.name}`][fileListLen];
               this[`fileList${event.name}`].splice(
                  fileListLen,
                  1,
                  Object.assign(item, {
                     status: 'success',
                     message: '上传成功',
                     url: result
                  })
               );
               fileListLen++;
            }
         },
         confirmModaledit(){
            if(!this.checkNumEdit){
               this.$u.toast('请输入要修改后的数量')
               this.enterXg = false;
            }else{
               this.$reqPost('confirmLoadAndUnloadModify',{
               id: this.activeObjedit.id,
               productQuantity:this.checkNumEdit,
            },'json').then((res) => {
               this.$u.toast('操作成功')
               this.enterXg = false;
               this.getDetailData();
               this.getTodayOrder();
            })
            }
            console.log('123')
         },
         isCleanChange(val){
            console.log(val,'触发')
            if(val === '0'){
               this.checkNum = '';
            }
         },
         editOrder(item){
            console.log(item,'item')
            this.activeObjedit = item;
            if(item.isWeight === 1){
               this.$u.toast('称重产品不支持修改!')
            }else{
               //弹窗支持修改
               this.enterXg = true;
            }
         },
         open(){},
         allOkBtn(item){
            //点击一键确认
             this.paramsItem = item;
            this.showConfim = true;
         },
         enterOk(parintItem,item){
            if(parintItem.isPindan === 1 && this.$store.state.pvcIdList.includes( item.productId) ){
               uni.navigateTo({
               url: `/subPages/pvcSplicePage/kuguan?id=${parintItem.id}&item=${JSON.stringify(parintItem)}`
            });
            }else{
               this.yelvFlag = false;
            console.log(parintItem,'priintItem')
            // uni.request({
            //    url: `${BaseUrl}/admin/dict/type/tray_weight`,
            //    method: 'GET',
            //    header: {
            //    Authorization: 'Bearer' + ' ' + uni.getStorageSync('token'),
            //    clientToc: 'Y',
            //    'CLIENT_TOC': 'Y',
            // },
            //    success: (res) => {
            //       this.pvcWeight = res.data.data.find(item=>item.label === '5') ? Number(res.data.data.find(item=>item.label == '5').value) : '';
            //    }
            // })
         //  计件:   0 聚氯乙烯树脂 type
         //  折吨:
            this.fileList1 = [];
            this.activeObj = item;
            if(item.isWeight === 1){
               this.isNumOk = false;
               this.isClean = true;
               this.blend = false;
               this.isCleanFlag = '0';
                this.isFlagNum = false;
            } else if(item.isWeight ===2 ){
               this.blend = true;
               this.isNumOk = false;
               this.isClean = false;
               this.checkNum = item.productQuantity;
               // this.isCleanFlag = '0';
                this.isFlagNum = false;
            }
            else {
               this.isNumOk = true;
               this.isCleanFlag = '1';
               this.blend = false;
               this.isClean = false;
               this.checkNum = item.productQuantity;
                this.isFlagNum = false;
            }
            if( (parintItem.orderType === '外购' ||parintItem.orderType === '外购退' ) && item.isWeight === 0){
               this.isNumOk = true;
               this.isClean = false;
               this.checkNum = item.productQuantity;
               this.blend = false;
               this.isFlagNum = false;
               this.isCleanFlag = '1';
               //回显计数量
                this.checkNum  = item.productQuantity ? item.productQuantity : '';
            }else if( parintItem.orderType ==='外购' &&  item.isWeight === 1){
               this.isClean = true;
               this.isCleanFlag = '0';
               this.isNumOk = false;
               this.blend = false;
                 this.isFlagNum = false;
            }
            //聚氯乙烯树脂
             if(parintItem.orderType ==='外销' && (/聚氯乙烯树脂/.test(item.productName) || item.productName === 'PVC')  && (item.packingType === 3 || item.packingType === 4)){
               this.isNumOk = false;
               this.isClean  = false;
               this.isCleanFlag = '1';
               this.blend = false;
               this.isFlagNum = true;;
               this.checkNum = item.productQuantity;
            }
            //瓶装液氯条件
            //EDC 质检完成方可确认
            if(item.packingType === 1){
               this.isNumOk = true;
               this.isClean = false;
               // this.yelvFlag = true;
               this.checkNum = item.productQuantity;
               this.blend = false;
               this.isCleanFlag = '1';
                this.isFlagNum = false;
            }
            //
            //pvc大包自动计算折吨
            if(parintItem.orderType === '外购'){
               this.isEmptyCar = '1';
            }else if(parintItem.orderType === '外销' || parintItem.orderType === '外购退'){
               this.isEmptyCar = '0';
            }
            if((/聚氯乙烯树脂/.test(item.productName) || item.productName === 'PVC')  && item.packingType === 5){
               this.isNumOk = false;
               this.isClean = false;
               this.blend = false;
               this.checkNum = item.productQuantity;
                this.isFlagNum = true;
                this.isCleanFlag = '1';
            }
            //外销不用 输入折吨
            // if(parintItem.orderType ==='外销'){
            //    this.isClean  = false;
            //    this.blend = false;
            // }
         this.enterZx = true;
            }
         },
         closeModal(){
            this.enterZx = false;
            this.checkNum = '';
            this.isEmptyCar = null;
         },
         closeModaledit(){
            this.enterXg = false;
         },
         cancelModal(){
            this.enterZx = false;
            this.checkNum = '';
            this.discountReason = ''; //情况备注
            this.isEmptyCar = null;
         },
         cancelModaledit(){
            this.enterXg = false;
         },
         confirmModal(){
                uni.showLoading({
                    title:'加载中'
                });
            if(this.activeObj.productName ==='二氯乙烷(EDC)' && this.activeObj.checkStatus !== 7){
               this.enterZx = false;
               this.$u.toast(`请检查当前二氯乙烷(EDC)DC订单质检状态后在确认装卸!`);
            }else if( this.isEmptyCar === null){
               this.$u.toast(`请检查${this.isNumOk ? '计件数量' :'折吨'},以及是否空车出厂项!`);
               //装卸 为 2 ,但是必须得称重
            }
            else{
               this.enterZx = false;
               this.$reqPost('confirmLoadAndUnload',{
               id: this.activeObj.id,
               productQuantity:(this.isNumOk || this.blend) ? this.checkNum : '',
               discount:this.isClean ? this.checkNum : null,
               isEmptyCar:this.isEmptyCar,
               isPretendDischar:this.activeObj.isPretendDischar,
               realityMeasure:this.isFlagNum ? this.checkNum : null,
               productId:this.isFlagNum ? this.activeObj.productId : null,
               discountJpg:this.discountJpg,
               containerNumber:this.activeObj.containerNumber ? this.activeObj.containerNumber : null,
               discountReason:this.discountReason,
             },'json').then(res=>{
               uni.hideLoading();
               console.log(res,'rez')
               this.checkNum = '';
               if(res.code === 1){
                  console.log('触发')
                  this.$u.toast(res.msg || '失败');
                  uni.hideLoading();
               }else{
                 this.$u.toast('操作成功');
                 setTimeout(() => {
                  this.getDetailData();
               }, 500);
               }
            }).catch((err) => {
                this.$u.toast(err.msg || '失败');
            }).finally(() => {
            uni.hideLoading();
            })
            }
         },
         //判断是否是 三种特殊类型对应弹窗
         judgeTypeFun(name){
         },
         //确认
         confirmEnter(){
            this.$reqPost('oneClickLoading',{tmId:this.paramsItem.id,kgNum:this.isOkNum},'params').then((res) => {
               if(res.code == 0){
               console.log(res,'res')
               this.$u.toast('一键确认成功')
               this.showConfim = false;
               setTimeout(() => {
                  this.getDetailData();
               }, 500);
               }else{
                  this.showConfim = false;
                  this.$u.toast(res.msg ? res.msg : '一键确认失败');
               }
            }).catch(err=>{
               this.$u.toast(err ? err : '操作异常')
            })
         },
         //查看最近一次的原盐钙镁
         todoDetail(){
            console.log()
            uni.navigateTo({
                  url: `/subPages/checkTestDetails/index`
               })
         },
         pinDan(item){
            console.log('pindan')
            uni.navigateTo({
                  url: `/subPages/splicingOrders/index?taskCoalId=${item.id}&orderType=${item.orderType}`
               })
         }
      },
      onShow(){
         console.log('触发ONShow')
         uni.showLoading({
               title: "加载中"
            })
@@ -231,29 +1149,164 @@
               uni.hideLoading()
               if (res.code === 0) {
                  this.firstClassActionsList = res.data;
                  if(res.data.length === 1){
                     this.dataForm.bunkerId = res.data[0].id;
                     this.dataForm.firstClass = res.data[0].name;
               
                  }
               } else {
                  this.$u.toast('加载失败')
               }
            }).then(() => {
               this.getUserInfo()
            })
      }
            });
      },
   }
</script>
<style lang="scss"
   scoped>
   .modalBody{
      display: flex;
      flex-direction: column;
      justify-content: center;
   }
::-webkit-scrollbar{
        display: none;
   }
   .table{
   width: 100%;
  /deep/ .uni-table{
   min-width: 0!important;
   margin-left: 20rpx;
   width: auto;
  }
}
.rightBtn{
   position: absolute;
   right: 100rpx;
   bottom: 5rpx;
}
.notice-bar{
      margin-left: vww(10);
      margin-bottom: 20rpx;
      margin-top: 20rpx;
         width: 98%;
         .u-notice-bar{
            border-radius: 20rpx;
               margin-top: 20rpx;
               height: 40rpx;
         }
}
      // 自主配送
         .self-deliver {
            position: relative;
            text-indent: 20rpx;
            top: vww(10);
            width: 95%;
            height: vww(40);
            margin: vww(13) 10rpx;
            margin-left: 20rpx;
            padding: 0 vww(8);
            background: #ffffff;
            box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
            border-radius: 20rpx;
            @include flex;
            align-items: center;
            justify-content: space-between;
            /deep/.u-button {
               width: 100%;
               height: 28px !important;
               line-height: 40px;
               padding: 0 12px;
               text-indent: 0!important;
               font-size: 28rpx;
               font-weight: 300;
               color: #ffffff;
               background: #497bfb !important;
               letter-spacing: 4rpx;
               border-radius: 37rpx 37rpx 37rpx 37rpx !important;
               box-shadow: 2rpx 3rpx 13rpx 0rpx rgba(43, 98, 239, 0.5), 0rpx 0rpx 9rpx 0rpx rgba(247, 250, 253, 0.29);
            }
         }
   .queren{
      display: flex;
      justify-content: space-between;
      /deep/ .u-input {
         border-bottom:  1px solid #ccc;
      }
   }
   .name{
      width: 50rpx;
   }
   .table{
      width: 94%;
      margin-left: 20rpx;
      position: relative;
      margin-top: 30rpx;
        overflow-x: auto;
      /deep/   .uni-table-th{
         font-size: 12px;
        }
      /deep/   .uni-table-td {
         font-size: 12px;
        }
   /deep/ .uni-table{
         min-width: 0rpx!important;
         // position: sticky !important;;
      }
   /deep/    .uni-table-body-wrapper {
  position: relative;
}
 /deep/ .uni-table-body {
  display: flex;
}
.fixed {
position: absolute;
right: -35px;
background: #fff;
}
   }
   .btnBox{
      min-width: 100rpx;
      // display: flex;
      justify-content: space-around;
      :v-deep   .u-button__text{
         font-size: 12px!important;
      }
       text{
         color: #035cfb;
      }
   }
   .main {
      width: 94%;
      margin: 10px;
      // margin-top: vww(100);
      position: relative;
      top: vww(-120);
      top: vww(-200);
      .top-tag{
             width: 60%;
            margin-left: 55%;
            height: 100rpx;
            margin-left: 50%;
            display: flex;
            /* margin-top: 40rpx; */
            color: #fff;
            align-items: center;
               }
               .div-box{
                  width: 100%;
                  display: flex;
                   margin-left: 10rpx;
                  flex-direction: column;
                  /deep/ .u-collapse{
                     background: #fff;
                  }
               }
   }
   .slide-fade-enter-active {
@@ -261,11 +1314,125 @@
   }
   .coal-name {
      width: 95%;
      width: 75%;
      min-height: vww(100);
      .u-checkbox-group {
         .u-checkbox {}
      }
   }
   .box{
      display: flex;
      flex-direction: column;
      width: 100%;
      .box-top{
         width: 100%;
         height: 100rpx;
         display: inline-block;
         display: flex;
         justify-content: space-between;
         align-items: center;
      }
   }
            .collItem{
               margin-top: 30rpx;
               /deep/ .content{
                  background: none!important;
               }
            }
            .history-information {
               position: relative;
         margin-bottom:30rpx;
         margin-top: 10rpx;
         background: #ffffff;
         border-radius: 20rpx;
         @include flex flex-direction: column;
         padding: 10px;
         align-items: flex-start;
         justify-content: space-evenly;
         box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
         .first {
            width: 96%;
            height: 34rpx;
            font-size: 32rpx;
            font-weight: 300;
            color: #303030;
            @include flex;
            margin: vww(10) vww(10) 0;
         }
         .second {
            width: 100%;
            height: 31rpx;
            font-size: 30rpx;
            font-weight: 300;
            color: #515151;
            margin: vww(10) vww(10) 0;
            @include flex;
            justify-content: flex-start;
            .coal-name {
               min-width: vww(20);
               height: vww(20);
               margin-right: vww(21);
            }
            .order-type {
               height: 45rpx;
               color: #035cfb;
               border: 2px solid #035cfb;
               border-radius: 4rpx;
               padding: vww(2) vww(4);
               text-align: center;
            }
         }
         .third {
            width: 96%;
            height:  auto;
            font-size: 30rpx;
            font-weight: 300;
            color: #515151;
            margin: vww(10) vww(10) 0;
            @include flex;
            flex-direction: column;
            .third-line {
               @include flex;
               align-items: center;;
               &_text {
                  color: #919090;
               }
               &_num {
                  color: #035cfb;
               }
            }
         }
         .fourth {
            width: 100%;
            height: 31rpx;
            font-size: 30rpx;
            font-weight: 300;
            color: #515151;
            position: relative;
            margin: vww(10) vww(10) 0;
            @include flex;
            .fourth-icon {
               width: vww(13);
               height: vww(13);
               margin-right: vww(14);
            }
            .senddate {
               flex: 1;
            }
         }
      }
</style>