lxp
2025-03-18 db01bceab158251b846c5d6d43c1185172eb958d
src/views/standard/standardLibrary/index.vue
@@ -67,21 +67,21 @@
  overflow: hidden;
}
>>>.el-table__body-wrapper {
>>> .el-table__body-wrapper {
  height: calc(100% - 46px) !important;
}
>>>.header-class {
>>> .header-class {
  height: 40px !important;
}
>>>.header-class th.el-table__cell>.cell {
>>> .header-class th.el-table__cell > .cell {
  line-height: 20px !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
>>>.el-table__row {
>>> .el-table__row {
  height: 35px !important;
}
@@ -115,16 +115,16 @@
  right: 70px;
}
>>>.is-disabled .el-textarea__inner {
>>> .is-disabled .el-textarea__inner {
  background: rgba(0, 0, 0, 0.05) !important;
}
>>>.is-disabled .el-textarea__inner {
>>> .is-disabled .el-textarea__inner {
  background: rgba(0, 0, 0, 0.05) !important;
}
>>>.el-table__body-wrapper::-webkit-scrollbar {
  height: 14px;
>>> .el-table__body-wrapper::-webkit-scrollbar {
  height: 6px;
  /* 设置滚动条宽度 */
}
</style>
@@ -135,7 +135,10 @@
  border-radius: 2px;
}
.standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
.standard
  .el-tree--highlight-current
  .el-tree-node.is-current
  > .el-tree-node__content {
  color: #3a7bfa;
}
@@ -186,38 +189,81 @@
    <div class="left">
      <el-row>
        <el-col :span="20">
          <el-input placeholder="输入关键字进行搜索" suffix-icon="el-icon-search" v-model="search" size="small"
            style="margin-bottom: 5px" clearable @blur="searchFilter" @clear="searchFilter"></el-input>
          <el-input
            placeholder="输入关键字进行搜索"
            suffix-icon="el-icon-search"
            v-model="search"
            size="small"
            style="margin-bottom: 5px"
            clearable
            @blur="searchFilter"
            @clear="searchFilter"
          ></el-input>
        </el-col>
        <el-col :span="4" style="text-align: center; line-height: 30px" v-if="addPower">
          <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button>
        <el-col
          :span="4"
          style="text-align: center; line-height: 30px"
          v-if="addPower"
        >
          <el-button
            type="primary"
            icon="el-icon-plus"
            size="mini"
            circle
            @click="addDia = true"
          ></el-button>
        </el-col>
      </el-row>
      <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label"
        :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current v-loading="treeLoad"
        :expand-on-click-node="false" :default-expanded-keys="expandedKeys" style="
      <el-tree
        :data="list"
        ref="tree"
        :props="{ children: 'children', label: 'label' }"
        node-key="label"
        :filter-node-method="filterNode"
        @node-click="handleNodeClick"
        highlight-current
        v-loading="treeLoad"
        :expand-on-click-node="false"
        :default-expanded-keys="expandedKeys"
        style="
          height: calc(100% - 30px);
          overflow-y: scroll;
          scrollbar-width: none;
        ">
        "
      >
        <div class="custom-tree-node" slot-scope="{ node, data }">
          <el-row style="width: 100%">
            <el-col :span="21" :class="{ sort: node.level > 3 }" :title="data.label" style="text-align: left">
            <el-col
              :span="21"
              :class="{ sort: node.level > 3 }"
              :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 :span="2" style="text-align: right" v-if="
              (node.data.children === null ||
                node.data.children === undefined)
            ">
              <el-button type="text" size="mini" @click.stop="remove(node, data)">
            <el-col
              :span="2"
              style="text-align: right"
              v-if="
                node.data.children === null || node.data.children === undefined
              "
            >
              <el-button
                type="text"
                size="mini"
                @click.stop="remove(node, data)"
              >
                <i class="el-icon-delete"></i>
              </el-button>
            </el-col>
@@ -230,98 +276,246 @@
        <el-col :span="20" style="font-size: 14px; color: #999">{{
          selectTree
        }}</el-col>
        <el-button size="small" type="primary" style="position: absolute; right: 100px; top: 1px"
          @click="uploadDia = true" v-if="inExcelOfTreePower">导入</el-button>
        <el-button size="small" type="primary" @click="handleMore" style="position: absolute; right: 5px; top: 1px"
          v-if="upStandardProduct">批量编辑</el-button>
        <el-button
          size="small"
          type="primary"
          style="position: absolute; right: 100px; top: 1px"
          @click="uploadDia = true"
          v-if="inExcelOfTreePower"
          >导入</el-button
        >
        <el-button
          size="small"
          type="primary"
          @click="handleMore"
          style="position: absolute; right: 5px; top: 1px"
          v-if="upStandardProduct"
          >批量编辑</el-button
        >
      </el-row>
      <el-row class="standard_table" v-loading="tableLoad">
        <el-table class="el-table" :data="standardList" style="width: 100%; height: 220px !important" height="220"
          tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard"
          header-row-class-name="header-class">
          <el-table-column prop="code" label="标准编号" show-overflow-tooltip width="200">
        <el-table
          class="el-table"
          :data="standardList"
          style="width: 100%; height: 220px !important"
          height="220"
          tooltip-effect="dark"
          highlight-current-row
          @row-click="rowClick"
          ref="standard"
          header-row-class-name="header-class"
        >
          <el-table-column
            prop="code"
            label="标准编号"
            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 prop="name" label="标准名称" show-overflow-tooltip></el-table-column>
          <el-table-column prop="remark" label="备注" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="name"
            label="标准名称"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="remark"
            label="备注"
            show-overflow-tooltip
          ></el-table-column>
        </el-table>
      </el-row>
      <el-row class="product_table" v-loading="tableLoad2">
        <el-table :data="productList" ref="productTable" style="width: 100%" height="100%" tooltip-effect="dark" stripe
          :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
          @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class">
        <el-table
          :data="productList"
          ref="productTable"
          style="width: 100%"
          height="100%"
          tooltip-effect="dark"
          stripe
          :fit="true"
          border
          @selection-change="handleSelectionChange"
          :row-class-name="tableRowClassName"
          @select="upProductSelect"
          @select-all="handleAll"
          class="productTable"
          header-row-class-name="header-class"
        >
          <el-table-column type="selection" width="50"> </el-table-column>
          <el-table-column prop="sample" label="产品" min-width="100" show-overflow-tooltip></el-table-column>
          <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
          <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="sample"
            label="产品"
            min-width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="model"
            label="型号"
            min-width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="inspectionItem"
            label="检验项"
            min-width="140"
            show-overflow-tooltip
          ></el-table-column>
          <!-- <el-table-column prop="inspectionItemClassify" label="检验项类型" width="120" show-overflow-tooltip></el-table-column> -->
          <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140"
            show-overflow-tooltip></el-table-column>
          <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="inspectionItemSubclass"
            label="检验项子项"
            min-width="140"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column
            prop="sonLaboratory"
            label="子实验室"
            width="130"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column prop="ask" label="要求值" min-width="200px">
            <template slot-scope="scope">
              <el-input size="small" placeholder="要求值" v-model="scope.row.ask" clearable
                @change="(value) => upStandardProductList(value, scope.row.id)" v-if="upStandardProduct" type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"></el-input>
              <el-input
                size="small"
                placeholder="要求值"
                v-model="scope.row.ask"
                clearable
                @change="(value) => upStandardProductList(value, scope.row.id)"
                v-if="upStandardProduct"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"
              ></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="tell" label="要求描述" min-width="220px">
            <template slot-scope="scope">
              <el-input size="small" placeholder="要求描述" v-model="scope.row.tell" clearable @change="(value) => upStandardProductListOfTell(value, scope.row.id)
                " v-if="upStandardProduct" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"></el-input>
              <el-input
                size="small"
                placeholder="要求描述"
                v-model="scope.row.tell"
                clearable
                @change="
                  (value) => upStandardProductListOfTell(value, scope.row.id)
                "
                v-if="upStandardProduct"
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 3 }"
              ></el-input>
              <span v-else>{{ scope.row.ask }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="method" label="试验方法" width="200">
            <template slot-scope="scope">
              <el-select v-model="scope.row.methodS" size="small" placeholder="试验方法" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
                " v-if="upStandardProduct">
                <el-option v-for="(a, i) in JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option>
              <el-select
                v-model="scope.row.methodS"
                size="small"
                placeholder="试验方法"
                @change="
                  (value) => upStandardProductListOfMethodS(value, scope.row.id)
                "
                v-if="upStandardProduct"
              >
                <el-option
                  v-for="(a, i) in 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 prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="unit"
            label="计量单位"
            width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column prop="price" label="单价(元)" width="120">
            <template slot-scope="scope">
              <el-input v-model="scope.row.price" size="small" placeholder="单价(元)" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
                " v-if="upStandardProduct">
              <el-input
                v-model="scope.row.price"
                size="small"
                placeholder="单价(元)"
                @change="
                  (value) => upStandardProductListOfPrice(value, scope.row.id)
                "
                v-if="upStandardProduct"
              >
              </el-input>
              <span v-else>{{ scope.row.price }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="manHour" label="工时系数" width="120">
            <template slot-scope="scope">
              <el-input v-model="scope.row.manHour" size="small" placeholder="工时系数" @change="(value) => upStandardProductListOfManHour(value, scope.row.id)
                " v-if="upStandardProduct">
              <el-input
                v-model="scope.row.manHour"
                size="small"
                placeholder="工时系数"
                @change="
                  (value) => upStandardProductListOfManHour(value, scope.row.id)
                "
                v-if="upStandardProduct"
              >
              </el-input>
              <span v-else>{{ scope.row.manHour }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="manHourGroup" label="工时分组" width="100" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="manHourGroup"
            label="工时分组"
            width="100"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column prop="templateId" label="模板" width="200">
            <template slot-scope="scope">
              <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" @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"
                size="small"
                filterable
                :disabled="!upStandardProduct"
                @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 prop="section" label="区间" width="120" show-overflow-tooltip></el-table-column>
          <el-table-column
            prop="section"
            label="区间"
            width="120"
            show-overflow-tooltip
          ></el-table-column>
          <el-table-column prop="section" label="操作" width="120">
            <template slot-scope="scope">
              <el-button type="text" @click="sectionUp(scope.row)">区间设置</el-button>
              <el-button type="text" @click="sectionUp(scope.row)"
                >区间设置</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <el-pagination style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange"
          :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total">
        <el-pagination
          style="position: absolute; right: 16px; bottom: 1px"
          @current-change="handleCurrentChange"
          :current-page="currentPage"
          layout="total, prev, pager, next, jumper"
          :page-size="50"
          :total="total"
        >
        </el-pagination>
      </el-row>
    </div>
@@ -356,150 +550,358 @@
            <span class="required-span">* </span>型号:
          </el-col>
          <el-col :span="16" :offset="1">
            <el-input v-model="addOb.model" placeholder="请输入型号" clearable size="small"
              @keyup.enter.native="addStandardTree"></el-input>
            <el-input
              v-model="addOb.model"
              placeholder="请输入型号"
              clearable
              size="small"
              @keyup.enter.native="addStandardTree"
            ></el-input>
          </el-col>
        </el-row>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDia = false">取 消</el-button>
        <el-button type="primary" @click="addStandardTree" :loading="addLoad">确 定</el-button>
        <el-button type="primary" @click="addStandardTree" :loading="addLoad"
          >确 定</el-button
        >
      </span>
    </el-dialog>
    <el-dialog title="批量编辑" top="5vh" :visible.sync="moreEdit" width="90%" class="more-edit">
      <div class="body" style="display: flex; flex-direction: column; height: 85vh">
    <el-dialog
      title="批量编辑"
      top="5vh"
      :visible.sync="moreEdit"
      width="90%"
      class="more-edit"
    >
      <div
        class="body"
        style="display: flex; flex-direction: column; height: 85vh"
      >
        <div class="search">
          <div class="search-item">
            <el-row style="width: 25%; margin-bottom: 16px">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                要求值:</el-col>
                要求值:</el-col
              >
              <el-col :span="16">
                <el-input size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length == 0"></el-input>
                <el-input
                  size="small"
                  v-model="moreInfo.ask"
                  clearable
                  :disabled="moreSelects.length == 0"
                ></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%; margin-bottom: 16px">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                要求描述:</el-col>
              <el-col :span="16" style="display: flex; align-items: flex-start; height: 100%">
                <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3 }"
                  v-model="moreInfo.tell" :disabled="moreSelects.length == 0"></el-input>
                要求描述:</el-col
              >
              <el-col
                :span="16"
                style="display: flex; align-items: flex-start; height: 100%"
              >
                <el-input
                  size="small"
                  clearable
                  type="textarea"
                  :autosize="{ minRows: 1, maxRows: 3 }"
                  v-model="moreInfo.tell"
                  :disabled="moreSelects.length == 0"
                ></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%; margin-bottom: 16px">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                试验方法:</el-col>
                试验方法:</el-col
              >
              <el-col :span="16">
                <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%"
                  :disabled="moreSelects.length == 0" clearable>
                  <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option>
                <el-select
                  v-model="moreInfo.methodS"
                  size="small"
                  filterable
                  style="width: 100%"
                  :disabled="moreSelects.length == 0"
                  clearable
                >
                  <el-option
                    v-for="(a, ai) in methodList"
                    :key="ai"
                    :label="a.label"
                    :value="a.value"
                  ></el-option>
                </el-select>
              </el-col>
            </el-row>
            <el-row style="width: 25%; margin-bottom: 16px">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                单价(元):</el-col>
                单价(元):</el-col
              >
              <el-col :span="16">
                <el-input size="small" v-model="moreInfo.price" clearable
                  :disabled="moreSelects.length == 0"></el-input>
                <el-input
                  size="small"
                  v-model="moreInfo.price"
                  clearable
                  :disabled="moreSelects.length == 0"
                ></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                工时系数:</el-col>
                工时系数:</el-col
              >
              <el-col :span="16">
                <el-input size="small" v-model="moreInfo.manHour" clearable
                  :disabled="moreSelects.length == 0"></el-input>
                <el-input
                  size="small"
                  v-model="moreInfo.manHour"
                  clearable
                  :disabled="moreSelects.length == 0"
                ></el-input>
              </el-col>
            </el-row>
            <el-row style="width: 25%">
              <el-col :span="6" style="text-align: right">
                <!-- <span class="required-span">* </span> -->
                模板:</el-col>
                模板:</el-col
              >
              <el-col :span="16">
                <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模板" style="width: 100%"
                  :disabled="moreSelects.length == 0">
                  <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
                <el-select
                  v-model="moreInfo.templateId"
                  size="small"
                  filterable
                  placeholder="模板"
                  style="width: 100%"
                  :disabled="moreSelects.length == 0"
                >
                  <el-option
                    v-for="(a, ai) in templateList"
                    :key="ai"
                    :label="a.name"
                    :value="a.id"
                  ></el-option>
                </el-select>
              </el-col>
            </el-row>
            <el-row style="width: 25%">
              <el-col :span="6" style="text-align: right"> 是否启用:</el-col>
              <el-col :span="16">
                <el-select v-model="moreInfo.state" size="small" filterable placeholder="是否启用" style="width: 100%"
                  :disabled="moreSelects.length == 0" clearable>
                <el-select
                  v-model="moreInfo.state"
                  size="small"
                  filterable
                  placeholder="是否启用"
                  style="width: 100%"
                  :disabled="moreSelects.length == 0"
                  clearable
                >
                  <el-option label="启用" :value="1"></el-option>
                  <el-option label="不启用" :value="0"></el-option>
                </el-select>
              </el-col>
            </el-row>
            <el-row style="width: 100%; margin-top: 8px">
              <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
                <el-button @click="clearProduct(1)" size="small" type="danger">重置单价</el-button>
                <el-button @click="clearProduct(2)" size="small" type="danger">重置工时系数</el-button>
                <el-button type="primary" size="small" @click="sectionUp(moreSelects)">设置区间</el-button>
                <el-button @click="moreEdit = false" size="small">取 消</el-button>
                <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">保 存</el-button>
              <el-col
                :span="24"
                style="
                  display: flex;
                  align-items: center;
                  justify-content: flex-end;
                "
              >
                <el-button @click="clearProduct(1)" size="small" type="danger"
                  >重置单价</el-button
                >
                <el-button @click="clearProduct(2)" size="small" type="danger"
                  >重置工时系数</el-button
                >
                <el-button
                  type="primary"
                  size="small"
                  @click="sectionUp(moreSelects)"
                  >设置区间</el-button
                >
                <el-button @click="moreEdit = false" size="small"
                  >取 消</el-button
                >
                <el-button
                  type="primary"
                  @click="subMoreEdit"
                  :loading="moreEditLoad"
                  size="small"
                  >保 存</el-button
                >
              </el-col>
            </el-row>
          </div>
        </div>
        <div style="flex: 1; overflow-y: auto" v-loading="productTableLoading0">
          <el-table :data="productList0" ref="productTable0" style="width: 100%" height="96%" tooltip-effect="dark"
            stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0"
            header-row-class-name="header-class" :row-key="(row) => row.id" @filter-change="filterHandler"
            highlight-current-row>
          <el-table
            :data="productList0"
            ref="productTable0"
            style="width: 100%"
            height="96%"
            tooltip-effect="dark"
            stripe
            :fit="true"
            border
            @select-all="handleSelectAll0"
            @select="handleSelectionChange0"
            header-row-class-name="header-class"
            :row-key="(row) => row.id"
            @filter-change="filterHandler"
            highlight-current-row
          >
            <el-table-column type="selection" width="50"> </el-table-column>
            <el-table-column prop="sample" label="产品" min-width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="model" label="型号" min-width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="inspectionItem" label="检验项" min-width="140" show-overflow-tooltip :filters="filters0"
              :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="inspectionItemSubclass" label="检验项子项" min-width="140" show-overflow-tooltip
              :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass"
              filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="sonLaboratory" label="子实验室" width="130" show-overflow-tooltip
              :filters="dict.type.sys_sub_lab" :filter-multiple="false" column-key="sonLaboratory"
              filter-placement="bottom-start"></el-table-column>
            <el-table-column prop="ask" label="要求值" min-width="200px"></el-table-column>
            <el-table-column prop="tell" label="要求描述" min-width="220px"></el-table-column>
            <el-table-column prop="methodS" label="试验方法" width="200"></el-table-column>
            <el-table-column prop="unit" label="计量单位" width="100" show-overflow-tooltip></el-table-column>
            <el-table-column prop="price" label="单价(元)" width="120"></el-table-column>
            <el-table-column prop="manHour" label="工时系数" width="120"></el-table-column>
            <el-table-column prop="manHourGroup" label="工时分组" width="100" show-overflow-tooltip></el-table-column>
            <el-table-column
              prop="sample"
              label="产品"
              min-width="100"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              prop="model"
              label="型号"
              min-width="100"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              prop="inspectionItem"
              label="检验项"
              min-width="140"
              show-overflow-tooltip
              :filters="filters0"
              :filter-multiple="false"
              column-key="inspectionItem"
              filter-placement="bottom-start"
            ></el-table-column>
            <el-table-column
              prop="inspectionItemSubclass"
              label="检验项子项"
              min-width="140"
              show-overflow-tooltip
              :filters="filters1"
              :filter-multiple="false"
              column-key="inspectionItemSubclass"
              filter-placement="bottom-start"
            ></el-table-column>
            <el-table-column
              prop="sonLaboratory"
              label="子实验室"
              width="130"
              show-overflow-tooltip
              :filters="dict.type.sys_sub_lab"
              :filter-multiple="false"
              column-key="sonLaboratory"
              filter-placement="bottom-start"
            ></el-table-column>
            <el-table-column
              prop="ask"
              label="要求值"
              min-width="200px"
            ></el-table-column>
            <el-table-column
              prop="tell"
              label="要求描述"
              min-width="220px"
            ></el-table-column>
            <el-table-column
              prop="methodS"
              label="试验方法"
              width="200"
            ></el-table-column>
            <el-table-column
              prop="unit"
              label="计量单位"
              width="100"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              prop="price"
              label="单价(元)"
              width="120"
            ></el-table-column>
            <el-table-column
              prop="manHour"
              label="工时系数"
              width="120"
            ></el-table-column>
            <el-table-column
              prop="manHourGroup"
              label="工时分组"
              width="100"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column prop="templateId" label="模板" width="200">
              <template slot-scope="scope">
                {{
                  templateList.find((item) => item.id == scope.row.templateId)
                    ? templateList.find(
                      (item) => item.id == scope.row.templateId
                    ).name
                        (item) => item.id == scope.row.templateId
                      ).name
                    : ""
                }}
              </template>
            </el-table-column>
            <el-table-column prop="section" label="区间" width="120" show-overflow-tooltip></el-table-column>
            <el-table-column
              prop="section"
              label="区间"
              width="120"
              show-overflow-tooltip
            ></el-table-column>
          </el-table>
          <el-pagination style="position: absolute; right: 16px; bottom: 4px" @current-change="handleCurrentChange0"
            :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0">
          <el-pagination
            style="position: absolute; right: 16px; bottom: 4px"
            @current-change="handleCurrentChange0"
            :current-page="currentPage0"
            layout="total, prev, pager, next, jumper"
            :page-size="100"
            :total="total0"
          >
          </el-pagination>
        </div>
      </div>
    </el-dialog>
    <el-dialog title="区间设置" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false">
    <el-dialog
      title="区间设置"
      :visible.sync="sectionUpDia"
      width="70%"
      :close-on-click-modal="false"
    >
      <div style="width: 100%; text-align: left">
        <el-button id="copyBtn" v-if="sectionList.length > 0" :data-clipboard-text="JSON.stringify(sectionList)"
          type="primary" size="mini" @click="copySectionConfig">复制区间设置</el-button>
        <el-button type="primary" size="mini" @click="openImportSectionsConfig">导入区间设置</el-button>
        <el-dialog :visible.sync="importSectionsConfigDia" width="30%" title="导入区间配置">
          <el-input type="textarea" :rows="3" v-model="sectionsConfigText"></el-input>
        <el-button
          id="copyBtn"
          v-if="sectionList.length > 0"
          :data-clipboard-text="JSON.stringify(sectionList)"
          type="primary"
          size="mini"
          @click="copySectionConfig"
          >复制区间设置</el-button
        >
        <el-button type="primary" size="mini" @click="openImportSectionsConfig"
          >导入区间设置</el-button
        >
        <el-dialog
          :visible.sync="importSectionsConfigDia"
          width="30%"
          title="导入区间配置"
        >
          <el-input
            type="textarea"
            :rows="3"
            v-model="sectionsConfigText"
          ></el-input>
          <span slot="footer" class="dialog-footer">
            <el-button @click="importSectionsConfigDia = false">取 消</el-button>
            <el-button type="primary" @click="confirmImportConfig">确认</el-button>
            <el-button @click="importSectionsConfigDia = false"
              >取 消</el-button
            >
            <el-button type="primary" @click="confirmImportConfig"
              >确认</el-button
            >
          </span>
        </el-dialog>
      </div>
@@ -509,62 +911,112 @@
          </el-table-column>
          <el-table-column label="区间" align="center">
            <template slot-scope="scope">
              <el-input size="small" v-model="scope.row.thing" clearable placeholder="区间"></el-input>
              <el-input
                size="small"
                v-model="scope.row.thing"
                clearable
                placeholder="区间"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column label="要求值" align="center">
            <template slot-scope="scope">
              <el-input size="small" v-model="scope.row.ask" clearable placeholder="要求值"></el-input>
              <el-input
                size="small"
                v-model="scope.row.ask"
                clearable
                placeholder="要求值"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column label="要求描述" align="center">
            <template slot-scope="scope">
              <el-input size="small" placeholder="要求描述" v-model="scope.row.tell" clearable type="textarea"
                :autosize="{ minRows: 1, maxRows: 2 }"></el-input>
              <el-input
                size="small"
                placeholder="要求描述"
                v-model="scope.row.tell"
                clearable
                type="textarea"
                :autosize="{ minRows: 1, maxRows: 2 }"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column label="单价" align="center" width="120">
            <template slot-scope="scope">
              <el-input size="small" v-model="scope.row.price" clearable placeholder="单价"></el-input>
              <el-input
                size="small"
                v-model="scope.row.price"
                clearable
                placeholder="单价"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column label="工时系数" align="center" width="120">
            <template slot-scope="scope">
              <el-input size="small" v-model="scope.row.manHour" clearable placeholder="工时系数"></el-input>
              <el-input
                size="small"
                v-model="scope.row.manHour"
                clearable
                placeholder="工时系数"
              ></el-input>
            </template>
          </el-table-column>
          <el-table-column label="操作" width="70" align="center">
            <template slot-scope="scope">
              <el-button size="mini" type="danger" icon="el-icon-minus" circle
                @click="sectionList.splice(scope.$index, 1)"></el-button>
              <el-button
                size="mini"
                type="danger"
                icon="el-icon-minus"
                circle
                @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 type="primary" @click="sectionLoadAdd" :loading="sectionLoad">保 存</el-button>
        <el-button type="primary" @click="
          sectionList.push({
            thing: '',
            price: sectionRow.price,
            manHour: sectionRow.manHour,
          })
          " icon="el-icon-plus"></el-button>
        <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad"
          >保 存</el-button
        >
        <el-button
          type="primary"
          @click="
            sectionList.push({
              thing: '',
              price: sectionRow.price,
              manHour: sectionRow.manHour,
            })
          "
          icon="el-icon-plus"
        ></el-button>
      </span>
    </el-dialog>
    <el-dialog title="数据导入" :visible.sync="uploadDia" width="500px">
      <div style="margin: 0 auto">
        <el-upload ref="upload" drag :action="javaApi + '/standardTree/inExcelOfTree' + '/' + 'false'
          " :headers="uploadHeader" :file-list="fileList" name="file" :auto-upload="false" accept=".xlsx" :limit="1"
          :on-change="beforeUpload" :on-success="onSuccess" :on-error="onError">
        <el-upload
          ref="upload"
          drag
          :action="javaApi + '/standardTree/inExcelOfTree' + '/' + 'false'"
          :headers="uploadHeader"
          :file-list="fileList"
          name="file"
          :auto-upload="false"
          accept=".xlsx"
          :limit="1"
          :on-change="beforeUpload"
          :on-success="onSuccess"
          :on-error="onError"
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        </el-upload>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="uploadDia = false">取 消</el-button>
        <el-button type="primary" @click="submitUpload()" :loading="uploading">上 传</el-button>
        <el-button type="primary" @click="submitUpload()" :loading="uploading"
          >上 传</el-button
        >
      </span>
    </el-dialog>
  </div>
@@ -588,10 +1040,10 @@
  resetTreeOfPrice,
  resetTreeOfHour,
  selectsStandardMethodByFLSSM,
} from '@/api/standard/standardLibrary.js'
} from "@/api/standard/standardLibrary.js";
export default {
  dicts: ['sys_sub_lab'],
  dicts: ["sys_sub_lab"],
  data() {
    return {
      importSectionsConfigDia: false,
@@ -708,7 +1160,7 @@
    this.selectStandardMethods();
  },
  methods: {
    confirmImportConfig() { },
    confirmImportConfig() {},
    openImportSectionsConfig() {
      // this.importSectionsConfigDia = true
      this.$confirm("确认导入复制的区间配置?", "提示", {
@@ -736,7 +1188,7 @@
            this.$message.success("导入成功");
          }
        })
        .catch(() => { });
        .catch(() => {});
    },
    //复制区间配置
    copySectionConfig() {
@@ -825,7 +1277,7 @@
            this.productList = [];
          });
        })
        .catch((e) => { });
        .catch((e) => {});
    },
    deleteStandard(arr, label) {
      arr.forEach((item, index) => {
@@ -987,27 +1439,27 @@
        return;
      }
      this.addLoad = true;
      addStandardTree(this.addOb).then((res) => {
        if (res.code === 201) {
      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;
          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;
        this.$tab.refreshPage();
      })
          this.$tab.refreshPage();
        })
        .catch((e) => {
          this.addDia = false;
          this.addLoad = false;
@@ -1017,17 +1469,16 @@
      this.tableLoad = true;
      selectsStandardMethodByFLSSM({
        tree: this.selectTree,
      })
        .then((res) => {
          this.tableLoad = false;
          this.standardList = res.data.standardMethodList;
          if (this.standardList && this.standardList.length > 0) {
            this.$refs.standard.setCurrentRow(this.standardList[0]);
            this.rowClick(this.standardList[0]);
          } else {
            this.productList = [];
          }
        });
      }).then((res) => {
        this.tableLoad = false;
        this.standardList = res.data.standardMethodList;
        if (this.standardList && this.standardList.length > 0) {
          this.$refs.standard.setCurrentRow(this.standardList[0]);
          this.rowClick(this.standardList[0]);
        } else {
          this.productList = [];
        }
      });
    },
    getPower() {
      let power = JSON.parse(sessionStorage.getItem("power"));
@@ -1094,14 +1545,13 @@
          id: index,
          tell: value,
        }),
      })
        .then((res) => {
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          this.$message.success("已保存");
        });
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        this.$message.success("已保存");
      });
    },
    upStandardProductListOfMethodS(value, index) {
      upStandardProductList({
@@ -1109,14 +1559,13 @@
          id: index,
          methodS: value,
        }),
      })
        .then((res) => {
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          // this.$message.success('已保存')
        });
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        // this.$message.success('已保存')
      });
    },
    upStandardProductListOfPrice(value, index) {
      upStandardProductList({
@@ -1124,14 +1573,13 @@
          id: index,
          price: value,
        }),
      })
        .then((res) => {
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          // this.$message.success('已保存')
        });
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        // this.$message.success('已保存')
      });
    },
    upStandardProductListOfManHour(value, index) {
      upStandardProductList({
@@ -1139,14 +1587,13 @@
          id: index,
          manHour: value,
        }),
      })
        .then((res) => {
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          // this.$message.success('已保存')
        });
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        // this.$message.success('已保存')
      });
    },
    upStandardProductListOfTemplate(value, index) {
      upStandardProductList({
@@ -1154,14 +1601,13 @@
          id: index,
          templateId: value,
        }),
      })
        .then((res) => {
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          // this.$message.success('已保存')
        });
      }).then((res) => {
        if (res.code == 201) {
          this.$message.error("未保存");
          return;
        }
        // this.$message.success('已保存')
      });
    },
    delStandardMethodByFLSSM(id) {
      this.$confirm("是否删除当前数据?", "警告", {
@@ -1171,7 +1617,7 @@
      })
        .then(() => {
          this.tableLoad = true;
          delStandardMethodByFLSSM({ id: id, }).then((res) => {
          delStandardMethodByFLSSM({ id: id }).then((res) => {
            if (res.code == 201) {
              return;
            }
@@ -1179,7 +1625,7 @@
            this.selectsStandardMethodByFLSSM();
          });
        })
        .catch(() => { });
        .catch(() => {});
    },
    handleSelectionChange(val) {
      this.selects = [];
@@ -1213,7 +1659,7 @@
            this.selectsStandardMethodByFLSSM();
          });
        })
        .catch(() => { });
        .catch(() => {});
    },
    // addStandardProductDo() {
    //   let selects = this.$refs.ValueTable.multipleSelection;
