From f9c43ac677055208074879262c670926fbdee44b Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 14 二月 2025 10:03:19 +0800
Subject: [PATCH] 标准库搬迁50%

---
 src/views/standard/model/index.vue           |    0 
 src/api/standard/standardLibrary.js          |  208 ++++
 src/views/standard/standardLibrary/index.vue | 2253 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 vue.config.js                                |    2 
 4 files changed, 2,462 insertions(+), 1 deletions(-)

diff --git a/src/api/standard/standardLibrary.js b/src/api/standard/standardLibrary.js
new file mode 100644
index 0000000..7768746
--- /dev/null
+++ b/src/api/standard/standardLibrary.js
@@ -0,0 +1,208 @@
+import request from "@/utils/request";
+
+// 鏍囧噯搴撴爲鎺掑簭
+export function updateTreeSort(data) {
+  return request({
+    url: "/standardTree/updateTreeSort",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏍囧噯搴撴楠岄」鎺掑簭淇濆瓨鎺ュ彛
+export function resetTreeDragBatch(data) {
+  return request({
+    url: "/standardTree/resetTreeDragBatch",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鍒犻櫎鏍囧噯鏍戠殑灞傜骇
+export function delStandardTree(data) {
+  return request({
+    url: "/standardTree/delStandardTree",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鑾峰彇鏍囧噯鏍�
+export function selectStandardTreeList(query) {
+  return request({
+    url: "/standardTree/selectStandardTreeList",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鑾峰彇瀹為獙瀹ゅ悕绉�
+export function obtainItemParameterList(query) {
+  return request({
+    url: "/laboratoryScope/obtainItemParameterList",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鑾峰彇妫�楠屽璞℃灇涓�
+export function selectTestObjectByName(query) {
+  return request({
+    url: "/capacityScope/selectTestObjectByName",
+    method: "get",
+    params: query,
+  });
+}
+
+// 缁欐爣鍑嗘爲娣诲姞妫�楠屾爣鍑�
+export function addStandardMethodList(data) {
+  return request({
+    url: "/standardTree/addStandardMethodList",
+    method: "post",
+    data: data,
+  });
+}
+
+// 娣诲姞鏍囧噯鏍�
+export function addStandardTree(data) {
+  return request({
+    url: "/standardTree/addStandardTree",
+    method: "post",
+    data: data,
+  });
+}
+
+// 淇敼鏍囧噯鏍�
+export function updateStandardTree(data) {
+  return request({
+    url: "/standardTree/updateStandardTree",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏍规嵁鏍囧噯鏍戣繘琛屾爣鍑嗘煡璇�
+export function selectsStandardMethodByFLSSM(data) {
+  return request({
+    url: "/standardTree/selectsStandardMethodByFLSSM",
+    method: "post",
+    data: data,
+  });
+}
+
+// 淇敼鏍囧噯搴撲腑鐨勮姹傚��
+export function upStandardProductList(data) {
+  return request({
+    url: "/standardTree/upStandardProductList",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鍒犻櫎鏍囧噯鏍戜笅鐨勬楠屾爣鍑�
+export function delStandardMethodByFLSSM(data) {
+  return request({
+    url: "/standardTree/delStandardMethodByFLSSM",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鍒犻櫎鏍囧噯鏍戜笅鐨勬楠屾爣鍑�
+export function delStandardProductByIds(data) {
+  return request({
+    url: "/standardTree/delStandardProductByIds",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏂板鏍囧噯鏍戜笅鐨勬楠岄」鐩�
+export function addStandardProduct(data) {
+  return request({
+    url: "/standardTree/addStandardProduct",
+    method: "post",
+    data: data,
+  });
+}
+
+// 閫氳繃妫�楠屾爣鍑嗘煡璇㈡楠岄」鐩�
+export function selectStandardProductListByMethodId(data) {
+  return request({
+    url: "/standardTree/selectStandardProductListByMethodId",
+    method: "post",
+    data: data,
+  });
+}
+
+// 淇敼鏍囧噯搴撲腑鐨勫尯闂磋缃�
+export function updateSection(data) {
+  return request({
+    url: "/standardTree/updateSection",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鑾峰彇浜у搧鏋舵瀯
+export function upStandardProducts(data) {
+  return request({
+    url: "/standardTree/upStandardProducts",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏌ヨ鍘熷璁板綍妯℃澘鏋氫妇
+export function getStandardTemplate(query) {
+  return request({
+    url: "/StandardTemplate/getStandardTemplate",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鑾峰彇鏍囧噯鏂规硶鏋氫妇
+export function selectStandardMethods(query) {
+  return request({
+    url: "/standardMethod/selectStandardMethods",
+    method: "get",
+    params: query,
+  });
+}
+
+// 鎵归噺缂栬緫鏌ヨ妫�楠岄」鐩�
+export function selectStandardProductByMethodId(data) {
+  return request({
+    url: "/standardTree/selectStandardProductByMethodId",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鎵归噺缂栬緫鏌ヨ鎵�鏈夋楠岄」鐩拰妫�楠屽瓙椤规灇涓�
+export function selectStandardProductEnumByMethodId(data) {
+  return request({
+    url: "/standardTree/selectStandardProductEnumByMethodId",
+    method: "post",
+    data: data,
+  });
+}
+
+// 閲嶇疆鏍囧噯搴撳崟浠�
+export function resetTreeOfPrice(data) {
+  return request({
+    url: "/standardTree/resetTreeOfPrice",
+    method: "post",
+    data: data,
+  });
+}
+
+// 閲嶇疆鏍囧噯搴撳伐鏃剁郴鏁�
+export function resetTreeOfHour(data) {
+  return request({
+    url: "/standardTree/resetTreeOfHour",
+    method: "post",
+    data: data,
+  });
+}
diff --git a/src/views/standard/model/index.vue b/src/views/standard/model/index.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/standard/model/index.vue
diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
new file mode 100644
index 0000000..6314cb0
--- /dev/null
+++ b/src/views/standard/standardLibrary/index.vue
@@ -0,0 +1,2253 @@
+<style scoped>
+.standard {
+  padding: 10px 0;
+  display: flex;
+}
+
+.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% - 365px);
+  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-col>
+        <el-col
+          v-if="addPower"
+          :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>
+      </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="
+          height: calc(100% - 30px);
+          overflow-y: scroll;
+          scrollbar-width: none;
+        "
+        @node-click="handleNodeClick"
+        @node-expand="nodeOpen"
+        @node-collapse="nodeClose"
+        @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"
+            >
+              <span>
+                <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(['system:standard: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)"
+              >
+                <i class="el-icon-edit"></i>
+              </el-button>
+            </el-col>
+            <el-col
+              v-if="
+                checkPermi(['system:standard: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)"
+              >
+                <i class="el-icon-delete"></i>
+              </el-button>
+            </el-col>
+          </el-row>
+        </div>
+      </el-tree>
+    </div>
+    <div class="right">
+      <el-row class="title" style="width: 100%">
+        <el-col :span="20" style="font-size: 14px; color: #999">{{
+          selectTree
+        }}</el-col>
+        <el-col :span="4">
+          <el-button
+            v-if="isShowCopy"
+            size="small"
+            style="position: absolute; right: 50px; top: 1px"
+            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"
+          >
+            <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>
+      </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-column label="瑕佹眰鍊�" min-width="200px" prop="ask">
+            <template slot-scope="scope">
+              <el-input
+                v-if="checkPermi(['system:standard: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>
+              <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(['system:standard: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>
+              <span v-else>{{ scope.row.ask }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="璇曢獙鏂规硶" prop="method" width="200">
+            <template slot-scope="scope">
+              <el-select
+                v-if="checkPermi(['system:standard: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
+          >
+            <template slot-scope="scope">
+              <el-select
+                v-if="checkPermi(['system:standard: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>
+              <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="price" width="120">
+            <template slot-scope="scope">
+              <el-input
+                v-if="checkPermi(['system:standard:upStandardProduct'])"
+                v-model="scope.row.price"
+                placeholder="鍗曚环(鍏�)"
+                size="small"
+                @change="
+                  (value) => upStandardProductListOfPrice(value, scope.row.id)
+                "
+              >
+              </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(['system:standard:upStandardProduct'])"
+                v-model="scope.row.manHour"
+                placeholder="鍗曚环(鍏�)"
+                size="small"
+                @change="
+                  (value) => upStandardProductListOfManHour(value, scope.row.id)
+                "
+              >
+              </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="templateId" width="200">
+            <template slot-scope="scope">
+              <el-select
+                v-model="scope.row.templateId"
+                :disabled="!checkPermi(['system:standard: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>
+            </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">
+            <template slot-scope="scope">
+              <el-button type="text" @click="sectionUp(scope.row)"
+                >鍖洪棿璁剧疆</el-button
+              >
+              <el-button
+                type="text"
+                @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>
+      </el-row>
+    </div>
+    <el-dialog :visible.sync="addDia" title="鍒嗙被娣诲姞" width="400px">
+      <div class="body">
+        <el-row style="line-height: 50px">
+          <el-col :span="6" style="text-align: right">
+            <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-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
+        >
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="updateDia" title="鍒嗙被淇敼" width="400px">
+      <div class="body">
+        <el-row style="line-height: 50px">
+          <el-col :span="6" style="text-align: right">
+            <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-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
+        >
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="moreEdit"
+      class="more-edit"
+      title="鎵归噺缂栬緫"
+      width="90%"
+    >
+      <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 :span="16">
+                <el-input
+                  v-model="moreInfo.ask"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  size="small"
+                ></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
+                  v-model="moreInfo.tell"
+                  :autosize="{ minRows: 1, maxRows: 3 }"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  size="small"
+                  type="textarea"
+                ></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">
+                <el-select
+                  v-model="moreInfo.methodS"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  filterable
+                  size="small"
+                  style="width: 100%"
+                >
+                  <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 :span="16">
+                <el-input
+                  v-model="moreInfo.price"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  size="small"
+                ></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 :span="16">
+                <el-input
+                  v-model="moreInfo.manHour"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  size="small"
+                ></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 :span="16">
+                <el-select
+                  v-model="moreInfo.templateId"
+                  :disabled="moreSelects.length == 0"
+                  filterable
+                  placeholder="妯℃澘"
+                  size="small"
+                  style="width: 100%"
+                >
+                  <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"
+                  :disabled="moreSelects.length == 0"
+                  clearable
+                  filterable
+                  placeholder="妯℃澘"
+                  size="small"
+                  style="width: 100%"
+                >
+                  <el-option :value="1" label="鍚敤"></el-option>
+                  <el-option :value="0" label="涓嶅惎鐢�"></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: end"
+              >
+                <el-button size="small" type="danger" @click="clearProduct(1)"
+                  >閲嶇疆鍗曚环</el-button
+                >
+                <el-button size="small" type="danger" @click="clearProduct(2)"
+                  >閲嶇疆宸ユ椂绯绘暟</el-button
+                >
+                <el-button
+                  size="small"
+                  type="primary"
+                  @click="sectionUp(moreSelects)"
+                  >璁剧疆鍖洪棿</el-button
+                >
+                <el-button size="small" @click="moreEdit = false"
+                  >鍙� 娑�</el-button
+                >
+                <el-button
+                  :loading="moreEditLoad"
+                  size="small"
+                  type="primary"
+                  @click="subMoreEdit"
+                  >淇� 瀛�</el-button
+                >
+              </el-col>
+            </el-row>
+          </div>
+        </div>
+        <div v-loading="productTableLoading0" style="flex: 1; overflow-y: auto">
+          <el-table
+            ref="productTable0"
+            :data="productList0"
+            :fit="true"
+            :row-key="(row) => row.id"
+            border
+            header-row-class-name="header-class"
+            height="96%"
+            highlight-current-row
+            stripe
+            style="width: 100%"
+            tooltip-effect="dark"
+            @select="handleSelectionChange0"
+            @select-all="handleSelectAll0"
+            @filter-change="filterHandler"
+          >
+            <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
+              :filter-multiple="false"
+              :filters="filters0"
+              column-key="inspectionItem"
+              filter-placement="bottom-start"
+              label="妫�楠岄」"
+              min-width="140"
+              prop="inspectionItem"
+              show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column
+              :filter-multiple="false"
+              :filters="filters1"
+              column-key="inspectionItemSubclass"
+              filter-placement="bottom-start"
+              label="妫�楠岄」瀛愰」"
+              min-width="140"
+              prop="inspectionItemSubclass"
+              show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column
+              :filter-multiple="false"
+              :filters="filters"
+              column-key="sonLaboratory"
+              filter-placement="bottom-start"
+              label="瀛愬疄楠屽"
+              prop="sonLaboratory"
+              show-overflow-tooltip
+              width="130"
+            ></el-table-column>
+            <el-table-column
+              label="瑕佹眰鍊�"
+              min-width="200px"
+              prop="ask"
+            ></el-table-column>
+            <el-table-column
+              label="瑕佹眰鎻忚堪"
+              min-width="220px"
+              prop="tell"
+            ></el-table-column>
+            <el-table-column
+              label="璇曢獙鏂规硶"
+              prop="methodS"
+              width="200"
+            ></el-table-column>
+            <el-table-column
+              label="鏉′欢"
+              prop="radius"
+              width="200"
+            ></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"
+            ></el-table-column>
+            <el-table-column
+              label="宸ユ椂绯绘暟"
+              prop="manHour"
+              width="120"
+            ></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">
+                {{
+                  templateList.find((item) => item.id == scope.row.templateId)
+                    ? templateList.find(
+                        (item) => item.id == scope.row.templateId
+                      ).name
+                    : ""
+                }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              label="鍖洪棿"
+              prop="section"
+              show-overflow-tooltip
+              width="120"
+            ></el-table-column>
+          </el-table>
+          <el-pagination
+            :current-page="currentPage0"
+            :page-size="100"
+            :total="total0"
+            layout="total, prev, pager, next, jumper"
+            style="position: absolute; right: 16px; bottom: 4px"
+            @current-change="handleCurrentChange0"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <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-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>
+            </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>
+            </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>
+            </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>
+            </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>
+            </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>
+            </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>
+            </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>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px">
+      <div style="margin: 0 auto">
+        <el-upload
+          ref="upload"
+          :action="
+            VUE_APP_BASE_API + '/standardTree/inExcelOfTree/' + isEquipment
+          "
+          :auto-upload="false"
+          :file-list="fileList"
+          :headers="token"
+          :limit="1"
+          :on-change="beforeUpload"
+          :on-error="onError"
+          :on-success="onSuccess"
+          accept=".xlsx"
+          drag
+          name="file"
+        >
+          <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 :loading="uploading" type="primary" @click="submitUpload()"
+          >涓� 浼�</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> -->
+  </div>
+</template>
+
+<script>
+import Sortable from "sortablejs";
+import draggable from "vuedraggable";
+import {
+  updateTreeSort,
+  resetTreeDragBatch,
+  delStandardTree,
+  selectStandardTreeList,
+  obtainItemParameterList,
+  selectTestObjectByName,
+  selectStandardMethods,
+  addStandardMethodList,
+  addStandardTree,
+  updateStandardTree,
+  selectsStandardMethodByFLSSM,
+  upStandardProductList,
+  delStandardMethodByFLSSM,
+  delStandardProductByIds,
+  addStandardProduct,
+  selectStandardProductListByMethodId,
+  updateSection,
+  upStandardProducts,
+  getStandardTemplate,
+  selectStandardProductByMethodId,
+  selectStandardProductEnumByMethodId,
+  resetTreeOfPrice,
+  resetTreeOfHour,
+} from "@/api/standard/standardLibrary";
+import { checkPermi } from "@/utils/permission"; // 鏉冮檺鍒ゆ柇鍑芥暟
+//   import bindSupplierDensityDialogAsk from "../do/a5-capacity-scope/bindSupplierDensityDialogAsk.vue";
+//   import BatchCopy from "../do/a5-capacity-scope/BatchCopy.vue";
+export default {
+  components: {
+    //   BatchCopy,
+    //   bindSupplierDensityDialogAsk,
+    draggable,
+  },
+  dicts: ["sys_factory", "sys_sub_lab", "sys_samp_type"],
+  data() {
+    return {
+      tableKey: "productList",
+      search: null,
+      list: [],
+      selectTree: "",
+      factory: [],
+      addDia: false,
+      updateDia: false, // 淇敼鏍戝悕瀛楀脊妗�
+      oldModel: "",
+      addOb: {
+        factory: null,
+        laboratory: null,
+        sampleType: null,
+        sample: null,
+        model: null,
+      },
+      laboratory: [],
+      addLoad: false,
+      updateLoad: false,
+      sampleType: [],
+      sample: [],
+      treeLoad: false,
+      addPower: false,
+      standardList: [],
+      standardEnum: [],
+      addStandardDia: false,
+      addLoad2: false,
+      productList: [],
+      productTableLoading: false,
+      tableLoad: false,
+      tableLoad2: false,
+      selects: [],
+      addProductDia: false,
+      productId: null,
+      addLoad3: false,
+      productEnum: [],
+      expandedKeys: [],
+      filters: [],
+      sectionUpDia: false,
+      sectionLoad: false,
+      sectionRow: null,
+      sectionList: [],
+      templateList: [],
+      total: 0,
+      currentPage: 1,
+      standardId: 0,
+      moreEdit: false,
+      moreEditLoad: false,
+      moreSelects: [],
+      total0: 0,
+      currentPage0: 1,
+      productList0: [],
+      moreInfo: {
+        ask: "",
+        tell: "",
+        methodS: "",
+        price: "",
+        manHour: "",
+        templateId: "",
+        state: null,
+      },
+      methodList: [],
+      productTableLoading0: false,
+      filters0: [],
+      filters1: [],
+      pages: 1,
+      inspectionItem: null,
+      inspectionItemSubclass: null,
+      sonLaboratory: null,
+      uploadDia: false,
+      token: null,
+      fileList: [],
+      uploading: false,
+      isEquipment: true,
+      isHaveChildren: {},
+      sortTable: null,
+      currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭�
+      bindSupplierDensityDialog: false,
+      isShowCopy: false,
+      batchCopyDia: false,
+      VUE_APP_BASE_API: process.env.VUE_APP_BASE_API,
+    };
+  },
+  watch: {
+    moreEdit(val) {
+      if (!val) {
+        this.$refs.productTable0.clearSelection();
+        this.moreSelects = [];
+        this.currentPage0 = 1;
+        this.productList0 = [];
+        this.moreInfo = {
+          ask: "",
+          tell: "",
+          methodS: "",
+          price: "",
+          manHour: "",
+          templateId: "",
+        };
+      }
+    },
+  },
+  mounted() {
+    this.selectEnumByCategoryForFactory();
+    this.selectStandardTreeList();
+    this.obtainItemParameterList();
+    this.selectTestObjectByName();
+    this.selectStandardMethods();
+    this.selectEnumByCategoryForSonLaboratory();
+    this.getStandardTemplate();
+    this.selectStandardMethodsSec();
+    this.token = {
+      token: sessionStorage.getItem("token"),
+    };
+  },
+  methods: {
+    checkPermi,
+    // 淇敼鏈�瀛愮骇鍚嶅瓧
+    editTreeName(info) {
+      this.updateDia = true;
+      this.oldModel = info.label;
+    },
+    // 鎷栨嫿鏃跺垽瀹氱洰鏍囪妭鐐硅兘鍚﹁鏀剧疆
+    // 'prev'銆�'inner' 鍜� 'next'锛屽墠銆佹彃鍏ャ�佸悗
+    allowDrop(draggingNode, dropNode, type) {
+      if (draggingNode.level !== 3) return;
+      if (draggingNode.data.level === dropNode.data.level) {
+        if (draggingNode.data.parentId === dropNode.data.parentId) {
+          return type === "prev" || type === "next";
+        } else {
+          return false;
+        }
+      } else {
+        // 涓嶅悓绾ц繘琛屽鐞�
+        return false;
+      }
+    },
+    // tree鎷栨嫿鎴愬姛瀹屾垚鏃惰Е鍙戠殑浜嬩欢
+    handleDrop(draggingNode, dropNode, dropType, ev) {
+      try {
+        this.treeLoad = true;
+        updateTreeSort(this.list).then((res) => {
+          if (res.code === 200) {
+            this.$message.success("鎿嶄綔鎴愬姛");
+          }
+          this.treeLoad = false;
+        });
+      } catch (e) {
+        this.treeLoad = false;
+        console.log("e----", e);
+      }
+    },
+    rowDrop(methodId) {
+      const that = this;
+      const tbody = document.querySelector(
+        "#templateParamTable .el-table__body-wrapper tbody"
+      );
+      if (!this.sortTable) {
+        this.sortTable = Sortable.create(tbody, {
+          animation: 200, //鍔ㄧ敾鏃堕暱
+          handle: ".el-table__row", //鍙嫋鎷藉尯鍩焎lass
+          //鎷栨嫿涓簨浠�
+          onMove: ({ dragged, related }) => {
+            const oldRow = that.productList[dragged.rowIndex]; //鏃т綅缃暟鎹�
+            const newRow = that.productList[related.rowIndex]; //琚嫋鎷界殑鏂版暟鎹�
+          },
+          //鎷栨嫿缁撴潫浜嬩欢
+          onEnd: (evt) => {
+            const curRow = that.productList.splice(evt.oldIndex, 1)[0]; // 褰撳墠琚嫋鎷界殑淇℃伅
+            that.productList.splice(evt.newIndex, 0, curRow);
+            let arr = [];
+            this.productList.forEach((item, index) => {
+              const obj = Object.assign({
+                sort: index,
+                id: item.id,
+              });
+              arr.push(obj);
+            });
+            this.productTableLoading = true;
+            // 鎷栨嫿瀹屾垚鍚庝紶缁欏悗绔繚瀛樻暟鎹�
+            resetTreeDragBatch({ params: arr }).then((res) => {
+              if (res.code === 200) {
+                this.$message.success("淇濆瓨鎴愬姛");
+              }
+              this.productTableLoading = false;
+            });
+          },
+        });
+      }
+    },
+    hasChildWithId(nodes, name) {
+      for (let node of nodes) {
+        const comName = node.label + node.code;
+        if (comName == name) {
+          //鍒ゆ柇閫掑綊缁撴潫鏉′欢
+          this.isHaveChildren = node;
+          return node;
+        } else if (node.children && node.children.length > 0) {
+          //鍒ゆ柇children鏄惁鏈夋暟鎹�
+          this.hasChildWithId(node.children, name); //閫掑綊璋冪敤
+        }
+      }
+    },
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    searchFilter() {
+      this.$refs.tree.filter(this.search);
+    },
+    refresh() {
+      this.upIndex++;
+    },
+    handleNodeClick(val, node, el) {
+      //鏍戠殑鍊�
+      if (node.childNodes.length === 0) {
+        this.isShowCopy = true;
+      } else {
+        this.isShowCopy = false;
+      }
+      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.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;
+        }
+        this.getNodeParent(val.parent);
+      }
+    },
+    remove(node, data) {
+      this.$confirm("鏄惁鍒犻櫎璇ュ眰绾�", "鎻愮ず", {
+        type: "error",
+      })
+        .then(() => {
+          // this.treeLoad = true
+          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 = [];
+          });
+        })
+        .catch((e) => {});
+    },
+    deleteStandard(arr, label) {
+      arr.forEach((item, index) => {
+        if (item.label == label) {
+          arr.splice(index, 1);
+        } else {
+          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) => {
+        this.factory = response.msg;
+      });
+    },
+    selectEnumByCategoryForSonLaboratory() {
+      let arr = [];
+      this.getConfigKey("sys_sub_lab").then((response) => {
+        arr = response.msg;
+      });
+      arr.forEach((a) => {
+        this.filters.push({
+          text: a.label,
+          value: a.value,
+        });
+      });
+    },
+    selectEnumByCategoryForsampleType() {
+      this.getConfigKey("sys_samp_type").then((response) => {
+        this.sampleType = response.msg;
+      });
+    },
+    selectStandardTreeList() {
+      this.treeLoad = true;
+      selectStandardTreeList().then((res) => {
+        this.list = res.data;
+        this.list.forEach((a) => {
+          this.expandedKeys.push(a.label);
+        });
+        this.treeLoad = false;
+      });
+    },
+    obtainItemParameterList() {
+      obtainItemParameterList().then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.laboratoryName,
+            value: a.laboratoryName,
+          });
+        });
+        this.laboratory = data;
+      });
+    },
+    selectTestObjectByName() {
+      selectTestObjectByName().then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.specimenName,
+            value: a.specimenName,
+          });
+        });
+        this.sampleType = data;
+      });
+    },
+    selectStandardMethods() {
+      selectStandardMethods().then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.name,
+            value: a.id,
+          });
+        });
+        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();
+      });
+    },
+    // 鎻愪氦鍒嗙被娣诲姞
+    addStandardTree() {
+      if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
+        this.$message.error("瀵硅薄涓嶅瓨鍦�");
+        return;
+      }
+      if (this.addOb.model == null || this.addOb.model == "") {
+        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;
+        });
+    },
+    // 淇敼鍨嬪彿
+    updateStandardTree() {
+      if (this.addOb.sampleType == null || this.addOb.sampleType == "") {
+        this.$message.error("瀵硅薄涓嶅瓨鍦�");
+        return;
+      }
+      if (this.addOb.model == null || this.addOb.model == "") {
+        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;
+        });
+    },
+    selectsStandardMethodByFLSSM() {
+      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 = [];
+        }
+      });
+    },
+    upStandardProductList(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          ask: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    upStandardProductListOfTell(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          tell: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    // 鏍囧噯搴撻�夋嫨瀹為獙鏂规硶鐨勫洖璋�
+    upStandardProductListOfMethodS(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          methodS: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    // 鏍囧噯搴撻�夋嫨鏉′欢鐨勫洖璋�
+    upStandardProductListOfRadius(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          radius: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    upStandardProductListOfPrice(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          price: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    upStandardProductListOfManHour(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          manHour: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    upStandardProductListOfTemplate(value, index) {
+      upStandardProductList({
+        str: JSON.stringify({
+          id: index,
+          templateId: value,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+      });
+    },
+    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 = [];
+      val.forEach((a) => {
+        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(
+        (item) => item.id == this.standardId
+      );
+      if (index > -1) {
+        this.rowClick(this.standardList[index]);
+      }
+    },
+    rowClick(row, column, event) {
+      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.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);
+        });
+      });
+    },
+    toggleSelection(row) {
+      this.$refs.productTable.toggleRowSelection(row, true);
+    },
+    tableRowClassName({ row, rowIndex }) {
+      if (row.state === 0) {
+        return "warning-row";
+      }
+      return "";
+    },
+    upProductSelect(selection, row) {
+      row.state = row.state == 1 ? 0 : 1;
+      upStandardProductList({
+        str: JSON.stringify({
+          id: row.id,
+          state: row.state,
+        }),
+      }).then((res) => {
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        // this.$message.success('宸蹭繚瀛�')
+      });
+    },
+    filterHandler(value) {
+      for (let column in value) {
+        if (value[column].length === 0) {
+          if (column === "inspectionItem") {
+            this.inspectionItem = null;
+          } else if (column === "inspectionItemSubclass") {
+            this.inspectionItemSubclass = null;
+          } else if (column === "sonLaboratory") {
+            this.sonLaboratory = null;
+          }
+        } else {
+          if (column === "inspectionItem") {
+            this.inspectionItem = value[column][0];
+          } else if (column === "inspectionItemSubclass") {
+            this.inspectionItemSubclass = value[column][0];
+          } else if (column === "sonLaboratory") {
+            this.sonLaboratory = value[column][0];
+          }
+        }
+        this.getList();
+      }
+    },
+    handleAll(e) {
+      if (e.length > 0) {
+        this.productList.map((m) => {
+          m.state = 0;
+          this.upProductSelect(null, m);
+          return m;
+        });
+      } else {
+        this.productList.map((m) => {
+          m.state = 1;
+          this.upProductSelect(null, m);
+          return m;
+        });
+      }
+    },
+    // 璁剧疆鍖洪棿
+    sectionUp(row) {
+      if (Array.isArray(row)) {
+        // 鍊兼槸涓�涓暟缁�
+        if (row.length === 0) {
+          return this.$message.error("璇烽�夋嫨妫�楠岄」");
+        }
+        this.sectionRow = {};
+        this.sectionUpDia = true;
+        this.sectionList = [];
+      } else {
+        // 鍊兼槸涓�涓璞�
+        this.sectionRow = row;
+        this.sectionUpDia = true;
+        this.sectionList = [];
+        if (this.sectionRow.section != null && this.sectionRow.section != "") {
+          JSON.parse(this.sectionRow.section).forEach((a, ai) => {
+            if (this.sectionRow.cores !== null) {
+              this.sectionList.push({
+                thing: a,
+                ask: JSON.parse(this.sectionRow.ask)[ai],
+                tell: JSON.parse(this.sectionRow.tell)[ai],
+                // price: JSON.parse(this.sectionRow.price)[ai],
+                // manHour: JSON.parse(this.sectionRow.manHour)[ai],
+                cores: JSON.parse(this.sectionRow.cores)[ai],
+                conductorMaterial:
+                  this.sectionRow.conductorMaterial &&
+                  JSON.parse(this.sectionRow.conductorMaterial)[ai],
+                conductorType:
+                  this.sectionRow.conductorType &&
+                  JSON.parse(this.sectionRow.conductorType)[ai],
+              });
+            } else {
+              this.sectionList.push({
+                thing: a,
+                ask: JSON.parse(this.sectionRow.ask)[ai],
+                tell: JSON.parse(this.sectionRow.tell)[ai],
+                // price: JSON.parse(this.sectionRow.price)[ai],
+                // manHour: JSON.parse(this.sectionRow.manHour)[ai],
+                conductorMaterial:
+                  this.sectionRow.conductorMaterial &&
+                  JSON.parse(this.sectionRow.conductorMaterial)[ai],
+                conductorType:
+                  this.sectionRow.conductorType &&
+                  JSON.parse(this.sectionRow.conductorType)[ai],
+              });
+            }
+          });
+        }
+      }
+    },
+    // 鎻愪氦鍖洪棿鎵�濉殑鏁版嵁
+    sectionLoadAdd() {
+      let sectionList = [];
+      let askList = [];
+      let tellList = [];
+      let priceList = [];
+      let manHourList = [];
+      let coresList = [];
+      let conductorMaterialList = [];
+      let conductorTypeList = [];
+      this.sectionList.forEach((a) => {
+        if (a.thing !== "") {
+          sectionList.push(a.thing);
+          askList.push(a.ask);
+          tellList.push(a.tell);
+          // priceList.push(a.price)
+          // manHourList.push(a.manHour)
+          coresList.push(a.cores);
+          conductorMaterialList.push(a.conductorMaterial);
+          conductorTypeList.push(a.conductorType);
+        }
+      });
+      if (sectionList.length === 0) {
+        this.sectionRow.section = null;
+        this.sectionRow.ask = null;
+        this.sectionRow.tell = null;
+        // this.sectionRow.price = null
+        // this.sectionRow.manHour = null
+        this.sectionRow.cores = null;
+        this.sectionRow.conductorMaterial = null;
+        this.sectionRow.conductorType = null;
+      } else {
+        this.sectionRow.section = JSON.stringify(sectionList);
+        this.sectionRow.ask = JSON.stringify(askList);
+        this.sectionRow.tell = JSON.stringify(tellList);
+        // this.sectionRow.price = JSON.stringify(priceList)
+        // this.sectionRow.manHour = JSON.stringify(manHourList)
+        this.sectionRow.cores = JSON.stringify(coresList);
+        this.sectionRow.conductorMaterial = JSON.stringify(
+          conductorMaterialList
+        );
+        this.sectionRow.conductorType = JSON.stringify(conductorTypeList);
+      }
+      this.sectionLoad = true;
+      if (this.moreSelects.length === 0) {
+        updateSection({
+          str: JSON.stringify({
+            id: this.sectionRow.id,
+            section: this.sectionRow.section,
+            ask: this.sectionRow.ask,
+            tell: this.sectionRow.tell,
+            // price: this.sectionRow.price,
+            // manHour: this.sectionRow.manHour,
+            cores: this.sectionRow.cores,
+            conductorMaterial: this.sectionRow.conductorMaterial,
+            conductorType: this.sectionRow.conductorType,
+          }),
+        }).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)),
+          standardProductList: {
+            section: this.sectionRow.section,
+            ask: this.sectionRow.ask,
+            tell: this.sectionRow.tell,
+            // price: this.sectionRow.price,
+            // manHour: this.sectionRow.manHour,
+            cores: this.sectionRow.cores,
+            conductorMaterial: this.sectionRow.conductorMaterial,
+            conductorType: this.sectionRow.conductorType,
+          },
+        }).then((res) => {
+          this.sectionLoad = false;
+          if (res.code == 201) {
+            this.$message.error("鏈繚瀛�");
+            return;
+          }
+          this.$message.success("宸蹭繚瀛�");
+          this.sectionUpDia = false;
+          this.currentPage0 = 1;
+          this.getList();
+          this.rowClick({
+            id: this.standardId,
+          });
+        });
+      }
+    },
+    bindSupplierDensitySecond(row) {
+      this.bindSupplierDensity(row);
+    },
+    // 鎵撳紑鍘傚缁戝畾寮规
+    bindSupplierDensity(row) {
+      this.currentSupplierDensityRow = row;
+      this.bindSupplierDensityDialog = true;
+    },
+    closeBindSupplierDensityDialog() {
+      this.bindSupplierDensityDialog = false;
+    },
+    getStandardTemplate() {
+      getStandardTemplate().then((res) => {
+        this.templateList = res.data;
+      });
+    },
+    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;
+      });
+    },
+    openCopyDia() {
+      this.batchCopyDia = true;
+      this.$nextTick(() => {
+        this.$refs.BatchCopy.getList();
+      });
+    },
+    async handleMore() {
+      if (
+        (!this.standardId && this.standardId != 0) ||
+        this.standardList.length == 0
+      ) {
+        return this.$message.error("璇烽�夋嫨瀹為獙瀹ゃ�佹牱鍝�");
+      }
+      await this.getList();
+      this.moreEdit = true;
+    },
+    selectStandardMethodsSec() {
+      selectStandardMethods().then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.code,
+            value: a.code,
+          });
+        });
+        this.methodList = data;
+      });
+    },
+    subMoreEdit() {
+      if (this.moreSelects.length === 0) {
+        return this.$message.error("璇烽�夋嫨妫�楠岄」");
+      }
+      this.moreEditLoad = true;
+      for (let a in this.moreInfo) {
+        if (this.moreInfo[a] == "") {
+          delete this.moreInfo[a];
+        }
+      }
+      upStandardProducts({
+        ids: JSON.stringify(this.moreSelects.map((a) => a.id)),
+        standardProductList: this.moreInfo,
+      }).then((res) => {
+        this.moreEditLoad = false;
+        if (res.code == 201) {
+          this.$message.error("鏈繚瀛�");
+          return;
+        }
+        this.$message.success("宸蹭繚瀛�");
+        this.currentPage0 = 1;
+        this.getList();
+        this.rowClick({
+          id: this.standardId,
+        });
+      });
+    },
+    handleSelectAll0(rows) {
+      if (rows.length) {
+        rows.forEach((a) => {
+          if (!this.moreSelects.find((b) => a.id === b.id)) {
+            this.moreSelects.push(a);
+          }
+        });
+      } else {
+        this.productList0.forEach((a) => {
+          this.moreSelects = this.moreSelects.filter((b) => b.id != a.id);
+        });
+      }
+    },
+    handleSelectionChange0(val, row) {
+      if (this.moreSelects.find((a) => a.id === row.id)) {
+        this.moreSelects = this.moreSelects.filter((a) => a.id != row.id);
+      } else {
+        this.moreSelects.push(row);
+      }
+    },
+    getList() {
+      this.productTableLoading0 = true;
+      this.getItemEnum();
+      selectStandardProductByMethodId({
+        id: this.standardId,
+        tree: this.selectTree,
+        page: this.currentPage0,
+        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
+              );
+            }
+          });
+        });
+      });
+    },
+    handleCurrentChange0(e) {
+      this.currentPage0 = e;
+      this.getList();
+    },
+    getItemEnum() {
+      selectStandardProductEnumByMethodId({
+        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,
+            });
+          }
+        });
+      });
+    },
+    beforeUpload(file, fileList) {
+      if (
+        file.raw.type !=
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+      ) {
+        this.$message.error("涓婁紶鏂囦欢鏍煎紡涓嶆纭�");
+        this.$refs.upload.clearFiles();
+        return false;
+      }
+    },
+    submitUpload() {
+      if (this.$refs.upload.uploadFiles.length == 0) {
+        this.$message.error("鏈�夋嫨鏂囦欢");
+        return;
+      }
+      this.uploading = true;
+      this.$refs.upload.submit();
+    },
+    onSuccess(response, file, fileList) {
+      this.$refs.upload.clearFiles();
+      this.uploadDia = false;
+      this.uploading = false;
+      if (response.code == 201) {
+        this.$message.error(response.message);
+        return;
+      }
+      this.$message.success("涓婁紶鎴愬姛");
+      this.standardList = [];
+      this.productList = [];
+      this.selectStandardTreeList();
+    },
+    onError(err, file, fileList) {
+      this.$message.error("涓婁紶澶辫触");
+      this.$refs.upload.clearFiles();
+      this.uploading = false;
+    },
+    clearProduct(type) {
+      this.$confirm("鏄惁娓呯┖?", "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      })
+        .then(() => {
+          if (type === 1) {
+            resetTreeOfPrice({
+              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,
+              });
+            });
+          } else if (type === 2) {
+            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,
+              });
+            });
+          }
+        })
+        .catch(() => {});
+    },
+  },
+};
+</script>
diff --git a/vue.config.js b/vue.config.js
index 1b446d0..159f836 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -36,7 +36,7 @@
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://192.168.1.36:8080`,
+        target: `http://192.168.1.36:8002`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''

--
Gitblit v1.9.3