From 2dbb9e797247b975361d47c1b679bee75f29be1b Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 19 二月 2025 10:07:54 +0800
Subject: [PATCH] 检验任务列表页面搬迁10%

---
 src/api/business/inspectionTask.js                                  |   19 
 src/views/business/inspectionTask/inspection.vue                    |    0 
 src/router/index.js                                                 |  213 ++++---
 src/views/business/inspectionTask/components/EditInspectionItem.vue |  244 ++++++++
 src/views/business/inspectionTask/index.vue                         | 1197 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 1,575 insertions(+), 98 deletions(-)

diff --git a/src/api/business/inspectionTask.js b/src/api/business/inspectionTask.js
new file mode 100644
index 0000000..a36f376
--- /dev/null
+++ b/src/api/business/inspectionTask.js
@@ -0,0 +1,19 @@
+import request from "@/utils/request";
+
+// 閫氳繃妫�楠屽崟鏌ヨ妫�楠屾暟鎹紙鏁版嵁鏌ョ湅锛�
+export function selectSampleAndProductByOrderId(query) {
+  return request({
+    url: "/insOrder/selectSampleAndProductByOrderId",
+    method: "get",
+    params: query,
+  });
+}
+
+// 妫�楠屼换鍔�-淇敼妫�楠屽��
+export function updateProductOnPlan(data) {
+  return request({
+    url: "/insOrderPlan/updateProductOnPlan",
+    method: "post",
+    data: data,
+  });
+}
diff --git a/src/router/index.js b/src/router/index.js
index 91a52f6..bf11864 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,10 +1,10 @@
-import Vue from 'vue'
-import Router from 'vue-router'
+import Vue from "vue";
+import Router from "vue-router";
 
-Vue.use(Router)
+Vue.use(Router);
 
 /* Layout */
