<template>
  <div>
    <el-form
      :model="orderFormData"
      :rules="formRules"
      ref="dataForm"
      @submit.native.prevent
      label-width="110px"
    >
      <el-card>


        <el-row style="margin-bottom: 8px">
          <el-button-group
            style="display: flex; margin-top: 5px; float: right"
          >

            <el-button size="mini" type="primary" @click.native="selectPrescribe()" :loading="submitLoading"
                       v-if="splitType=='out'" style="margin-right: 8px;border-radius: 5%;" v-show="isLinkDisabled"
            >选入已完成单据
            </el-button>
            <el-button size="mini" type="primary" @click.native="chooseDraftOrder()" :loading="submitLoading"
                       style="margin-right: 8px;border-radius: 5%;" v-show="isLinkDisabled"
            >选入单据
            </el-button>
            <el-button size="mini" type="primary" @click.native="draftOrder()" :loading="submitLoading"
                       v-show="isLinkDisabled" style="margin-right: 8px;border-radius: 5%;"
            >保存
            </el-button>
            <el-button size="mini" type="primary" @click.native="submit()" :loading="submitLoading"
                       v-if="splitType=='out'" style="margin-right: 8px;border-radius: 5%;"
            >上货完成
            </el-button>
            <!-- <el-button size="mini" type="primary" @click.native="" :loading="submitLoading" v-show="isLinkDisabled"
                       v-if="splitType=='return'" style="margin-right: 8px;border-radius: 5%;"
            >保存
            </el-button> -->
            <el-button size="mini" type="primary" @click.native="submit()" :loading="submitLoading"
                       v-if="splitType=='return'" style="margin-right: 8px;border-radius: 5%;"
            >退货完成
            </el-button>
            <!--            <el-button size="mini" type="primary" @click.native="printLabel()" :loading="submitLoading"-->
            <!--                       style="border-radius: 5%;"-->
            <!--            >打印二维码-->
            <!--            </el-button>-->

          </el-button-group>
        </el-row>
        <el-row v-if="false">
          <el-col :span="11">
            <el-form-item prop="corpOrderId" class="query-form-item" label="单据号:">
              <el-input
                v-model="orderFormData.corpOrderId"
                auto-complete="off"
                style="width: 90%"
                clearable
                :disabled="true"
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item prop="createTime" class="query-form-item" label="单据时间:">
              <el-date-picker
                v-model="orderFormData.createTime"
                type="datetime"
                placeholder="日期"
                clearable
                value-format="yyyy-MM-dd HH:mm:ss"
                :disabled="true"
                style="width: 90%"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item prop="invCode" class="query-form-item" label="当前仓库:">
              <el-select
                v-model="orderFormData.invCode"
                placeholder="当前仓库"
                style="width: 90%"
                :disabled="corpOrderIdDisabled || viewTypeKsck"
                @change="changeInv"
                filterable
              >
                <el-option
                  v-for="item in curInvOptions"
                  :key="item.name"
                  :label="item.name"
                  :value="item.code"
                >
                  <span style="float: left">{{ item.name }}</span>
                  <span style="float: right; color: #8492a6; font-size: 13px">{{
                      item.warehouseName
                    }}</span>
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="11">
            <el-form-item prop="remark" class="query-form-item" label="单据备注:">
              <el-input
                v-model="orderFormData.remark"
                auto-complete="off"
                clearable
                style="width: 90%"
                placeholder="请输入备注信息"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6" v-if="!isLinkDisabled">
            <el-form-item prop="workPlaceCode" class="query-form-item" label="当前工位:">
              <el-select
                v-model="orderFormData.workPlaceCode"
                placeholder="当前工位"
                style="width: 90%"
                :disabled="corpOrderIdDisabled"
                filterable
                @change="changePlace"
              >
                <el-option
                  v-for="item in curWorkPlaces"
                  :key="item.code"
                  :label="item.label"
                  :value="item.code"
                >
                  <span style="float: left">{{ item.label }}</span>
                  <span style="float: right; color: #8492a6; font-size: 13px">{{
                      item.code
                    }}</span>
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>

          <!--<el-col :span="6" v-if="!isLinkDisabled">-->
          <!--  <el-form-item prop="busType" class="query-form-item" label="业务名称:">-->
          <!--    <el-select-->
          <!--      v-model="orderFormData.busType"-->
          <!--      placeholder="业务名称"-->
          <!--      style="width: 90%"-->
          <!--      :disabled="corpOrderIdDisabled"-->
          <!--      filterable-->
          <!--    >-->
          <!--      <el-option-->
          <!--        v-for="item in busTypeList"-->
          <!--        :key="item.documentTypeCode"-->
          <!--        :label="item.busName"-->
          <!--        :value="item.documentTypeCode"-->
          <!--      >-->
          <!--        <span style="float: left">{{ item.busName }}</span>-->
          <!--        <span style="float: right; color: #8492a6; font-size: 13px">{{-->
          <!--            item.documentTypeCode-->
          <!--          }}</span>-->
          <!--      </el-option>-->
          <!--    </el-select>-->
          <!--  </el-form-item>-->
          <!--</el-col>-->

          <!--<el-col :span="6" v-if="splitType=='out'">-->
          <!--  <el-form-item prop="fifoSplit" class="query-form-item" label="上货方式:">-->
          <!--    <el-radio-group v-model="orderFormData.fifoSplit" :disabled="fifoSplitEnable" @change="splitChange">-->
          <!--      <el-radio :label="1">拆零上货</el-radio>-->
          <!--      <el-radio :label="2">整取上货</el-radio>-->
          <!--    </el-radio-group>-->
          <!--  </el-form-item>-->
          <!--</el-col>-->
        </el-row>
        <el-divider></el-divider>
        <el-row>
          <el-col :span="18">
            <el-form-item prop="code" label="扫码录入:">
              <el-input
                id="inputer"
                @focus="getInputFocus($event)"
                @keypress.enter.native="enterKey($event)"
                ref="inputRef"
                style="ime-mode: disabled"
                type="tel"
                placeholder="请点击输入框进行扫码设置或者扫码录入"
                v-model="scanCode"

              ></el-input>
              <!--                  :disabled="scanDisabled"-->
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-button-group>
              <el-button
                type="primary"
                size="mini"
                @click.native.stop="addCode()"
                style="margin-left: 15px"
              >添加
              </el-button>
              <!--              <el-button icon="el-icon-view" @click="hideSearch">显示/隐藏快捷设置</el-button>-->
            </el-button-group>

          </el-col>
        </el-row>

        <el-alert
          title="扫码结果:"
          :type="scanResultType"
          :closable="false"
          :description="result">
        </el-alert>
        <el-alert
          v-if="warnVisible"
          title="警告信息:"
          type="warning"
          :closable="true"
          :dangerouslyUseHTMLString="true"
          :description="warnResult">
        </el-alert>
        <el-alert
          v-if="errVisible"
          title="错误信息:"
          type="warning"
          :closable="true"
          :dangerouslyUseHTMLString="true"
          :description="errResult">
        </el-alert>
        <el-row style="margin-top: 25px;margin-bottom: -15px">
          <div v-if="showSearch  && splitBusType!=null">
            <el-divider>
              <p style="font-weight: bold">扫码快捷设置</p>
            </el-divider>
            <el-row justify="center">
              <el-col :span="4" style="text-align: center;">
                <div>
                  <img src="@/assets/images/fifoSplit1.png" alt="二维码" style="width: 80px; height: 80px;">
                  <p style="margin-top: 5px;font-weight: bold">拆零上货</p>
                </div>
              </el-col>
              <el-col :span="4" style="text-align: center;">
                <div>
                  <img src="@/assets/images/fifoSplit2.png" alt="二维码" style="width: 80px; height: 80px;">
                  <p style="margin-top: 5px;font-weight: bold">整取上货</p>
                </div>
              </el-col>
              <el-col :span="4" style="text-align: center;">
                <div>
                  <img src="@/assets/images/splitOut.png" alt="二维码" style="width: 80px; height: 80px;">
                  <p style="margin-top: 5px;font-weight: bold">工位上货</p>
                </div>
              </el-col>
              <el-col :span="4" style="text-align: center;">
                <div>
                  <img src="@/assets/images/splitIn.png" alt="二维码" style="width: 80px; height: 80px;">
                  <p style="margin-top: 5px;font-weight: bold">工位退货</p>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-row>
      </el-card>
    </el-form>
    <el-tabs type="border-card" style="margin: 15px">

      <el-tab-pane label="单据详情" v-if="viewCodeVisible">
        <codeDetailPanel
          :idQuery="orderFormData"
          :curAction="curAction"
          :refreshPanel="refreshCodesPanel"
          :viewType="viewType"
          v-if="isCodeDetailAlive"
        ></codeDetailPanel>
      </el-tab-pane>
      <el-tab-pane label="扫码明细" v-if="viewCodeDetailVisible">
        <codesPanel
          :idQuery="orderFormData"
          :refreshPanel="refreshCodesPanel"
          v-if="isCodeAlive"
          :viewType="viewType"
          :selectRlTitle="selectRlTitle"
          :editTitle="editTitle"
          :selectUnitTitle="selectUnitTitle"
        ></codesPanel>
      </el-tab-pane>
    </el-tabs>

    <el-dialog
      title="选入草稿单据"
      :visible.sync="chooseDraftOrderVisible"
      width="80%"
      append-to-body
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      v-if="chooseDraftOrderVisible"
    >
      <chooseDraftOrderDialog
        ref="chooseDraftOrder"
        :rowData="rowData"
        :closeChooseDialog="closeChooseDialog"
        :handleChoose="handleChoose"
      >
      </chooseDraftOrderDialog>
    </el-dialog>

    <el-dialog
      title="选入已完成单据"
      :visible.sync="selectPrescriptionVisible"
      :close-on-click-modal="false"
      :close-on-press-escape="false"
      v-if="selectPrescriptionVisible"
      width="65%"
      append-to-body
    >
      <SelectCollectOrderEndDialog
        :RowType="1"
        :workPlaceCode="null"
        :busType="this.orderFormData.busType"
        :fromCorp="this.orderFormData.fromCorp"
        :confirmSelect="this.confirmSelect"
        :closeDialog="this.closeDialog"
        :viewType="viewType"
      ></SelectCollectOrderEndDialog>
    </el-dialog>
  </div>

