222
schangxiang@126.com
2024-12-23 ac5f3574affb06666b9f3a6b76a961ffa69802e4
LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue
@@ -1,524 +1,509 @@
<template>
   <view class="overflow" style="padding-bottom: 150rpx">
      <cu-custom bgColor="bg-white" :isBack="true">
         <block slot="backText">
         </block>
         <block slot="content">物料解绑</block>
      </cu-custom>
      <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef">
         <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;">
            <u-col span="12">
               <u-form-item label="容器编号:" prop="containerCode" required class="uFormItem">
                  <u-input v-model.trim="warehouse.containerCode" @confirm="getContainerData(1)"
                     :disabled="kwbhAllowed" placeholder="请录入或扫码" class="width" :focus="curFoucus">
                  </u-input>
               </u-form-item>
            </u-col>
         </u-row>
         <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"
            v-if="warehouse.containerCode">
            <u-col span="12">
               <u-form-item label="物料跟踪码:" class="uFormItem">
                  <u-input v-model="warehouse.snCode" ref="materialRef" placeholder="请扫码录入"
                     @focus="warehouse.snCode = ''" @confirm="getContainerData"
                     style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx">
                  </u-input>
               </u-form-item>
            </u-col>
         </u-row>
      </u-form>
      <!-- 列表 -->
      <view class="margin_top10rpx">
         <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex"
            :options="options" @click="longpress" @open="open" @close="close" class="margin_bottom10rpx">
            <view class="item u-border-bottom">
               <!-- 此层wrap在此为必写的,否则可能会出现标题定位错误 -->
               <view class="title-wrap">
                  <!--  -->
                  <view :class="item.checked ? 'bg_item' : ''"
                     class="fontSize32rpx width margin_auto background_fff padding10  relative box_sizing transition">
                     <u-row>
                        <u-col span="12" class="flex align-center">
                           <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox>
                           <view class="flex justify-center align-center"
                              style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;">
                              {{ eindex + 1 }}
                           </view>
                           <text class="color_f18202 padding_left10rpx">
                           {{ item.materialCode }}({{ item.materialName }})
                        </text>
                        </u-col>
                     </u-row>
                  <u-row>
                     <u-col span="8">
                        <text class="color_80 padding_left25rpx">
                           质检状态:{{ item.qcStatusName }}
                        </text>
                     </u-col>
                     <u-col span="4">
                        <text class="color_80">
                           批次:{{ item.batch }}
                        </text>
                     </u-col>
                  </u-row>
                  <u-row>
                     <u-col span="8">
                        <text class="color_80 padding_left25rpx">
                        </text>
                     </u-col>
                     <u-col span="4">
                        <text class="color_f18202">
                           数量:{{ item.quantity }}
                        </text>
                     </u-col>
                  </u-row>
                  </view>
                  </view>
            </view>
         </u-swipe-action>
      </view>
      <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" />
      <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom">
         <!-- <view class="pop "> -->
         <h2 class="text_align_center padding_bottom18 padding15">物料信息</h2>
         <view class="line flex justify-between">
            <text class="text-gray">物料编号</text>
            <text>{{ this.materlist.materialCode }}</text>
         </view>
         <view class="line flex justify-between">
            <text class="text-gray">物料名称</text>
            <text>{{ this.materlist.materialName }}</text>
         </view>
         <view class="line flex justify-between">
            <text class="text-gray">物料小类</text>
            <text>{{ this.materlist.materialTypeName }}</text>
         </view>
         <view class="line flex justify-between">
            <text class="text-gray">批次</text>
            <text>{{ this.materlist.batchNo }}</text>
         </view>
         <view class="line flex justify-between">
            <text class="text-gray">物料规格</text>
            <text>{{ this.materlist.specificationModel }}</text>
         </view>
         <view class="line flex justify-between">
            <text class="text-gray">数量</text>
            <text>{{ this.materlist.unBindQuantity }}</text>
         </view>
         <!-- </view> -->
         <view class="margin_top140rpx">
            <button-modal :subShow='true' garmenTitle='打印' @submit='init' @reset='rest' />
         </view>
      </u-popup>
      <button-modal :empTytowerShow='true' cleaningTitle="重置" garmenTitle='物料解绑' @submit='submit' @reset='back' />
  <view class="overflow" style="padding-bottom: 150rpx">
    <cu-custom bgColor="bg-white" :isBack="true">
      <block slot="backText"> </block>
      <block slot="content">整包查看</block>
    </cu-custom>
    <u-form
      labelPosition="left"
      label-width="250rpx"
      :model="warehouse"
      ref="warehouseRef"
    >
      <u-row
        class="border_bottom margin_top10rpx padding_left25rpx"
        style="background-color: #fff"
      >
        <u-col span="12">
          <u-form-item
            label="包装号/部件条码:"
            prop="upi"
            required
            class="uFormItem"
          >
            <u-input
              v-model.trim="warehouse.upi"
              @focus="warehouse.upi = ''"
              @confirm="getContainerData(1)"
              placeholder="请录入或扫码"
              class="width"
              :focus="curFoucus"
            >
            </u-input>
          </u-form-item>
        </u-col>
      </u-row>
      <!-- <u-row
        class="border_bottom margin_top10rpx padding_left25rpx"
        style="background-color: #fff"
      >
        <u-col span="12">
          <u-form-item label=":" class="uFormItem">
            <u-input
              v-model="warehouse.upi"
              ref="materialRef"
              placeholder="请扫码录入"
              @focus="warehouse.upi = ''"
              @confirm="getContainerData"
              style="font-weight: bolder; margin-left: 15rpx"
              class="width padding_left25rpx"
            >
            </u-input>
          </u-form-item>
        </u-col>
      </u-row> -->
    </u-form>
    <!-- 列表 -->
    <view class="margin_top10rpx">
      <u-swipe-action
        :show="item.show"
        :index="eindex"
        v-for="(item, eindex) in singlist"
        :key="eindex"
        :options="options"
        @click="longpress"
        @open="open"
        @close="close"
        class="margin_bottom10rpx"
      >
        <view class="item u-border-bottom">
          <!-- 此层wrap在此为必写的,否则可能会出现标题定位错误 -->
          <view class="title-wrap">
            <view
              :class="item.checked ? 'bg_item' : ''"
              class="fontSize32rpx width margin_auto background_fff padding10 relative box_sizing transition"
            >
              <u-row>
                <u-col span="12" class="flex align-center">
                  <!-- <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox> -->
                  <view
                    class="flex justify-center align-center"
                    style="
                      background-color: #f18202;
                      color: #fff;
                      border-radius: 50vh;
                      width: 40rpx;
                      height: 40rpx;
                    "
                  >
                    {{ eindex + 1 }}
                  </view>
                  <text class="color_f18202 padding_left10rpx">
                    {{ item.upi }}
                  </text>
                </u-col>
              </u-row>
           <u-row>
             <u-col span="12">
               <text class="color_80 padding_left25rpx">
                 <text class="color_80"> 次序:{{ item.shelf }} </text>
               </text>
             </u-col>
           </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    部件名称: {{ item.detailName }}
                  </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    位置:{{ getAreaCodeEnumName(item.areaCode) }}
                  </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    材料:{{ item.info18 }}
                  </text>
                </u-col>
              </u-row>
   </view>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    <text class="color_80"> 尺寸:{{ item.info16 }} </text>
                  </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    板件状态:{{ getEnumName(item.upiStatus) }}
                  </text>
                </u-col>
              </u-row>
            <u-row>
                        <u-col span="12">
                          <text class="color_80 padding_left25rpx">
                            标记:{{ getUpiFlagEnumName(item.upiFlag) }}
                          </text>
                        </u-col>
                      </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    <text class="color_80"> 生产单号:{{ item.info5 }} </text>
                  </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    <text class="color_80">
                      包装编号:{{ item.packageCode }}</text
                    >
                  </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="12">
                  <text class="color_80 padding_left25rpx">
                    <text class="color_80"> 批次号:{{ item.planNo }}</text>
                  </text>
                </u-col>
              </u-row>
            </view>
          </view>
        </view>
      </u-swipe-action>
    </view>
    <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" />
    <u-popup
      v-model="detailshow"
      border-radius="14"
      @close="detailshow = false"
      mode="bottom"
    >
      <h2 class="text_align_center padding_bottom18 padding15">信息</h2>
      <div style="height: 400px; overflow-y: auto; padding: 0 15rpx">
        <view class="line flex justify-between">
          <text class="text-gray">订单号</text>
          <text>{{ materlist.orderId }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">长</text>
          <text>{{ materlist.length }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">宽</text>
          <text>{{ materlist.width }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">厚</text>
          <text>{{ materlist.thk }}</text>
        </view>
        <!-- <view class="line flex justify-between">
          <text class="text-gray">行号</text>
          <text>{{ materlist.lineNumber }}</text>
        </view> -->
        <!-- <view class="line flex justify-between">
        <text class="text-gray">部件纹理</text>
        <text>{{ materlist.Matgrid }}</text>
      </view> -->
        <!-- <view class="line flex justify-between">
        <text class="text-gray">打孔设备编号</text>
        <text>{{ materlist.DRNum }}</text>
      </view> -->
        <!-- <view class="line flex justify-between">
          <text class="text-gray">锯切图号</text>
          <text>{{ materlist.materialIndex }}</text>
        </view> -->
        <view class="line flex justify-between">
          <text class="text-gray">包装X坐标</text>
          <text>{{ materlist.machineXCenter }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装Y坐标</text>
          <text>{{ materlist.machineYCenter }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装Z坐标</text>
          <text>{{ materlist.machineZCenter }}</text>
        </view>
        <!-- <view class="line flex justify-between">
          <text class="text-gray">转向角度</text>
          <text>{{ materlist.rotation }}</text>
        </view> -->
        <view class="line flex justify-between">
          <text class="text-gray">层数</text>
          <text>{{ materlist.sequence }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">销售合同单号</text>
          <text>{{ materlist.info4 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">生产单号</text>
          <text>{{ materlist.info5 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">第几包</text>
          <text>{{ materlist.info6 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">经销店名称</text>
          <text>{{ materlist.info7 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">产品名称</text>
          <text>{{ materlist.info8 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装编码</text>
          <text>{{ materlist.info9 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">客户名称</text>
          <text>{{ materlist.info10 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">自提或发货</text>
          <text>{{ materlist.info11 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装部件总数量</text>
          <text>{{ materlist.info12 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装面积</text>
          <text>{{ materlist.info13 }}</text>
        </view>
        <!-- <view class="line flex justify-between">
          <text class="text-gray">部件名称</text>
          <text>{{ materlist.info14 }}</text>
        </view> -->
        <view class="line flex justify-between">
          <text class="text-gray">部件数量</text>
          <text>{{ materlist.info15 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">部件尺寸</text>
          <text>{{ materlist.info16 }}</text>
        </view>
        <view class="line flex justify-between">
          <text class="text-gray">包装机械手旋转</text>
          <text>{{ materlist.info17 }}</text>
        </view>
      </div>
    </u-popup>
    <button-modal
      :subShow="true"
      garmenTitle="重置"
     subTitle="确认NG"
      @submit="rest"
      @reset="do_UnlineForNGPackage"
    />
  </view>
</template>
<script>
import { getContainerMaterial, unbindOrder } from '@/api/putIn/untie.js'
import BluePrint from '@/pages/print/bluePrint.js'
import ButtonModal from '../../components/buttonModal.vue'
import ModalCode from '../../components/ModalCode.vue'
import { getAttrValue } from '@/utils/tool.js'
import { getContainDetail, onlyUpdateDutyCycle, getBhbMaterialList } from '../../api/putIn/artificial.js'
import { getContainerMaterial, unbindOrder } from "@/api/putIn/untie.js";
import BluePrint from "@/pages/print/bluePrint.js";
import ButtonModal from "../../components/buttonModal.vue";
import ModalCode from "../../components/ModalCode.vue";
import { getAttrValue } from "@/utils/tool.js";
import {
  getContainDetail,
  onlyUpdateDutyCycle,
  getBhbMaterialList,
  getenumDataList,
  UnlineForNGPackage
} from "../../api/putIn/artificial.js";
export default {
   data() {
      return {
         operator: '',
         warehouse: {
            containerCode: '',
            materialCode: '',
            dutyCycle: '',
            gridNumber: 1,
            useNumber: 0,
            exitNumber: 0
         },
         singlist: [
            // {}
         ], //详情列表
         ordersId: 0, //当前容器绑定的上架单
         rescode: 0,
         resmessage: '',
         options: [{
            text: '打印',
            style: {
               backgroundColor: '#fc9f35'
            }
         }
         ],
         detailshow: false,
         materlist: {},
         curFoucus: true,
         timer: null,
         timerSm: null,
         detailableZb: false,
         detailable: false,
         gridFocus: false,
         gridable: true,
         kwbhAllowed: false
      }
  data() {
    return {
      operator: "",
      warehouse: {
        upi: "",
        materialCode: "",
        dutyCycle: "",
        gridNumber: 1,
        useNumber: 0,
        exitNumber: 0,
      },
      singlist: [
        // {}
      ], //详情列表
      ordersId: 0, //当前容器绑定的上架单
      rescode: 0,
      resmessage: "",
      options: [
        {
          text: "详情",
          style: {
            backgroundColor: "#fc9f35",
          },
        },
      ],
      detailshow: false,
      materlist: {},
      curFoucus: true,
      timer: null,
      timerSm: null,
      detailableZb: false,
      detailable: false,
      gridFocus: false,
      gridable: true,
      kwbhAllowed: false,
      enumList: [],
      areaCodeEnum: [],
     upiFlagEnum: [],
    };
  },
  components: {
    ButtonModal,
    ModalCode,
  },
  created() {
    getenumDataList({
      EnumName: "UpiStatusEnum",
    }).then((res) => {
      this.enumList = res.result || [];
    });
   },
   components: {
      ButtonModal,
      ModalCode
   },
   onLoad() {
      this.operator = JSON.parse(uni.getStorageSync('userInfo')).name
   },
   watch: {
      containerCode(val) {
         if (!val) {
            this.detailable = false;
            this.detailableZb = false;
            this.warehouse.exitNumber = 0
         }
      }
   },
   methods: {
      // 如果打开一个的时候,不需要关闭其他,则无需实现本方法
      open(index) {
         // 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
         // 原本为'false',再次设置为'false'会无效
         this.singlist[index].show = true;
         this.singlist.map((val, idx) => {
            if (index != idx) this.singlist[idx].show = false;
         })
      },
      close(index) {
         this.singlist[index].show = false;
      },
      //物料详情
      longpress(index, eindex) {
         this.materlist = this.singlist[index]
         this.detailshow = true
      },
      //标签重新打印
      init() {
         const arr = ['materialCode', 'unBindQuantity'];
         const arrzw = ['物料编号', '本次解绑数量']
         let isAllow = ''
         Object.keys(this.materlist).forEach(item => {
            if (arr.includes(item)) {
               if (!this.materlist[item]) {
                  isAllow = arr.indexOf(item)
                  // this.rescode = 400
                  // this.resmessage = `${arrzw[isAllow]}为空,不能继续打印`
                  // this.resmessage = `${item}为空,不能继续打印`
                  // this.$refs.resmodal.show = true
                  return
               }
            }
         })
         if (isAllow != '') {
            this.detailshow = false
            this.rescode = 400
            this.resmessage = `${arrzw[isAllow]}为空,不能继续打印`
            this.$refs.resmodal.show = true
            return
         }
         if (this.materlist.unBindQuantity <= 0 || this.materlist.unBindQuantity > this.materlist.quantity) {
            this.detailshow = false
            this.rescode = 400
            this.resmessage = `数量不符合规范,不能继续打印`
            this.$refs.resmodal.show = true
            return
         }
         if (!this.materlist.specificationModel) {
            this.materlist.specificationModel = ''
         }
         let ptintContext = [
            { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false },
            { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false },
            { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false },
            /* 以上空数据,为防止丢包时打印不正常 */
            { type: 'line', x1: 3, y1: 3, x2: 565, y2: 3, width: 2 },
            { type: 'line', x1: 3, y1: 3, x2: 3, y2: 345, width: 2 },
            { type: 'line', x1: 3, y1: 345, x2: 565, y2: 345, width: 2 },
            { type: 'line', x1: 565, y1: 345, x2: 565, y2: 3, width: 2 },
            { type: 'text', x: 80, y: 15, text: '牧野汽车装备(武汉)有限公司', size: 3, rotate: 0, bold: 1, underline: false, reverse: false },
            { type: 'line', x1: 3, y1: 60, x2: 565, y2: 60, width: 2 },
            { type: 'text', x: 10, y: 75, text: `物料编号: ${this.materlist.materialCode}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false },
            { type: 'line', x1: 3, y1: 110, x2: 380, y2: 110, width: 2 },
            { type: 'text', x: 10, y: 125, text: `物料名称: ${this.materlist.materialTypeName || ''}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false },
            { type: 'line', x1: 3, y1: 160, x2: 380, y2: 160, width: 2 },
            { type: 'text', x: 10, y: 175, text: `批次: ${this.materlist.batchNo}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false },
            { type: 'line', x1: 3, y1: 210, x2: 565, y2: 210, width: 2 },
            { type: 'line', x1: 380, y1: 60, x2: 380, y2: 210, width: 2 },
            { type: 'qr', x: 410, y: 72, text: `PARTS NUMBER: ${this.materlist.materialCode},SAP: ${this.materlist.sap_Location || ''},BOXNUM: ${this.materlist.boxNo || ''},LOT NO: ${this.materlist.batchNo},QUANTITY: ${this.materlist.unBindQuantity}`, width: 3, level: 1 },
            { type: 'text', x: 10, y: 225, text: `规格型号: ${this.materlist.specificationModel.length > 32 ? this.materlist.specificationModel.substr(0, 32) : this.materlist.specificationModel}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false },
            { type: 'line', x1: 3, y1: 260, x2: 565, y2: 260, width: 2 },
            { type: 'text', x: 120, y: 290, text: 'MAKINO J(CHINA) CO.LTD', size: 3, rotate: 0, bold: 1, underline: false, reverse: false },
         ]
         console.log(ptintContext)
         BluePrint.print(this.$store, ptintContext).then(() => {
            // 关闭弹框 并恢复滑动块
            this.detailshow = false
            this.addForm.code = this.materlist.materlist;
            this.addForm.name = this.materlist.materialName;
            this.addForm.batchNo = this.materlist.batchNo;
            this.addForm.specificationModel = this.materlist.specificationModel;
            addPrintRecord(this.addForm).then(res => {
               console.log(res);
            })
            uni.showToast({
               title: '打印成功',
               duration: 2000
            })
         }).catch((err) => {
            // uni.showToast({
            //    title:'打印失败',
            //    duration: 2000
            // })
         })
      },
      materialBlur() {
            clearTimeout(this.timerSm)
            this.timerSm = null
            if (this.warehouse.materialCode == '') {
               return
            }
    getenumDataList({
      EnumName: "AreaCodeEnum",
    }).then((res) => {
      this.areaCodeEnum = res.result || [];
    });
   getenumDataList({
        EnumName: "UpiFlagEnum",
      }).then((res) => {
        this.upiFlagEnum = res.result || [];
      });
  },
  onLoad() {
    this.operator = JSON.parse(uni.getStorageSync("userInfo")).name;
  },
  mounted() {},
            this.timer = setTimeout(() => { //多次触发bug 延迟bug
               //判断当前物料是否在盘点列表中
               const index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode && item.batchNo == lotNo);
               if (index > -1) {
                  this.singlist[index].checked = 1
                  this.singlist.unshift(...this.singlist.splice(index, 1))
                  return
               } else {
                  clearTimeout(this.timer)
                  this.timer = null
                  this.containerBlur()
               }
            }, 100)
  methods: {
     do_UnlineForNGPackage() {
         //debugger
         const params = {
           PackageCode:this.singlist[0].packageCode,
           IsNG:true
         };
        //debugger
         uni.showModal({
           title: "整包NG下线",
           content: "是否确认 整包NG下线?",
           showCancel: true,
           cancelColor: "#333333",
           success: (res) => {
             if (res.confirm) {
               UnlineForNGPackage(params).then((res) => {
                 this.rescode = 200;
                 this.$refs.resmodal.show = true;
                 this.resmessage = "整包NG下线成功";
               });
             } else if (res.cancel) {
             }
           },
         });
       },
    getEnumName(value) {
      const name = this.enumList.find((item) => item.value === value);
      return name ? name.name : "";
    },
    getAreaCodeEnumName(value) {
      const name = this.areaCodeEnum.find((item) => item.value === value);
      return name ? name.name : "";
    },
    getUpiFlagEnumName(value) {
        const name = this.upiFlagEnum.find((item) => item.value === value);
        return name ? name.name : "";
      },
      containerBlur() {
         if (this.warehouse.containerCode == '' || this.warehouse.materialCode == '') {
            return
         }
         getContainerMaterial(this.warehouse).then(res => {
            if (res.data == null || res.data.length == 0) {
               this.rescode = 400
               this.resmessage = '暂无数据'
               this.$refs.resmodal.show = true
               return;
            }
            this.warehouse.dutyCycle = res.data[0].dutyCycle || 0;
            //给所有的材料一个未选中的状态
            res.data.map(item => {
               item.checked = true,
                  item.unBindQuantity = ''
            })
            this.singlist.unshift(...res.data)
            this.ordersId = res.data[0].ordersId
         })
      },
      //解绑数量失焦事件
      changeNum(option) {
         //判断是否勾选,如果勾选了,就要对数量校验
         if (!option.checked) {
            return
         }
         if (option.unBindQuantity == '') {
            this.rescode = 400
            this.resmessage = '解绑数量不能为空'
            this.$refs.resmodal.show = true
         }
    // 如果打开一个的时候,不需要关闭其他,则无需实现本方法
    open(index) {
      // 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
      // 原本为'false',再次设置为'false'会无效
      this.singlist[index].show = true;
      this.singlist.map((val, idx) => {
        if (index != idx) this.singlist[idx].show = false;
      });
    },
    close(index) {
      this.singlist[index].show = false;
    },
    //物料详情
    longpress(index, eindex) {
      this.materlist = this.singlist[index];
      this.detailshow = true;
    },
         if (option.unBindQuantity <= 0) {
            this.rescode = 400
            this.resmessage = '解绑数量必须大于0'
            this.$refs.resmodal.show = true
         }
         if (option.unBindQuantity > option.quantity) {
            this.rescode = 400
            this.resmessage = '解绑数量不能大于库存数量'
            this.$refs.resmodal.show = true
         }
         if (this.detailable) {
            let filterHas = this.singlist.filter(item => item.unBindQuantity == Number(item.quantity));
            if (filterHas.length > 0) {
               this.warehouse.exitNumber = this.warehouse.useNumber - filterHas.length
            }
         }
      },
      //确认解绑
      submit() {
         const filterArr = this.singlist.filter(item => item.checked);
         if (filterArr.length <= 0) {
            this.rescode = 400
            this.resmessage = '请选择解绑的物料!'
            this.$refs.resmodal.show = true
            return
         }
         //判断选中的里面是否存在解绑的数量不符合规范的
         // const index = filterArr.findIndex(item => item.unBindQuantity == '' || item.unBindQuantity <= 0 || item.unBindQuantity > item.quantity)
         // if (index > -1) {
         //    this.rescode = 400
         //    this.resmessage = '解绑数量不符合要求'
         //    this.$refs.resmodal.show = true
         //    return
         // }
         const warehousOrderDetails = filterArr.reduce((curr, item) => {
            curr.push({
               ...item
            })
            return curr;
         }, [])
         const params = {
            flag:3,//3:物料解绑
            containerCode: this.warehouse.containerCode,
            orderDetails: warehousOrderDetails
         }
         uni.showModal({
            title: '解绑',
            content: '是否确认解绑?',
            showCancel: true,
            cancelColor: '#333333',
            success: (res => {
               if (res.confirm) {
                  unbindOrder(params).then(res => {
                     this.rescode = 200
                     this.$refs.resmodal.show = true;
                     this.resmessage = '解绑成功'
                     this.back();
                  })
               } else if (res.cancel) {
    rest() {
      //alert(11)
      this.warehouse.upi = "";
      this.warehouse.upi = "";
      this.singlist = [];
    },
    //检查容器栅格数
    checkGrid() {},
    //获取容器的信息
    getContainerData(param) {
      if (!this.warehouse.upi) {
        uni.showToast({
          title: "请扫包装号",
          icon: "none",
          duration: 2000,
        });
        return;
      }
      getBhbMaterialList({
        upi: this.warehouse.upi,
      }).then((res) => {
        const result = res.result;
        if (Array.isArray(result) && result.length == 0) {
          uni.showToast({
            title: "没有查到数据",
            icon: "none",
            duration: 5000,
          });
          this.singlist = [];
          return;
        }
        this.singlist = result;
      });
    },
               }
            })
         });
      },
      rest() {
      },
      //检查容器栅格数
      checkGrid() {
      },
      //获取容器的信息
      getContainerData(param) {
         if (this.warehouse.containerCode == '') {
            uni.showToast({
               title: '请扫容器编号',
               icon: 'none',
               duration: 2000
            });
            return
         }
         // this.kwbhAllowed = false;
         getBhbMaterialList({
            'containerCode': this.warehouse.containerCode,
            'SNCode': this.warehouse.snCode
         }).then(res => {
            // //debugger
            const result = res.result;
            if (Array.isArray(result) && result.length == 0) {
               uni.showToast({
                  title: '数据不存在',
                  icon: 'none',
                  duration: 2000
               });
               return
               // this.kwbhAllowed = true
            }
            //容器编号入口
            // if (param == 1) {
            // }
            if(res.result && res.result.length==1){
               res.result[0].checked=true;
            }
            this.singlist = res.result;
            //物料入口 根据id 判断物料是否存在
            // res.result.forEach(item => {
            //    let index = this.singlist.findIndex(v => v.snCode == item.snCode);
            //    if (index == -1) {
            //       this.singlist.unshift({
            //          ...item
            //       })
            //    }
            // });
         })
      },
      onlyUpdateDutyCycleClick() {
         this.$refs.warehouseRef.setRules(this.warehouseRules)
         this.$refs.warehouseRef.validate(valid => {
            if (valid) {
               //请求参数
               let params = {
                  wareContainerCode: this.warehouse.containerCode,
                  dutyCycle: this.warehouse.dutyCycle
               }
               uni.showModal({
                  title: '提示',
                  content: '是否确认仅更新空间占比数据?',
                  showCancel: true,
                  cancelColor: '#333333',
                  success: (res => {
                     if (res.confirm) {
                        onlyUpdateDutyCycle(params).then(res => {
                           this.warhouseTph = this.warehouse.containerCode
                           this.rescode = res.code
                           this.resmessage = res.message
                           this.$refs.resmodal.show = true
                           this.rest()
                        })
                     } else if (res.cancel) {
                     }
                  })
               });
            }
         })
      },
      gridBtnClick() {
         this.gridable = !this.gridable
         if (!this.gridable) {
            this.$nextTick(() => {
               this.gridFocus = true;
            })
         } else {
            this.$nextTick(() => {
               this.gridFocus = false;
            })
         }
      },
      //全部取消
      back() {
         this.ordersId = 0;
         this.singlist = [];
         this.$refs.warehouseRef.resetFields();
         this.warehouse.containerCode = ''
      }
   },
   unmounted() {
      if (this.timer) {
         clearTimeout(this.timer)
         this.timer = null
      }
   },
}
    //全部取消
    back() {
      this.ordersId = 0;
      this.singlist = [];
      this.$refs.warehouseRef.resetFields();
      this.warehouse.upi = "";
    },
  },
};
</script>
<style lang="scss">
.content {
   height: 500rpx;
   overflow-y: scroll;
   width: 100%;
   padding: 15rpx;
   box-sizing: border-box;
  height: 500rpx;
  overflow-y: scroll;
  width: 100%;
  padding: 15rpx;
  box-sizing: border-box;
   .content-item {
      padding: 15rpx;
      background-color: #fff;
      margin-bottom: 15rpx;
      border-radius: 8rpx;
      font-size: 32rpx;
   }
  .content-item {
    padding: 15rpx;
    background-color: #fff;
    margin-bottom: 15rpx;
    border-radius: 8rpx;
    font-size: 32rpx;
  }
}
.bg_item {
   background: #FFEBCD !important;
  background: #ffebcd !important;
}
</style>
</style>