@@ -1386,16 +1832,15 @@
            price: this.sectionRow.price,
            manHour: this.sectionRow.manHour,
          }),
        })
          .then((res) => {
            this.sectionLoad = false;
            if (res.code == 201) {
              this.$message.error("未保存");
              return;
            }
            this.$message.success("已保存");
            this.sectionUpDia = false;
          });
        }).then((res) => {
          this.sectionLoad = false;
          if (res.code == 201) {
            this.$message.error("未保存");
            return;
          }
          this.$message.success("已保存");
          this.sectionUpDia = false;
        });
      } else {
        upStandardProducts({
          ids: JSON.stringify(this.moreSelects.map((a) => a.id)),
@@ -1479,7 +1924,7 @@
      upStandardProducts({
        ids: JSON.stringify(this.moreSelects.map((a) => a.id)),
        standardProductList: this.moreInfo,
      },).then((res) => {
      }).then((res) => {
        this.moreEditLoad = false;
        if (res.code == 201) {
          this.$message.error("未保存");
@@ -1531,23 +1976,22 @@
        laboratory: this.sonLaboratory,
        items: this.inspectionItemSubclass,
        item: this.inspectionItem,
      })
        .then((res) => {
          this.productList0 = res.data.records;
          this.total0 = res.data.total;
          this.productTableLoading0 = false;
          this.page = res.data.pages;
          this.$nextTick(() => {
            this.productList0.forEach((a, i) => {
              if (this.moreSelects.find((b) => a.id == b.id)) {
                this.$refs.productTable0.toggleRowSelection(
                  this.productList0[i],
                  true
                );
              }
            });
      }).then((res) => {
        this.productList0 = res.data.records;
        this.total0 = res.data.total;
        this.productTableLoading0 = false;
        this.page = res.data.pages;
        this.$nextTick(() => {
          this.productList0.forEach((a, i) => {
            if (this.moreSelects.find((b) => a.id == b.id)) {
              this.$refs.productTable0.toggleRowSelection(
                this.productList0[i],
                true
              );
            }
          });
        });
      });
    },
    handleCurrentChange0(e) {
      this.currentPage0 = e;
@@ -1558,25 +2002,24 @@
        id: this.standardId,
        tree: this.selectTree,
        item: this.inspectionItem,
      })
        .then((res) => {
          this.filters0 = [];
          this.filters1 = [];
          res.data.item.forEach((a) => {
            this.filters0.push({
              text: a.inspectionItem,
              value: a.inspectionItem,
            });
          });
          res.data.items.forEach((a) => {
            if (a != null) {
              this.filters1.push({
                text: a.inspectionItemSubclass,
                value: a.inspectionItemSubclass,
              });
            }
      }).then((res) => {
        this.filters0 = [];
        this.filters1 = [];
        res.data.item.forEach((a) => {
          this.filters0.push({
            text: a.inspectionItem,
            value: a.inspectionItem,
          });
        });
        res.data.items.forEach((a) => {
          if (a != null) {
            this.filters1.push({
              text: a.inspectionItemSubclass,
              value: a.inspectionItemSubclass,
            });
          }
        });
      });
    },
    beforeUpload(file, fileList) {
      if (
@@ -1640,21 +2083,20 @@
            resetTreeOfHour({
              tree: this.selectTree,
              standardId: this.standardId,
            })
              .then((res) => {
                if (res.code == 201) {
                  return;
                }
                this.$message.success("已清空");
                this.currentPage0 = 1;
                this.getList();
                this.rowClick({
                  id: this.standardId,
                });
            }).then((res) => {
              if (res.code == 201) {
                return;
              }
              this.$message.success("已清空");
              this.currentPage0 = 1;
              this.getList();
              this.rowClick({
                id: this.standardId,
              });
            });
          }
        })
        .catch(() => { });
        .catch(() => {});
    },
  },
};