</template>

<script>
import {
  submitBiz,
  addOrderWeb,
  submitCodes,
  submitOrderWeb,
  saveOrderWeb,
  enterCodeWeb, submitAllocateBiz, rollbackWaitcheck, submitCodeResult, submitCheckResult, delmitBiz,
  batchVailCode, batchAddCode, batchAddCodeByOrderFinish, upProcessing, getProcessingOrder
} from '@/api/inout/order'
import {filterSubAll, findByFrom, findInvByUser} from "@/api/system/invSubWarehouse";
import {parseTime} from "@/utils/coTools";
import {getBasicUnitMaintains} from "@/api/basic/basicUnitMaintain";
import editCodeDialog from "@/views/inout/DialogEditCode";
import DialogCreateOrderSelect from "@/views/inout/DialogCreateOrderSelect";


import codesPanel from "@/views/collect/PanelCreateCodes";
import codeDetailPanel from "@/views/collect/PanelCreateCodeDetail";
import SelectCollectOrderEndDialog from "@/views/collect/SelectCollectOrderEndDialog";

import A from "../../plugins/KeyScaner";
import {findByInvUser, getBusTypeList} from "@/api/basic/busType";
import {getInvSpaceList} from "@/api/inventory/invSpace";
import DialogSelectUnit from "@/views/inout/DialogSelectUnit";
import selectRlDialog from "@/views/inout/DialogSelectRl";
import DialogSelectSpace from "@/views/inout/DialogSelectSpace";
import {isBlank} from "@/utils/strUtil";
import {filterNoPage, remoteFilter} from "@/api/basic/sicker/skPersonApi";
import dialogInvProduct from "@/views/inout/DialogSelectInvProduct";
import {printSplitLabel} from "@/api/collect/splitCreateOrder";
import chooseDraftOrderDialog from "./chooseDraftOrderDialog"
import {getUserBindWork} from '@/api/basic/collectPoint/userWorkplace'
import {getWorkBindBusTypes} from '@/api/basic/workPlace/sysWorkplaceDocuments'
import {filterWorkOptimize} from '@/api/basic/workPlace/sysWorkplaceManage'

