<template>
  <div class="box-card">
    <div class="process-left">
      <div class="process-select">
        <!-- 工艺级别：-->
        <el-form :model="form" label-width="auto">
          <el-form-item label="工艺级别:">
            <el-select
              v-model="rank"
              placeholder="请选择"
              style="width: 220px"
              @change="leavelChange"
              clearable
              filterable
            >
              <el-option label="一级工艺" value="1" />
              <el-option label="二级工艺" value="2" />
              <el-option label="三级工艺" value="3" />
            </el-select>
          </el-form-item>
        </el-form>
      </div>
      <!-- style="width: 240px" -->
      <el-tree
        :data="data"
        :props="defaultProps"
        @node-click="handleNodeClick"
        :default-expand-all="true"
        :expand-on-click-node="false"
      />
    </div>
    <div class="process-right">
      <el-form
        :model="treeNodes.rawData"
        label-width="auto"
        :rules="rules"
        v-if="Object.keys(treeNodes).length !== 0"
      >
        <el-row :gutter="24" v-show="activeName == '1'">
          <el-col :span="8">
            <el-form-item label="重要度:" prop="prority">
              <el-select
                v-model="treeNodes.rawData.prority"
                :placeholder="'请选择'"
                clearable
                filterable
              >
                <el-option
                  v-for="item in priorityList"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="生产标识:" prop="qualityGradeCode">
              <el-select
                v-model="treeNodes.rawData.qualityGradeCode"
                :placeholder="'请选择'"
                clearable
                filterable
              >
                <el-option
                  v-for="item in rankList"
                  :key="item.code"
                  :label="item.name"
                  :value="item.code"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="备注:" prop="remarks">
              <el-input v-model="treeNodes.rawData.remarks" placeholder="请输入" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
        <el-tab-pane label="工序" name="1" v-if="treeLeave == 2"></el-tab-pane>
        <el-tab-pane label="项目" name="2" v-if="treeLeave == 3"></el-tab-pane>
        <el-tab-pane label="尺寸、量具" name="3" v-if="treeLeave == 3"></el-tab-pane>
        <el-tab-pane label="工装、模具表" name="4" v-if="treeLeave == 3"></el-tab-pane>
      </el-tabs>
      <div class="table-btn">
        <div class="table-btn-left">
          <el-button type="primary" plain @click="addTable()">插入一行</el-button>
          <el-button type="danger" plain @click="delTable()">删除选择行</el-button>
          <el-button type="primary" @click="saveInfo()">保存</el-button>
        </div>
        <div class="table-btn-right" v-if="activeName == '1'">
          <el-select
            v-model="modelLevel"
            placeholder="选择工艺模板"
            style="width: 220px; margin-right: 12px"
            clearable
            filterable
          >
            <el-option
              v-for="(item, index) in modelOption"
              :key="index"
              :label="item.name"
              :value="item.id"
            />
          </el-select>
          <el-button type="primary" @click="modelLevelChange()">导入模板</el-button>
        </div>
      </div>
      <!-- 工序 -->
      <el-form
        ref="tableForm1"
        :model="form1"
        :rules="formRules1"
        label-width="0px"
        v-if="activeName == '1'"
      >
        <el-table
          :data="form1.tableData1"
          style="width: 100%"
          @selection-change="handleSelectionChange1"
        >
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column prop="processNo" label="工序号">
            <template #header>
              <span><i style="color: red">*</i>工序号</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData1[${scope.$index}].processNo`"
                :rules="formRules1.processNo"
              >
                <el-input
                  v-model="scope.row.processNo"
                  placeholder="请输入"
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="processCode" label="工序">
            <template #header>
              <span><i style="color: red">*</i>工序</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData1[${scope.$index}].processCode`"
                :rules="formRules1.processCode"
              >
                <el-select
                  v-model="scope.row.processCode"
                  placeholder="请选择"
                  clearable
                  filterable
                  @change="processChange(scope.row, scope.$index)"
                >
                  <el-option
                    v-for="(item, index) in processSetOption"
                    :key="index"
                    :label="item.name"
                    :value="item.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="craftCode" label="工艺能力">
            <template #header>
              <span><i style="color: red">*</i>工艺能力</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData1[${scope.$index}].craftCode`"
                :rules="formRules1.craftCode"
              >
                <el-select
                  v-model="scope.row.craftCode"
                  placeholder="请选择"
                  clearable
                  filterable
                  @change="craftChange(scope.row, scope.$index)"
                >
                  <el-option
                    v-for="(item, index) in craftAbilityOption"
                    :key="index"
                    :label="item.name"
                    :value="item.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="proDes" label="工序描述">
            <template #header>
              <span><i style="color: red">*</i>工序描述</span>
            </template>
            <template #default="scope">
              <el-form-item :prop="`tableData1[${scope.$index}].proDes`" :rules="formRules1.proDes">
                <el-input
                  v-model="scope.row.proDes"
                  placeholder="请输入"
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="proHours" label="定额工时(分钟)">
            <template #default="scope">
              <el-input
                v-model="scope.row.proHours"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="setoutHours" label="准备工时(分钟)">
            <template #default="scope">
              <el-input
                v-model="scope.row.setoutHours"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="isMain" label="是否主工序">
            <template #header>
              <span><i style="color: red">*</i>是否主工序</span>
            </template>
            <template #default="scope">
              <el-form-item :prop="`tableData1[${scope.$index}].isMain`" :rules="formRules1.isMain">
                <el-select v-model="scope.row.isMain" placeholder="请选择" clearable filterable>
                  <el-option label="是" value="1"></el-option>
                  <el-option label="否" value="0"></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <!-- 项目 -->
      <el-form
        ref="tableForm2"
        :model="form2"
        :rules="formRules2"
        label-width="0px"
        v-if="activeName == '2'"
      >
        <el-table
          :data="form2.tableData2"
          style="width: 100%"
          @selection-change="handleSelectionChange2"
        >
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column prop="trialNo" label="工序号">
            <template #default="scope">
              <el-input
                v-model="scope.row.trialNo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="projectName" label="检验项目">
            <template #header>
              <span><i style="color: red">*</i>检验项目</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData2[${scope.$index}].projectName`"
                :rules="formRules2.projectName"
              >
                <el-select
                  v-model="scope.row.projectName"
                  placeholder="请选择"
                  clearable
                  filterable
                >
                  <el-option v-for="(item, index) in projectOptions" :label="item.name" :value="item.id"></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="projectStandard" label="检验标准">
            <template #header>
              <span><i style="color: red">*</i>检验标准</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData2[${scope.$index}].projectStandard`"
                :rules="formRules2.projectStandard"
              >
                <el-input
                  v-model="scope.row.projectStandard"
                  placeholder="请输入"
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="proHours" label="定额工时(分钟)">
            <template #header>
              <span><i style="color: red">*</i>定额工时(分钟)</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData2[${scope.$index}].proHours`"
                :rules="formRules2.proHours"
              >
                <el-input
                  v-model="scope.row.proHours"
                  placeholder="请输入"
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="prepareHours" label="准备工时(分钟)">
            <template #default="scope">
              <el-input
                v-model="scope.row.prepareHours"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <!-- 量具 -->
      <el-form
        ref="tableForm3"
        :model="form3"
        :rules="formRules3"
        label-width="0px"
        v-if="activeName == '3'"
      >
        <el-table
          :data="form3.tableData3"
          class="tableHeight"
          style="width: 100%"
          @selection-change="handleSelectionChange3"
        >
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column prop="trialNo" label="工序号">
            <template #default="scope">
              <el-input
                v-model="scope.row.trialNo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="testType" label="镀前镀后">
            <template #header>
              <span><i style="color: red">*</i>镀前镀后</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData3[${scope.$index}].testType`"
                :rules="formRules3.testType"
              >
                <el-select v-model="scope.row.testType" placeholder="请选择" clearable filterable>
                  <el-option label="是" value="1"></el-option>
                  <el-option label="否" value="2"></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="tool" label="量具">
            <template #header>
              <span><i style="color: red">*</i>量具</span>
            </template>
            <template #default="scope">
              <el-form-item :prop="`tableData3[${scope.$index}].tool`" :rules="formRules3.tool">
                <el-select v-model="scope.row.tool" placeholder="请选择" clearable filterable>
                  <el-option label="是" value="1"></el-option>
                  <el-option label="否" value="2"></el-option>
                </el-select>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="toolSize" label="量具尺寸">
            <template #default="scope">
              <el-input
                v-model="scope.row.toolSize"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="toolInfo" label="图纸尺寸">
            <template #default="scope">
              <el-input
                v-model="scope.row.toolInfo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <!-- 工装 -->
      <el-form
        ref="tableForm4"
        :model="form4"
        :rules="formRules4"
        label-width="0px"
        v-if="activeName == '4'"
      >
        <el-table
          :data="form4.tableData4"
          style="width: 100%"
          @selection-change="handleSelectionChange4"
        >
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column prop="trialNo" label="工序号">
            <template #default="scope">
              <el-input
                v-model="scope.row.trialNo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="moldCode" label="对应工装">
            <template #header>
              <span><i style="color: red">*</i>对应工装</span>
            </template>
            <template #default="scope">
              <el-form-item
                :prop="`tableData4[${scope.$index}].moldCode`"
                :rules="formRules4.moldCode"
              >
                <el-input
                  v-model="scope.row.moldCode"
                  placeholder="请输入"
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </template>
          </el-table-column>
          <el-table-column prop="moldName" label="工装名称">
            <template #default="scope">
              <el-input
                v-model="scope.row.moldName"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="isPrint" label="是否印字">
            <template #default="scope">
              <el-input
                v-model="scope.row.isPrint"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="printNo" label="印字版编号">
            <template #default="scope">
              <el-input
                v-model="scope.row.printNo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column prop="testFixtureNo" label="测试夹具号">
            <template #default="scope">
              <el-input
                v-model="scope.row.testFixtureNo"
                placeholder="请输入"
                style="width: 100%"
              ></el-input>
            </template>
          </el-table-column>
        </el-table>
      </el-form>
    </div>
  </div>
</template>
<script>
import {
  getProcessAuthorized,
  getModelList,
  getModelDetailList,
  authorizedAccomplish2,
  saveProcessProjectSave,
  saveProcessMeasuringTool,
  saveProcessMoldTool,
  getProcessSetList,
  getCraftAbilityList,
  getPartDetail,
  getProject
} from '@/api/processManagement/taskProcessing';
import { getPqList } from '@/api/qualityManagement/remindRedeem/remindRedeem';
export default {
  name: 'CraftIndex',
  components: {},
  props: {
    height: {
      type: Number,
      default: 600,
    },
    partId: {
      type: [Number, String],
      default: null,
    },
    dialogType: {
      type: String,
      default: '',
    },
    updateRow: {
      type: Object,
      default: {},
    },
  },
  data() {
    return {
      rank: '2',
      processLevel: '2',
      data: [],
      defaultProps: {
        children: 'children',
        label: 'label',
      },
      form: {},
      rules: {
        prority: [{ required: true, message: '请选择', trigger: 'blur' }],
        qualityGradeCode: [{ required: true, message: '请选择', trigger: 'blur' }],
      },
      priorityList: [
        {
          label: '本次使用',
          value: 1,
        },
        {
          label: '正式工艺',
          value: 2,
        },
        {
          label: '临时工艺',
          value: 3,
        },
      ],
      rankList: [],
      activeName: '1',
      treeLeave: 2, //组织树选中层级
      processSetOption: [], //工序列表
      craftAbilityOption: [], //工艺能力列表
      modelOption: [], //模板列表
      modelLevel: null, //模板选择
      form1: {
        tableData1: [], //工序
        deleteIds: [],
        selectIds: [], //选中ID
      },
      form2: {
        tableData2: [], //项目
        deleteIds: [],
        selectIds: [], //选中ID
      },
      form3: {
        tableData3: [], //量具
        deleteIds: [],
        selectIds: [], //选中ID
      },
      form4: {
        tableData4: [], //工装
        deleteIds: [],
        selectIds: [], //选中ID
      },
      formRules1: {
        processCode: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        processName: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        craftCode: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        proDes: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        proHours: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
        isMain: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        processNo: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
      },
      formRules2: {
        projectName: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        projectStandard: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
        proHours: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
      },
      formRules3: {
        testType: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
        tool: [{ required: true, message: '请选择', trigger: ['change', 'submit'] }],
      },
      formRules4: {
        moldCode: [{ required: true, message: '请输入', trigger: ['change', 'submit'] }],
      },
      treeNodes: {}, //选中组织树节点信息
      partInfoData: {}, //零件信息
      tempId: 0,
      projectOptions: [],//检验项目列表

    };
  },
  mounted() {
    this.getModelList();
    this.getDetails();
    
    this.getProcessSetList();
    this.getCraftAbilityList();
    this.getPqList();
    this.getProject()
  },
  methods: {
    getProject(){
      getProject({size: 999999, current: 1}).then(res => {
        this.projectOptions = res.data.data.records;
      });
    },
    // 获取工序名字
    processChange(row, index) {
      let selectName = this.processSetOption.find(item => item.id == row.processCode);
      this.form1.tableData1[index].processName = selectName.name;
    },
    // 获取工艺能力名字
    craftChange(row, index) {
      let selectName = this.craftAbilityOption.find(item => item.id == row.craftCode);
      this.form1.tableData1[index].craftName = selectName.name;
    },
    // 获取生产标识列表
    getPqList() {
      getPqList().then(res => {
        this.rankList = res.data.data;
      });
    },
    // 工艺模板列表
   async getModelList  () {
     await getModelList().then(res => {
        this.modelOption = res.data.data;
       
      });
    },
    // 工序列表查询
    getProcessSetList() {
      getProcessSetList().then(res => {
        this.processSetOption = res.data.data;
      });
    },
    // 工艺能力列表查询
    getCraftAbilityList() {
      getCraftAbilityList().then(res => {
        this.craftAbilityOption = res.data.data;
      });
    },
    // 导入模板
    modelLevelChange() {
      getModelDetailList({ modelId: this.modelLevel }).then(res => {
        // this.form1.tableData1=res.data.data;
        const templateData = res.data.data;
        const existing = [...this.form1.tableData1];
        // 将模板中的工序数据映射为表格所需格式
        const mappedData = templateData.map((item, index) => {
          // 如果模板中的字段和表格字段一致，可直接使用；否则需转换
          return {
            id: null, // 新增时通常设为 null
            processNo: this.getProcessNo(this.form1.tableData1), // 自动生成工序号
            processCode: item.processCode || item.id, // 假设模板中有 processCode 或 id
            processName: item.processName,
            craftCode: item.craftCode,
            craftName: item.craftName,
            proDes: item.proDes || item.description,
            proHours: item.proHours || '',
            setoutHours: item.setoutHours || '',
            isMain: item.isMain || '0',
            // 其他字段按需补充...
          };
        });
        // 赋值（方式1）或追加（方式2）
        this.form1.tableData1 = [...existing, ...mappedData]; // 追加模式

        this.$message.success('模板导入成功');
      });
    },
    // 获取零件信息详情数据
   async getDetails() {
     await getProcessAuthorized({
        partId: this.partId,
        taskId: this.updateRow.id,
        rank: this.rank,
      }).then(res => {
        this.data = this.transformCraftTree(res.data.data);
        this.partInfoData = res.data.data.partInfo;
       if (this.partInfoData.partName == '石墨模') {
          let graphite = this.modelOption.find(item => item.name == '石墨模');
          this.modelLevel = graphite.id;
          this.modelLevelChange();
        }
      });
    },
    // 组织树转换
    transformCraftTree(responseData) {
      const { partInfo, craftList } = responseData;
      const partCode = partInfo.partCode;

      // 构建树形结构并保留原始数据引用
      const tree = [
        {
          label: partCode,
          disabled: true,
          rawData: partInfo, // 保存零件原始数据
          children: craftList.map(craft => {
            const { craftInfo, processList } = craft;
            // 拼接二级节点标签：roamNo-craftNo
            const craftLabel = `${craftInfo.roamNo}-${craftInfo.craftNo}`;

            return {
              ...craftInfo,
              label: craftLabel,
              processList: processList.map(process => {
                return process.processInfo;
              }),
              rawData: craftInfo, // 保存工艺原始数据
              children: processList.map(process => {
                const { processInfo, projectList, measuringToolList, moldToolList } = process;
                // 三级节点：工序名称
                const processLabel = processInfo.processName;

                return {
                  ...processInfo,
                  label: processLabel,
                  rawData: {
                    processInfo,
                    projectList,
                    measuringToolList,
                    moldToolList,
                  }, // 保存工序及关联数据
                  children: projectList.map(project => ({
                    label: project.projectName, // 四级节点：项目名称
                    rawData: project, // 保存项目原始数据
                    disabled: true,
                  })),
                };
              }),
            };
          }),
        },
      ];

      return tree;
    },
    // 组织树点击
    handleNodeClick(nodes, node, self) {
      if (nodes.disabled) {
        return false;
      }
      this.treeNodes = nodes;
      this.treeLeave = node.level;

      // 清空现有表格数据
      this.form1.tableData1 = [];
      this.form2.tableData2 = [];
      this.form3.tableData3 = [];
      this.form4.tableData4 = [];
      // 根据节点层级切换标签页
      if (this.treeLeave === 2) {
        this.activeName = '1';
        this.form1.tableData1 = nodes.processList;
      }
      // 根据节点层级加载对应数据
      if (this.treeLeave === 3) {
        this.activeName = '2';
        // 三级节点：工序级，加载工序相关数据
        const { processInfo, projectList, measuringToolList, moldToolList } = nodes.rawData;

        // 加载项目表格数据
        this.form2.tableData2 = projectList;

        // 加载量具表格数据
        this.form3.tableData3 = measuringToolList;

        // 加载工装表格数据
        this.form4.tableData4 = moldToolList;
      }
    },
    // 右侧tab切换
    handleClick(value) {
      console.log(999999, value);
    },
    // 切换等级
    leavelChange() {
      // this.$message.success('保存成功');
      this.getDetails();
    },
    // 获取工序号
    getProcessNo(table) {
      const len = table;
      let processNo = (len.length + 1) * 5;

      if (processNo.toString().length === 1) {
        processNo = '000' + processNo;
      } else if (processNo.toString().length === 2) {
        processNo = '00' + processNo;
      } else if (processNo.toString().length === 3) {
        processNo = '0' + processNo;
      } else if (processNo.toString().length === 4) {
        processNo = '' + processNo;
      }
      return processNo;
    },
    // 插入一行
    addTable() {
      this.tempId++;
      if (this.activeName == '1') {
        this.form1.tableData1.push({
          _tempId: this.tempId, // 临时唯一标识
          id: null,
          processNo: this.getProcessNo(this.form1.tableData1),
        });
      }
      if (this.activeName == '2') {
        this.form2.tableData2.push({
          _tempId: this.tempId, // 临时唯一标识
          id: null,
          trialNo: this.getProcessNo(this.form2.tableData2),
        });
      }
      if (this.activeName == '3') {
        this.form3.tableData3.push({
          _tempId: this.tempId, // 临时唯一标识
          id: null,
          trialNo: this.getProcessNo(this.form3.tableData3),
        });
      }
      if (this.activeName == '4') {
        this.form4.tableData4.push({
          _tempId: this.tempId, // 临时唯一标识
          id: null,
          trialNo: this.getProcessNo(this.form4.tableData4),
        });
      }
    },
    handleSelectionChange1(val) {
      this.form1.selectIds = val.map(row => row.id || row._tempId);
      this.form1.deleteIds = val
        .filter(row => row.id != null && row.id !== '') // 排除新增行（id 为 null 或空）
        .map(row => row.id);
    },
    handleSelectionChange2(val) {
      this.form2.selectIds = val.map(row => row.id || row._tempId);
      this.form2.deleteIds = val.filter(row => row.id != null).map(row => row.id);
    },
    handleSelectionChange3(val) {
      this.form3.selectIds = val.map(row => row.id || row._tempId);
      this.form3.deleteIds = val.filter(row => row.id != null).map(row => row.id);
    },
    handleSelectionChange4(val) {
      this.form4.selectIds = val.map(row => row.id || row._tempId);
      this.form4.deleteIds = val.filter(row => row.id != null).map(row => row.id);
    },
    // 删除选择行
    delTable() {
      const active = this.activeName;
      let message = '请至少选择一条数据进行删除';

      if (active === '1') {
        if (this.form1.selectIds.length === 0) {
          this.$message.warning(message);
          return;
        }
        this.form1.tableData1 = this.form1.tableData1.filter(row => {
          const key = row.id || row._tempId;
          return !this.form1.selectIds.includes(key);
        });
        this.form1.selectIds = []; // 清空选中
      } else if (active === '2') {
        if (this.form2.selectIds.length === 0) {
          this.$message.warning(message);
          return;
        }
        this.form2.tableData2 = this.form2.tableData2.filter(row => {
          const key = row.id || row._tempId;
          return !this.form2.selectIds.includes(key);
        });
        this.form2.selectIds = [];
      } else if (active === '3') {
        if (this.form3.selectIds.length === 0) {
          this.$message.warning(message);
          return;
        }
        this.form3.tableData3 = this.form3.tableData3.filter(row => {
          const key = row.id || row._tempId;
          return !this.form3.selectIds.includes(key);
        });
        this.form3.selectIds = [];
      } else if (active === '4') {
        if (this.form4.selectIds.length === 0) {
          this.$message.warning(message);
          return;
        }
        this.form4.tableData4 = this.form4.tableData4.filter(row => {
          const key = row.id || row._tempId;
          return !this.form4.selectIds.includes(key);
        });
        this.form4.selectIds = [];
      }

      this.$message.success('删除成功');
    },
    checkingProNo(table) {
      // 验证工序号是否重复
      const tableData = table;
      const proNoList = [];
      tableData.forEach(item => {
        proNoList.push(item.processNo);
      });
      const list = Array.from(new Set(proNoList));
      if (tableData.length !== list.length) {
        // return this.$message.warning('工序号重复,请修改！');
        return true;
      } else {
        return false;
      }
    },
    saveInfo() {
      if (this.activeName == '1') {
        // 调用单个 Form 的校验方法
        this.$refs.tableForm1.validate(async (isValid, invalidFields) => {
          if (isValid) {
            if (Object.keys(this.treeNodes).length == 0) {
              return this.$message.warning('请先选择左侧组织树数据');
            }
            if (this.checkingProNo(this.form1.tableData1)) {
              return this.$message.warning('工序号重复,请修改！');
            }
            // 验证涂色标的工时是否大于0
            let isReturn = 0;
            this.form1.tableData1.forEach(item => {
              if (item.processName === '涂色标' && item.hourQuota <= 0) {
                isReturn = 1;
              }
            });
            // 验证主工序 是否设置
            let noMainPro = false;
            const arr = [];
            const pidList = [];
            const tableData = this.form1.tableData1;
            tableData.forEach(item => {
              if (item.isMain) {
                noMainPro = true;
              }
              arr.push(item.processName);
              if (item.processName == '镀后检验') {
                pidList.push(item.pid);
              }
            });

            if (!noMainPro) {
              return this.$message.error('此套工艺未含主工序，请设置主工序!!!');
            }
            if (isReturn == 1) {
              return this.$message.warning('涂色标的工时定额必须大于0,请修改！');
            }

            const res = await getPartDetail(this.partId);
            console.log(res);
            let dsCraftMold = res.data.data.dsPartEntity;

            if (dsCraftMold.markingsTest == '1') {
              if (!arr.includes('涂色标')) {
                return this.$message.warning('该工艺包含的工序必须包含涂色标');
              }
            }

            // 验证热处理工序是否存在
            if (dsCraftMold.hardness == '1') {
              if (!arr.includes('热处理检验')) {
                this.$message({
                  dangerouslyUseHTMLString: true,
                  message:
                    '<strong style="font-size:22px" >' +
                    '该零件硬度为 ' +
                    dsCraftMold.hardness +
                    ', 没有热处理检验工序。' +
                    '</strong>',
                  showClose: true,
                  duration: 7000,
                  type: 'warning',
                });
              } else {
                this.$message({
                  dangerouslyUseHTMLString: true,
                  message:
                    '<strong style="font-size:22px" >' +
                    '该零件硬度为 ' +
                    dsCraftMold.hardness +
                    ', 存在热处理检验工序。' +
                    '</strong>',
                  showClose: true,
                  duration: 7000,
                  type: 'success',
                });
              }
            }

            // 验证镀种存在 SB 判断工序是否存在喷砂
            if (dsCraftMold.plate != null && dsCraftMold.plate.indexOf('SB') != -1) {
              if (!arr.includes('喷砂')) {
                this.$message({
                  dangerouslyUseHTMLString: true,
                  message:
                    '<strong style="font-size:22px" >' +
                    '该镀种存在 SB  ' +
                    dsCraftMold.plate +
                    ', 没有喷砂工序。' +
                    '</strong>',
                  showClose: true,
                  duration: 7000,
                  type: 'warning',
                });
              }
            }

            // 判断镀种中是否包含 不钝化
            if (dsCraftMold.plate != null && dsCraftMold.plate.indexOf('不钝化') != -1) {
              // 如果存在镀后检验工序
              if (pidList.length > 0) {
                // 拿出所有镀后检验工序对应的实验项目
                let isExist = 0;
                const res1 = await this.$ajax.post('dsMatingInfo/loadMatingInfoByPidList', {
                  pidList: pidList,
                  miType: 1,
                });
                res1.data.forEach(item => {
                  if (item.trialItem.indexOf('可焊性') != -1) {
                    // 如果其中存在可焊性实验项目
                    isExist = 1;
                  }
                });
                if (isExist != 1) {
                  this.$message({
                    dangerouslyUseHTMLString: true,
                    message:
                      '<strong style="font-size:22px" >' +
                      '该零件镀种包含不钝化 ' +
                      dsCraftMold.plate +
                      ', 镀后检验中未设置可焊性检测试验项目。' +
                      '</strong>',
                    showClose: true,
                    duration: 7000,
                    type: 'warning',
                  });
                }
              }
            }
            // // yingGuangJian  荧光检验证
            // if (dsCraftMold.fluorescenceCheck=='1') {
            //   let flag = false;
            //   arr.forEach((item) => {
            //     if (item.indexOf('荧光检') !== -1) {
            //       flag = true;
            //     }
            //   });
            //   if (!flag) {
            //     return this.$message({
            //       dangerouslyUseHTMLString: true,
            //       message:
            //         '<strong style="font-size:22px" >' +
            //         '该工艺包含的工序必须包含荧光检工序' +
            //         '</strong>',
            //       showClose: true,
            //       duration: 7000,
            //       type: 'warning'
            //     });
            //   }
            // }
            // // heatTreatmentTest  热处理检验验证
            // if (dsCraftMold.hotDispose=='1') {
            //   if (!arr.includes('热处理检验')) {
            //     return this.$message({
            //       dangerouslyUseHTMLString: true,
            //       message:
            //         '<strong style="font-size:22px" >' +
            //         '该工艺包含的工序必须包含热处理检验工序' +
            //         '</strong>',
            //       showClose: true,
            //       duration: 7000,
            //       type: 'warning'
            //     });
            //   }
            // }

            // // penmark  喷码验证
            // if (dsCraftMold.inkjetPrinting=='1') {
            //   let flag = false;
            //   arr.forEach((item) => {
            //     if (item.indexOf('喷码') !== -1) {
            //       flag = true;
            //     }
            //   });
            //   if (!flag) {
            //     return this.$message({
            //       dangerouslyUseHTMLString: true,
            //       message:
            //         '<strong style="font-size:22px" >' +
            //         '该工艺包含的工序必须包含喷码工序' +
            //         '</strong>',
            //       showClose: true,
            //       duration: 7000,
            //       type: 'warning'
            //     });
            //   }
            // }

            // 处理传参
            if (this.treeNodes.rawData.qualityGradeCode) {
              let qualityInfo = this.rankList.find(
                item => item.code == this.treeNodes.rawData.qualityGradeCode
              );
              // this.treeNodes.rawData.qualityGradeName = qualityInfo.name;
            }
            let query_ = {
              dsPart: this.partInfoData, //零件信息
              craft: this.treeNodes.rawData, //工艺信息
              processList: this.form1.tableData1, //工序集合
              deleteIds: this.form1.deleteIds, //删除ids
            };

            authorizedAccomplish2(query_).then(res => {
              this.$message.success('保存成功');
            });
          }
        });
      }
      if (this.activeName == '2') {
        this.$refs.tableForm2.validate((isValid, invalidFields) => {
          if (isValid) {
            let query_ = {
              processEntity: this.treeNodes.rawData.processInfo, //工序
              processProjectEntityList: this.form2.tableData2, //项目
              deleteIds: this.form2.deleteIds, //删除ids
            };

            saveProcessProjectSave(query_).then(res => {
              this.$message.success('保存成功');
            });
          }
        });
      }
      if (this.activeName == '3') {
        this.$refs.tableForm3.validate((isValid, invalidFields) => {
          if (isValid) {
            let query_ = {
              processEntity: this.treeNodes.rawData.processInfo, //工序
              processMeasuringToolEntities: this.form3.tableData3, //尺寸量具
              deleteIds: this.form3.deleteIds, //删除ids
            };
            saveProcessMeasuringTool(query_).then(res => {
              this.$message.success('保存成功');
            });
          }
        });
      }
      if (this.activeName == '4') {
        this.$refs.tableForm4.validate((isValid, invalidFields) => {
          if (isValid) {
            let query_ = {
              processEntity: this.treeNodes.rawData.processInfo, //工序
              processMoldToolEntities: this.form4.tableData4, //尺寸量具
              deleteIds: this.form4.deleteIds, //删除ids
            };
            saveProcessMoldTool(query_).then(res => {
              this.$message.success('保存成功');
            });
          }
        });
      }
    },
  },
};
</script>
<style lang="scss" scoped>
.box-card {
  display: flex;
  flex-direction: row;
  height: calc(100vh - 200px);

  .process-left {
    // padding: 20px;
    border: 1px solid #ccc;

    .process-select {
      padding: 12px;
      background: #e4e7ed;
    }
  }
  :deep(.el-form-item) {
    margin-bottom: 0px !important;
  }
  .process-right {
    padding: 12px;
    flex: 1;
    border: 1px solid #ccc;
    border-left: 0;

    .table-btn {
      width: 100%;
      height: 50px;

      .table-btn-left {
        float: left;
      }

      .table-btn-right {
        float: right;
      }
    }
  }
}

:deep(.el-table .el-table__cell) {
  height: 50px !important;
  padding: 0 !important;
  line-height: 50px !important;
}
.tableHeight {
  height: calc(100vh - 50px - 80px - 40px - 94px - 50px - 50px);
}
</style>
