<template>
  <div class="index_box">
    <el-drawer
      title=""
      :visible.sync="drawer"
      v-if="drawer"
      :before-close="handleClose"
      :custom-class="isFullscreen ? 'not-fullscreen' : 'is-fullscreen'"
      :with-header="false"
      append-to-body
    >
      <div>
        <div>
          <div class="seek-list" style="background-color: #157a2c">
            <!-- <div>
              <el-input
                style="width: 180px; margin-right: 5px"
                clearable
                v-model="keyWord"
                placeholder="请输入关键字"
                @clear="handleSearch"
              />

              <el-button
                size="mini"
                type="primary"
                style="margin: 0 5px"
                @click="handleSearch"
                >查询</el-button
              >

              <template>
                <el-popover
                  placement="top-start"
                  width="200"
                  trigger="hover"
                  content="支持工单编码，产品编码，产品名称，产品规格，牌号，型号，批次号查询。"
                >
                  <i
                    class="el-icon-question"
                    slot="reference"
                    style="color: #40a9ff; font-size: 14px"
                  ></i> </el-popover
              ></template>
            </div> -->
            <div
              style="
                width: 100%;
                color: #fff;
                display: flex;
                justify-content: space-between;
              "
            >
              <div>
                <b style="margin-right: 50px; font-size: 14px"
                  >当前工序：{{ title }}</b
                >
                <b style="font-size: 14px">下道工序：{{ title1 }}</b>
              </div>

              <div>
                <b style="font-size: 14px; margin-right: 10px; color: orange"
                  >工艺路线：{{ workOrderInfo.produceRoutingName }}
                </b>
                <b style="font-weight: blod; font-size: 14px">
                  操作员：{{ info.name }}
                </b>
              </div>

              <div class="rx-ec">
                <el-button
                  icon="el-icon-full-screen"
                  type="text"
                  style="color: #fff; font-size: 14px"
                  @click="handleFull"
                  >{{ isFullscreen ? '全屏' : '缩小' }}</el-button
                >
                <el-button
                  icon="el-icon-circle-close"
                  type="text"
                  style="color: #fff; font-size: 14px"
                  @click="handleClose"
                  >关闭</el-button
                >
              </div>
            </div>
          </div>

          <div class="drawer_content">
            <el-steps :active="activeIndex" space="20px" align-center>
              <el-step
                v-for="(item, index) in routeList"
                :key="index"
                :title="item.taskTypeName"
                @click.native="handIdx(index, item)"
                :description="desIndex == index ? '此处' : ''"
                :class="desIndex == index ? 'active' : ''"
                :status="errorIndex == index ? 'error' : ''"
              ></el-step>
            </el-steps>
          </div>

          <el-tabs type="border-card">
            <el-tab-pane label="基本信息">
              <ele-split-layout
                space="0px"
                width="26%"
                :resizable="true"
                :min-size="200"
                :max-size="-200"
                :left-style="{
                  overflow: 'hidden',
                  width: '100%'
                }"
                :right-style="{ overflow: 'hidden' }"
                :responsive="false"
                style="height: calc(100vh - 230px)"
              >
                <!-- 详细信息 -->
                <div class="left_main">
                  <div class="top">
                    <Info :workOrderInfo="workOrderInfo"></Info>
                  </div>
                </div>
                <!-- //报工信息 -->
                <template v-slot:content>
                  <div class="right_main">
                    <!-- 领料 -->
                    <!-- <div v-if="operationType == 'pick'"> -->
                    <div v-if="operationType == 'pick'">
                      <pickDetails
                        ref="pickListRef"
                        :workTaskId="workTaskId"
                        :taskId="taskObj.id"
                        @pickAdd="pickAdd"
                      ></pickDetails>
                    </div>

                    <div v-if="operationType == 'feed'">
                      <!-- 投料 -->
                      <feeding
                        :workListIds="workListIds"
                        :feedNeedEquipment="feedNeedEquipment"
                        @feedSuccess="feedSuccess"
                      ></feeding>
                    </div>

                    <div v-if="operationType == 'job'">
                      <!-- // 报工列表 入库 -->

                      <warehousing
                        v-if="taskObj.id == -1"
                        :workListIds="workListIds"
                        ref="wareRef"
                        @warehouseSuccess="warehouseSuccess"
                        :workPlanType="workPlanType"
                      ></warehousing>

                      <!-- // 设备 入库 -->
                      <!-- 普通报工 -->
                      <!-- <jobBooking
                  v-else
                  :workListIds="workListIds"
                  ref="jobRef"
                  :reportNeedFeed="reportNeedFeed"
                ></jobBooking> -->

                      <jobBooking
                        v-else
                        :workListIds="workListIds"
                        ref="jobRef"
                        :reportNeedFeed="reportNeedFeed"
                        @jobSuccess="jobSuccess"
                        :workPlanType="workPlanType"
                      ></jobBooking>

                      <!-- <workPlan
                  style="width: 100%"
                  v-else
                  :workListIds="workListIds"
                  ref="jobRef"
                  :reportNeedFeed="reportNeedFeed"
                >
                </workPlan> -->
                    </div>

                    <!-- 工步 -->
                    <div v-if="operationType == 'workStep'"> </div>
                    <!-- 质检工序 -->

                    <div v-if="operationType == 'inspection'">
                      <inspection
                        :workListIds="workListIds"
                        ref="inspectionRef"
                      ></inspection>
                    </div>

                    <!-- 委外 -->
                    <div
                      v-if="operationType == 'Outsourcing' && isType == '3'"
                      class="right_main_box"
                    >
                      <outsourcingDetails
                        ref="outsourcingListRef"
                        @outsourcingAdd="outsourcingAdd"
                        v-if="!isStep && !isOutsource && !isPleaseEntrust"
                        :chooseType="chooseType"
                      ></outsourcingDetails>

                      <outsourcing
                        :outsourceFormVal="outsourceForm"
                        :taskObj="taskObj"
                        :workListIds="workListIds[0]"
                        :workData="workInfoList"
                        @changePlugIn="changePlugIn"
                        @changeCancel="changeCancel"
                        :chooseType="chooseType"
                        v-if="isStep"
                      ></outsourcing>

                      <outsourceList
                        :workData="workInfoList"
                        :taskObj="taskObj"
                        :outsourceFormVal="outsourceForm"
                        :chooseType="chooseType"
                        @closeForm="closeForm"
                        @outScucc="outScucc"
                        v-if="isOutsource"
                      ></outsourceList>

                      <!--   -->
                      <!-- <outsourceList
                        :outsourceFormVal="outObj"
                        @closeForm="closeForm"
                        @outScucc="outScucc"
                        v-if="isOutsource"
                      ></outsourceList> -->

                      <pleaseEntrust
                        :outsourceFormVal="outObj"
                        @closeForm="closeForm"
                        @outScucc="outScucc"
                        v-if="isPleaseEntrust"
                      ></pleaseEntrust>
                    </div>
                  </div>
                </template>
              </ele-split-layout>

              <footBtn
                @footBtn="footBtn"
                :type="type"
                :singleReportInspection="singleReportInspection"
                style="background: rgba(223, 250, 222, 0.6); padding: 10px"
              ></footBtn>
            </el-tab-pane>

            <el-tab-pane label="投料详情">
              <feedDetails
                :routeObj="routeObj"
                :curTaskObj="curTaskObj"
              ></feedDetails
            ></el-tab-pane>

            <el-tab-pane label="报工详情">
              <jobDetails
                :routeObj="routeObj"
                :curTaskObj="curTaskObj"
                :newId="newId"
              ></jobDetails>
            </el-tab-pane>

            <el-tab-pane label="生产明细">
              <productionDetails
                :workOrderInfo="workOrderInfo"
              ></productionDetails>
            </el-tab-pane>

            <!-- <el-tab-pane label="退料详情"> </el-tab-pane> -->
          </el-tabs>
        </div>
      </div>

      <!--领料弹框 -->
      <picking
        v-if="pickingShow"
        @close="pickingClose"
        :workListIds="workListIds"
      ></picking>

      <!-- 工艺文件 -->
      <wokePopup ref="wokePopupRef"></wokePopup>
      <!-- 检验报工 -->
      <workPlan ref="jobRefs" @closeWorkPlan="closeWorkPlan"> </workPlan>
      <!-- <workes ref="jobRefs"> </workes> -->

      <!-- :workListIds="workListIds" :taskId="taskObj.id" -->
      <!-- 工步 -->
      <workStep ref="workStepRef" />
      <!--  任务  -->
      <TaskDialog ref="taskDialogRef" />

      <!-- 异常 -->
      <createError ref="createErrorRef" />

      <addPlease ref="addPleaseRef" @refresh="refreshPlease"></addPlease>
    </el-drawer>
  </div>