export default {
  name: "ioCreateOrder",
  props: {
    closeDialog: {
      type: Function,
      required: true,
    },
    orderQuery: {
      type: Object,
      required: true,
      default: {}
    },
    errView: {
      type: Object,
      required: true,
    },
    sickerAdNum: {
      type: Object,
      required: true,
    },
    sickerAdName: {
      type: Object,
      required: true,
    },
    viewTypeKsck: {
      type: Boolean,
      required: false,
    },
    viewType: {
      //1、新增业务单据页面，2.新增扫码单据页面，3、正常单据处理页面,4.待配货页面,5:有三期验收,6:无三期验收；7.待校验页面
      type: Object,
      required: true,
    },
    splitBusType: {//科室拆零单据类型
      type: Object,
      default: null,
      required: true,
    },

    dialogTitle: {//科室拆零单据类型
      type: Object,
      required: true,
    },
    fromSplitType: {//splitType
      type: Object,
      required: true,
    },
    resetKey: {
      type: Function,
      required: true
    },

  },
  watch: {
    resetKey(newVal, oldVal) {
      this.$refs.inputRef.focus();
    }
  },
  data() {
    return {
      busTypeList: [],
      busQuery: {
        busKey: '',
        workplaceCode: null,
        page: 1,
        limit: 100
      },
      isLinkDisabled: false,
      userInfo: {
        inv: this.$store.getters.locInvName,
        deptName: this.$store.getters.locDeptName,
        userName: this.$store.getters.name,
        userId: this.$store.getters.userId,
        companyName: this.$store.getters.companyName,
      },
      workplaceId: null,
      //单据相关
      orderFormData: {
        billNo: null,
        corpOrderId: null,
        action: null,
        invCode: null,
        fromCorp: null,
        fromCorpName: null,
        fromName: null,
        fromInvCode: null,
        remark: null,
        fromType: 2,
        errMsg: null,
        checkPreInOrders: null,
        checkPreInInvCode: null,
        checkPreInSpaceCode: null,
        curSpaceCode: null,
        preSpaceCode: null,
        preCurSpaceCode: null,  //单据
        sickerAdNum: null,
        workPlaceCode: null,
        fifoSplit: 1,
        splitBusType: null,
        busType: null,
      },
      selectPrescriptionVisible: false,
      detailList: [],
      total: 0,
      checkPreInArray: [],
      errView: 0,
      //选入相关
      selectorder: false,
      //扫码相关
      codeFormData: {
        code: "",
        batchNo: null,
        produceDate: null,
        expireDate: null,
        serialNo: null,
        relId: null,
      },

      curInvOptions: [],
      busTypeOptions: [],
      fromInvOptions: [],


      curPreInInvOptions: [],    //预验收仓库
      curPreInSpaceOptions: [],  //预验收货位
      curPreSpaceOptions: [],    //寄售货位
      curSpaceOptions: [], //当前货位

      curWorkPlaces: [],

      curAction: {
        corpType: 0,
        genUnit: false,
        checkWebNew: null,
        mainAction: null,
      },
      fromOptions: [],
      fromSickOptions: [],
      isCodeAlive: true,
      bizShow: true,
      isCheckResultAlive: true,
      isBizDetailAlive: true,
      isCodeDetailAlive: true,
      isSickerAlive: true,
      editCodeVisible: false,
      actionEnable: false,
      editOriginCodeVisible: false,
      curId: null,
      storageList: [],

      formRules: {
        corpOrderId: [
          {required: true, message: "请输入单据号", trigger: "blur"},
        ],
        createTime: [
          {required: true, message: "请选择创建时间", trigger: "blur"},
        ],
        invCode: [
          {required: true, message: "请选择当前仓库", trigger: "change"},
        ],
        action: [
          {required: true, message: "请选择单据类型", trigger: "change"},
        ],
        // acceptance: [
        //   {required: true, message: "请选入预验收单据", trigger: "blur"},
        // ],
      },
      isScan: true,
      scanText: "扫码录入：",
      corpOrderIdDisabled: false,
      isSupVesion: false,
      loading: false,
      index: null,
      formLoading: false,
      formVisible: false,
      deleteLoading: false,
      orderNo: null,
      fromStorageOptions: [],
      curRow: null,
      dialogTableVisible: false,
      selectRlVisible: false,
      selectSpaceVisible: false,
      sitcomScan: false,
      selectRlTitle: "绑定产品",
      selectUnitTitle: "绑定供应商",
      sictomText: "",
      originCode: "",
      checkSuccess: false,
      codeDetail: null,
      editTitle: "编辑条码",
      fromDeptOptions: [],
      enableDept: false,
      viewCheckVisible: false,
      viewBizVisible: false,
      viewCodeVisible: false,
      viewCodeDetailVisible: false,
      viewSickVisible: false,    //是否显示处方使用耗材
      documentShow: false,      //控制预验收选入单据界面
      curSpaceShow: false,     //正常出入库选入出库界面
      preInSpaceShow: false,   //是否显示选择预验收界面
      preSpaceShow: false,     //寄售，预验收仓库界面

      spaceCodeList: [],
      checkTipDialogVisible: false,
      checkTip: null,
      enableSick: false,
      saveLoading: false,
      submitLoading: false,
      checkLoading: false,
      codeLoading: false,
      retractLoading: false,

      //库存选入
      selectInvProductVisible: false,
      chooseDraftOrderVisible: false,
      invQueryData: {
        invCode: null,
      },
      showSearch: false,
      scanCode: "",
      isSuccess: false,
      result: "",
      scanResultType: "success",
      msgTip: "当前工位存量提醒：",
      splitType: null,
      rowData: {},
      curWorkPlace: null,
      fifoSplitEnable: false,
      scanDisabled: false,//是否禁用扫码输入框
      valiCodes: [],
      warnResult: "",
      errResult: "",
      warnVisible: false,
      errVisible: false,
    };
  },
  components: {
    codesPanel,
    codeDetailPanel,
    editCodeDialog,
    DialogCreateOrderSelect,
    DialogSelectUnit,
    DialogSelectSpace,
    selectRlDialog,
    dialogInvProduct,
    chooseDraftOrderDialog,
    SelectCollectOrderEndDialog
  },
  methods: {
    changePlace(val) {
      this.getWorkBindBusTypes(val)
      this.$refs.inputRef.focus();
    },
    getWorkBindBusTypes(workplaceId) {
      this.busQuery.workplaceCode = workplaceId
      getWorkBindBusTypes(this.busQuery).then(res => {
        if (res.code == 20000) {
          this.busTypeList = res.data.list || []
          if (this.busTypeList.length == 1) {
            this.orderFormData.busType = this.busTypeList[0].documentTypeCode
          } else {
            this.orderFormData.busType = null
          }
        }
        return
      })
    },
    splitChange() {
      this.$refs.inputRef.focus();
    },
    successCloseData() {
      let tempData = JSON.parse(JSON.stringify(this.orderFormData));
      this.orderFormData = {
        billNo: null,
        corpOrderId: null,
        action: null,
        invCode: null,
        fromCorp: null,
        fromCorpName: null,
        fromName: null,
        fromInvCode: null,
        remark: null,
        fromType: 2,
        errMsg: null,
        checkPreInOrders: null,
        checkPreInInvCode: null,
        checkPreInSpaceCode: null,
        curSpaceCode: null,
        preSpaceCode: null,
        preCurSpaceCode: null,  //单据
        sickerAdNum: null,
        workPlaceCode: null,
        fifoSplit: 1,

      }
      this.orderFormData.workPlaceCode = tempData.workPlaceCode
      this.orderFormData.mainAction = tempData.mainAction
      this.orderFormData.action = tempData.action
      this.orderFormData.fromCorp = tempData.fromCorp
      this.orderFormData.fromDeptCode = tempData.fromDeptCode
      this.orderFormData.fromInvCode = tempData.fromInvCode
      this.orderFormData.fromInvCode = tempData.fromInvCode
      this.orderFormData.deptCode = tempData.deptCode
      this.orderFormData.invCode = tempData.invCode
      this.scanCode = "";
      this.corpOrderIdDisabled = false;
      //todo 单据类型

      this.refreshCodesPanel()
    },
    //获取用户仓库列表
    findInvListByUser() {
      this.curInvOptions = [];
      findInvByUser()
        .then((response) => {
          this.curInvOptions = response.data || [];
          if (
            this.curInvOptions != null &&
            this.curInvOptions.length > 0 &&
            this.orderFormData.invWarehouseCode == null
          ) {
            //this.orderFormData.invCode = this.curInvOptions[0].code;
            this.getBusTypeByInv();
            this.findCurSpaceList(this.orderFormData.invCode);
            this.findCurWorkPlaces();
          }
        })
        .catch(() => {
        });
    },
    defaultSplitType() {
      this.curWorkPlace = this.curWorkPlaces.find(item => item.workplaceId == this.orderFormData.workPlaceCode);
      this.orderFormData.fifoSplit = this.curWorkPlace.workplaceType
      if (this.curWorkPlace.workplaceType == 1 || this.curWorkPlace.workplaceType == 2) {
        this.fifoSplitEnable = true;
      } else {
        this.orderFormData.fifoSplit = 1;
        this.fifoSplitEnable = false;
      }
    },
    //仓库改变
    changeInv(row) {
      this.orderFormData.action = null;
      this.orderFormData.checkPreInOrders = null;
      this.checkPreInArray = [];
      if (this.documentShow) {
        this.documentShow = false;
      }

      this.curSpaceShow = false;
      this.preInSpaceShow = false;
      this.preSpaceShow = false;
      this.orderFormData.curSpaceCode = false;
      this.orderFormData.checkPreInSpaceCode = false;
      this.orderFormData.preCurSpaceCode = false;
      this.getBusTypeByInv();
      this.findCurSpaceList(row);
      this.orderFormData.workPlaceCode = null
      this.findCurWorkPlaces();
    },

    //根据仓库,用户获取单据类型
    getBusTypeByInv() {
      let query = {
        code: this.orderFormData.invCode,
        editType: 2,    //可编辑
      };
      if (this.viewTypeKsck) {
        query = {
          code: this.orderFormData.invCode,
          editType: 2,    //可编辑
          useDyCount: 2    //可编辑
        };
      }

      findByInvUser(query)
        .then((response) => {
          this.busTypeOptions = response.data || [];
          if (this.splitBusType != null)
            this.orderFormData.action = this.splitBusType;
          else if (this.busTypeOptions.length == 1) {
            this.orderFormData.action = this.busTypeOptions[0].action;
            this.actionChange(this.orderFormData.action)
          }
        })
        .catch(() => {
        });
    },
    //关闭预选单弹框
    closeDialogtwo() {
      this.selectorder = false;
    },

    initBusType() {
      let query = {
        action: this.orderFormData.action,
      };
      getBusTypeList(query)
        .then((response) => {
          this.busTypeOptions = response.data.list || [];
          this.curAction = this.getActionItem(this.orderFormData.action);

          if (isBlank(this.curAction)) {
            this.curAction = {
              corpType: 0,
              genUnit: false,
              checkWebNew: null
            }
          }
          if (
            (this.curAction.checkEnable &&
              (this.curAction.checkWebNew ||
                this.curAction.checkUdims ||
                this.curAction.checkCopy ||
                this.curAction.checkPdaEd ||
                this.curAction.checkPdaUn ||
                this.curAction.checkPc ||
                this.curAction.checkWebNew ||
                this.curAction.checkSp ||
                this.curAction.checkChange ||
                this.curAction.checkBalance)) ||
            this.viewType == 1
          ) {
            this.bizShow = true;
          } else this.bizShow = false;
        })
        .catch(() => {
        });
    },
    delorderData() {
      //执行清空业务单据详情
      let tQuery = Object.assign(
        JSON.parse(JSON.stringify(this.orderFormData))
      );
      tQuery.orderId = this.orderFormData.billNo;
      console.log(tQuery.orderId);
      delmitBiz(tQuery).then((response) => {
        if (response.code === 20000) {
          // this.$message.success("成功");
          const codeDetailComponent = this.$refs.IoCreateOrderCodeDetail.getOrderDetails();
          if (this.closeDialog != undefined) {
            this.closeDialog();
          }
          this.clearOrder();
        } else {
          // this.$message.error(response.message);
          const codeDetailComponent = this.$refs.IoCreateOrderCodeDetail.getOrderDetails();
        }
      });
      const codeDetailComponent = this.$refs.IoCreateOrderCodeDetail.getOrderDetails();
      console.log("66:" + codeDetailComponent);

    },
    //获取往来单位候选列表
    findMethod(query) {
      this.fromOptions = [];
      let cQuery = {
        key: query,
        corpType: null,
        outType: null,
        page: 1,
        limit: 20,
      };
      if (this.curAction.corpType == 3) {
        //内部科室
        cQuery.corpType = 3;
      } else if (this.curAction.corpType == 2) {
        //供应商信息
        cQuery.corpType = 2;
      } else if (this.curAction.corpType == 0) {
        cQuery.corpType = 2;
      } else if (this.curAction.corpType == 1) {
        cQuery.corpType = 1;
        cQuery.outType = 2;
      } else if (this.curAction.corpType == 4) {
        //供应商信息
        cQuery.corpType = 4;
      } else
        return;
      getBasicUnitMaintains(cQuery)
        .then((response) => {
          this.loading = false;
          this.fromOptions = response.data.list || [];
        })
        .catch(() => {
          this.loading = false;
        });
    },


    findSickMethod(key) {
      let sickQuery = {
        page: 1,
        limit: 10,
        key: key,
      };
      filterNoPage(sickQuery).then(res => {
        this.fromSickOptions = res.data.list || []
      }).catch(() => {
      });
    },

    remoteFindSickMethod(e) {
      console.log(e.target.value)
      let sickQuery = {
        page: 1,
        limit: 10,
        adNum: e.target.value,
      };
      remoteFilter(sickQuery).then(res => {
        this.fromSickOptions = res.data.list || []
      }).catch(() => {
      });
    },


    //单据类型改变
    actionChange(item) {
      this.orderFormData.checkPreInOption = null;
      if (!this.viewTypeKsck) {
        this.orderFormData.checkPreInOrders = null;
        this.checkPreInArray = [];
      }
      this.curAction = this.getActionItem(item);
      if ((this.curAction.checkEnable && this.curAction.checkWebNew != 0) || this.viewType == 1) {
        //单据类型需要一次校验 或 单据类型为1，显示业务单据页面
        this.bizShow = true;
      } else {
        this.bizShow = false;
      }
      if (
        this.curAction.corpType == 0 ||
        this.curAction.corpType == 2 ||
        this.curAction.corpType == 4 ||
        (this.curAction.corpType == 1 && !this.curAction.genUnit)
      ) {
        //1.切换往来单位
        this.orderFormData.fromCorp = null;

        this.delorderData();

        this.findMethod();
      } else if (this.curAction.corpType == 3) {
        //2. 切换往来仓库
        this.orderFormData.fromInvCode = null;
        this.findFromInvList();
      }
      if (this.curAction.scanPreIn && this.curAction.backPreinType == 1 && this.curAction.preInBack) {
        this.documentShow = true;
      } else if (this.curAction.scanPreIn && this.curAction.backPreinType == 2 && this.curAction.preInBack) {
        this.preInSpaceShow = true;
        this.findPreInInvList();
      } else {
        this.documentShow = false;
        this.preInSpaceShow = false;
      }

      if (this.curAction.vailPrescribe != null && this.curAction.vailPrescribe) {
        this.viewSickVisible = true;
      } else {
        this.viewSickVisible = false;
      }

      if (this.curAction.scanPreIn && this.curAction.spaceOut == 1) {
        this.preInSpaceShow = true;
        this.curSpaceShow = false;
        this.preSpaceShow = false;
        this.orderFormData.curSpaceCode = null;
        this.orderFormData.checkPreInSpaceCode = null;
        this.orderFormData.preCurSpaceCode = null;
        this.findPreInSpaceList();
      } else if (this.curAction.advancePreIn && this.curAction.spaceOut == 1) {
        this.preInSpaceShow = false;
        this.curSpaceShow = false;
        this.preSpaceShow = true;
        this.orderFormData.curSpaceCode = null;
        this.orderFormData.checkPreInSpaceCode = null;
        this.orderFormData.preCurSpaceCode = null;
        this.findPreSpaceList()
      } else if (this.curAction.spaceOut == 1) {
        this.curSpaceShow = true;
        this.preInSpaceShow = false;
        this.preSpaceShow = false;
        this.orderFormData.curSpaceCode = null;
        this.orderFormData.checkPreInSpaceCode = null;
        this.orderFormData.preCurSpaceCode = null;
      } else {
        this.curSpaceShow = false;
        this.preInSpaceShow = false;
        this.preSpaceShow = false;
        this.orderFormData.curSpaceCode = null;
        this.orderFormData.checkPreInSpaceCode = null;
        this.orderFormData.preCurSpaceCode = null;
      }
    },

    //获取往来仓库列表
    findFromInvList(val) {
      let cQuery = {
        locInvCode: this.orderFormData.invCode,
      };
      findByFrom(cQuery)
        .then((response) => {
          this.fromInvOptions = response.data || [];
          if (val == 1) {
            this.orderFormData.fromInvCode = this.fromInvOptions[0].code;
          }
        })
        .catch(() => {
        });
    },

    //获取当前单据类型
    getActionItem(action) {
      for (let i = 0; i < this.busTypeOptions.length; i++) {
        if (this.busTypeOptions[i].action == action) {
          return this.busTypeOptions[i];
        }
      }
    },

    //切换预验收仓库
    changePreInInv(row) {
      this.orderFormData.checkPreInSpaceCode = null;
      this.findPreInSpaceList(row.code);
    },

    //获取预验收仓库
    findPreInInvList(val) {
      let query = {
        advanceType: 2,
        code: this.orderFormData.checkPreInInvCode,
      }
      filterSubAll(query)
        .then((response) => {
          this.curPreInInvOptions = response.data || [];
        })
        .catch(() => {
        });
    },

    //获取预验收货位
    findPreInSpaceList(val) {
      let query = {
        filterType: "preIn",
        status: 1,
        code: this.orderFormData.checkPreInSpaceCode,
      }
      getInvSpaceList(query).then((res) => {
        this.curPreInSpaceOptions = res.data.list || [];
      })
    },


    //获取寄售
    findPreSpaceList(val) {
      let query = {
        filterType: "pre",
        status: 1,
        code: this.orderFormData.preSpaceCode,
      }
      getInvSpaceList(query).then((res) => {
        this.curPreSpaceOptions = res.data.list || [];
      })
    },


    //获取当前货位
    findCurSpaceList(val) {
      let query = {
        invWarehouseCode: val,
        status: 1,
        code: this.orderFormData.curSpaceCode,
      }
      getInvSpaceList(query).then((res) => {
        this.curSpaceOptions = res.data.list || [];
      })
    },

    //获取当前工位
    // findCurWorkPlaces(val) {
    //   let query = {
    //     userId: this.userInfo.userId,
    //     page: 1,
    //     limit: 100,
    //   }
    //   getUserBindWork(query).then((res) => {
    //     this.curWorkPlaces = res.data.list || [];
    //     if (this.curWorkPlaces.length == 1 && this.$isNotBlank(this.orderFormData.workPlaceCode)) {
    //       this.orderFormData.workPlaceCode = this.curWorkPlaces[0].workplaceId;
    //       this.defaultSplitType()
    //     }
    //   })
    // },
    findCurWorkPlaces(val) {
      let query = {
        // chargeUser: _this.$store.getters.userId,
        userIdFlag: true,
        key: val,
        page: 1,
        limit: 10,
      }
      filterWorkOptimize(query)
        .then((response) => {
          this.loading = false;
          this.curWorkPlaces = response.data || [];
        })
        .catch(() => {
          this.loading = false;
          this.curWorkPlaces = [];
        });
    },


    addInvProduct() {
      this.invQueryData.invCode = this.orderFormData.invCode;
      this.selectInvProductVisible = true;
    },

    closeDialogC2(rData) {
      this.selectInvProductVisible = false;
      if (this.$isNotBlank(rData)) {
        this.codeFormData.code = rData;
        this.addCode();
        // this.codeFormData.code = null;
      }

      // this.refreshCodesPanel()
    },


    //添加条码
    addCode() {
      if (this.$isBlank(this.orderFormData.workPlaceCode)) {
        this.$message.warning("请选择工位！");
        return;
      }
      this.originCode = "";
      this.sictomText = "";
      this.codeFormData.batchNo = "";
      this.codeFormData.produceDate = "";
      this.codeFormData.expireDate = "";
      this.codeFormData.serialNo = "";
      this.actionEnable = true;
      this.$refs.inputRef.select();
      if (this.$isBlank(this.codeFormData.code)) {
        this.codeFormData.code = this.scanCode.trim();
        return;
      }
      if (this.$isBlank(this.codeFormData.code) && this.$isBlank(this.scanCode)) {
        return;
      }

      if (this.$isBlank(this.orderFormData.action)) {
        this.$message.warning("请选择单据类型！");
        return;
      }
      if (this.splitBusType != null) {
        this.orderFormData.fromCorp = "72198012799726";
      }
      if (this.curAction.corpType === 0 || this.curAction.corpType === 2 || (this.curAction.corpType === 1 && !this.curAction.genUnit)) {
        if (this.$isBlank(this.orderFormData.fromCorp) && this.$isBlank(this.orderFormData.sickerAdNum)) {
          this.$message.warning("请选择往来单位！");
          return;
        }
      }
      if (this.curAction.corpType == 3) {
        if (this.$isBlank(this.orderFormData.fromInvCode)) {
          this.$message.warning("请选择往来仓库！");
          return;
        }
      }
      if (this.curAction.corpType === 1 && this.curAction.genUnit) {
        if (this.$isBlank(this.orderFormData.fromCorp) && this.$isBlank(this.orderFormData.sickerAdNum)) {
          this.$message.warning("请输入患者信息！");
          return;
        }
      }

      if (this.curSpaceShow) {
        if (this.$isBlank(this.orderFormData.curSpaceCode)) {
          this.$message.warning("请选择当前货位！");
          return;
        }
      }
      if (this.preInSpaceShow) {
        if (this.$isBlank(this.orderFormData.checkPreInSpaceCode)) {
          this.$message.warning("请选择预验收出库货位！");
          return;
        }
      }
      if (this.preSpaceShow) {
        if (this.$isBlank(this.orderFormData.preCurSpaceCode)) {
          this.$message.warning("请选择寄售出库货位！");
          return;
        }
      }
      if (this.checkPreInArray != null) {
        this.orderFormData.checkPreInOrders = this.checkPreInArray.join(",");
      }

      if (this.$isBlank(this.orderFormData.corpOrderId)) {
        let date = new Date();
        this.orderFormData.corpOrderId =
          parseTime(date, "{y}{m}{d}{h}{i}{s}") +
          Math.ceil(Math.random() * 89 + 10);
      }
      // this.loading = true;

      // this.warnResult = "";
      // this.errResult = "";
      // this.result = "";
      this.warnVisible = false;
      this.errVisible = false;

      this.checkSuccess = true;
      if (this.getDMHotskeyValue(this.scanCode))
        return
      if (this.codeFormData.code.includes(";")) {
        const codeArray = this.codeFormData.code.split(";");
        let params = {
          codeList: codeArray,
        };
        this.batchVailCode(params)
        return;
      }
      let tQuery = Object.assign(
        JSON.parse(JSON.stringify(this.orderFormData))
      );
      tQuery.code = this.codeFormData.code;
      tQuery.orderType = 2;
      tQuery.splitType = this.splitType;
      this.addCodeSubmit(tQuery);
      this.$refs.inputRef.select();
    },

    repeatAddCode(editData) {
      let tQuery = Object.assign(
        JSON.parse(JSON.stringify(this.orderFormData))
      );
      tQuery.code = this.codeFormData.code;
      tQuery.orderType = this.viewType;

      tQuery.batchNo = editData.batchNo;
      tQuery.produceDate = editData.produceDate;
      tQuery.expireDate = editData.expireDate;
      tQuery.serialNo = editData.serialNo;

      this.closeCodeDialog();
      this.addCodeSubmit(tQuery);
    },

    //添加条码后提交
    addCodeSubmit(tQuery) {
      addOrderWeb(tQuery).then((response) => {
        if (response.code === 20000) {
          this.orderFormData.billNo = response.data.orderId;
          if (response.data.errMsg != null) {
            this.$alert(response.data.errMsg, "提示", {
              confirmButtonText: "确定",
              type: "warning",
              closeOnClickModal: true,
              callback: (action) => {
              },
            });
          }
          this.corpOrderIdDisabled = true;
          this.refreshCodesPanel();
          this.$refs.inputRef.focus();
          this.$refs.inputRef.select();
          this.orderFormData.relId = null;
        } else {
          if (response.code == 502) {
            //该产品绑定多个产品ID处理
            this.curRow = response.data;
            this.orderFormData.billNo = this.curRow.orderId;
            this.refreshCodesPanel();
            this.$message.error(response.message);
            this.selectRlTitle = response.message;
            //判断是出库需要选择供应商的时候把供应商值传过去
            if (tQuery.selectSupId != null) {
              this.codeFormData.selectSupId = tQuery.selectSupId
            } else {
              this.codeFormData.selectSupId = false
            }
            //DI绑定多个产品,请指定对应产品 时候传递关键字做过滤
            this.codeFormData.key = "key";
            this.selectRlVisible = true;
          } else if (response.code == 503) {
            //该产品绑定多个供应商处理
            this.curRow = response.data;
            this.orderFormData.billNo = this.curRow.orderId;
            this.codeFormData.relId = this.curRow.relId;
            this.refreshCodesPanel();
            this.selectUnitTitle = response.message;
            this.$message.error(response.message);
            this.dialogTableVisible = true;
          } else if (response.code == 504) {
            this.$confirm(response.message, "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "忽略",
              type: "error",
            })
              .then(() => {
                tQuery.ignoreExpire = true;
                this.addCodeSubmit(tQuery);
              })
              .catch(() => {
              });
          } else if (response.code == 505) {
            this.$confirm(response.message, "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning",
            })
              .then(() => {
                tQuery.ignoreRecentExpire = true;
                this.addCodeSubmit(tQuery);
              })
              .catch(() => {
              });
          } else if (response.code == 605) {
            this.$confirm(response.message, "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning",
            })
              .then(() => {
              })
              .catch(() => {
              });
            return;
          } else if (response.code == 604) {
            this.$confirm(response.message, "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
              type: "warning",
            })
              .then(() => {
              })
              .catch(() => {
              });
            return;
          } else if (response.code == 507) {
            this.editOriginCodeVisible = true;
            this.editTitle = response.message;
            this.codeFormData.produceDate = response.data.produceDate;
            this.codeFormData.expireDate = response.data.expireDate;
            this.codeFormData.batchNo = response.data.batchNo;
            this.codeFormData.serialNo = response.data.serialNo;
            this.codeFormData.corpOrderId = this.orderFormData.corpOrderId;
            this.$message({
              type: "error",
              message: "提交失败！" + this.editTitle,
              customClass: "messageIndex",
            });
          } else if (response.code == 511) {
            //该UDI码绑定多个货位处理
            this.spaceCodeList = response.data;
            this.selectSpaceVisible = true;
          } else {
            this.$alert(response.message, "提示", {
              confirmButtonText: "确定",
              type: "warning",
              closeOnClickModal: true,
              callback: (action) => {
                this.$refs.inputRef.focus();
                this.$refs.inputRef.select();
              },
            });
          }
        }
        // this.loading = false;
      });
    },

    refreshCodesPanel() {
      // this.warnResult = "";
      // this.errResult = "";
      // this.result = "";
      this.warnVisible = false;
      this.errVisible = false;

      this.isCodeAlive = false;
      this.isBizDetailAlive = false;
      this.isCodeDetailAlive = false;
      this.isSickerAlive = false;

      this.$nextTick(() => {
        //重新加载组件
        this.isCodeAlive = true;
        this.isBizDetailAlive = true;
        this.isCodeDetailAlive = true;
        this.isSickerAlive = true;

      });

      //选择性刷新
      if (this.isCheckResultAlive) {
        this.isCheckResultAlive = false;
        this.$nextTick(() => {
          //重新加载组件
          this.isCheckResultAlive = true;
        });
      }
    },

    refreshOrder(orderQuery) {
      this.orderFormData = orderQuery;
      this.scanCode = "";
      this.result = "";
      this.refreshCodesPanel()
      this.init();
    },

    //撤回单据
    revokeBill() {
      this.$confirm("是否确定撤回单据至草稿状态?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          let query = {billNo: this.orderFormData.billNo};
          this.retractLoading = true
          rollbackWaitcheck(query)
            .then((response) => {
              this.retractLoading = false
              if (response.code == 20000) {
                this.$message.success("撤回成功！");
                if (this.closeDialog != undefined) {
                  this.closeDialog();
                }
              } else {
                this.$message.error(response.message);
              }
            })
            .catch(() => {
              this.retractLoading = false
            });
        })
        .catch(() => {
        });
    },
    hideSearch() {
      this.showSearch = !this.showSearch;
    },

    submitCheckDialog() {
      this.checkTipDialogVisible = true;
    },

    //待校验以扫码结果为准
    submitCodeResult(query) {
      submitCodeResult(query).then((response) => {
        this.codeLoading = false
        if (response.code === 20000) {
          this.$message.success("提交成功");
          if (this.closeDialog != undefined) {
            this.closeDialog();
          }
        } else {
          this.$message.error(response.message);
        }
      });
    },

    //待校验以正确结果为准
    submitCheckResult(query) {
      submitCheckResult(query).then((response) => {
        this.checkLoading = false
        if (response.code === 20000) {
          this.$message.success("提交成功");
          if (this.closeDialog != undefined) {
            this.closeDialog();
          }
        } else {
          this.$message.error(response.message);
        }
      });
    },


    submit(val) {
      if (this.$isBlank(this.orderFormData.action)) {
        this.$message.warning("单据类型不能为空！");
        return
      }
      if (this.curAction.corpType === 0 || this.curAction.corpType === 2 || (this.curAction.corpType === 1 && !this.curAction.genUnit)) {
        if (this.$isBlank(this.orderFormData.fromCorp) && this.$isBlank(this.orderFormData.sickerAdNum)) {
          this.$message.warning("请选择往来单位！");
          return;
        }
      }
      if (this.curAction.corpType == 3) {
        if (this.$isBlank(this.orderFormData.fromInvCode)) {
          this.$message.warning("请选择往来单位！");
          return;
        }
      }
      if (this.curAction.corpType === 1 && this.curAction.genUnit) {
        if (this.$isBlank(this.orderFormData.fromCorp) && this.$isBlank(this.orderFormData.sickerAdNum)) {
          this.$message.warning("请选择往来单位！");
          return;
        }
      }
      let tQuery = Object.assign(
        JSON.parse(JSON.stringify(this.orderFormData))
      );
      tQuery.orderId = this.orderFormData.billNo;
      tQuery.productType = 1
      console.log(tQuery.orderId);
      if (val == 1) {
        //校验btn
        this.checkLoading = true
      } else if (val == 2) {
        //扫码btn
        this.codeLoading = true
      } else {
        this.submitLoading = true
      }
      if (this.viewType == 2) {   //扫码单据立即提交
        submitCodes(tQuery).then((response) => {
          if (val == 1) {
            //校验btn
            this.checkLoading = false
          } else if (val == 2) {
            //扫码btn
            this.codeLoading = false
          } else {
            this.submitLoading = false
          }
          if (response.code === 20000) {
            this.$message.success("提交成功,等待处理，请刷新后查看！");
            this.successCloseData()
            console.log(this.closeDialog())
            if (this.closeDialog != undefined) {
              this.closeDialog();
            }
          } else {
            this.$message.error(response.message);
          }
        });
      } else if (this.viewType == 1) {    //业务单据提交提交
        if (val == 1 || this.curAction.checkWebNew == 2)
          tQuery.fromVailPi = 2;
        else
          tQuery.fromVailPi = 1;
        submitBiz(tQuery).then((response) => {
          if (val == 1) {
            //校验btn
            this.checkLoading = false
          } else if (val == 2) {
            //扫码btn
            this.codeLoading = false
          } else {
            this.submitLoading = false
          }
          if (response.code === 20000) {
            this.$message.success("提交成功");
            this.successCloseData()
            if (this.closeDialog != undefined) {
              this.closeDialog();
            }
          } else {
            this.$message.error(response.message);
          }
        });
      } else if (this.viewType == 4) {
        submitAllocateBiz(tQuery).then((response) => {
          if (val == 1) {
            //校验btn
            this.checkLoading = false
          } else if (val == 2) {
            //扫码btn
            this.codeLoading = false
          } else {
            this.submitLoading = false
          }

          if (response.code === 20000) {
            this.$message.success("提交成功");
            this.successCloseData()
            if (this.closeDialog != undefined) {
              this.closeDialog();
            }
          } else {
            this.$message.error(response.message);
          }
        });
      } else if (this.viewType == 7) {    //待校验提交
        if (val == 1) {
          this.$confirm("此操作将以校验的正确结果重新生成业务单并提交，是否继续？", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
            .then(() => {
              this.checkLoading = true
              this.submitCheckResult(tQuery);
            })
            .catch(() => {
              this.this.checkLoading = false
            });

        } else {
          this.$confirm("此操作将以扫码结果重新生成业务单并提交，是否继续？", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
            .then(() => {
              this.codeLoading = true
              this.submitCodeResult(tQuery);
            })
            .catch(() => {
              this.codeLoading = false
            });

        }
      } else {   //配货拣货后后提交
        submitOrderWeb(tQuery).then((response) => {
          this.submitLoading = false
          if (response.code === 20000) {
            this.$message.success("提交成功");
            this.successCloseData()
            this.result = ""
            this.$refs.inputRef.focus();
            if (this.closeDialog != undefined) {
              this.closeDialog();
            }

          } else {
            this.$message.error(response.message);
          }
        });
      }
      this.$refs.inputRef.focus();
    },
    //选择单据
    selectPrescribe() {
      if (this.$route.query.busType != null) {
        this.orderFormData.busType = this.$route.query.busType
      }
      this.selectPrescriptionVisible = true;
    },
    //选入草稿单据
    chooseDraftOrder() {
      if (this.$isBlank(this.orderFormData.workPlaceCode)) {
        this.$message.warning("请选择工位！");
        return;
      }
      this.rowData.workPlaceCode = this.orderFormData.workPlaceCode
      this.rowData.fifoSplit = this.orderFormData.fifoSplit
      this.$router.push({query: {...this.$route.query, splitType: this.splitType}, path: this.$route.path})
      this.chooseDraftOrderVisible = true
    },
    closeChooseDialog() {
      this.chooseDraftOrderVisible = false
    },
    handleChoose(currentRow) {
      this.orderQuery = currentRow
      this.chooseDraftOrderVisible = false
      this.refreshOrder(this.orderQuery)
      //选入单据 判断此订单是否正在处理中
      // this.upOrderStatus()

    },
    upOrderStatus(){
      let query = {
        billNo : this.orderQuery.billNo
      }
      upProcessing(query).then(res => {
        if (res.code == 20000){

        }else if (res.code == 501){
          this.$message.error("当前单据正在处理中，请重新选择单据")
          this.$refs.chooseDraftOrder.getList();
          this.chooseDraftOrderVisible = true
          //当前订单正在处理中，刷新列表重新选择草稿订单
        }else {
          return this.$message.error("系统繁忙")
        }
      })
    },
    //获取选入的完成单
    confirmSelect(row) {
      this.selectPrescriptionVisible = false;
      this.formData = row;
      this.batchAddCodeByOrderFinish(row.billNo);
    },
    draftOrder() {
      let tQuery = Object.assign(
        JSON.parse(JSON.stringify(this.orderFormData))
      );
      tQuery.billNo = this.orderFormData.billNo;
      tQuery.orderType = 2;
      console.log("tQuery:");
      console.log(tQuery);
      if (this.orderFormData.billNo == null) {
        this.$message.error("请先录入单据信息！");
        return;
      }
      this.saveLoading = true
      if (this.splitType == 'return'){
        tQuery.inoutType = 2
      }else {
        tQuery.inoutType = 1
      }
      saveOrderWeb(tQuery).then((response) => {
        this.saveLoading = false
        if (response.code === 20000) {
          this.$message.success("保存成功")
          this.successCloseData()
          this.result = ""
          this.$refs.inputRef.focus();
        } else {
          this.$message.error(response.message);
        }
        this.loading = false;
        this.saveLoading = false
      });
    },
    // 刷新表单
    resetForm() {
      if (this.$refs["dataForm"]) {
        // 清空验证信息表单
        this.$refs["dataForm"].clearValidate();
        // 刷新表单
        this.$refs["dataForm"].resetFields();
      }
    },
    enterKey(event) {
      this.warnResult = "";
      this.errResult = "";
      this.result = "";
      this.warnVisible = false;
      this.errVisible = false;

      this.checkSuccess = true;
      if (this.getDMHotskeyValue(this.scanCode))
        return
      this.codeFormData.code = this.scanCode.trim();

      if (this.codeFormData.code.includes(";")) {
        const codeArray = this.codeFormData.code.split(";");
        let params = {
          codeList: codeArray,
        };
        this.batchVailCode(params)
        return;
      }

      let tQuery = {
        originCode: this.originCode,
        code: this.codeFormData.code.trim(),
      };
      enterCodeWeb(tQuery).then((response) => {
        if (response.code === 20000) {
          this.$refs.inputRef.focus();
          this.$refs.inputRef.select();
          this.isSuccess = true;
          this.printCodeResult(response.data)
          this.codeFormData.code = response.data.code;
          this.scanCode = ""
          this.addCode();
        } else {
          if (response.code == 502) {
            this.checkSuccess = false;
            this.isSuccess = false;
            this.scanCode = ""
            this.printCodeResult(response.data)
            this.codeFormData.code = response.data.code;
            this.originCode = this.codeFormData.code;
          } else if (response.code == 501) {
            this.checkSuccess = false;
            this.scanCode = ""
            this.$message.error(response.message);
          } else if (response.code == 503) {
            this.checkSuccess = false;
            this.isSuccess = false;
            this.scanCode = ""
            this.printCodeResult(response.data)
            this.codeFormData.code = response.data.code;
            this.$confirm(response.message, "提示", {
              type: "warning",
            })
              .then(() => {
                this.codeFormData.code = response.data.code;
                this.addCode();
              })
              .catch(() => {
                this.codeFormData.code = response.data.code;
              });
          } else if (response.code == 508) {
            this.scanCode = ""
            this.originCode = "";
            this.codeFormData.code = "01" + response.data.nameCode;
            this.originCode = this.codeFormData.code;
          } else {
            this.$alert(response.message, "提示", {
              confirmButtonText: "确定",
              type: "warning",
              closeOnClickModal: true,
              callback: (action) => {
                this.$refs.inputRef.focus();
                this.$refs.inputRef.select();
              },
            });
          }
        }
        this.loading = false;
      });
    },

    getInputFocus(event) {
      event.currentTarget.select();
    },
    tableSelection() {
      this.$refs.multipleTable.clearSelection();
      this.$refs.multipleTable.toggleAllSelection();
    },
    handleSizeChange(val) {
      this.query.limit = val;
      this.getCodeList();
    },
    handleCurrentChange(val) {
      this.query.page = val;
      this.getCodeList();
    },

    intentBack() {
      this.$router.go(-1);
    },
    selectSupUnit(row) {
      this.dialogTableVisible = false;
      this.orderFormData.selectSupId = row.erpId;
      this.addCode();
    },

    selectBindRl(row) {
      this.selectRlVisible = false;
      this.orderFormData.relId = row.id;
      this.addCode();
    },


    selectSpaceBind(val) {
      if (this.curAction.scanPreIn) {
        this.orderFormData.checkPreInSpaceCode = val;
      } else if (this.curAction.advancePreIn) {
        this.orderFormData.preCurSpaceCode = val;
      } else {
        this.orderFormData.curSpaceCode = val;
      }
      this.addCode();
      this.selectSpaceVisible = false;
    },


    closeCodeDialog() {
      this.editOriginCodeVisible = false;
      this.refreshCodesPanel();
    },
    //选入相关
    OptionalDocument() {
      this.selectorder = true;
    },

    sickChange(value) {
      this.orderFormData.sickerAdNum = value;
    },


    getDMHotskeyValue(str) {
      console.log(str)
      if (str.includes("DMHotskey")) {
        try {
          const jsonObj = JSON.parse(str);
          if (jsonObj.hasOwnProperty("DMHotskey")) {
            const dmhotskey = jsonObj.DMHotskey;
            if (dmhotskey.hasOwnProperty("workPlace")) {
              this.scanCode = ""
              this.orderFormData.workPlaceCode = dmhotskey.workPlace
              return true
            } else if (dmhotskey.hasOwnProperty("fifoSplit")) {
              this.scanCode = ""
              this.orderFormData.fifoSplit = dmhotskey.fifoSplit;
              return true;

            }
          }
        } catch (error) {
          console.log("字符串不是有效的 JSON 格式");
        }
      }
      return false;
    },
    printCodeResult(data, isSuccess) {
      const resultParts = ["扫码解析结果：" + data.code];

      if (data.udi) {
        resultParts.push("层级标识: " + data.udi);
      }
      if (data.batchNo) {
        resultParts.push("批次号: " + data.batchNo);
      }
      if (data.produceDate) {
        resultParts.push("生产日期: " + data.produceDate);
      }
      if (data.expireDate) {
        resultParts.push("失效日期: " + data.expireDate);
      }
      if (data.serialNo) {
        resultParts.push("序列号: " + data.serialNo);
      }
      this.result = resultParts.join(" , ");
    },
    printLabel() {
      let query = {
        labelId: 7,
      }
      printSplitLabel(query).then((response) => {
        const binaryData = [];
        binaryData.push(response);
        let url = window.URL.createObjectURL(
          new Blob(binaryData, {type: "application/pdf"})
        );
        window.open(url);
      }).catch(() => {
        this.loading = false;
      });

      this.clearOrder()
    },
    /**
     * 上货完成后，清空数据
     */
    clearOrder() {
      // this.$router.go(0)

      this.orderFormData = {
        billNo: null,
        corpOrderId: null,
        action: null,
        invCode: null,
        fromCorp: null,
        fromCorpName: null,
        fromName: null,
        fromInvCode: null,
        remark: null,
        fromType: 2,
        errMsg: null,
        checkPreInOrders: null,
        checkPreInInvCode: null,
        checkPreInSpaceCode: null,
        curSpaceCode: null,
        preSpaceCode: null,
        preCurSpaceCode: null,  //单据
        sickerAdNum: null,
        workPlaceCode: null,
        splitBusType: null,
        fifoSplit: 1,
      }
      this.scanCode = "";
      this.result = "";
      this.refreshCodesPanel()
      this.init();


    },

    init() {
      //页面初始化

      this.codeFormData.code = "";
      if (this.splitType == "search") {
      } else if (this.splitType == "out") {
        this.orderFormData.action = 'SC72197936495755';
      } else if (this.splitType == "return") {
        this.orderFormData.action = 'SC72249388338364';
      }
      this.orderFormData.fromCorp = "72198012799726";


      //页面类型
      this.viewCodeVisible = true;
      this.viewCodeDetailVisible = true;
      this.orderFormData.orderType = this.viewType;


      if (this.$isNotBlank(this.orderQuery.billNo)) {
        //编辑页面
        this.corpOrderIdDisabled = true;
        this.orderFormData = this.orderQuery;
        this.actionEnable = true;
        this.findMethod(this.orderFormData.fromCorp);
        this.curAction = {}
        this.refreshCodesPanel();
        this.findInvListByUser();
        this.initBusType();
        this.findFromInvList();
        // this.getWorkBindBusTypes(null);
      } else {
        //新增页面
        this.corpOrderIdDisabled = false;
        let date = new Date();
        this.orderFormData.createTime = parseTime(
          date,
          "{y}-{m}-{d} {h}:{i}:{s}"
        );
        this.orderFormData.corpOrderId =
          parseTime(date, "{y}{m}{d}{h}{i}{s}") +
          Math.ceil(Math.random() * 89 + 10);
        this.orderFormData.deptCode = this.$store.getters.deptCode;
        this.orderFormData.invCode = this.$store.getters.locInvCode;
        this.findInvListByUser();
        this.showSearch = true
      }
    },
    //处理事件
    handleRecCodesEvent(event) {
      console.log('接收 recCodes event:', event.detail.recCodes);
      let params = {
        codeList: event.detail.recCodes,
      };
      this.batchVailCode(params)
    },

    batchVailCode(params) {
      if (this.$isBlank(this.orderFormData.corpOrderId)) {
        let date = new Date();
        this.orderFormData.corpOrderId =
          parseTime(date, "{y}{m}{d}{h}{i}{s}") +
          Math.ceil(Math.random() * 89 + 10);
      }
      batchVailCode(params).then((response) => {
        if (response.code === 20000) {
          console.log("==滴码接收==", response.data);
          this.valiCodes = [];
          let list = response.data;
          list.forEach(item => {
            if (item.status === 1) {
              this.valiCodes.push(item.code);
            }
          });
          this.printMutiCodeResult(list)
          this.$refs.inputRef.focus();
          this.$refs.inputRef.select();
          if (this.valiCodes != null && this.valiCodes.length > 0) {
            this.orderFormData.codeList = this.valiCodes
            if (this.splitType == "out")
              this.orderFormData.inoutType = 1
            else
              this.orderFormData.inoutType = 2
            // this.orderFormData.inoutType = this.splitType; orderType
            this.orderFormData.orderType = 2
            batchAddCode(this.orderFormData).then((res) => {
              if (res.code === 20000) {
                if (res.data.orderId != null)
                  this.orderFormData.billNo = res.data.orderId;
                this.refreshCodesPanel(this);
                this.printMutiCodeResult(res.data.vailCodeResultResponses)
              } else {
                this.$message.error(res.message)
              }
            });
          }
        }
        // this.scanCode = this.valiCodes.join(";");
      });
    },
    batchAddCodeByOrderFinish(orderFinishBillNo) {
      this.orderFormData.orderFinishBillNo = orderFinishBillNo
      batchAddCodeByOrderFinish(this.orderFormData).then((res) => {
        if (res.code === 20000) {
          this.$refs.inputRef.focus();
          this.orderFormData.billNo = res.data.orderId;
          this.refreshCodesPanel(this);
          this.printMutiCodeResult(res.data.vailCodeResultResponses)
        } else {
          this.$message.error(res.message)
        }
      });
    },
    async printMutiCodeResult(vailCodeResultResponses) {
      this.warnResult = "";
      this.errResult = "";
      this.result = "";
      this.warnVisible = false;
      this.errVisible = false;
      for (let i = 0; i < vailCodeResultResponses.length; i++) {
        let data = vailCodeResultResponses[i]
        if (data.status == 1)
          this.result = this.result + ";" + vailCodeResultResponses[i].code;
        else if (data.status == 2) {
          this.warnResult = this.warnResult + "\n" + vailCodeResultResponses[i].code + ":" + vailCodeResultResponses[i].errMsg;
        } else if (data.status == 3) {
          this.result = this.result + "\n" + vailCodeResultResponses[i].code;
          // this.warnResult = this.warnResult + "\n" + vailCodeResultResponses[i].code + ":" + vailCodeResultResponses[i].errMsg;
          await this.popupTip(data)
        }
        // else
        //   this.errResult = this.errResult + "\n" + vailCodeResultResponses[i].code + ":" + vailCodeResultResponses[i].errMsg;
      }
      if (!isBlank(this.warnResult))
        this.warnVisible = true;
      if (!isBlank(this.errResult))
        this.errVisible = true;
    },
    getOrder(){
      let query = {
        workPlaceCode: this.workplaceId
      }
      getProcessingOrder(query).then(res => {
        if (res.code == 20000){
          if (res.data != null){
            this.refreshOrder(res.data)
          }
        }else {
          this.$message.error("获取错误")
        }
      })


    }
  },
  filters: {},
  mounted() {
    document.body.ondrop = function (event) {
      event.preventDefault();
      event.stopPropagation();
    };
    var that = this;
    var inputer = document.getElementById("inputer");
    window.sc = new A.KeyScaner(inputer); //传入要监听的DOM节点
    sc.onInput = function (text) {
      if (text.includes("delete")) {
        that.codeFormData.code = "";
        that.sictomText = "";
        that.originCode = "";
        return;
      }
      if (that.sitcomScan) {
        let tempTxt = text;
        let str = tempTxt.replace(/[\r]/g, "");
        that.sictomText = that.sictomText + str;
        that.codeFormData.code = that.sictomText;
      } else {
        that.codeFormData.code = text;
      }
    };
    inputer.focus();
    this.$refs.inputRef.focus();
    //环境判断
    if (window.navigator.userAgent.indexOf("GLXP_PC") != -1) {
      this.scanDisabled = true;
      window.removeEventListener('gwsh', this.handleRecCodesEvent);
      window.addEventListener('gwsh', this.handleRecCodesEvent);
    }
  },
  beforeDestroy() {
    window.removeEventListener('gwsh', this.handleRecCodesEvent);
  },
  created() {
    // this.splitType = this.$route.query.splitType;
    // if (this.splitType == null)
    this.splitType = this.fromSplitType
    this.init();
    if (this.$route.query.workplaceId != null) {
      this.corpOrderIdDisabled = true
      this.isLinkDisabled = true
      this.workplaceId = this.$route.query.workplaceId
      this.orderFormData.workPlaceCode = Number(this.$route.query.workplaceId);
      this.orderFormData.splitBusType = "YPCF002"
      //查找当前用户工位是否有正在处理的单据
      // this.getOrder()
    } else {
      if (this.orderQuery.workPlaceCode != null) {
        this.orderFormData.workPlaceCode = String(this.orderQuery.workPlaceCode);
        // if (this.orderQuery.splitBusType != null){
        //   this.orderFormData.busType = this.orderQuery.splitBusType;
        // }
      }
    }


  },
};
</script>