-import Layout from '@/layout'
+import Layout from "@/layout";
 
 /**
  * Note: 璺敱閰嶇疆椤�
@@ -31,179 +31,196 @@
 // 鍏叡璺敱
 export const constantRoutes = [
   {
-    path: '/redirect',
+    path: "/redirect",
     component: Layout,
     hidden: true,
     children: [
       {
-        path: '/redirect/:path(.*)',
-        component: () => import('@/views/redirect')
-      }
-    ]
+        path: "/redirect/:path(.*)",
+        component: () => import("@/views/redirect"),
+      },
+    ],
   },
   {
-    path: '/login',
-    component: () => import('@/views/login'),
-    hidden: true
+    path: "/login",
+    component: () => import("@/views/login"),
+    hidden: true,
   },
   {
-    path: '/register',
-    component: () => import('@/views/register'),
-    hidden: true
+    path: "/register",
+    component: () => import("@/views/register"),
+    hidden: true,
   },
   {
-    path: '/404',
-    component: () => import('@/views/error/404'),
-    hidden: true
+    path: "/404",
+    component: () => import("@/views/error/404"),
+    hidden: true,
   },
   {
-    path: '/401',
-    component: () => import('@/views/error/401'),
-    hidden: true
+    path: "/401",
+    component: () => import("@/views/error/401"),
+    hidden: true,
   },
   {
-    path: '',
+    path: "",
     component: Layout,
-    redirect: 'index',
+    redirect: "index",
     children: [
       {
-        path: 'index',
-        component: () => import('@/views/index'),
-        name: 'Index',
-        meta: { title: '棣栭〉', icon: 'dashboard', affix: true }
-      }
-    ]
+        path: "index",
+        component: () => import("@/views/index"),
+        name: "Index",
+        meta: { title: "棣栭〉", icon: "dashboard", affix: true },
+      },
+    ],
   },
   {
-    path: '/user',
+    path: "/user",
     component: Layout,
     hidden: true,
-    redirect: 'noredirect',
+    redirect: "noredirect",
     children: [
       {
-        path: 'profile',
-        component: () => import('@/views/system/user/profile/index'),
-        name: 'Profile',
-        meta: { title: '涓汉涓績', icon: 'user' }
-      }
-    ]
-  }
-]
+        path: "profile",
+        component: () => import("@/views/system/user/profile/index"),
+        name: "Profile",
+        meta: { title: "涓汉涓績", icon: "user" },
+      },
+    ],
+  },
+];
 
 // 鍔ㄦ�佽矾鐢憋紝鍩轰簬鐢ㄦ埛鏉冮檺鍔ㄦ�佸幓鍔犺浇
 export const dynamicRoutes = [
   {
     // 鍘熸潗鏂欎笅鍗�
-    path: '/materialOrder',
+    path: "/materialOrder",
     component: Layout,
     hidden: true,
-    permissions: ['business:order'],
+    permissions: ["business:order"],
     children: [
       {
         // 閾滄潗鏂欎笅鍗�
-        path: 'customsInspection',
-        component: () => import('@/views/business/materialOrder/customsInspection'),
-        name: 'customsInspection',
-        meta: { title: '閾滄潗鏂欎笅鍗�', activeMenu: '/business/materialOrder' }
-      }
-    ]
+        path: "customsInspection",
+        component: () =>
+          import("@/views/business/materialOrder/customsInspection"),
+        name: "customsInspection",
+        meta: { title: "閾滄潗鏂欎笅鍗�", activeMenu: "/business/materialOrder" },
+      },
+    ],
+  },
+  {
+    // 妫�楠屼换鍔�
+    path: "/inspectionTask",
+    component: Layout,
+    hidden: true,
+    permissions: ["business:inspection"],
+    children: [
+      {
+        // 妫�楠屽崟璇︽儏
+        path: "inspection",
+        component: () => import("@/views/business/inspectionTask/inspection"),
+        name: "inspection",
+        meta: { title: "妫�楠屽崟璇︽儏", activeMenu: "/business/inspectionTask" },
+      },
+    ],
   },
   {
     // 鐢ㄦ埛绠$悊
-    path: '/system/user-auth',
+    path: "/system/user-auth",
     component: Layout,
     hidden: true,
-    permissions: ['system:user:edit'],
+    permissions: ["system:user:edit"],
     children: [
       {
-        path: 'role/:userId(\\d+)',
-        component: () => import('@/views/system/user/authRole'),
-        name: 'AuthRole',
-        meta: { title: '鍒嗛厤瑙掕壊', activeMenu: '/system/user' }
-      }
-    ]
+        path: "role/:userId(\\d+)",
+        component: () => import("@/views/system/user/authRole"),
+        name: "AuthRole",
+        meta: { title: "鍒嗛厤瑙掕壊", activeMenu: "/system/user" },
+      },
+    ],
   },
   {
     // 瑙掕壊绠$悊
-    path: '/system/role-auth',
+    path: "/system/role-auth",
     component: Layout,
     hidden: true,
-    permissions: ['system:role:edit'],
+    permissions: ["system:role:edit"],
     children: [
       {
-        path: 'user/:roleId(\\d+)',
-        component: () => import('@/views/system/role/authUser'),
-        name: 'AuthUser',
-        meta: { title: '鍒嗛厤鐢ㄦ埛', activeMenu: '/system/role' }
-      }
-    ]
+        path: "user/:roleId(\\d+)",
+        component: () => import("@/views/system/role/authUser"),
+        name: "AuthUser",
+        meta: { title: "鍒嗛厤鐢ㄦ埛", activeMenu: "/system/role" },
+      },
+    ],
   },
   {
     // 鏁版嵁瀛楀吀
-    path: '/system/dict-data',
+    path: "/system/dict-data",
     component: Layout,
     hidden: true,
-    permissions: ['system:dict:list'],
+    permissions: ["system:dict:list"],
     children: [
       {
-        path: 'index/:dictId(\\d+)',
-        component: () => import('@/views/system/dict/data'),
-        name: 'Data',
-        meta: { title: '瀛楀吀鏁版嵁', activeMenu: '/system/dict' }
-      }
-    ]
+        path: "index/:dictId(\\d+)",
+        component: () => import("@/views/system/dict/data"),
+        name: "Data",
+        meta: { title: "瀛楀吀鏁版嵁", activeMenu: "/system/dict" },
+      },
+    ],
   },
   {
     // 鏁版嵁瀛楀吀
-    path: '/customer',
+    path: "/customer",
     component: Layout,
     hidden: true,
-    permissions: ['customer:edit'],
+    permissions: ["customer:edit"],
   },
   {
-    path: '/monitor/job-log',
+    path: "/monitor/job-log",
     component: Layout,
     hidden: true,
-    permissions: ['monitor:job:list'],
+    permissions: ["monitor:job:list"],
     children: [
       {
-        path: 'index/:jobId(\\d+)',
-        component: () => import('@/views/monitor/job/log'),
-        name: 'JobLog',
-        meta: { title: '璋冨害鏃ュ織', activeMenu: '/monitor/job' }
-      }
-    ]
+        path: "index/:jobId(\\d+)",
+        component: () => import("@/views/monitor/job/log"),
+        name: "JobLog",
+        meta: { title: "璋冨害鏃ュ織", activeMenu: "/monitor/job" },
+      },
+    ],
   },
   {
-    path: '/tool/gen-edit',
+    path: "/tool/gen-edit",
     component: Layout,
     hidden: true,
-    permissions: ['tool:gen:edit'],
+    permissions: ["tool:gen:edit"],
     children: [
       {
-        path: 'index/:tableId(\\d+)',
-        component: () => import('@/views/tool/gen/editTable'),
-        name: 'GenEdit',
-        meta: { title: '淇敼鐢熸垚閰嶇疆', activeMenu: '/tool/gen' }
-      }
-    ]
-  }
-]
+        path: "index/:tableId(\\d+)",
+        component: () => import("@/views/tool/gen/editTable"),
+        name: "GenEdit",
+        meta: { title: "淇敼鐢熸垚閰嶇疆", activeMenu: "/tool/gen" },
+      },
+    ],
+  },
+];
 
 // 闃叉杩炵画鐐瑰嚮澶氭璺敱鎶ラ敊
 let routerPush = Router.prototype.push;
 let routerReplace = Router.prototype.replace;
 // push
 Router.prototype.push = function push(location) {
-  return routerPush.call(this, location).catch(err => err)
-}
+  return routerPush.call(this, location).catch((err) => err);
+};
 // replace
 Router.prototype.replace = function push(location) {
-  return routerReplace.call(this, location).catch(err => err)
-}
+  return routerReplace.call(this, location).catch((err) => err);
+};
 
 export default new Router({
-  mode: 'history', // 鍘绘帀url涓殑#
+  mode: "history", // 鍘绘帀url涓殑#
   scrollBehavior: () => ({ y: 0 }),
-  routes: constantRoutes
-})
+  routes: constantRoutes,
+});
diff --git a/src/views/business/inspectionTask/components/EditInspectionItem.vue b/src/views/business/inspectionTask/components/EditInspectionItem.vue
new file mode 100644
index 0000000..9058ff0
--- /dev/null
+++ b/src/views/business/inspectionTask/components/EditInspectionItem.vue
@@ -0,0 +1,244 @@
+<template>
+  <div>
+    <el-dialog
+      :visible.sync="editInspectionDia"
+      title="淇敼妫�楠岄」"
+      width="80%"
+      @close="editInspectionDia = false"
+    >
+      <TableCard :showTitle="false">
+        <template v-slot:table>
+          <lims-table
+            :column="editColumn"
+            :table-data="editTableData"
+            :table-loading="editLoading"
+            :page="page"
+            height="600"
+            style="padding: 0 15px"
+            @pagination="pagination"
+          >
+          </lims-table>
+        </template>
+      </TableCard>
+    </el-dialog>
+    <el-dialog :visible.sync="editAskDia" title="淇敼" width="50%">
+      <el-form ref="form" :model="editForm" label-width="100px">
+        <el-form-item label="瑕佹眰鍊�">
+          <el-input v-model="editForm.ask" type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item label="瑕佹眰鎻忚堪">
+          <el-input v-model="editForm.tell" type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item label="妫�楠屽�肩被鍨�">
+          <el-select
+            v-model="editForm.inspectionValueType"
+            clearable
+            placeholder="璇烽�夋嫨"
+            size="small"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in inspectionValueTypeList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="editAskDia = false">鍙� 娑�</el-button>
+        <el-button
+          :loading="handleEditLoading"
+          type="primary"
+          @click="handleEdit"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import TableCard from "@/components/TableCard/index.vue";
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  selectSampleAndProductByOrderId,
+  updateProductOnPlan,
+} from "@/api/business/inspectionTask.js";
+export default {
+  name: "EditInspectionItem",
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { TableCard, limsTable },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      editInspectionDia: false,
+      entity: {
+        id: 0,
+      },
+      inspectionValueTypeList: [], // 妫�楠屽�肩被鍨嬩笅鎷夋
+      editColumn: [
+        {
+          label: "鏍峰搧缂栧彿",
+          minWidth: "160px",
+          prop: "sampleCode",
+        },
+        {
+          label: "鏍峰搧鍚嶇О",
+          minWidth: "120px",
+          prop: "sample",
+        },
+        {
+          label: "妫�楠岄」鍒嗙被",
+          minWidth: "120px",
+          prop: "inspectionItemClass",
+        },
+        {
+          label: "妫�楠岄」",
+          minWidth: "120px",
+          prop: "inspectionItem",
+        },
+        {
+          label: "妫�楠屽瓙椤�",
+          minWidth: "120px",
+          prop: "inspectionItemSubclass",
+        },
+        {
+          label: "鏉′欢",
+          minWidth: "120px",
+          prop: "radius",
+        },
+        {
+          label: "鐢电紗鏍囪瘑",
+          minWidth: "120px",
+          prop: "cableTag",
+        },
+        {
+          label: "鍗曚綅",
+          prop: "unit",
+        },
+        {
+          label: "瑕佹眰鍊�",
+          minWidth: "300px",
+          prop: "ask",
+        },
+        {
+          label: "瑕佹眰鎻忚堪",
+          minWidth: "300px",
+          prop: "tell",
+        },
+        {
+          label: "鏍峰搧鍨嬪彿",
+          minWidth: "120px",
+          prop: "model",
+        },
+        {
+          dataType: "action",
+          width: "80px",
+          label: "鎿嶄綔",
+          fixed: "right",
+          operation: [
+            {
+              name: "缂栬緫",
+              type: "text",
+              clickFun: (row) => {
+                this.editIns(row);
+              },
+            },
+          ],
+        },
+      ],
+      editTableData: [],
+      editLoading: false,
+      page: {
+        total: 0,
+        size: 10,
+        current: 0,
+      },
+      editAskDia: false,
+      editForm: {
+        id: "",
+        ask: "",
+        tell: "",
+        inspectionValueType: "",
+      },
+      handleEditLoading: false,
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    showDialog(id) {
+      this.editInspectionDia = true;
+      this.entity.id = id;
+      this.getTableData();
+    },
+    // 鑾峰彇鍒楄〃鏁版嵁
+    getTableData() {
+      this.editLoading = true;
+      selectSampleAndProductByOrderId({
+        ...this.entity,
+        ...this.page,
+      })
+        .then((res) => {
+          this.editLoading = false;
+          if (res.code === 201) return;
+          this.editTableData = res.data.body.records;
+          this.page.total = res.data.body.total;
+        })
+        .catch(() => {
+          this.editLoading = false;
+        });
+    },
+    // 淇敼寮规
+    editIns(row) {
+      this.editAskDia = true;
+      this.selectEnumByCategoryForInspectionValueType();
+      this.editForm = { ...row };
+    },
+    // 鎻愪氦淇敼
+    handleEdit() {
+      const params = {
+        id: this.editForm.insProductId,
+        ask: this.editForm.ask,
+        tell: this.editForm.tell,
+        inspectionValueType: this.editForm.inspectionValueType,
+      };
+      this.handleEditLoading = true;
+      updateProductOnPlan(params)
+        .then((res) => {
+          this.handleEditLoading = false;
+          if (res.code === 201) return;
+          this.$message.success("淇敼鎴愬姛");
+          this.editAskDia = false;
+          this.getTableData();
+        })
+        .catch(() => {
+          this.handleEditLoading = false;
+        });
+    },
+    // 骞村害璁″垝鍒嗛〉
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.getTableData();
+    },
+    selectEnumByCategoryForInspectionValueType() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "妫�楠屽�肩被鍨�",
+        })
+        .then((res) => {
+          this.inspectionValueTypeList = res.data;
+        });
+    },
+  },
+};
+</script>
+
+<style scoped>
+.pagination {
+  display: flex;
+  justify-content: space-between;
+}
+</style>
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
new file mode 100644
index 0000000..80b4a18
--- /dev/null
+++ b/src/views/business/inspectionTask/index.vue
@@ -0,0 +1,1197 @@
+<style scoped>
+.ins-order-plan-main .title {
+  font-size: 20px;
+  color: #3a7bfa;
+}
+
+.search {
+  background-color: #fff;
+  height: 80px;
+  display: flex;
+  align-items: center;
+}
+
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 50px;
+}
+
+.search_label {
+  width: 120px;
+  font-size: 14px;
+  text-align: right;
+}
+
+.search_input {
+  width: calc(100% - 120px);
+}
+
+.ins-order-plan-main .search {
+  width: 100%;
+  margin-bottom: 10px;
+  height: 80px;
+  background-color: #fff;
+  border-radius: 3px;
+}
+
+.search .form-inline {
+  height: 50px;
+  padding-top: 20px;
+  padding-left: 50px;
+}
+
+.ins-order-plan-main .center {
+  width: calc(100% - 40px);
+  height: calc(100% - 60px - 80px - 40px);
+  background-color: #fff;
+  border-radius: 3px;
+  padding: 20px;
+}
+
+.ins-order-plan-main .center .value-table {
+  width: 100%;
+  height: calc(100% - 68px);
+}
+
+.tab {
+  list-style-type: none;
+  display: flex;
+}
+
+.tab li {
+  line-height: 24px;
+  padding: 6px 14px;
+  font-size: 14px;
+  color: #333333;
+  border: 1px solid #eeeeee;
+  cursor: pointer;
+}
+
+.tab li:nth-child(1) {
+  border-radius: 8px 0 0 8px;
+}
+
+.tab li:nth-last-child(1) {
+  border-radius: 0 8px 8px 0;
+}
+
+.tab li.active {
+  border-color: #3a7bfa;
+  color: #3a7bfa;
+}
+
+.center .center-options .center-title {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: right;
+}
+
+.center .center-options .center-title span:last-child {
+  color: #3a7bfa;
+  font-size: 23px;
+  font-weight: 400;
+}
+
+.view-self-checkbox {
+  margin-left: 50px;
+}
+</style>
+<style>
+.ins-order-plan-main .el-form-item__label {
+  color: #000;
+}
+
+.ins-order-plan-main .el-table th.el-table__cell > .cell {
+  height: 46px;
+  line-height: 30px;
+}
+</style>
+<template>
+  <div class="ins-order-plan-main">
+    <div v-show="activeFace == 0 && state == 0" style="height: 100%">
+      <p
+        style="
+          font-size: 16px;
+          padding-left: 20px;
+          text-align: left;
+          height: 60px;
+          line-height: 60px;
+        "
+      >
+        妫�楠屼换鍔�
+      </p>
+      <div class="search">
+        <div class="search_thing">
+          <div class="search_label">濮旀墭缂栧彿锛�</div>
+          <div class="search_input">
+            <el-input
+              v-model="componentData.entity.entrustCode"
+              clearable
+              placeholder="璇疯緭鍏�"
+              size="small"
+              @keyup.enter.native="refreshTable()"
+            ></el-input>
+          </div>
+        </div>
+        <div class="search_thing">
+          <div class="search_label">妫�楠岀姸鎬侊細</div>
+          <div class="search_input">
+            <el-select
+              v-model="componentData.entity.insState"
+              size="small"
+              style="width: 100%"
+              @change="refreshTable()"
+            >
+              <el-option
+                v-for="(a, i) in insStateList"
+                :key="i"
+                :label="a.label"
+                :value="a.value"
+              ></el-option>
+            </el-select>
+          </div>
+        </div>
+        <!--        <div class="search_thing">-->
+        <!--          <div class="search_label">涓嬪崟绫诲埆锛�</div>-->
+        <!--          <div class="search_input">-->
+        <!--            <el-select v-model="componentData.entity.typeSource" clearable size="small" style="width: 100%;" @change="refreshTable()">-->
+        <!--              <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option>-->
+        <!--            </el-select>-->
+        <!--          </div>-->
+        <!--        </div>-->
+        <div class="search_thing" style="padding-left: 30px">
+          <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+          <el-button size="small" type="primary" @click="refreshTable()"
+            >鏌� 璇�</el-button
+          >
+        </div>
+      </div>
+      <div class="center">
+        <div class="center-options">
+          <el-row>
+            <el-col :span="21">
+              <div
+                style="display: flex; align-items: center; margin-bottom: 10px"
+              >
+                <span style="margin-right: 8px">璇曢獙瀹ょ绫�:</span>
+                <ul class="tab">
+                  <li
+                    v-for="(m, i) in tabList"
+                    :key="i"
+                    :class="{ active: i == tabIndex }"
+                    @click="handleTab(m, i)"
+                  >
+                    {{ m.label.replace("璇曢獙瀹�", "") }}
+                  </li>
+                </ul>
+                <div>
+                  <el-checkbox
+                    v-model="alone"
+                    class="view-self-checkbox"
+                    @change="changeCheckBox"
+                    ><span>鎴戠殑浠诲姟</span></el-checkbox
+                  >
+                </div>
+              </div>
+            </el-col>
+            <el-col :span="3">
+              <div class="center-title">
+                <span>鎬昏浠诲姟鏁伴噺:</span>
+                <span v-if="$refs.insOrderPlan != undefined">{{
+                  $refs.insOrderPlan.total
+                }}</span>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <ValueTable
+          :key="upIndex"
+          ref="insOrderPlan"
+          :componentData="componentData"
+          :isColumnWidth="true"
+          :tableRowClassName="changeRowClass"
+          :upUrl="$api.user.updateUser"
+          :url="$api.insOrderPlan.selectInsOrderPlanList"
+          class="value-table"
+          @handleInspection="handleInspection"
+        />
+      </div>
+    </div>
+    <el-dialog :visible.sync="claimVisible" title="鎻愮ず" width="400px">
+      鏄惁璁ら濮旀墭缂栧彿<span style="color: #33c130">{{
+        sampleUserForm.entrustCode
+      }}</span
+      >鐨勪换鍔�
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="claimVisible = false">鍙� 娑�</el-button>
+        <el-button :loading="loading" type="primary" @click="confirmClaim"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="connectVisible" title="妫�楠屼氦鎺�" width="400px">
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>浜ゆ帴浜哄憳锛�
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.connectPerson"
+            filterable
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in personList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <div class="search_thing">
+        <div class="search_label" style="width: 90px">
+          <span class="required-span">* </span>璇曢獙瀹わ細
+        </div>
+        <div class="search_input">
+          <el-select
+            v-model="connect.sonLaboratory"
+            filterable
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in sonLaboratoryList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="connectVisible = false">鍙� 娑�</el-button>
+        <el-button :loading="loading" type="primary" @click="confirmConnect"
+          >纭� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <div
+      v-if="activeFace > 0 && isCopper == null"
+      style="width: 100%; height: 100%"
+    >
+      <!-- <Add :active="activeFace" :currentId="currentId" :examine="examine" /> -->
+    </div>
+    <div
+      v-if="activeFace > 0 && isCopper == 0"
+      style="width: 100%; height: 100%"
+    >
+      <!-- <CustomsInspection
+        :active="activeFace"
+        :currentId="currentId"
+        :customsInspection="customsInspection"
+        :isReport="isReport"
+      /> -->
+    </div>
+    <div
+      v-if="activeFace > 0 && isCopper == 1"
+      style="width: 100%; height: 100%"
+    >
+      <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder> -->
+    </div>
+    <!--<Inspection
+      v-if="state > 0"
+      :key="InspectionKey"
+      :inspectorList="inspectorList"
+      :orderId="orderId"
+      :sonLaboratory="sonLaboratory"
+      :state="state"
+      :typeSource="typeSource"
+      @goback="goback"
+      @refreshView="refreshView"
+    />-->
+    <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%">
+      <div v-if="dataDialogVisible" style="height: 70vh; overflow-y: auto">
+        <ValueTable
+          ref="ValueTableDataLook"
+          :componentData="componentDataDataLook"
+          :rowKey="'insProductId'"
+          :url="$api.insOrder.selectSampleAndProductByOrderId"
+        />
+      </div>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="bindDialogVisible"
+      title="妫�楠岄」缁戝畾"
+      width="600px"
+    >
+      <div
+        slot="title"
+        style="
+          display: flex;
+          align-items: center;
+          justify-content: space-between;
+        "
+      >
+        <span>妫�楠岄」缁戝畾</span>
+        <el-button
+          style="float: right; margin-left: 360px"
+          size="small"
+          @click="openBindAdd"
+          type="primary"
+        >
+          鏂板
+        </el-button>
+      </div>
+      <el-table :data="bindTableData" style="width: 100%" height="70vh">
+        <el-table-column
+          prop="inspectionItemClass"
+          label="妫�楠岄」鍒嗙被"
+          width="150"
+        >
+        </el-table-column>
+        <el-table-column prop="inspectionItem" label="妫�楠岄」" width="150">
+        </el-table-column>
+        <el-table-column prop="inspectionItemSubclass" label="妫�楠屽瓙椤�">
+        </el-table-column>
+        <el-table-column label="鎿嶄綔">
+          <template slot-scope="scope">
+            <el-button size="mini" type="text" @click="handleDelete(scope.row)"
+              >鍒犻櫎</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="bindAddDialogVisible"
+      title="閫夋嫨缁戝畾"
+      width="600px"
+    >
+      <el-table
+        :data="bindAddTableData"
+        style="width: 100%"
+        height="60vh"
+        @selection-change="handleBindAddSelectionChange"
+      >
+        <el-table-column type="selection" width="55"> </el-table-column>
+        <el-table-column
+          prop="inspectionItemClass"
+          label="妫�楠岄」鍒嗙被"
+          width="150"
+        >
+        </el-table-column>
+        <el-table-column prop="inspectionItem" label="妫�楠岄」" width="150">
+        </el-table-column>
+        <el-table-column prop="inspectionItemSubclass" label="妫�楠屽瓙椤�">
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="bindAddDialogVisible = false">鍙� 娑�</el-button>
+        <el-button :loading="loading" type="primary" @click="bindAdd"
+          >缁� 瀹�</el-button
+        >
+      </span>
+    </el-dialog>
+    <un-pass-retest-result
+      v-if="retestVisible"
+      :retestInfo="retestInfo"
+      :retestVisible="retestVisible"
+      @closeRetestLook="closeRetestLook"
+    ></un-pass-retest-result>
+    <!--浜т笟閾句俊鎭煡鐪�-->
+    <!-- <ShowInfo
+      v-if="showInfoDialog"
+      ref="showInfoDialog"
+      :showInfoDialog="showInfoDialog"
+    ></ShowInfo> -->
+    <edit-inspection-item ref="editInspectionItem"></edit-inspection-item>
+  </div>
+</template>
+
+<script>
+import ValueTable from "@/components/Table/value-table.vue";
+// import Inspection from "../do/b1-inspect-order-plan/Inspection.vue";
+// import CustomsInspection from "../do/b1-material-ins-order/customs-inspection.vue";
+import { getYearAndMonthAndDays } from "@/utils/date";
+// import Add from "../do/b1-ins-order/add.vue";
+// import ShowInfo from "../do/b1-material-ins-order/showInfo.vue";
+// import CopperOrder from "../do/b1-material-ins-order/copper-order.vue";
+import EditInspectionItem from "./components/EditInspectionItem.vue";
+export default {
+  components: {
+    EditInspectionItem,
+    // CopperOrder,
+    // ShowInfo,
+    ValueTable,
+    // Inspection,
+    // Add,
+    // CustomsInspection,
+  },
+  data() {
+    return {
+      InspectionKey: 1,
+      bindDialogVisible: false,
+      bindAddDialogVisible: false,
+      bindTableData: [],
+      bindAddTableData: [],
+      chooseBindAddList: [],
+      examine: null,
+      inspectorList: [], //妫�楠屼汉鍛樺垪琛�
+      alone: true,
+      sampleUserForm: {
+        entrustCode: null,
+        insSampleId: null,
+        userId: null,
+      },
+      claimVisible: false,
+      tabList: [
+        { label: "濮旀墭", value: 0 },
+        { label: "鍘熸潗鏂�", value: 1 },
+      ],
+      active: 1,
+      tabIndex: 0,
+      componentDataDataLook: {
+        entity: {
+          id: 0,
+          orderBy: {
+            field: "sampleCode",
+            order: "asc",
+          },
+        },
+        isIndex: false,
+        showSelect: false,
+        select: false,
+        do: [
+          {
+            id: "parent",
+            font: "涓嶅悎鏍煎娴嬫煡鐪�",
+            type: "text",
+            method: "getRetestResult",
+            disabFun: (row, index) => {
+              return row.insResult != 0;
+            },
+          },
+          {
+            id: "parent",
+            font: "妫�楠岄」缁戝畾",
+            type: "text",
+            method: "getBinding",
+            disabFun: (row, index) => {
+              return (
+                this.lookInfo.userName == null ||
+                this.lookInfo.insState == 3 ||
+                this.lookInfo.insState == 5
+              );
+            },
+          },
+        ],
+        tagField: {
+          insState: {
+            select: [],
+          },
+          insResult: {
+            select: [
+              {
+                value: 1,
+                label: "鍚堟牸",
+                type: "success",
+              },
+              {
+                value: 0,
+                label: "涓嶅悎鏍�",
+                type: "danger",
+              },
+              {
+                value: 3,
+                label: "涓嶅垽瀹�",
+                type: "",
+              },
+            ],
+          },
+        },
+        selectField: {},
+        spanConfig: {
+          rows: [
+            {
+              name: "sampleCode",
+              index: 0,
+            },
+            {
+              name: "sample",
+              index: 1,
+            },
+            {
+              name: "model",
+              index: 6,
+            },
+          ],
+        },
+        requiredAdd: [],
+        requiredUp: [],
+      },
+      dataDialogVisible: false,
+      componentData: {
+        entity: {
+          orderBy: {
+            field: "entrustCode",
+            order: "asc",
+          },
+          sonLaboratory: null,
+          insState: null,
+          userId: null,
+          typeSource: null,
+        },
+        isIndex: true,
+        showSelect: false,
+        select: false,
+        init: false,
+        needSort: ["createTime", "sendTime", "type", "appointed", "insState"],
+        do: [
+          {
+            id: "",
+            font: "鏁版嵁鏌ョ湅",
+            type: "text",
+            method: "handleDataLook",
+          },
+          {
+            id: "",
+            font: "淇敼妫�楠屽��",
+            type: "text",
+            method: "editInspection",
+            disabFun: (row, index) => {
+              return (
+                row.userName == null || row.insState == 3 || row.insState == 5
+              );
+            },
+          },
+          {
+            id: "",
+            font: "妫�楠�",
+            type: "text",
+            method: "handleInspection",
+            disabFun: (row, index) => {
+              return (
+                row.userName == null ||
+                row.insState == 3 ||
+                row.insState == 5 ||
+                (row.userName &&
+                  !row.userName.includes(
+                    JSON.parse(localStorage.getItem("user")).name
+                  ))
+              );
+            },
+          },
+          {
+            id: "",
+            font: "浜ゆ帴",
+            type: "text",
+            method: "handleConnect",
+            disabFun: (row, index) => {
+              return (
+                row.userName == null ||
+                row.insState == 5 ||
+                row.insState == 3 ||
+                (row.userName &&
+                  !row.userName.includes(
+                    JSON.parse(localStorage.getItem("user")).name
+                  ))
+              );
+            },
+          },
+          // {
+          //   font: '浜т笟閾�',
+          //   type: 'text',
+          //   method: 'openInfoDialog',
+          //   disabFun: (row, index) => {
+          //     return row.typeSource !== 1
+          //   }
+          // },
+          // {
+          // 	id: '',
+          // 	font: '璁ら',
+          // 	type: 'text',
+          // 	method: 'claimFun',
+          // 	disabFun: (row, index) => {
+          // 		return row.userName != null || row.checkName!=null
+          // 	}
+          // },
+          {
+            id: "",
+            font: "鍘熷璁板綍",
+            type: "text",
+            method: "viewInspectInfo",
+          },
+        ],
+        linkEvent: {
+          entrustCode: {
+            method: "selectAllByOne",
+          },
+        },
+        tagField: {
+          type: {
+            select: [],
+          },
+          insState: {
+            select: [],
+          },
+          insResult: {
+            select: [
+              {
+                value: 0,
+                label: "涓嶅悎鏍�",
+                type: "danger",
+              },
+              {
+                value: 1,
+                label: "鍚堟牸",
+                type: "success",
+              },
+              {
+                value: "",
+                label: "鏈嚭缁撴灉",
+                type: "info",
+              },
+            ],
+          },
+          typeSource: {
+            select: [
+              {
+                value: 0,
+                label: "鎴愬搧涓嬪崟",
+                type: "info",
+              },
+              {
+                value: 1,
+                label: "鍘熸潗鏂欎笅鍗�",
+                type: "info",
+              },
+              {
+                value: 2,
+                label: "鍘熸潗鏂欎笅鍗�",
+                type: "info",
+              },
+            ],
+          },
+          orderType: {
+            select: [
+              {
+                value: "Customer-ordered test",
+                label: "濮旀墭璇曢獙",
+                type: "success",
+                effect: "plain",
+              },
+              {
+                value: "鎶芥",
+                label: "鎶芥",
+                type: "",
+                effect: "plain",
+              },
+              {
+                value: "杩涘巶妫�楠�",
+                label: "杩涘巶妫�楠�",
+                type: "info",
+                effect: "plain",
+              },
+              {
+                value: "Quarterly inspection",
+                label: "瀛e害妫�楠�",
+                type: "warning",
+                effect: "plain",
+              },
+            ],
+          },
+        },
+        selectField: {},
+        requiredAdd: [],
+        requiredUp: [],
+      },
+      upIndex: 0,
+      planTotal: 0,
+      insStateList: [],
+      state: 0, // 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅
+      typeSource: null, // 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟
+      sonLaboratory: null, // 0:濮旀墭锛�1锛氬師鏉愭枡
+      activeFace: 0, // 1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0
+      currentId: null,
+      entityCopy: {},
+      orderId: 0,
+      personList: [],
+      connectVisible: false,
+      connect: {
+        connectPerson: "",
+        sonLaboratory: "",
+      },
+      loading: false,
+      currentTime: null,
+      sonLaboratoryList: [],
+      typeSourceList: [
+        { label: "鎴愬搧涓嬪崟", value: 0 },
+        { label: "鍘熸潗鏂欎笅鍗�", value: 1 },
+      ],
+      customsInspection: {},
+      showInfoDialog: false, // 浜т笟閾句俊鎭煡鐪�
+      isReport: 0,
+      retestVisible: false,
+      retestInfo: [],
+      isCopper: null,
+      bindCurrentInfo: {},
+      lookInfo: {},
+    };
+  },
+  created() {
+    // this.getLaboratoryDicts()
+    this.getTypeDicts();
+    this.getInsStateDicts();
+    this.getAuthorizedPerson();
+    this.currentTime = getYearAndMonthAndDays();
+  },
+  mounted() {
+    this.entityCopy = this.HaveJson(this.componentData.entity);
+    let user = JSON.parse(localStorage.getItem("user"));
+    this.componentData.entity.userId = user.userId;
+    this.getPower();
+    this.refreshTable();
+  },
+  methods: {
+    // 淇敼妫�楠屽��
+    editInspection(row) {
+      this.$refs.editInspectionItem.showDialog(row.id);
+    },
+    // 鍒锋柊椤甸潰
+    refreshView() {
+      this.InspectionKey++;
+    },
+    // 鏁版嵁鏌ョ湅
+    handleDataLook(row) {
+      this.lookInfo = row;
+      this.componentDataDataLook.entity.id = row.id;
+      this.dataDialogVisible = true;
+    },
+    // 鏌ョ湅涓嶅悎鏍煎娴嬬粨鏋�
+    getRetestResult(row) {
+      this.$axios
+        .get(
+          this.$api.insOrder.getRetestResult +
+            "?insProductId=" +
+            row.insProductId
+        )
+        .then((res) => {
+          if (res.code == 201) return;
+          this.retestVisible = true;
+          this.retestInfo = res.data;
+        });
+    },
+    //
+    closeRetestLook() {
+      this.retestVisible = false;
+    },
+    // 鏉冮檺鍒嗛厤
+    getPower(radio) {
+      let power = JSON.parse(sessionStorage.getItem("power"));
+      let inspection = false;
+      let connect = false;
+      let review = false;
+      let claim = false;
+      for (var i = 0; i < power.length; i++) {
+        if (power[i].menuMethod == "doInsOrder") {
+          inspection = true;
+        }
+        if (power[i].menuMethod == "upPlanUser") {
+          connect = true;
+        }
+        if (power[i].menuMethod == "verifyPlan") {
+          review = true;
+        }
+        if (power[i].menuMethod == "claimInsOrderPlan") {
+          claim = true;
+        }
+      }
+      if (!claim) {
+        this.componentData.do.splice(3, 1);
+      }
+      if (!review) {
+        this.componentData.do.splice(2, 1);
+      }
+      if (!connect) {
+        this.componentData.do.splice(1, 1);
+      }
+      if (!inspection) {
+        this.componentData.do.splice(0, 1);
+      }
+    },
+    changeCheckBox(val) {
+      this.componentData.entity.userId = val ? 0 : null;
+      this.refreshTable();
+    },
+    refresh() {
+      this.componentData.entity = this.HaveJson(this.entityCopy);
+      let user = JSON.parse(localStorage.getItem("user"));
+      this.componentData.entity.userId = user.userId;
+      this.alone = true;
+      this.refreshTable();
+    },
+    // claimFun(row) {
+    // 	if (row) {
+    // 		this.sampleUserForm = {
+    // 			entrustCode: row.entrustCode,
+    // 			insSampleId: row.id,
+    //       sonLaboratory: row.sonLaboratory,
+    // 		}
+    // 		this.claimVisible = true
+    // 	}
+    // },
+    // 鏌ョ湅浜т笟閾句俊鎭�
+    openInfoDialog(row) {
+      this.showInfoDialog = true;
+      this.$nextTick(() => {
+        this.$refs.showInfoDialog.getInfo(row.ifsInventoryId);
+      });
+    },
+    confirmClaim() {
+      this.loading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, {
+          headers: {
+            "Content-Type": "application/json",
+          },
+        })
+        .then((res) => {
+          if (res.code === 200 && res.data) {
+            this.loading = false;
+            this.$message.success("璁ら鎴愬姛");
+            this.claimVisible = false;
+            this.refreshTable("page");
+          }
+        })
+        .catch((error) => {
+          console.error(error);
+          this.loading = false;
+        });
+    },
+    refreshTable(e) {
+      this.componentData.entity.typeSource = this.tabIndex;
+      this.$refs.insOrderPlan.selectList(e);
+    },
+    changeRowClass({ row, rowIndex }) {
+      if (this.currentTime == row.appointed) {
+        return "highlight-warning-row-border";
+      } else if (this.currentTime > row.appointed) {
+        return "highlight-danger-row-border";
+      }
+      return "";
+    },
+    onReset() {
+      this.searchForm = {
+        sampleName: null,
+        state: null,
+      };
+      this.componentData.entity.insState = null;
+      this.componentData.entity.sampleName = null;
+      this.refreshTable();
+    },
+    onSubmit() {
+      this.componentData.entity.insState = this.searchForm.state;
+      this.componentData.entity.sampleName = this.searchForm.sampleName;
+      this.$nextTick(() => {
+        this.refreshTable();
+      });
+    },
+    handleTab(m, i) {
+      this.tabIndex = i;
+      this.componentData.entity.sonLaboratory = "";
+      this.refreshTable();
+    },
+    getTypeDicts() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "绱ф�ョ▼搴�",
+        })
+        .then((res) => {
+          let data = res.data;
+          data.forEach((ele) => {
+            if (ele.value === "0") {
+              ele.type = "success";
+            } else if (ele.value === "1") {
+              ele.type = "warning";
+            } else if (ele.value === "2") {
+              ele.type = "danger";
+            }
+          });
+          this.componentData.tagField.type.select = data;
+        });
+    },
+    getInsStateDicts() {
+      this.$axios
+        .post(this.$api.enums.selectEnumByCategory, {
+          category: "妫�楠屼换鍔$姸鎬�",
+        })
+        .then((res) => {
+          let data = res.data;
+          this.insStateList = data;
+          data.forEach((ele) => {
+            //0:寰呮楠� 1:妫�楠屼腑 2:宸叉楠� 3:寰呭鏍� 4:澶嶆牳鏈�氳繃 5:澶嶆牳閫氳繃
+            if (["2", "5"].includes(ele.value)) {
+              ele.type = "success";
+            } else if (["1", "3"].includes(ele.value)) {
+              ele.type = "warning";
+            } else if (["0", "4"].includes(ele.value)) {
+              ele.type = "danger";
+            }
+          });
+          this.componentData.tagField.insState.select = data;
+        });
+    },
+    // getLaboratoryDicts() {
+    // 	this.$axios.post(this.$api.enums.selectEnumByCategory, {
+    // 		category: "瀛愬疄楠屽"
+    // 	}).then(res => {
+    // 		this.tabList = res.data.map(ele => {
+    // 			return {
+    // 				label: ele.label,
+    // 				value: ele.value
+    // 			}
+    // 		})
+    // 		if(this.tabList.length>0){
+    // 			this.componentData.entity.sonLaboratory = this.tabList[0].value
+    // 		}
+    // 		this.refreshTable()
+    // 	})
+    // },
+    selectAllByOne(row) {
+      this.isCopper = row.isCopper;
+      this.customsInspection = row;
+      this.activeFace = 2;
+      this.examine = 1;
+      this.isReport = 0;
+      this.currentId = parseInt(row.id);
+    },
+    playOrder(num) {
+      this.activeFace = num;
+    },
+    goback() {
+      this.state = 0;
+      this.refreshTable("page");
+    },
+    // 杩涜妫�楠屼换鍔�
+    handleInspection(row) {
+      //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
+      let inspectorList = [];
+      if (row.userName) {
+        inspectorList = row.userName.split(",");
+      }
+      let user = JSON.parse(localStorage.getItem("user"));
+      if (user) {
+        inspectorList.push(user.name);
+      }
+      this.inspectorList = inspectorList;
+      this.sonLaboratory = row.sonLaboratory;
+      this.state = 1;
+      this.typeSource = row.typeSource;
+      this.orderId = row.id;
+    },
+    // 鏌ョ湅妫�楠屾暟鎹�
+    viewInspectInfo(row) {
+      //褰撳墠妫�楠屼换鍔$殑妫�楠屼汉鍒楄〃
+      let inspectorList = [];
+      if (row.userName) {
+        inspectorList = row.userName.split(",");
+      }
+      let user = JSON.parse(localStorage.getItem("user"));
+      if (user) {
+        inspectorList.push(user.name);
+      }
+      this.inspectorList = inspectorList;
+      this.sonLaboratory = row.sonLaboratory;
+      this.state = 3;
+      this.typeSource = row.typeSource;
+      this.orderId = row.id;
+    },
+    handleConnect(row) {
+      this.orderId = row.id;
+      this.connect = {};
+      this.connectVisible = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.upPlanUser2, {
+          orderId: this.orderId,
+        })
+        .then((res) => {
+          if (res.code === 200 && res.data.length > 0) {
+            this.sonLaboratoryList = [];
+            res.data.forEach((m) => {
+              this.sonLaboratoryList.push({
+                value: m,
+                label: m,
+              });
+            });
+            this.connect.sonLaboratory = this.sonLaboratoryList[0].value;
+          }
+        });
+    },
+    confirmConnect() {
+      if (
+        this.connect.connectPerson == null ||
+        this.connect.connectPerson == "" ||
+        this.connect.connectPerson == undefined
+      ) {
+        this.$message.error("鏈�夋嫨浜ゆ帴浜哄憳");
+        return;
+      }
+      if (
+        this.connect.sonLaboratory == null ||
+        this.connect.sonLaboratory == "" ||
+        this.connect.sonLaboratory == undefined
+      ) {
+        this.$message.error("鏈�夋嫨璇曢獙瀹�");
+        return;
+      }
+      this.loading = true;
+      this.$axios
+        .post(this.$api.insOrderPlan.upPlanUser, {
+          orderId: this.orderId,
+          userId: this.connect.connectPerson,
+          sonLaboratory: this.connect.sonLaboratory,
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.loading = false;
+            this.$message.success("鎿嶄綔鎴愬姛");
+            this.refreshTable("page");
+          }
+          this.connectVisible = false;
+        })
+        .catch((error) => {
+          console.error(error);
+          this.loading = false;
+        });
+    },
+    handleReview(row) {
+      this.state = 2;
+      this.orderId = row.id;
+    },
+    getAuthorizedPerson() {
+      this.$axios.get(this.$api.user.getUserMenu).then((res) => {
+        let data = [];
+        res.data.forEach((a) => {
+          data.push({
+            label: a.name,
+            value: a.id,
+          });
+        });
+        this.personList = data;
+      });
+    },
+    // 缁戝畾妫�楠岄」缁戝畾
+    getBinding(row) {
+      this.bindCurrentInfo = row;
+      this.$axios
+        .get(
+          this.$api.insOrderPlan.getBindingProductByProductId +
+            "?productId=" +
+            row.insProductId
+        )
+        .then((res) => {
+          if (res.coe == 201) {
+            // this.$message.error('鏈粦瀹氭楠岄」')
+            return;
+          }
+          // console.log(res)
+          this.bindTableData = res.data;
+          this.bindDialogVisible = true;
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    openBindAdd() {
+      this.$axios
+        .get(
+          this.$api.insOrderPlan.getProductTreeByProductId +
+            "?productId=" +
+            this.bindCurrentInfo.insProductId
+        )
+        .then((res) => {
+          if (res.coe == 201) {
+            // this.$message.error('鏈粦瀹氭楠岄」')
+            return;
+          }
+          // console.log(res)
+          this.bindAddTableData = res.data;
+          this.bindAddDialogVisible = true;
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    handleBindAddSelectionChange(list) {
+      this.chooseBindAddList = list;
+    },
+    bindAdd() {
+      if (this.chooseBindAddList.length == 0) {
+        this.$message.error("璇烽�夋嫨妫�楠岄」");
+        return;
+      }
+      this.chooseBindAddList.forEach((item) => {
+        delete item.template;
+      });
+      this.loading = true;
+      this.$axios
+        .post(
+          this.$api.insOrderPlan.bindingProductTreeByProductId,
+          {
+            insProductId: this.bindCurrentInfo.insProductId,
+            insProductBindingList: this.chooseBindAddList,
+          },
+          {
+            headers: {
+              "Content-Type": "application/json",
+            },
+            noQs: true,
+          }
+        )
+        .then((res) => {
+          this.loading = false;
+          if (res.code == 201) {
+            this.$message.error("缁戝畾澶辫触");
+            return;
+          }
+          this.$message.success("缁戝畾鎴愬姛");
+          this.bindAddDialogVisible = false;
+          this.getBinding(this.bindCurrentInfo);
+        })
+        .catch((error) => {
+          console.error(error);
+        });
+    },
+    handleDelete(row) {
+      this.$confirm("纭鍒犻櫎姝ゆ楠岄」, 鏄惁缁х画?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }).then(async () => {
+        this.$axios
+          .get(
+            this.$api.insOrderPlan.delProductTreeByProductId +
+              "?productId=" +
+              row.id
+          )
+          .then((res) => {
+            if (res.coe == 201) {
+              // this.$message.error('鏈粦瀹氭楠岄」')
+              return;
+            }
+            this.getBinding(this.bindCurrentInfo);
+          })
+          .catch((error) => {
+            console.error(error);
+          });
+      });
+    },
+  },
+};
+</script>
diff --git a/src/views/business/inspectionTask/inspection.vue b/src/views/business/inspectionTask/inspection.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/views/business/inspectionTask/inspection.vue

--
Gitblit v1.9.3