</template>

<script>
  import Info from './info.vue';
  import TaskDialog from '@/views/produce/components/taskDialog/index.vue';
  import Search from '@/views/produce/components/search.vue';
  import footBtn from '@/views/produce/components/footBtn.vue';
  // import produceOrder from './components/produceOrder.vue';
  import produceOrder from '@/views/produce/components/new_produceOrder.vue';
  import productionResource from '@/views/produce/components/productionResource/index.vue';
  import outsourcing from '@/views/produce/components/outsourcing/index.vue';
  import picking from '@/views/produce/components/picking/index.vue';
  import wokePopup from '@/views/produce/components/picking/wokePopup.vue';
  import inspection from '@/views/produce/components/inspection/newIndex.vue';
  // import inspection from './components/inspection/index.vue';

  import pickDetails from '@/views/produce/components/picking/details.vue';
  import AssetTree from '@/components/AssetTree/joobIndex.vue';
  import feeding from '@/views/produce/components/feeding/index.vue';
  import outsourcingDetails from '@/views/produce/components/outsourcing/details.vue';

  import jobBooking from '@/views/produce/components/jobBooking/index.vue';
  import workPlan from '@/views/produce/components/workPlan/index.vue';
  // import workes from './components/workPlan/components/work.vue';
  import warehousing from '@/views/produce/components/warehousing/index.vue';
  // import outsourceList from '@/views/produce/components/outsourcing/outsourceList.vue';
  import outsourceList from '@/views/produce/components/outsourcing/new_outsourceList.vue';
  import pleaseEntrust from '@/views/produce/components/outsourcing/pleaseEntrust.vue';
  import workStep from '@/views/produce/components/workStep/index.vue';
  import createError from '@/views/produce/components/createError.vue';
  import productionDetails from '../workOrderList/components/productionDetails.vue';
  import { parameterGetByCode } from '@/api/system/dictionary-data';

  import {
    getByTaskId,
    pcCheckOutsource,
    getTaskInstanceById,
    checkOutsourceMaterial,
    listTask,
    factoryworkstationPage,
    nextTask,
    checkPleaseEntrust
  } from '@/api/produce/index';
  import { getTaskInstanceList } from '@/api/produce/job';
  import { workorderInfo } from '@/api/produceOrder/index.js';
  import feedDetails from '@/views/produce/components/feeding/details.vue';
  import jobDetails from '@/views/produce/components/jobBooking/details.vue';
  import addPlease from '@/views/produce/components/outsourcing/addPlease.vue';

  export default {
    components: {
      Search,
      footBtn,
      wokePopup,
      produceOrder,
      productionResource,
      outsourcing,
      picking,
      pickDetails,
      outsourceList,
      feeding,
      AssetTree,
      jobBooking,
      inspection,
      warehousing,
      workStep,
      workPlan,
      TaskDialog,
      createError,
      Info,
      feedDetails,
      jobDetails,
      productionDetails,
      outsourcingDetails,
      pleaseEntrust,
      addPlease
    },
    data() {
      return {
        name: '',
        activeName: '0',
        taskName: '',
        keyWord: '', //搜索
        title: '',
        type: '',
        loading: false,
        isLoading: null,
        operationType: null,
        popupType: '', // 弹窗
        workListIds: [],
        factoryworkstationList: [],
        title1: '',
        arr: [],
        arrTow: [],
        produceTaskList: [],
        isType: '',
        isStep: false,
        outsourceForm: {},
        outObj: {},
        pickingShow: false,
        wokePopup: false,
        workOrderInfo: {},
        routeList: [],
        activeIndex: 0,
        desIndex: 0,
        errorIndex: 10000,
        drawer: false,
        workData: {},
        isFullscreen: false,
        isOutsource: false,
        chooseType: '1',
        routeObj: {
          id: null
        },
        BomObj: {},
        defaultProps: {
          children: 'children',
          label: 'newName'
        },
        defaultPropsTow: {
          children: 'children',
          label: 'name',
          value: 'code'
        },
        feedNeedEquipment: 0, //投料是否要添加生产设备1是0否
        reportNeedFeed: 0, //生产质检是否需要处置再报工1是0否
        singleReportInspection: null, //获取选中的工单是单个还是批量
        workTaskId: null, //选中的工单工序id
        workStepQueryParam: {
          taskId: null,
          workOrderId: null,
          bomCategoryId: null
        },
        newId: '',
        curTaskObj: null,
        produceList: [],
        workPlanType: '',
        isPleaseEntrust: false,
        workInfoList: {}
      };
    },

    computed: {
      taskObj() {
        return this.$store.state.user.taskObj;
      },
      info() {
        return this.$store.state.user.info;
      },
      rightShow() {
        return (type) => {};
      }
    },

    created() {
      this.init();

      this.getTaskList();
      this.getFactoryworkstationPageList();

      this.operationType = null;
      this.workListIds = [];
    },
    methods: {
      tabClickValue() {
        this.name = '';
        this.seekInput();
      },
      // 前端筛选
      seekInput() {
        // console.log(activeName);

        if (this.activeName == '0') {
          if (!this.name) return (this.produceTaskList = this.arr);
          this.produceTaskList = this.produceTaskList.filter((item) => {
            return item.name.indexOf(this.name) > -1;
          });
        } else {
          if (!this.name) return (this.factoryworkstationList = this.arrTow);
          this.factoryworkstationList = this.factoryworkstationList.filter(
            (item) => {
              return item.name.indexOf(this.name) > -1;
            }
          );
        }
      },

      //  折叠悬浮中样式调整
      init() {
        this.$store.dispatch('theme/setCollapse', true);
      },
      async getTaskName(value) {
        let res = await nextTask({
          taskId: this.taskObj.id,
          workOrderIds: [value.id]
        });

        const title1 = res.data.map((item) => item.taskTypeName).toString();
        this.title1 = title1 ? title1 : '';
      },
      handleSearch() {
        let obj = {
          keyWord: this.keyWord,
          taskName: this.taskName
        };
        this.$refs.produceOrder.handleSearch(obj);
        //handleSearch(this.code);
      },

      handleNodeClickNew(info) {
        // this.current = info;

        let current = { id: info.id };

        this.$store.commit('user/currentObj', current);
      },
      setRootId(id) {
        this.rootId = id;
      },
      // 点击工序
      // handleNodeClick(data) {
      //   this.feedNeedEquipment = data.feedNeedEquipment;
      //   this.reportNeedFeed = data.reportNeedFeed;

      //   let obj = {
      //     1: `${data.workCenterName}-${data.name}(普通工序)`,
      //     3: `${data.workCenterName}-${data.name}(质检工序)`,
      //     4: `${data.workCenterName}-${data.name}(包装工序)`,
      //     5: `${data.workCenterName}-${data.name}(入库工序)`,
      //     6: `${data.workCenterName}-${data.name}(质检工序)`
      //   };

      //   this.title = obj[data.type] || '';
      //   this.type = data.type;
      //   let taskObj = {};
      //   taskObj = this.routeList.find((item) => item.taskId === data.taskId);
      //   console.log(taskObj, 'taskObj');
      //   this.$store.commit('user/setTaskObj', taskObj);
      // },

      handleChoose(val) {
        console.log(val);
      },

      handleFull() {
        this.isFullscreen = !this.isFullscreen;
        this.$forceUpdate();
      },

      // 获取工序列表
      getTaskList() {
        listTask().then((res) => {
          res.map((v) => {
            v.newName = `${v.workCenterName}-${v.name}`;
          });
          this.produceTaskList = res;
          this.arr = JSON.parse(JSON.stringify(this.produceTaskList));
          //默认选择第一个工序
          // if (this.produceTaskList?.length) {
          //   this.$store.commit('user/setTaskObj', this.produceTaskList[0]);
          //   this.$nextTick(() => {
          //     this.$refs.taskListRef.setCurrentKey(this.produceTaskList[0].id);
          //   });
          // }
          // newName
        });
      },

      // 获取工位
      getFactoryworkstationPageList() {
        factoryworkstationPage({ pageNum: 1, size: 99999999 }).then((res) => {
          this.factoryworkstationList = res.list;

          this.arrTow = JSON.parse(JSON.stringify(this.factoryworkstationList));

          // newName
        });
      },

      changeCancel(activeType) {
        this.isStep = false;
        this.chooseType = activeType;
        if (this.chooseType == '1') {
          this.$nextTick(() => {
            this.$refs.outsourcingListRef.getDataList(this.workData.code);
          });
        } else if (this.chooseType == '2') {
          this.$nextTick(() => {
            this.$refs.outsourcingListRef.getPleaseData(this.workData.code);
          });
        }
      },

      closeForm() {
        this.isOutsource = false;
        this.isPleaseEntrust = false;
        this.$nextTick(() => {
          this.$refs.outsourcingListRef.getDataList(this.workData.code);
        });
      },
      outScucc() {
        // this.operationType = null;
        this.isOutsource = false;
        this.isPleaseEntrust = false;
        this.$nextTick(() => {
          this.$refs.outsourcingListRef.getDataList(this.workData.code);
        });
      },

      // 切换组件
      // async changePlugIn(e) {
      //   this.outObj = e;

      //   let req = {
      //     taskId: e.taskId,
      //     taskIds: e.taskIds,
      //     workOrderId: e.workOrderId,
      //     quantity: e.formedNumLast
      //   };
      //   const res = await checkOutsourceMaterial(req);

      //   this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };

      //   this.isStep = false;
      //   this.isOutsource = true;
      // },

      async changePlugIn(e, index) {
        if (index == '1') {
          this.outObj = e;
          let req = {
            taskId: e.taskId,
            taskIds: e.taskIds,
            workOrderId: e.workOrderId,
            quantity: e.formedNumLast
          };

          const URL =
            index == '1' ? checkOutsourceMaterial : checkPleaseEntrust;

          const res = await URL(req);

          this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };

          this.isStep = false;
          this.isOutsource = true;
        } else if (index == '2') {
          this.outObj = e;
          let req = {
            taskId: e.taskId,
            taskIds: e.taskIds,
            workOrderId: e.workOrderId,
            quantity: e.formedNumLast
          };

          const res = await checkPleaseEntrust(req);

          this.outObj = { ...res.data, ...this.outsourceForm, ...this.outObj };

          this.isStep = false;
          this.isPleaseEntrust = true;
        }
      },

      pickingWokeClose() {
        this.wokePopup = false;
      },

      open(row) {
        this.curTaskObj = null;
        this.workOrderInfo = row;
        this.routeObj.id = this.workOrderInfo.id;
        this.getTaskFn();
        this.drawer = true;
        this.getOrderData();
      },

      async getOrderData() {
        await workorderInfo(this.workOrderInfo.id).then((res) => {
          this.workOrderInfo = res;
          this.workStepQueryParam.taskId = this.workOrderInfo.taskId;
          this.workStepQueryParam.workOrderId = this.workOrderInfo.id;
          this.workStepQueryParam.bomCategoryId =
            this.workOrderInfo.bomCategoryId;
          this.singleReportInspection = this.workOrderInfo.singleReport;
        });
      },

      handleClose() {
        this.drawer = false;
      },

      feedSuccess() {
        this.getOrderData();
        this.getTaskFn();
      },

      jobSuccess() {
        this.getOrderData();
        this.getTaskFn();
      },

      warehouseSuccess() {
        this.getOrderData();
        this.getTaskFn();
      },

      async getTaskFn() {
        await getTaskInstanceList(this.workOrderInfo.id).then((res) => {
          this.routeList = res;

          console.log(this.routeList, 'routeList');
          console.log(this.workOrderInfo, 'this.workOrderInfo');

          // 使用findIndex方法查找
          const index = this.routeList.findIndex(
            (item) => Number(item.taskId) == Number(this.workOrderInfo.taskId)
          );

          this.desIndex = index;
          console.log(this.routeList, '888888');
          this.newId = this.routeList[this.desIndex].taskId || '';

          if (this.workOrderInfo.taskId != -2) {
            this.curTaskObj = JSON.parse(JSON.stringify(this.routeObj));
          } else {
            this.curTaskObj = JSON.parse(JSON.stringify(this.routeList[0]));
            this.desIndex = 0;
          }
          this.activeIndex = index;
          this.workData = this.workOrderInfo;
          this.handIdx(this.activeIndex, this.routeList[index]);
        });
      },

      async getCodeData(req) {
        await parameterGetByCode({ code: 'enable_quality_plus' }).then(
          (res) => {
            if (res.value == '1') {
              this.$refs.jobRefs.open(req);
            }
          }
        );
      },

      footBtn(t) {
        this.workPlanType = '';
        // this.operationType = t;
        // 新增判断 *** 出现弹窗的时候不然右边数据消失
        if ((t == 'work' || t == 'workStep', t === 'task')) {
          this.popupType = t;
        } else {
          this.operationType = t;
        }

        if (
          Object.keys(this.$store.state.user.taskObj).length === 0 &&
          this.$store.state.user.taskObj.constructor === Object
        ) {
          this.$message.warning('请选择工序');
          return true;
        }
        if (['pick', 'feed', 'job', 'work', 'workStep', 'task'].includes(t)) {
          if (this.workListIds.length == 0) {
            this.$message.warning('请选择工单列表');
            return false;
          }
        }

        // console.log('按钮被点击了.....', t);
        if (t === 'job') {
          let req = {
            taskId: this.taskObj.id,
            workOrderId: this.workListIds[0],
            data: [this.workOrderInfo]
          };

          // console.log(this.workData.list, 'this.workListIds');
          // console.log(this.taskObj.type, 'this.taskObj');

          if (
            this.taskObj.type == 2 ||
            this.taskObj.type == 3 ||
            this.taskObj.type == 6
          ) {
            // this.$refs.jobRefs.open(req);
            this.getCodeData(req);
          }
        }

        if (t == 'pick') {
          this.$nextTick(() => {
            this.$refs.pickListRef.getList(this.workListIds);
          });
        }
        // 工步
        if (t === 'workStep') {
          if (this.workListIds.length > 1) {
            return this.$message.warning('工步只能选择一个工单！');
          }
          this.$refs.workStepRef.open(this.workStepQueryParam);
          // let req = {
          //   taskId: this.taskObj.id,
          //   workOrderId: this.workListIds[0]
          // };

          // this.$refs.wokePopupRef.open(req);
        }
        if (t === 'task') {
          if (this.workListIds.length > 1) {
            return this.$message.warning('任务只能选择一个工单！');
          }
          this.$refs.taskDialogRef.open(
            this.workStepQueryParam,
            this.workOrderInfo
          );
        }

        if (t === 'error') {
          if (this.workListIds.length > 1) {
            return this.$message.warning('异常只能选择一个工单！');
          }
          // console.log(this.workListIds, 'this.workListIds');
          this.$refs.createErrorRef.open('add', this.workOrderInfo);
        }
        // 工艺路线 *** 修改 判断只能选择一个
        // if (t === 'work') {
        //   let req = {
        //     taskId: this.taskObj.id,
        //     workOrderId: this.workListIds[0]
        //   };

        //   this.$refs.wokePopupRef.open(req);
        // }
        if (t === 'work') {
          if (this.workListIds.length > 1) {
            return this.$message.warning('工艺文件只能选择一个工单！');
          }
          let req = {
            taskId: this.taskObj.id,
            workOrderId: this.workListIds[0]
          };

          this.$refs.wokePopupRef.open(req);
        }
        if (t == 'feed') {
        }

        // 委外
        if (t == 'Outsourcing') {
          if (this.workListIds.length > 1) {
            return this.$message.warning('委外工序只能选择一个工单！');
          } else if (this.workListIds.length < 1)
            return this.$message.warning('请选择工单！');
          else {
            // /
            this.handOutsource(this.workListIds[0]);
          }
        }
      },

      handIdx(index, item) {
        console.log(this.routeList, 'routeList');
        console.log(index, item, 'handIdx');
        if (item.count > 0 || index == this.desIndex) {
          this.taskId = item.taskId;
        } else {
          if (item.taskId != -2) {
            this.$message.info('还未执行到此工序');
            return;
          }
        }

        this.curTaskObj = JSON.parse(JSON.stringify(item));

        console.log(item, 'item');

        this.feedNeedEquipment = item.feedNeedEquipment;
        this.reportNeedFeed = item.reportNeedFeed;

        let obj = {
          1: `${item.taskTypeName}(普通工序)`,
          3: `${item.taskTypeName}(质检工序)`,
          4: `${item.taskTypeName}(包装工序)`,
          5: `${item.taskTypeName}(入库工序)`,
          6: `${item.taskTypeName}(质检工序)`
        };

        this.title = obj[item.type] || '';
        this.type = item.type;
        let taskObj = {};
        taskObj = this.routeList.find((e) => e.taskId === item.taskId);
        taskObj.id = taskObj.sourceTaskId;
        taskObj.isOrderListData = true;
        if (taskObj.taskId != 2) {
          this.$store.commit('user/setTaskObj', taskObj);
          this.workListIds = [this.workOrderInfo.id];
        }

        // if (item.taskId == -2) {
        //   this.$message.info('完结状态不能点击');
        //   return;
        // } else {
        //   this.desIndex = index;
        //   this.newId = this.routeList[this.desIndex].taskId || '';
        //   this.getTaskName(this.workOrderInfo);
        // }
        if (item.taskId != -2) {
          this.desIndex = index;
          this.newId = this.routeList[this.desIndex].taskId || '';
          this.getTaskName(this.workOrderInfo);
        }
      },

      outsourcingAdd(type, activeName) {
        this.chooseType = activeName;
        this.getTaskInstanceByIdFn(this.workListIds[0]);

        // this.isStep = true;

        this.workInfoList = { list: [] };
        this.workInfoList.list.push(this.workData);
        if (this.chooseType == '2') {
          this.isStep = true;
        } else {
          this.isOutsource = true;
        }
      },

      async handOutsource(workOrderId) {
        this.isType = '';
        // return
        let param = {
          taskId: this.taskObj.id,
          workOrderId: workOrderId
        };
        await pcCheckOutsource(param).then((res) => {
          this.outsourceForm = {
            ...res.data
          };

          this.isStep = false;
          this.isOutsource = false;
          this.isPleaseEntrust = false;
          // this.outsourceForm.name = this.taskObj.taskTypeName + '委外';

          if (res.data.outsource) {
            this.isType = '3';
            // this.getTaskInstanceByIdFn(workOrderId);
            if (!this.isStep && !this.isOutsource && !this.isPleaseEntrust) {
              this.$nextTick(() => {
                this.$refs.outsourcingListRef.getDataList(this.workData.code);
              });
            }

            // console.log(
            //   this.$refs.outsourcingListRef,
            //   'this.$refs.outsourcingListRef'
            // );
            // this.$refs.outsourcingListRef.getDataList(this.workData.code);
          } else {
            return this.$message.warning('此工序不能委外');
          }
        });
      },

      closeWorkPlan(type) {
        this.workPlanType = type;
      },

      refreshPlease() {
        this.$nextTick(() => {
          this.$refs.outsourcingListRef.getPleaseData(
            this.workData.list[0].code
          );
        });
      },

      //获取工单列表
      getTaskInstanceByIdFn(workOrderId) {
        getTaskInstanceById(workOrderId).then((res) => {
          let { data } = res;
          if (data.length) {
            data = data.filter(
              (item) => item.taskId != -2 && item.taskId != -1
            );
            let arr = data.findIndex(
              (item) => item.sourceTaskId == this.taskObj.id
            );
            if (arr != -1) {
              data.splice(0, arr);
            }
            this.$set(this.outsourceForm, 'newStepsList', data);
          }
        });
      },

      pickAdd() {
        this.pickingShow = true;
      },

      // 关闭领料弹窗

      pickingClose(val) {
        if (val) {
          this.$nextTick(() => {
            this.$refs.pickListRef.getList(this.workListIds);
          });
        }
        this.pickingShow = false;
      },

      rowClick(row, taskId) {
        if (taskId) {
          let params = {
            categoryId: row.categoryId,
            taskId: taskId
          };
          getByTaskId(params).then((res) => {
            this.BomObj = res.data;
            this.$forceUpdate();
          });
        }
      }
    },

    mounted() {
      this.$nextTick(() => {
        const targetElements =
          document.getElementsByClassName('ele-admin-tabs');

        if (targetElements.length > 0) {
          // 遍历所有具有 'ele-admin-tabs' 类的元素
          Array.from(targetElements).forEach((element) => {
            // 对每个元素添加 'new-ele-admin-tabs' 类
            element.classList.add('new-ele-admin-tabs');
          });
        }
      });
    },

    destroyed() {
      this.$nextTick(() => {
        const targetElements =
          document.getElementsByClassName('ele-admin-tabs');
        if (targetElements.length > 0) {
          Array.from(targetElements).forEach((element) => {
            element.classList.remove('new-ele-admin-tabs');
          });
        }
      });
    }
  };