<style scoped>
.scroll-alert {
  width: 100%; /* 或者你需要的宽度 */
  overflow: hidden;
  white-space: nowrap;
  box-sizing: border-box;
  /*border: 1px solid #f56c6c; !* 类似于 Element UI 警告框的边框 *!*/
  background-color: rgba(255, 235, 59, 0.1); /* 类似于 Element UI 警告框的背景色 */
  padding: 10px;
  position: relative;
}

.scroll-text {
  display: inline-block;
  padding-left: 100%; /* 初始位置在容器右侧 */
  animation: scroll 10s linear infinite; /* 滚动动画 */
}

@keyframes scroll {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-100%);
  }
}

.query-form-item {
  margin-right: 5px;
  margin-bottom: 6px;
}

#inputer {
  width: 100%;
  min-height: 30px;
  background-color: white;
  border: #d0d0d0;
  border-style: solid;
  border-width: 0.1px;
  color: #4a4a4a;
}

#inputer:focus {
  width: 100%;
  min-height: 30px;
  background-color: white;
  border: #0080ff;
  border-style: solid;
  border-width: 0.1px;
  color: #4a4a4a;
}

.ime-disabled {
  ime-mode: disabled;
}

.result-display {
  border: 2px solid #ccc; /* 默认外框颜色 */
  border-radius: 10px;
  margin-top: 5px;
  margin-left: 15px;
  margin-right: 25px;
  padding-left: 25px;
  /* 不设置背景颜色 */
}

.result-success {
  border-color: #4CAF50; /* 成功时外框颜色 */
}

.result-failure {
  border-color: #0080ff; /* 失败时外框颜色 */
}

.result-text {
  height: 18px;
  /* 你可以在这里设置默认的文本颜色或其他样式 */
}

.result-text-success {
  color: #4CAF50; /* 成功时文本颜色 */
  font-size: 14px;
}

.result-text-failure {
  color: #0080ff; /* 失败时文本颜色 */
  font-size: 14px;
}


</style>



