schangxiang@126.com
2024-12-10 8a516270bda96fd7e3afae81421b16937676940c
Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine
已修改4个文件
1236 ■■■■■ 文件已修改
LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Pda/pages.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Pda/pages/index/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue 1201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js
@@ -87,13 +87,6 @@
        data: data
     })
}
export function getBhbMaterialList(data){ //容器查询
    return request({
        url: `/api/WmsGroupDisk/PdaContainerWithMaterial?${qs.stringify(data)}`,
        // url: `/api/wmsContainerMaterial/list?${qs.stringify(data)}`,
        method: 'get',
     })
}
export function PdaBindListForSNCode(data){ //物料查询
    return request({
        url: `/api/WmsGroupDisk/PdaBindListForSNCode?${qs.stringify(data)}`,
@@ -211,4 +204,24 @@
        method: 'post',
        data
     })
}
}
//======================
export function getBhbMaterialList(data){
    return request({
        url: `/api/WmsCommonnQuery/QueryUpiListByUpi`,
        method: 'post',
        data: data
     })
}
export function getenumDataList(data){
    return request({
        url: `/api/sysEnum/enumDataList?${qs.stringify(data)}`,
        method: 'get',
        data: data
     })
}
LA24030_LuLiPackageLine_Pda/pages.json
@@ -57,7 +57,7 @@
        {
            "path": "pages/untie/untie",
            "style": {
                "navigationBarTitleText": "物料解绑",
                "navigationBarTitleText": "整包查看",
                "enablePullDownRefresh": false
            }
        },
LA24030_LuLiPackageLine_Pda/pages/index/index.vue
@@ -110,13 +110,13 @@
                },
                {
                    name: '物料组盘/上架',
                    name: '板件查看',
                    icon: 'icon-kuaidiguanli',
                    src: '../../static/index/artificial.png',
                    pages: '../artificial/artificial'
                },
                {
                    name: '物料解绑',
                    name: '整包查看', //NG处理
                    icon: 'icon-kuaidiguanli',
                    src: '../../static/index/untie.png',
                    pages: '../untie/untie'
LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue
@@ -1,524 +1,711 @@
<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>
  <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="packageCode"
            required
            class="uFormItem"
          >
            <u-input
              v-model.trim="warehouse.packageCode"
              @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"
            >
              <!-- 部件名称 upi、材料、尺寸,位置、板件状态 -->
              <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="8">
                  <text class="color_80 padding_left25rpx">
                    部件名称: {{ item.detailName }}
                  </text>
                </u-col>
                <u-col span="4">
                  <text class="color_80"> 位置:{{ item.location }} </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="8">
                  <text class="color_80 padding_left25rpx">
                    材料:{{ item.info18 }}
                  </text>
                </u-col>
                <u-col span="4">
                  <text class="color_80"> 尺寸:{{ item.info16 }} </text>
                </u-col>
              </u-row>
              <u-row>
                <u-col span="8">
                  <text class="color_80 padding_left25rpx">
                    板件状态:{{ item.upiStatus }}
                  </text>
                </u-col>
                <u-col span="4">
                  <text class="color_80"> 次序:{{ item.shelf }} </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>
</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,
} 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: {
        packageCode: "",
        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,
    };
  },
  components: {
    ButtonModal,
    ModalCode,
  },
  onLoad() {
    this.operator = JSON.parse(uni.getStorageSync("userInfo")).name;
  },
  mounted() {
    getenumDataList({
      EnumName: "UpiStatusEnum",
    }).then((res) => {
      this.singlist = res.data.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
                }
  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;
      }
                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)
        },
        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
            }
      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);
    },
    containerBlur() {
      if (
        this.warehouse.packageCode == "" ||
        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;
      }
            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) {
      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:物料解绑
        packageCode: this.warehouse.packageCode,
        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() {},
    //检查容器栅格数
    checkGrid() {},
    //获取容器的信息
    getContainerData(param) {
      if (param == 1) {
        this.warehouse.upi = "";
      }
      if (this.warehouse.packageCode == "") {
        uni.showToast({
          title: "请扫容器编号",
          icon: "none",
          duration: 2000,
        });
        return;
      }
      getBhbMaterialList({
        packageCode: this.warehouse.packageCode,
        upi: this.warehouse.upi,
      }).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;
                    }
                })
            });
        },
        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) {
        //物料入口 根据id 判断物料是否存在
        // res.result.forEach(item => {
        //     let index = this.singlist.findIndex(v => v.upi == item.upi);
        //     if (index == -1) {
                            }
                        })
                    });
                }
            })
        },
        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
        }
    },
}
        //         this.singlist.unshift({
        //             ...item
        //         })
        //     }
        // });
      });
    },
    onlyUpdateDutyCycleClick() {
      this.$refs.warehouseRef.setRules(this.warehouseRules);
      this.$refs.warehouseRef.validate((valid) => {
        if (valid) {
          //请求参数
          let params = {
            warepackageCode: this.warehouse.packageCode,
            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.packageCode;
                  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.packageCode = "";
    },
  },
  unmounted() {
    if (this.timer) {
      clearTimeout(this.timer);
      this.timer = null;
    }
  },
};
</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>