</script>

<style lang="scss" scoped>
  // .content_box {
  // display: flex;
  // }

  // .content_box_tab {
  //   width: 220px;
  //   padding: 5px;
  //   height: 100vh;
  //   background-color: #fff;
  //   overflow-y: auto;
  //   border: 1px solid blue;
  // }

  .footBtn {
    position: absolute;
    bottom: 20px;
    left: 0;
  }

  .new-ele-admin-tabs {
    display: none !important;
  }

  .c_title {
    color: #157a2c;
    font-size: 16px;
    font-weight: bold;
  }

  .tableZ_box {
    border: 1px solid #e3e5e5;
    margin: 6px 0;

    &:last-child {
      border-bottom: none;
    }

    .row {
      width: 100%;
      display: flex;
    }

    .col {
      width: calc(100% / 5);
      display: flex;
      align-items: center;
      min-width: 200px;
      min-height: 32px;
      border-bottom: 1px solid #e3e5e5;
      border-right: 1px solid #e3e5e5;

      &:last-child {
        border-right: none;
      }

      .name {
        display: flex;
        align-items: center;
        padding: 4px;
        width: 80px;
        height: 100%;
        background-color: #d0e4d5;
        color: #000;
      }

      .content {
        padding: 4px 6px;
        color: #000;
      }
    }

    .pd6 {
      padding: 0 6px;
    }
  }
