<template>
  <div class="ele-body">
    <div class="page-title">
      <el-page-header @back="$router.go(-1)">
        <div slot="content" class="pageContent">
          <div>详情</div>
        </div>
      </el-page-header>
      <el-button @click="handlePrint">打印工单</el-button>
    </div>
    <progressBox
      v-if="tabList.length"
      :list="tabList"
      :total="infoData.formingNum"
    />
    <el-card>
      <el-descriptions title="" direction="vertical" :column="7" border>
        <el-descriptions-item label="工单号">{{
          infoData.code
        }}</el-descriptions-item>
        <el-descriptions-item label="生产版本">{{
          infoData.produceVersionName
        }}</el-descriptions-item>
        <!-- <el-descriptions-item label="工单类型">苏州市</el-descriptions-item> -->
        <el-descriptions-item label="产线">{{
          infoData.productLine
        }}</el-descriptions-item>
        <el-descriptions-item label="工艺路线版本">{{
          infoData.routingVersion
        }}</el-descriptions-item>
        <el-descriptions-item label="计划编号">{{
          infoData.productionPlanCode
        }}</el-descriptions-item>
        <el-descriptions-item label="计划类型">{{
          typeList[infoData.planType]
        }}</el-descriptions-item>
        <el-descriptions-item label="产品编码">{{
          infoData.productCode
        }}</el-descriptions-item>
        <el-descriptions-item label="产品名称">{{
          infoData.productName
        }}</el-descriptions-item>
        <el-descriptions-item label="牌号 | 型号"
          >{{ infoData.brandNo }} | {{ infoData.model }}</el-descriptions-item
        >
        <el-descriptions-item label="要求生产数量(PCS)">{{
          infoData.formingNum
        }}</el-descriptions-item>
        <el-descriptions-item label="要求生产重量(KG)">{{
          infoData.formingWeight
        }}</el-descriptions-item>
        <el-descriptions-item label="计划开始时间">{{
          infoData.planStartTime
        }}</el-descriptions-item>
        <el-descriptions-item label="实际开始时间">{{
          infoData.startTime
        }}</el-descriptions-item>
        <el-descriptions-item label="已生产数量(PCS)">{{
          infoData.formedNum
        }}</el-descriptions-item>
        <el-descriptions-item label="已生产重量(KG)">{{
          infoData.formedWeight
        }}</el-descriptions-item>
        <el-descriptions-item label="已交付数量(PCS)">{{
          infoData.deliveredQuantity
        }}</el-descriptions-item>
        <el-descriptions-item label="已交付重量(KG)">{{
          infoData.deliveredWeight
        }}</el-descriptions-item>
        <el-descriptions-item label="工单状态">{{
          statusList[infoData.status]
        }}</el-descriptions-item>
        <el-descriptions-item label="完成时间">{{
          infoData.completeTime
        }}</el-descriptions-item>
        <el-descriptions-item label="生产周期">{{
          infoData.productionCycle
        }}</el-descriptions-item>
      </el-descriptions>
    </el-card>

    <el-card v-if="tabList.length">
      <el-tabs v-model="activeName" type="card" @tab-click="handleTabClick">
        <el-tab-pane
          :label="item.taskTypeName"
          :name="JSON.stringify(index)"
          v-for="(item, index) in tabList"
          :key="item.taskCode"
        ></el-tab-pane>
        <!--        <el-tab-pane label="挤压生产" name="1"> </el-tab-pane>
        <el-tab-pane label="自然干燥" name="2"></el-tab-pane>
        <el-tab-pane label="升温干燥" name="3"></el-tab-pane>
        <el-tab-pane label="半加定长" name="4"></el-tab-pane>
        <el-tab-pane label="备炉" name="5"></el-tab-pane>
        <el-tab-pane label="烧结" name="6"></el-tab-pane>
        <el-tab-pane label="深加工" name="7"></el-tab-pane>
        <el-tab-pane label="包装" name="8"></el-tab-pane>
        <el-tab-pane label="入库" name="9"></el-tab-pane> -->
      </el-tabs>
      <ele-pro-table
        :columns="columns"
        :datasource="datasource"
        :key="activeName"
        :cache-key="`produceDetal${activeName}`"
        :initLoad="false"
        ref="table"
      >
        <template v-slot:toolbar>
          <div class="tips-box">
            <ul
              v-if="
                chooseItem == '挤压生产' ||
                chooseItem.includes('模压') ||
                chooseItem.includes('挤压') ||
                (chooseItem.includes('等静压') && activeName == 0)
              "
            >
              <li>
                <span class="label">累计合格品数量</span>
                {{ countMsg.standardTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计合格品重量</span>
                {{ countMsg.standardTotalWeight }}KG
              </li>
              <li>
                <span class="label">累计投料重量</span>
                {{ countMsg.feedMaterielWeight }}KG
              </li>
            </ul>
            <ul
              v-else-if="
                ['自然干燥', '升温干燥', '半加定长'].includes(chooseItem) ||
                chooseItem.includes('半加')
              "
            >
              <li>
                <span class="label">累计合格品数量</span>
                {{ countMsg.standardTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计合格品重量</span>
                {{ countMsg.standardTotalWeight }}KG
              </li>
              <li>
                <span class="label">累计投料产品重量</span>
                {{ countMsg.feedProductWeight }}KG
              </li>
            </ul>
            <ul v-else-if="['备炉'].includes(chooseItem)">
              <li>
                <span class="label">累计交接数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计实际数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
            </ul>
            <ul v-else-if="['烧结', '质检'].includes(chooseItem)">
              <li>
                <span class="label">累计合格品数量</span>
                {{ countMsg.standardTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计合格品重量</span>
                {{ countMsg.standardTotalWeight }}KG
              </li>
              <li>
                <span class="label">累计投料数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
            </ul>
            <ul v-else-if="['包装'].includes(chooseItem)">
              <li>
                <span class="label">累计交接数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计实际数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计包装数量</span>
                {{ countMsg.packTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计包装产品数量</span>
                {{ countMsg.packProductTotalNum }}PCS
              </li>
            </ul>
            <ul v-else-if="['入库'].includes(chooseItem)">
              <li>
                <span class="label">报工次数</span> {{ countMsg.reportNum }}</li
              >
              <li>
                <span class="label">批次数量</span> {{ countMsg.reportNum }}</li
              >
              <li>
                <span class="label">累计入库数量</span
                >{{ countMsg.inStoreNum }}PCS</li
              >
            </ul>
            <ul v-else>
              <li>
                <span class="label">累计合格品数量</span>
                {{ countMsg.standardTotalNum }}PCS
              </li>
              <li>
                <span class="label">累计合格品重量</span>
                {{ countMsg.standardTotalWeight }}KG
              </li>
              <li>
                <span class="label">累计投料数量</span>
                {{ countMsg.joinTotalNum }}PCS
              </li>
            </ul>
            <!-- <el-link type="primary" v-if="activeName == 1" @click="openOther"
              >其他任务记录</el-link
            > -->
          </div>
        </template>
        <template v-slot:bom="{ row }">
          <el-link type="primary" @click="check(row)">查看</el-link>
        </template>
        <template v-slot:action="{ row }">
          <el-link type="primary" @click="writeOff(row)">冲销</el-link>
        </template>
      </ele-pro-table>
    </el-card>
    <otherMission ref="otherMissionRef" />
    <bomList ref="bomListRef" />
    <OrderPrint
      ref="orderPrintRef"
      :workOrderId="workOrderId"
      :infoData="infoData"
      :processList="tabList"
    />
  </div>
</template>

<script>
  import progressBox from './components/progressBox';
  import otherMission from './components/otherMission';
  import OrderPrint from '@/components/print/OrderPrint';
  import bomList from './components/bomList';
  import dictMixins from '@/mixins/dictMixins';
  import {
    reportPage,
    getInfoById,
    reportCount,
    writeOffWork
  } from '@/api/produceOrder/index.js';
  export default {
    mixins: [dictMixins],
    components: {
      OrderPrint,
      otherMission,
      progressBox,
      bomList
    },
    data() {
      return {
        infoData: {},
        descriptionsShow: true,
        activeName: '0',
        tabList: [],
        columnOpt: {
          挤压生产: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '投料时间',
              prop: 'feedingTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料重量',
              prop: 'feedingWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料执行人',
              prop: 'feedingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备编码',
              prop: 'deviceCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备名称',
              prop: 'deviceName',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '周转车编码',
            //   prop: 'transferCarCode'
            // },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 120,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 120,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          自然干燥: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '投料时间',
              prop: 'feedingTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料执行人',
              prop: 'feedingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '产品数量',
              prop: 'productNum',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '周转车编码',
            //   prop: 'transferCarCode'
            // },
            {
              label: '区域编码',
              prop: 'areaCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '干燥时长',
              prop: 'dryingDuration',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          升温干燥: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '投料时间',
              prop: 'feedingTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料执行人',
              prop: 'feedingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '产品数量',
              prop: 'productNum',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '周转车编码',
            //   prop: 'transferCarCode'
            // },
            {
              label: '设备编码',
              prop: 'deviceCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备名称',
              prop: 'deviceName',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '升温曲线',
              prop: 'temperatureRamp',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          半加定长: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '投料时间',
              prop: 'feedingTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料执行人',
              prop: 'feedingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '产品数量',
              prop: 'productNum',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '周转车编码',
            //   prop: 'transferCarCode'
            // },
            {
              label: '设备编码',
              prop: 'deviceCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备名称',
              prop: 'deviceName',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          备炉: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '交接时间',
              prop: 'handoverTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '交接执行人',
              prop: 'handoverOperator',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '交接数量',
            //   prop: 'handoverQuantity',
            //   minWidth: 100,
            //   align: 'center'
            // },
            {
              label: '实际数量',
              prop: 'billOfMaterials',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '执行时间',
              prop: 'executionTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '执行人',
              prop: 'executor',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备编码',
              prop: 'deviceCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备名称',
              prop: 'deviceName',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '烧结曲线',
              prop: 'sinteringCurve',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          烧结: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          质检: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          深加工: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '交接时间',
              prop: 'handoverTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '交接执行人',
              prop: 'handoverOperator',
              minWidth: 120,
              align: 'center'
            },
            // {
            //   label: '交接数量',
            //   prop: 'handoverQuantity'
            // },
            // {
            //   label: '实际数量',
            //   prop: 'billOfMaterials'
            // },
            {
              label: '投料时间',
              prop: 'feedingTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '投料执行人',
              prop: 'feedingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备编码',
              prop: 'deviceCode',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '设备名称',
              prop: 'deviceName',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品数量',
              prop: 'standardNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '合格品重量',
              prop: 'standardWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '不合格品数量',
              prop: 'noStandardNum',
              minWidth: 120,
              align: 'center'
            },
            {
              label: '不合格品重量',
              prop: 'noStandardWeight',
              minWidth: 120,
              align: 'center'
            },
            {
              label: '副产品重量',
              prop: 'secondaryProductWeight',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          包装: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '交接时间',
              prop: 'handoverTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '交接执行人',
              prop: 'handoverOperator',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '交接数量',
            //   prop: 'handoverQuantity',
            //   minWidth: 100,
            //   align: 'center'
            // },
            {
              label: '实际数量',
              prop: 'billOfMaterials',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '包装数量',
              prop: 'packNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '包装产品数量',
              prop: 'packagedProductQuantity',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '尾料数量',
              prop: 'surplusNum',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '物料清单',
              prop: 'materialList',
              minWidth: 100,
              align: 'center',
              slot: 'bom'
            },
            {
              label: '操作',
              slot: 'action'
            }
          ],
          入库: [
            {
              label: '序号',
              type: 'index',
              width: 55,
              align: 'center'
            },
            {
              label: '交接时间',
              prop: 'handoverTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '交接执行人',
              prop: 'handoverOperator',
              minWidth: 100,
              align: 'center'
            },
            // {
            //   label: '交接数量',
            //   prop: 'handoverQuantity',
            //   minWidth: 100,
            //   align: 'center'
            // },
            {
              label: '实际数量',
              prop: 'billOfMaterials',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工时间',
              prop: 'reportWorkTime',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '报工执行人',
              prop: 'reportingOperator',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '批次数量',
              prop: 'batchQuantity',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '入库数量',
              prop: 'inboundQuantity',
              minWidth: 100,
              align: 'center'
            },
            {
              label: '交货仓库',
              prop: 'storageCode',
              minWidth: 100,
              align: 'center',
              formatter: (_row, _column, cellValue) => {
                return this.getDictValue('仓库', _row.storageCode);
              }
            },
            {
              label: '操作',
              slot: 'action'
            }
          ]
        },
        workOrderId: '',
        taskCode: '',
        typeList: {
          1: '内销订单',
          2: '外销订单',
          3: '预制订单'
        },
        statusList: {
          4: '待生产',
          5: '生产中',
          6: '已完成',
          7: '已延期'
        },
        countMsg: {},
        chooseIndex: 0,
        chooseItem: '',
        request: {
          isLast: 0,
          nextCompleteNum: 0,
          completeNum: 0
        }
      };
    },
    created() {
      this.workOrderId = this.$route.params.id;
      this.getInfo(this.workOrderId);
      this.requestDict('仓库');
    },
    computed: {
      columns() {
        const { taskTypeName: name } = this.tabList[this.activeName];

        if (name.includes('半加')) {
          return this.columnOpt['半加定长'];
        }
        if (
          (name.includes('模压') ||
            name.includes('挤压') ||
            name.includes('等静压')) &&
          this.activeName == 0
        ) {
          return this.columnOpt['挤压生产'];
        }
        return (
          this.columnOpt[this.tabList[this.activeName].taskTypeName] ||
          this.columnOpt['深加工']
        );
      }
    },
    methods: {
      handlePrint() {
        this.$refs.orderPrintRef.open();
      },

      handleTabClick(tab) {
        if (this.chooseIndex != tab.index) {
          this.chooseIndex = Number(tab.index);
          const chooseItem = this.tabList[this.chooseIndex];
          this.chooseItem = this.tabList[this.chooseIndex].taskTypeName;
          this.activeName = tab.index;
          this.taskCode = chooseItem.taskCode || '';
          this.reload({
            workOrderId: this.workOrderId,
            taskCode: this.taskCode
          });
          this.getReportCount();
          this.setData();
        }
      },
      setData() {
        this.request.completeNum = this.tabList[this.chooseIndex].number;
        if (this.chooseIndex == this.tabList.length - 1) {
          this.request.isLast = 1;
        } else {
          this.request.isLast = 0;
          this.request.nextCompleteNum =
            this.tabList[this.chooseIndex + 1].number;
        }
      },
      async datasource({ page, limit, where }) {
        const res = await reportPage({ ...where, pageNum: page, size: limit });
        if (typeof res.list == 'string') {
          res.list = [];
        }
        return res;
      },
      /* 刷新表格 */
      reload(where) {
        this.$nextTick(() =>
          this.$refs.table.reload({ page: 1, limit: 10, where })
        );
      },
      async getInfo(id) {
        const res = await getInfoById(id);
        this.infoData = res;
        if (typeof res.taskTypeProcessDiagrams == 'string') {
          this.tabList = [];
        } else {
          const list = res.taskTypeProcessDiagrams.filter(
            (i) => !i.taskTypeName?.includes('工具')
          );

          const index = list.findIndex((i) =>
            i.taskTypeName.includes('挤压干燥')
          );
          if (index > -1) {
            list[index].taskTypeName = '升温干燥';
          }

          this.tabList = list;
        }
        // this.activeName = this.tabList[0]?.taskTypeName || ''
        this.chooseItem = this.tabList[0]?.taskTypeName;
        this.activeName = 0;
        this.taskCode = this.tabList[0]?.taskCode || '';
        this.chooseIndex = 0;
        this.reload({ workOrderId: this.workOrderId, taskCode: this.taskCode });
        this.getReportCount();
        this.setData();
      },
      async getReportCount() {
        const index = this.tabList.findIndex(
          (item) => item.taskCode === this.taskCode
        );
        let lastTaskCode = this.taskCode;
        if (index > 0) {
          lastTaskCode = this.tabList[index - 1].taskCode;
        }
        const res = await reportCount({
          lastTaskCode,
          taskCode: this.taskCode,
          workOrderId: this.workOrderId
        });
        this.countMsg = res;
      },
      openOther() {
        this.$refs.otherMissionRef.open();
      },

      // 冲销
      writeOff(row) {
        const h = this.$createElement;
        this.$confirm('', {
          message: h('div', null, [
            h('i', {
              class: 'el-icon-question',
              style: 'color:#f90;font-size:30px;'
            }),
            h(
              'span',
              {
                style:
                  'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;'
              },
              '提示'
            ),
            h(
              'p',
              { style: 'margin:10px 0 0 40px;color:red' },
              '是否要撤销本次报工?'
            )
          ]),
          confirmButtonText: '确定',
          cancelButtonText: '取消'
        })
          .then(() => {
            const data = {
              taskCode: this.taskCode,
              taskName: this.chooseItem,
              reportId: row.id,
              writeOffNum: row.standardNum
                ? row.standardNum
                : row.actualQuantity,
              ...this.request
            };
            writeOffWork(data).then((res) => {
              if (res == 1) {
                this.$message.success('冲销成功');
                this.reload({
                  workOrderId: this.workOrderId,
                  taskCode: this.taskCode
                });
                this.refreshData();
              } else if (res == 0) {
                this.$confirm('', {
                  message: h('div', null, [
                    h('i', {
                      class: 'el-icon-question',
                      style: 'color:#f90;font-size:30px;'
                    }),
                    h(
                      'span',
                      {
                        style:
                          'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;color:red'
                      },
                      '冲销失败'
                    ),
                    h(
                      'p',
                      { style: 'margin:10px 0 0 40px' },
                      '冲销后的总数不可小于下道工序的总数'
                    )
                  ]),
                  confirmButtonText: '确定',
                  showCancelButton: false
                })
                  .then(() => {})
                  .catch(() => {});
              } else {
                this.$message.error('接口异常');
              }
            });
          })
          .catch(() => {});
      },

      check(row) {
        this.$refs.bomListRef.open(row);
      },

      async refreshData() {
        this.getReportCount();
        const res = await getInfoById(this.workOrderId);
        this.infoData = res;
        if (typeof res.taskTypeProcessDiagrams == 'string') {
          this.tabList = [];
        } else {
          this.tabList = res.taskTypeProcessDiagrams;
        }
        this.setData();
      }
    }
  };
</script>

<style lang="scss" scoped>
  .el-tabs {
    margin-top: 20px;
  }

  .tips-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-right: 20px;
    ul {
      list-style: none;
      display: flex;
      justify-content: flex-start;

      li {
        margin-right: 40px;
      }
    }
  }
</style>
