chenrui
2025-04-10 10903aca3b8fd5dd7cd8573fa5c99ccf19cb8f29
src/views/standard/standardLibrary/index.vue
@@ -1,296 +1,50 @@
<style scoped>
.standard {
  padding-top: 10px;
  display: flex;
  height: calc(100vh - 90px);
}
.left {
  width: 330px;
  height: calc(100% - 40px - 10px);
  background-color: white;
  padding: 15px;
}
.custom-tree-node {
  width: 100%;
  line-height: 32px;
}
.custom-tree-node .el-icon-delete {
  color: #3a7bfa;
  opacity: 0;
  font-size: 18px;
}
.custom-tree-node:hover .el-icon-delete {
  opacity: 1;
}
.custom-tree-node .el-icon-edit {
  color: #3a7bfa;
  opacity: 0;
  font-size: 18px;
}
.custom-tree-node:hover .el-icon-edit {
  opacity: 1;
}
.node_i {
  color: orange;
  font-size: 18px;
}
.right {
  margin-left: 5px;
  width: calc(100% - 350px);
  height: calc(100% - 40px);
}
.right .title {
  height: 34px;
  line-height: 34px;
  padding: 0 10px;
  background-color: white;
}
.standard_table {
  border-top: 1px solid #ebeef5;
  background-color: white;
}
.product_table {
  border-top: 1px solid #ebeef5;
  height: calc(100% - 235px);
  margin-top: 5px;
  background-color: white;
  user-select: none;
}
.product_table .el-table {
  height: calc(100% - 35px) !important;
}
.sort {
  width: 80% !important;
  overflow: hidden;
}
>>> .el-table__body-wrapper {
  height: calc(100% - 46px) !important;
}
>>> .header-class {
  height: 40px !important;
}
>>> .header-class th.el-table__cell > .cell {
  line-height: 20px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
>>> .el-table__row {
  height: 35px !important;
}
.search {
  border-bottom: 1px solid #ebeef5;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding-bottom: 10px;
}
.search-item {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.search-item .el-row {
  display: flex;
  align-items: center;
}
.search-item .el-col {
  margin-left: 0;
}
.more-edit .dialog-footer {
  position: absolute;
  top: 15px;
  right: 70px;
}
>>> .is-disabled .el-textarea__inner {
  background: rgba(0, 0, 0, 0.05) !important;
}
>>> .el-table__body-wrapper::-webkit-scrollbar {
  height: 14px; /* 设置滚动条宽度 */
}
</style>
<style>
.standard .el-tree-node__content {
  height: 32px;
  font-size: 14px;
  border-radius: 2px;
}
.standard
  .el-tree--highlight-current
  .el-tree-node.is-current
  > .el-tree-node__content {
  color: #3a7bfa;
}
.standard .has-gutter .el-table__cell .cell {
  line-height: 34px;
  background-color: #f8f8f8;
}
.standard .has-gutter .el-table__cell {
  background-color: #fafafa !important;
}
.standard .standard_table .el-table__row .cell {
  font-size: 14px;
}
.standard .el-table .warning-row .cell {
  color: #bababa;
}
.standard .el-table-filter__list {
  max-height: 400px;
  overflow-y: auto;
}
.standard .el-upload {
  width: 100%;
}
.standard .el-upload-dragger {
  width: 100%;
}
.standard .handleBtn.is-disabled .el-upload:focus {
  color: #c0c4cc !important;
}
.standard .avatar-uploader .el-upload {
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}
</style>
<template>
  <div class="standard">
    <div class="left">
      <el-row>
        <el-col :span="20">
          <el-input
            v-model="search"
            clearable
            placeholder="输入关键字进行搜索"
            size="small"
            style="margin-bottom: 5px"
            suffix-icon="el-icon-search"
            @blur="searchFilter"
            @clear="searchFilter"
          ></el-input>
          <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px"
            suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter"></el-input>
        </el-col>
        <el-col
          v-if="checkPermi(['standard:standardLibrary:add'])"
          :span="4"
          style="text-align: center; line-height: 30px"
        >
          <el-button
            circle
            icon="el-icon-plus"
            size="mini"
            type="primary"
            @click="addDia = true"
          ></el-button>
        <el-col v-if="checkPermi(['standard:standardLibrary:add'])" :span="4"
          style="text-align: center; line-height: 30px">
          <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="openAddDia"
            v-if="!auditId"></el-button>
        </el-col>
      </el-row>
      <el-tree
        ref="tree"
        v-loading="treeLoad"
        :allow-drop="allowDrop"
        :data="list"
        :default-expanded-keys="expandedKeys"
        :draggable="true"
        :filter-node-method="filterNode"
        :props="{ children: 'children', label: 'label' }"
        highlight-current
        node-key="label"
        style="
      <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list"
        :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode"
        :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" style="
          height: calc(100% - 30px);
          overflow-y: scroll;
          scrollbar-width: none;
        "
        @node-click="handleNodeClick"
        @node-expand="nodeOpen"
        @node-collapse="nodeClose"
        @node-drop="handleDrop"
      >
        " @node-click="handleNodeClick" @node-drop="handleDrop">
        <div slot-scope="{ node, data }" class="custom-tree-node">
          <el-row style="width: 100%">
            <el-col
              :class="{ sort: node.level > 3 }"
              :span="19"
              :title="data.label"
              style="text-align: left"
            >
            <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
              <span>
                <i
                  :class="`node_i ${
                    data.children != undefined
                      ? data.code === '[1]'
                        ? 'el-icon-folder-opened'
                        : 'el-icon-folder'
                      : 'el-icon-tickets'
                  }`"
                ></i>
                <i :class="`node_i ${data.children != undefined
                  ? data.code === '[1]'
                    ? 'el-icon-folder-opened'
                    : 'el-icon-folder'
                  : 'el-icon-tickets'
                  }`"></i>
                {{ data.label }}
              </span>
            </el-col>
            <el-col
              v-if="
                checkPermi(['standard:standardLibrary:delStandardTree']) &&
                (node.data.children === null ||
                  node.data.children === undefined)
              "
              :span="2"
              style="text-align: right"
            >
              <el-button
                size="mini"
                type="text"
                @click="editTreeName(node.data)"
              >
            <el-col v-if="
              checkPermi(['standard:standardLibrary:delStandardTree']) &&
              data.level == 7
            " :span="2" style="text-align: right">
              <el-button size="mini" type="text" @click.stop="editTreeName(node.data)" v-if="!auditId">
                <i class="el-icon-edit"></i>
              </el-button>
            </el-col>
            <el-col
              v-if="
                checkPermi(['standard:standardLibrary:delStandardTree']) &&
                (node.data.children === null ||
                  node.data.children === undefined)
              "
              :span="2"
              style="text-align: right"
            >
              <el-button
                size="mini"
                type="text"
                @click.stop="remove(node, data)"
              >
            <el-col v-if="
              checkPermi(['standard:standardLibrary:delStandardTree']) &&
              data.level == 7
            " :span="2" style="text-align: right">
              <el-button size="mini" type="text" @click.stop="remove(node, data)" v-if="!auditId">
                <i class="el-icon-delete"></i>
              </el-button>
            </el-col>
@@ -300,309 +54,140 @@
    </div>
    <div class="right">
      <el-row class="title" style="width: 100%">
        <el-col :span="20" style="font-size: 14px; color: #999">{{
        <el-col :span="19" style="font-size: 14px; color: #999"><span>{{
          selectTree
        }}</el-col>
        <el-col :span="4">
          <el-button
            v-if="isShowCopy"
            size="small"
            style="position: absolute; right: 20px; top: 1px"
            type="primary"
            @click="openCopyDia"
            >批量复制</el-button
          >
        }} </span></el-col>
        <el-col :span="5" style="position: absolute;top: -3px;right: -25px;" v-if="!auditId && !standardCkeck">
          <el-button size="small" type="primary" @click="submitReview" :loading="submitReviewLoad">提交变更</el-button>
          <el-button v-if="isShowCopy" size="small" type="primary" @click="openCopyDia">批量复制</el-button>
        </el-col>
      </el-row>
      <el-row v-loading="tableLoad" class="standard_table">
        <el-table
          ref="standard"
          :data="standardList"
          class="el-table"
          header-row-class-name="header-class"
          height="220"
          highlight-current-row
          style="width: 100%; height: 220px !important"
          tooltip-effect="dark"
          @row-click="rowClick"
        >
          <el-table-column
            label="标准编号"
            prop="code"
            show-overflow-tooltip
            width="200"
          >
        <el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220"
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border highlight-current-row
          style="width: 100%; height: 220px !important" tooltip-effect="dark" @row-click="rowClick">
          <el-table-column label="标准编号" prop="code" show-overflow-tooltip width="200">
            <template slot-scope="scope">
              <span style="color: red; font-size: 14px">{{
                scope.row["code"]
              }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="标准名称"
            prop="name"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="备注"
            prop="remark"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column label="标准名称" prop="name" show-overflow-tooltip></el-table-column>
          <el-table-column label="备注" prop="remark" show-overflow-tooltip></el-table-column>
        </el-table>
      </el-row>
      <el-row v-loading="tableLoad2" class="product_table">
        <el-table
          id="templateParamTable"
          ref="productTable"
          v-loading="productTableLoading"
          :data="productList"
          :fit="true"
          :row-class-name="tableRowClassName"
          border
          class="productTable"
          header-row-class-name="header-class"
          height="100%"
          row-key="id"
          stripe
          style="width: 100%"
          tooltip-effect="dark"
          @select="upProductSelect"
          @selection-change="handleSelectionChange"
          @select-all="handleAll"
        >
          <el-table-column type="selection" width="50"> </el-table-column>
          <el-table-column
            label="产品"
            min-width="100"
            prop="sample"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="型号"
            min-width="100"
            prop="model"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="检验项分类"
            min-width="140"
            prop="inspectionItemClass"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="检验项"
            min-width="140"
            prop="inspectionItem"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="检验项子项"
            min-width="140"
            prop="inspectionItemSubclass"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            label="子实验室"
            prop="sonLaboratory"
            show-overflow-tooltip
            width="130"
          ></el-table-column>
        <el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList"
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true"
          :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%"
          row-key="id" stripe style="width: 100%" tooltip-effect="dark" @select="upProductSelect"
          @selection-change="handleSelectionChange" @select-all="handleAll" :header-cell-class-name="headerCellStyle">
          <el-table-column type="selection" width="50" :selectable="selectable"> </el-table-column>
          <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column>
          <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column>
          <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass"
            show-overflow-tooltip></el-table-column>
          <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column>
          <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass"
            show-overflow-tooltip></el-table-column>
          <!-- checkStatusList -->
          <el-table-column label="审核状态" min-width="140" prop="checkStatus">
            <template slot-scope="scope">
              <el-tag :type="checkStatusList.find(m => m.value == scope.row.checkStatus).type"
                v-if="checkStatusList.find(m => m.value == scope.row.checkStatus) && scope.row.checkStatus !== '' && scope.row.checkStatus !== null"
                size="small">{{
                  checkStatusList.find(m => m.value == scope.row.checkStatus).label }}</el-tag>
            </template>
          </el-table-column>
          <el-table-column label="要求值" min-width="200px" prop="ask">
            <template slot-scope="scope">
              <el-input
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.ask"
                :autosize="{ minRows: 1, maxRows: 3 }"
                clearable
                placeholder="要求值"
                size="small"
                type="textarea"
                @change="(value) => upStandardProductList(value, scope.row.id)"
              ></el-input>
              <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small"
                type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"
                :disabled="!!auditId || standardCkeck"></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column label="要求描述" min-width="220px" prop="tell">
            <template slot-scope="scope">
              <el-input
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.tell"
                :autosize="{ minRows: 1, maxRows: 3 }"
                clearable
                placeholder="要求描述"
                size="small"
                type="textarea"
                @change="
                  (value) => upStandardProductListOfTell(value, scope.row.id)
                "
              ></el-input>
              <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述"
                size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id)
                  " :disabled="!!auditId || standardCkeck"></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column label="试验方法" prop="method" width="200">
          <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column>
          <!-- <el-table-column label="试验方法" prop="method" width="200">
            <template slot-scope="scope">
              <el-select
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.methodS"
                clearable
                placeholder="试验方法"
                size="small"
                @change="
                  (value) => upStandardProductListOfMethodS(value, scope.row.id)
                "
              >
                <el-option
                  v-for="(a, i) in scope.row.method &&
                  JSON.parse(scope.row.method)"
                  :key="i"
                  :label="a"
                  :value="a"
                ></el-option>
              <el-select v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.methodS" clearable placeholder="试验方法" size="small" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
                ">
                <el-option v-for="(a, i) in scope.row.method &&
                  JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option>
              </el-select>
              <span v-else>{{ scope.row.methodS }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="条件"
            min-width="140"
            prop="radius"
            show-overflow-tooltip
          >
          </el-table-column> -->
          <el-table-column label="试验条件" min-width="140" prop="radius" show-overflow-tooltip>
            <template slot-scope="scope">
              <el-select
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.radius"
                clearable
                placeholder="条件"
                size="small"
                @change="
                  (value) => upStandardProductListOfRadius(value, scope.row.id)
                "
              >
                <el-option
                  v-for="(a, i) in scope.row.radiusList &&
                  JSON.parse(scope.row.radiusList)"
                  :key="i"
                  :label="a"
                  :value="a"
                ></el-option>
              <el-select v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.radius" clearable placeholder="试验条件" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id)
                " :disabled="!!auditId || standardCkeck" allow-create filterable>
                <el-option v-for="(a, i) in scope.row.radiusList &&
                  JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option>
              </el-select>
              <span v-else>{{ scope.row.radius }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="计量单位"
            prop="unit"
            show-overflow-tooltip
            width="100"
          ></el-table-column>
          <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column>
          <el-table-column label="单价(元)" prop="price" width="120">
            <template slot-scope="scope">
              <el-input
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.price"
                placeholder="单价(元)"
                size="small"
                @change="
                  (value) => upStandardProductListOfPrice(value, scope.row.id)
                "
              >
              <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.price" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
                " :disabled="!!auditId || standardCkeck">
              </el-input>
              <span v-else>{{ scope.row.price }}</span>
            </template>
          </el-table-column>
          <el-table-column label="工时系数" prop="manHour" width="120">
            <template slot-scope="scope">
              <el-input
                v-if="
                  checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                v-model="scope.row.manHour"
                placeholder="单价(元)"
                size="small"
                @change="
                  (value) => upStandardProductListOfManHour(value, scope.row.id)
                "
              >
              <el-input v-if="
                checkPermi(['standard:standardLibrary:upStandardProduct'])
              " v-model="scope.row.manHour" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id)
                " :disabled="!!auditId || standardCkeck">
              </el-input>
              <span v-else>{{ scope.row.manHour }}</span>
            </template>
          </el-table-column>
          <el-table-column
            label="工时分组"
            prop="manHourGroup"
            show-overflow-tooltip
            width="100"
          ></el-table-column>
          <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column>
          <el-table-column label="模板" prop="templateId" width="200">
            <template slot-scope="scope">
              <el-select
                v-model="scope.row.templateId"
                :disabled="
                  !checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                filterable
                size="small"
                @change="
                  (value) =>
                    upStandardProductListOfTemplate(value, scope.row.id)
                "
              >
                <el-option
                  v-for="(a, ai) in templateList"
                  :key="ai"
                  :label="a.name"
                  :value="a.id"
                ></el-option>
              <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) || !!auditId || standardCkeck
                " filterable size="small" @change="(value) =>
                  upStandardProductListOfTemplate(value, scope.row.id)
                  ">
                <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column
            label="区间"
            prop="section"
            show-overflow-tooltip
            width="120"
          ></el-table-column>
          <el-table-column label="操作" prop="section" width="160">
          <el-table-column label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column>
          <el-table-column label="操作" prop="section" width="160" v-if="!auditId && !standardCkeck">
            <template slot-scope="scope">
              <el-button
                type="text"
                @click="sectionUp(scope.row)"
                :disabled="
                  !checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                >区间设置</el-button
              >
              <el-button
                type="text"
                :disabled="
                  !checkPermi(['standard:standardLibrary:upStandardProduct'])
                "
                @click="bindSupplierDensitySecond(scope.row)"
                >绑定厂家</el-button
              >
              <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                ">区间设置</el-button>
              <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
                " @click="bindSupplierDensitySecond(scope.row)">绑定厂家</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
          :current-page="currentPage"
          :page-size="300"
          :total="total"
          layout="total, prev, pager, next, jumper"
          style="position: absolute; right: 16px; bottom: 1px"
          @current-change="handleCurrentChange"
        >
        </el-pagination>
        <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p>
      </el-row>
    </div>
@@ -613,21 +198,13 @@
            <span class="required-span">* </span>型号:
          </el-col>
          <el-col :offset="1" :span="16">
            <el-input
              v-model="addOb.model"
              clearable
              placeholder="请输入型号"
              size="small"
              @keyup.enter.native="addStandardTree"
            ></el-input>
            <el-input v-model="addOb.modelName" clearable placeholder="请输入型号" size="small"></el-input>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia = false">取 消</el-button>
        <el-button :loading="addLoad" type="primary" @click="addStandardTree"
          >确 定</el-button
        >
        <el-button :loading="addLoad" type="primary" @click="addStandardTree">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog :visible.sync="updateDia" title="分类修改" width="400px">
@@ -637,146 +214,72 @@
            <span class="required-span">* </span>型号:
          </el-col>
          <el-col :offset="1" :span="16">
            <el-input
              v-model="addOb.model"
              clearable
              placeholder="请输入型号"
              size="small"
              @keyup.enter.native="updateStandardTree"
            ></el-input>
            <el-input v-model="addOb.modelName" clearable placeholder="请输入型号" size="small"></el-input>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="updateDia = false">取 消</el-button>
        <el-button
          :loading="updateLoad"
          type="primary"
          @click="updateStandardTree"
          >确 定</el-button
        >
        <el-button :loading="updateLoad" type="primary" @click="updateStandardTree">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      :close-on-click-modal="false"
      :visible.sync="sectionUpDia"
      title="区间设置"
      width="80%"
    >
    <el-dialog :close-on-click-modal="false" :visible.sync="sectionUpDia" title="区间设置" width="80%">
      <div class="body" style="padding: 5px 0">
        <el-table :data="sectionList" border height="350px" style="width: 100%">
        <el-table :data="sectionList" border height="350px" style="width: 100%"
          :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }">
          <el-table-column align="center" label="序号" type="index" width="70">
          </el-table-column>
          <el-table-column align="center" label="区间">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.thing"
                clearable
                placeholder="区间"
                size="small"
              ></el-input>
              <el-input v-model="scope.row.thing" clearable placeholder="区间" size="small"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="芯数">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.cores"
                clearable
                placeholder="芯数"
                size="small"
              ></el-input>
              <el-input v-model="scope.row.cores" clearable placeholder="芯数" size="small"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="要求值">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.ask"
                clearable
                placeholder="要求值"
                size="small"
              ></el-input>
              <el-input v-model="scope.row.ask" clearable placeholder="要求值" size="small"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="要求描述">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.tell"
                :autosize="{ minRows: 1, maxRows: 2 }"
                clearable
                placeholder="要求描述"
                size="small"
                type="textarea"
              ></el-input>
              <el-input v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 2 }" clearable placeholder="要求描述"
                size="small" type="textarea"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="导体材质">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.conductorMaterial"
                clearable
                placeholder="导体材质"
                size="small"
              ></el-input>
              <el-input v-model="scope.row.conductorMaterial" clearable placeholder="导体材质" size="small"></el-input>
            </template>
          </el-table-column>
          <el-table-column align="center" label="导体类型">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.conductorType"
                clearable
                placeholder="导体类型"
                size="small"
              ></el-input>
              <el-input v-model="scope.row.conductorType" clearable placeholder="导体类型" size="small"></el-input>
            </template>
          </el-table-column>
          <!--          <el-table-column align="center" label="单价" width="120">-->
          <!--            <template slot-scope="scope">-->
          <!--              <el-input v-model="scope.row.price" clearable placeholder="单价" size="small"></el-input>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column align="center" label="工时系数" width="120">-->
          <!--            <template slot-scope="scope">-->
          <!--              <el-input v-model="scope.row.manHour" clearable placeholder="工时系数" size="small"></el-input>-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column align="center" label="操作" width="70">
            <template slot-scope="scope">
              <el-button
                circle
                icon="el-icon-minus"
                size="mini"
                type="danger"
                @click="sectionList.splice(scope.$index, 1)"
              ></el-button>
              <el-button circle icon="el-icon-minus" size="mini" type="danger"
                @click="sectionList.splice(scope.$index, 1)"></el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="sectionUpDia = false">取 消</el-button>
        <el-button :loading="sectionLoad" type="primary" @click="sectionLoadAdd"
          >保 存</el-button
        >
        <el-button
          icon="el-icon-plus"
          type="primary"
          @click="sectionList.push({ thing: '' })"
        ></el-button>
        <el-button :loading="sectionLoad" type="primary" @click="sectionLoadAdd">保 存</el-button>
        <el-button icon="el-icon-plus" type="primary" @click="sectionList.push({ thing: '' })"></el-button>
      </span>
    </el-dialog>
    <bindSupplierDensityDialogAsk
      v-if="bindSupplierDensityDialog"
      :bindSupplierDensityDialog="bindSupplierDensityDialog"
      :currentRow="currentSupplierDensityRow"
      @closeBindPartDialog="closeBindSupplierDensityDialog"
    ></bindSupplierDensityDialogAsk>
    <BatchCopy
      v-if="batchCopyDia"
      ref="BatchCopy"
      :selectTree1="selectTree"
      :standardId="standardId"
      @refreshList="refreshList"
    ></BatchCopy>
    <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog"
      :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow"
      @closeBindPartDialog="closeBindSupplierDensityDialog" @refreshList="refreshList">
    </bindSupplierDensityDialogAsk>
    <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId"
      @refreshList="refreshList"></BatchCopy>
  </div>
</template>
@@ -791,25 +294,24 @@
  obtainItemParameterList,
  selectTestObjectByName,
  selectStandardMethods,
  addStandardMethodList,
  addStandardTree,
  updateStandardTree,
  selectsStandardMethodByFLSSM,
  upStandardProductList,
  delStandardMethodByFLSSM,
  delStandardProductByIds,
  addStandardProduct,
  selectStandardProductListByMethodId,
  updateSection,
  upStandardProducts,
  getStandardTemplate,
  selectStandardProductByMethodId,
  selectStandardProductEnumByMethodId,
  productListSubmit,
  standardProductListRecordRelPage,
  existCheckingRecord,
} from "@/api/standard/standardLibrary";
import { checkPermi } from "@/utils/permission"; // 权限判断函数
import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue";
import BatchCopy from "./components/BatchCopy.vue";
export default {
  // name: 'StandardLibrary',
  components: {
    BatchCopy,
    bindSupplierDensityDialogAsk,
@@ -825,13 +327,11 @@
      factory: [],
      addDia: false,
      updateDia: false, // 修改树名字弹框
      oldModel: "",
      addOb: {
        factory: null,
        laboratory: null,
        sampleType: null,
        sample: null,
        model: null,
        id: '',
        modelName: null,
        parentLevel: '',
        parentId: '',
      },
      laboratory: [],
      addLoad: false,
@@ -874,7 +374,6 @@
      inspectionItem: null,
      inspectionItemSubclass: null,
      sonLaboratory: null,
      token: null,
      fileList: [],
      uploading: false,
      isEquipment: true,
@@ -886,27 +385,59 @@
      batchCopyDia: false,
      VUE_APP_BASE_API: process.env.VUE_APP_BASE_API,
      moreSelects: [],
      checkStatusList: [
        {
          value: 0,
          label: '未提交',
          type: 'danger'
        },
        {
          value: 1,
          label: '审核中',
          type: 'warning'
        },
        {
          value: 2,
          label: '已更新',
          type: 'success'
        },
      ],
      submitReviewLoad: false,
      auditId: null,//标准变更记录ID
      standardCkeck: false,//当前是否有正在审核的变更
    };
  },
  mounted() {
    this.existCheckingRecord()
    this.selectEnumByCategoryForFactory();
    this.selectStandardTreeList();
    this.obtainItemParameterList();
    this.selectTestObjectByName();
    this.selectStandardMethods();
    this.selectEnumByCategoryForSonLaboratory();
    this.selectEnumByCategoryForsampleType();
    this.getStandardTemplate();
    this.selectStandardMethodsSec();
    this.token = {
      token: sessionStorage.getItem("token"),
    };
    if (this.$route.query && this.$route.query.auditId) {
      let {
        auditId
      } = this.$route.query
      this.auditId = auditId
    } else {
      this.auditId = null
    }
  },
  methods: {
    checkPermi,
    // 修改最子级名字
    editTreeName(info) {
      this.updateDia = true;
      this.oldModel = info.label;
    // 标准库变更时禁用全选
    headerCellStyle({ columnIndex }) {
      if (columnIndex === 0 && (this.auditId || this.standardCkeck)) {
        return 'disable-select-all';
      }
      return '';
    },
    // 标准库变更时禁用多选
    selectable(row, index) {
      return !this.auditId && !this.standardCkeck;
    },
    // 拖拽时判定目标节点能否被放置
    // 'prev'、'inner' 和 'next',前、插入、后
@@ -989,10 +520,42 @@
        }
      }
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    // 调用tree过滤方法 中文英过滤
    filterNode(value, data, node) {
      if (!value) {    //如果数据为空,则返回true,显示所有的数据项
        return true
      }
      // 查询列表是否有匹配数据,将值小写,匹配英文数据
      let val = value.toLowerCase()
      return this.chooseNode(val, data, node) // 调用过滤二层方法
    },
    // 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配,则返回该节点以及其下的所有子节点;如果参数是子节点,则返回该节点的父节点。name是中文字符,enName是英文字符.
    chooseNode(value, data, node) {
      if (data.label.indexOf(value) !== -1) {
        return true
      }
      const level = node.level
      // 如果传入的节点本身就是一级节点就不用校验了
      if (level === 1) {
        return false
      }
      // 先取当前节点的父节点
      let parentData = node.parent
      // 遍历当前节点的父节点
      let index = 0
      while (index < level - 1) {
        // 如果匹配到直接返回,此处name值是中文字符,enName是英文字符。判断匹配中英文过滤
        if (parentData.data.label.indexOf(value) !== -1) {
          return true
        }
        // 否则的话再往上一层做匹配
        parentData = parentData.parent
        index++
      }
      // 没匹配到返回false
      return false
    },
    searchFilter() {
      this.$refs.tree.filter(this.search);
    },
@@ -1000,68 +563,70 @@
      this.upIndex++;
    },
    handleNodeClick(val, node, el) {
      //树的值
      if (node.childNodes.length === 0) {
        this.isShowCopy = true;
      } else {
        this.isShowCopy = false;
      }
      // 判断是否为叶子节点
      this.isShowCopy = node.childNodes.length === 0;
      // 更新父节点信息
      this.addOb.parentLevel = node.data.level;
      this.addOb.parentId = node.data.value;
      this.addOb.id = node.data.value;
      // 初始化分页相关变量
      this.total = 0;
      this.currentPage = 1;
      this.selectTree = "";
      this.getNodeParent(node);
      this.selectTree = this.selectTree.replace(" - ", "");
      let data = this.selectTree.split(" - ");
      let data2 = "";
      for (let index = data.length - 1; index >= 0; index--) {
        data2 += " - " + data[index];
      }
      this.selectTree = data2.replace(" - ", "");
      if (node.childNodes.length === 0) {
      // 拼接树路径
      this.selectTree = this.getReversedTreePath(node);
      // 如果是叶子节点,调用特定方法
      if (this.isShowCopy) {
        this.selectsStandardMethodByFLSSM();
      }
      let trees = this.selectTree.split(" - ");
      this.addOb.factory = trees[0];
      this.addOb.laboratory = trees[1];
      this.addOb.sampleType = trees[2];
      this.addOb.sample = trees[3];
    },
    getNodeParent(val) {
      if (val.parent != null) {
        if (val.data.children === null) {
          this.selectTree += " - " + val.label + " - " + "null";
        } else {
          this.selectTree += " - " + val.label;
    /**
     * 获取反向拼接的树路径字符串
     * @param {Object} node - 当前节点
     * @returns {string} - 反向拼接的树路径
     */
    getReversedTreePath(node) {
      const pathParts = [];
      // 递归获取父节点路径
      const collectParentLabels = (currentNode) => {
        if (currentNode && currentNode.label) {
          pathParts.unshift(currentNode.label); // 将当前节点标签插入到数组开头
        }
        this.getNodeParent(val.parent);
      }
        if (currentNode.parent) {
          collectParentLabels(currentNode.parent); // 递归处理父节点
        }
      };
      collectParentLabels(node);
      // 拼接路径并返回
      return pathParts.join(" - ");
    },
    remove(node, data) {
      this.$confirm("是否删除该层级", "提示", {
        type: "error",
      })
        .then(() => {
          // this.treeLoad = true
      }).then(() => {
        this.selectTree = "";
        // 拼接树路径
        this.selectTree = this.getReversedTreePath(node);
        delStandardTree({
          tree: this.selectTree,
          level: data.level,
          id: data.value
        }).then((res) => {
          this.$message.success("已删除");
          let arr = this.selectTree.split(" - ");
          this.deleteStandard(this.list, arr[arr.length - 1]);
          this.selectTree = "";
          this.getNodeParent(node);
          this.selectTree = this.selectTree.replace(" - ", "");
          let data = this.selectTree.split(" - ");
          let data2 = "";
          for (let index = data.length - 1; index >= 0; index--) {
            data2 += " - " + data[index];
          }
          this.selectTree = data2.replace(" - ", "");
          delStandardTree({ tree: this.selectTree }).then((res) => {
            if (res.code == 201) return;
            this.$message.success("已删除");
            let arr = this.selectTree.split(" - ");
            this.deleteStandard(this.list, arr[arr.length - 1]);
            this.selectTree = "";
            this.standardList = [];
            this.productList = [];
          });
          this.standardList = [];
          this.productList = [];
        })
        .catch((e) => {});
      }).catch((e) => { });
    },
    deleteStandard(arr, label) {
      arr.forEach((item, index) => {
@@ -1071,15 +636,6 @@
          item.children && this.deleteStandard(item.children, label);
        }
      });
    },
    nodeOpen(data, node, el) {
      $($(el.$el).find(".node_i")[0]).attr(
        "class",
        "node_i el-icon-folder-opened"
      );
    },
    nodeClose(data, node, el) {
      $($(el.$el).find(".node_i")[0]).attr("class", "node_i el-icon-folder");
    },
    selectEnumByCategoryForFactory() {
      this.getConfigKey("sys_factory").then((response) => {
@@ -1149,85 +705,52 @@
        this.standardEnum = data;
      });
    },
    addStandardMethodList() {
      if (this.standardId == null || this.standardId == "") {
        this.$message.error("标准方法未选择");
        return;
      }
      this.addLoad2 = true;
      addStandardMethodList({
        standardId: this.standardId,
        tree: this.selectTree,
      }).then((res) => {
        this.addLoad2 = false;
        this.addStandardDia = false;
        this.$message.success("添加成功");
        this.selectsStandardMethodByFLSSM();
      });
    // 打开新增弹框
    openAddDia() {
      this.addDia = true
      this.addOb.modelName = ''
    },
    // 提交分类添加
    addStandardTree() {
      if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
        this.$message.error("对象不存在");
        return;
      }
      if (this.addOb.model == null || this.addOb.model == "") {
      if (this.addOb.modelName == null || this.addOb.modelName == "") {
        this.$message.error("请填写型号");
        return;
      }
      this.addLoad = true;
      addStandardTree(this.addOb)
        .then((res) => {
          if (res.code === 201) {
            this.addLoad = false;
            return;
          }
          this.$message.success("添加成功");
          this.addDia = false;
          this.list
            .find((a) => a.label == this.addOb.factory)
            .children.find((a) => a.label == this.addOb.laboratory)
            .children.find((a) => a.label == this.addOb.sampleType)
            .children.find((a) => a.label == this.addOb.sample)
            .children.push({
              code: "[5]",
              label: this.addOb.model,
              value: this.addOb.model,
            });
          this.addLoad = false;
        })
        .catch((e) => {
          this.addDia = false;
          this.addLoad = false;
        });
      delete this.addOb.id;
      addStandardTree(this.addOb).then((res) => {
        this.$message.success("添加成功");
        this.addOb.modelName = "";
        this.addDia = false;
        this.selectStandardTreeList();
        this.addLoad = false;
      }).catch((e) => {
        this.addLoad = false;
      });
    },
    // 修改型号
    // 打开修改名字弹框
    editTreeName(info) {
      this.updateDia = true;
      this.addOb.modelName = info.label;
    },
    // 提交修改型号
    updateStandardTree() {
      if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
        this.$message.error("对象不存在");
        return;
      }
      if (this.addOb.model == null || this.addOb.model == "") {
      if (this.addOb.modelName == null || this.addOb.modelName == "") {
        this.$message.error("请填写型号");
        return;
      }
      this.addOb.oldModel = this.oldModel;
      this.updateLoad = true;
      updateStandardTree(this.addOb)
        .then((res) => {
          if (res.code === 201) {
            this.updateLoad = false;
            return;
          }
          this.$message.success("添加成功");
          this.selectStandardTreeList();
          this.updateDia = false;
          this.updateLoad = false;
        })
        .catch((e) => {
          this.updateDia = false;
          this.updateLoad = false;
        });
      delete this.addOb.parentLevel;
      delete this.addOb.parentId;
      updateStandardTree(this.addOb).then((res) => {
        this.$message.success("添加成功");
        this.selectStandardTreeList();
        this.addOb.modelName = "";
        this.updateDia = false;
        this.updateLoad = false;
      }).catch((e) => {
        this.updateLoad = false;
      });
    },
    selectsStandardMethodByFLSSM() {
      this.tableLoad = true;
@@ -1251,11 +774,8 @@
          ask: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    upStandardProductListOfTell(value, index) {
@@ -1265,11 +785,8 @@
          tell: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    // 标准库选择实验方法的回调
@@ -1280,11 +797,8 @@
          methodS: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    // 标准库选择条件的回调
@@ -1295,11 +809,8 @@
          radius: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    upStandardProductListOfPrice(value, index) {
@@ -1309,11 +820,8 @@
          price: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    upStandardProductListOfManHour(value, index) {
@@ -1323,11 +831,8 @@
          manHour: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    upStandardProductListOfTemplate(value, index) {
@@ -1337,30 +842,9 @@
          templateId: value,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
        this.refreshList()
      });
    },
    delStandardMethodByFLSSM(id) {
      this.$confirm("是否删除当前数据?", "警告", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.tableLoad = true;
          delStandardMethodByFLSSM({ id: id }).then((res) => {
            if (res.code == 201) {
              return;
            }
            this.$message.success("已删除");
            this.selectsStandardMethodByFLSSM();
          });
        })
        .catch(() => {});
    },
    handleSelectionChange(val) {
      this.selects = [];
@@ -1368,57 +852,7 @@
        this.selects.push(a.id);
      });
    },
    delStandardProductByIds() {
      if (this.selects.length == 0) {
        this.$message.error("未选中数据");
        return;
      }
      this.$confirm(
        "是否删除当前选中 " + this.selects.length + " 条数据?",
        "警告",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning",
        }
      )
        .then(() => {
          this.tableLoad = true;
          delStandardProductByIds({
            ids: JSON.stringify(this.selects),
          }).then((res) => {
            if (res.code == 201) {
              return;
            }
            this.$message.success("已删除");
            this.selectsStandardMethodByFLSSM();
          });
        })
        .catch(() => {});
    },
    addStandardProductDo() {
      let selects = this.$refs.ValueTable.multipleSelection;
      if (selects.length == 0) {
        this.$message.error("未选择数据");
        return;
      }
      let select = [];
      selects.forEach((a) => {
        select.push(a.id);
      });
      this.tableLoad = true;
      addStandardProduct({
        ids: JSON.stringify(select),
        tree: this.selectTree,
      }).then((res) => {
        if (res.code == 201) {
          return;
        }
        this.$message.success("添加成功");
        this.selectsStandardMethodByFLSSM();
      });
      this.addProductDia = false;
    },
    refreshList() {
      this.batchCopyDia = false;
      const index = this.standardList.findIndex(
@@ -1432,45 +866,65 @@
      this.currentPage = 1;
      this.tableLoad2 = true;
      this.standardId = row.id;
      selectStandardProductListByMethodId({
        id: row.id,
        tree: this.selectTree,
        page: this.currentPage,
      }).then((res) => {
        this.productList = res.data.productList;
        this.total = res.data.total;
        setTimeout(() => {
          this.productList.forEach((a) => {
            if (a.state == 1) this.toggleSelection(a);
          });
        }, 300);
        this.tableLoad2 = false;
        const tree = this.selectTree.split(" - ");
        // 选择最后一层树才可以拖拽排序
        if (tree.length === 4) {
          const name = tree[3] + "[4]";
          this.hasChildWithId(this.list, name);
          if (
            this.isHaveChildren.children &&
            this.isHaveChildren.children.length > 0
          ) {
      if (this.auditId) {
        // 标准库变更的检验项查询
        standardProductListRecordRelPage({
          standardMethodListId: row.id,
          tree: this.selectTree,
          standardProductListUpdateRecordId: this.auditId,
        }).then((res) => {
          this.productList = res.data.productList;
          this.total = res.data.total;
          setTimeout(() => {
            this.productList.forEach((a) => {
              if (a.state == 1) this.toggleSelection(a);
            });
          }, 300);
          this.tableLoad2 = false;
        });
      } else {
        // 正常情况下的标准查询
        selectStandardProductListByMethodId({
          id: row.id,
          tree: this.selectTree,
          page: this.currentPage,
        }).then((res) => {
          this.productList = res.data.productList;
          this.total = res.data.total;
          setTimeout(() => {
            this.productList.forEach((a) => {
              if (a.state == 1) this.toggleSelection(a);
            });
          }, 300);
          this.tableLoad2 = false;
          const tree = this.selectTree.split(" - ");
          // 选择最后一层树才可以拖拽排序
          if (tree.length === 4) {
            const name = tree[3] + "[4]";
            this.hasChildWithId(this.list, name);
            if (
              this.isHaveChildren.children &&
              this.isHaveChildren.children.length > 0
            ) {
              if (this.sortTable) {
                this.sortTable.destroy();
                this.sortTable = null;
              }
              return;
            }
          } else if (tree.length < 4) {
            if (this.sortTable) {
              this.sortTable.destroy();
              this.sortTable = null;
            }
            return;
          }
        } else if (tree.length < 4) {
          if (this.sortTable) {
            this.sortTable.destroy();
            this.sortTable = null;
          }
          return;
        }
        this.$nextTick(() => {
          this.rowDrop(row.id);
          this.$nextTick(() => {
            this.rowDrop(row.id);
          });
        });
      });
      }
    },
    toggleSelection(row) {
      this.$refs.productTable.toggleRowSelection(row, true);
@@ -1489,11 +943,8 @@
          state: row.state,
        }),
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        // this.$message.success('已保存')
        this.$message.success('已保存')
        this.refreshList()
      });
    },
    filterHandler(value) {
@@ -1643,12 +1094,9 @@
          }),
        }).then((res) => {
          this.sectionLoad = false;
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          this.$message.success("已保存");
          this.sectionUpDia = false;
          this.refreshList()
        });
      } else {
        upStandardProducts({
@@ -1665,10 +1113,6 @@
          },
        }).then((res) => {
          this.sectionLoad = false;
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          this.$message.success("已保存");
          this.sectionUpDia = false;
          this.currentPage0 = 1;
@@ -1698,19 +1142,36 @@
    handleCurrentChange(val) {
      this.currentPage = val;
      this.tableLoad2 = true;
      selectStandardProductListByMethodId({
        id: this.standardId,
        tree: this.selectTree,
        page: val,
      }).then((res) => {
        this.productList = res.data.productList;
        setTimeout(() => {
          this.productList.forEach((a) => {
            if (a.state == 1) this.toggleSelection(a);
          });
        }, 200);
        this.tableLoad2 = false;
      });
      if (this.auditId) {
        // 标准库变更查询\
        standardProductListRecordRelPage({
          standardMethodListId: this.standardId,
          tree: this.selectTree,
          standardProductListUpdateRecordId: this.auditId,
        }).then((res) => {
          this.productList = res.data.productList;
          setTimeout(() => {
            this.productList.forEach((a) => {
              if (a.state == 1) this.toggleSelection(a);
            });
          }, 200);
          this.tableLoad2 = false;
        });
      } else {
        selectStandardProductListByMethodId({
          id: this.standardId,
          tree: this.selectTree,
          page: val,
        }).then((res) => {
          this.productList = res.data.productList;
          setTimeout(() => {
            this.productList.forEach((a) => {
              if (a.state == 1) this.toggleSelection(a);
            });
          }, 200);
          this.tableLoad2 = false;
        });
      }
    },
    openCopyDia() {
      this.batchCopyDia = true;
@@ -1805,6 +1266,227 @@
        });
      });
    },
    // 提交变更申请
    submitReview() {
      this.$prompt('请输入变更原因', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputValidator: (value) => {
          if (!value || value.trim() === '') {
            return '请输入变更原因';
          }
          return true;
        }
      }).then(({ value }) => {
        this.submitReviewLoad = true
        productListSubmit({
          remark: value
        }).then(res => {
          this.submitReviewLoad = false
          this.selectsStandardMethodByFLSSM();
          this.existCheckingRecord()
          this.refreshList()
          this.$refs.productTable.doLayout()
        }).catch(err => {
          this.submitReviewLoad = false
        })
      }).catch(() => {
      });
    },
    // 获取当前有没有正在审核的变更
    existCheckingRecord() {
      existCheckingRecord().then(res => {
        this.standardCkeck = res.data
      })
    }
  },
};
</script>
<style scoped>
.standard {
  padding-top: 10px;
  display: flex;
  height: calc(100vh - 90px);
}
.left {
  width: 330px;
  height: calc(100% - 40px - 10px);
  background-color: white;
  padding: 15px;
}
.custom-tree-node {
  width: 100%;
  line-height: 32px;
}
.custom-tree-node .el-icon-delete {
  color: #3a7bfa;
  opacity: 0;
  font-size: 18px;
}
.custom-tree-node:hover .el-icon-delete {
  opacity: 1;
}
.custom-tree-node .el-icon-edit {
  color: #3a7bfa;
  opacity: 0;
  font-size: 18px;
}
.custom-tree-node:hover .el-icon-edit {
  opacity: 1;
}
.node_i {
  color: orange;
  font-size: 18px;
}
.right {
  margin-left: 5px;
  width: calc(100% - 350px);
  height: calc(100% - 40px);
}
.right .title {
  height: 34px;
  line-height: 34px;
  padding: 0 10px;
  background-color: white;
}
.standard_table {
  border-top: 1px solid #ebeef5;
  background-color: white;
}
.product_table {
  border-top: 1px solid #ebeef5;
  height: calc(100% - 235px);
  margin-top: 5px;
  background-color: white;
  user-select: none;
}
.product_table .el-table {
  height: calc(100% - 35px) !important;
}
.sort {
  width: 80% !important;
  overflow: hidden;
}
>>>.el-table__body-wrapper {
  height: calc(100% - 46px) !important;
}
>>>.header-class {
  height: 40px !important;
}
>>>.header-class th.el-table__cell>.cell {
  line-height: 20px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
>>>.el-table__row {
  height: 35px !important;
}
.search {
  border-bottom: 1px solid #ebeef5;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  box-sizing: border-box;
  padding-bottom: 10px;
}
.search-item {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.search-item .el-row {
  display: flex;
  align-items: center;
}
.search-item .el-col {
  margin-left: 0;
}
.more-edit .dialog-footer {
  position: absolute;
  top: 15px;
  right: 70px;
}
>>>.is-disabled .el-textarea__inner {
  background: rgba(0, 0, 0, 0.05) !important;
}
</style>
<style scoped>
.standard .el-tree-node__content {
  height: 32px;
  font-size: 14px;
  border-radius: 2px;
}
.standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  color: #3a7bfa;
}
.standard .has-gutter .el-table__cell .cell {
  line-height: 34px;
  background-color: #f8f8f8;
}
.standard .has-gutter .el-table__cell {
  background-color: #fafafa !important;
}
.standard .standard_table .el-table__row .cell {
  font-size: 14px;
}
.standard .el-table .warning-row .cell {
  color: #bababa;
}
.standard .el-table-filter__list {
  max-height: 400px;
  overflow-y: auto;
}
.standard .el-upload {
  width: 100%;
}
.standard .el-upload-dragger {
  width: 100%;
}
.standard .handleBtn.is-disabled .el-upload:focus {
  color: #c0c4cc !important;
}
.standard .avatar-uploader .el-upload {
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* 隐藏全选复选框 */
>>>.disable-select-all .el-checkbox {
  display: none !important;
}
</style>