</style>
<style lang="scss" scoped>
  .seek-list {
    display: flex;
    height: 42px;
    justify-content: space-between;
    align-items: center;
    padding: 10px 10px;
  }

  .right_main_box {
    background-color: #fff;
    height: 100%;
    box-sizing: border-box;
  }

  .index_box {
    padding: 10px;
    padding-bottom: 0;
    width: 100%;
    box-sizing: border-box;
    min-width: 1280px !important;
    // height: calc(100vh - 60px);
    // overflow-x: auto;
    /* 当内容超出宽度时，允许水平滚动 */
    white-space: nowrap;
    /* 防止内部文本换行，确保所有内容都在一行显示 */
    scrollbar-width: thin;
    /* 设置滚动条宽度（浏览器兼容性可能有所不同） */
    scrollbar-color: #40a9ff transparent;
    /* 设置滚动条颜色和轨道颜色（同样，浏览器兼容性） */
  }

  .main {
    width: 100%;
    min-width: 1280px;

    height: calc(100vh - 234px);
    display: flex;
    justify-content: space-between;
  }

  .left_main {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    // min-width: 640px;

    .top {
      width: 100%;
      height: 100%;
      overflow: auto;
    }

    // .bottom {
    //   width: 100%;
    //   min-height: calc((100vh - 70px - 50px - 80px - 20px) / 2);
    //   overflow: hidden;
    // }
  }

  ::v-deep .el-tabs__item.is-active {
    background-color: #dffade;
    /* 蓝色背景 */
    color: #333;
  }

  ::v-deep .is-active {
    color: #dffade;
  }

  .right_main {
    width: 100%;
    padding-bottom: 12px;
    height: calc((100vh - 234px));
    background: #f0f3f3;
    border: 1px solid rgb(207, 215, 207);
  }

  .drawer_content {
    margin: 5px 10px;
    box-sizing: border-box;

    .taskTitle {
      display: flex;
      width: 100%;
      align-items: center;
      flex-direction: row;
      justify-content: center;
      font-size: 16px;
      color: green;
      margin-bottom: 5px;
      font-weight: bold;
    }
  }

  ::v-deep .is-fullscreen {
    width: 100vw !important;
    height: 100vh !important;
    overflow: hidden !important; /* 隐藏滚动条 */
  }
  ::v-deep .not-fullscreen {
    width: calc(100vw - 230px) !important;
    height: 100vh !important;
    overflow: hidden !important; /* 隐藏滚动条 */
  }

  ::v-deep .active .is-text {
    background: #ffa929; /* 背景色 */
    border-color: #ffa929;
    color: #ffffff; /* 图标文字颜色 */
  }

  ::v-deep .el-step__title {
    line-height: 30px;
  }

  ::v-deep .el-tabs__content {
    padding: 1px !important;
  }
</style>
