From d68551caef23bd5d3c00035d7add3814f0fdece1 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 19 二月 2025 15:19:52 +0800
Subject: [PATCH] 搬迁检验任务11%

---
 src/components/Table/lims-table.vue                               |   16 
 src/views/performance/manHour/workTimeManagement.vue              |    1 
 src/views/standard/model/index.vue                                |    1 
 src/views/CNAS/process/method/standardMethod/index.vue            |    1 
 src/views/structural/capabilityAndLaboratory/laboratory/index.vue |  573 +++++++++++++++++++++++------------
 src/views/performance/manHour/workTimeConfig.vue                  |    1 
 src/views/business/inspectionTask/index.vue                       |  313 +++++++------------
 7 files changed, 505 insertions(+), 401 deletions(-)

diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index 4ba34e6..582036a 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -19,7 +19,12 @@
       @current-change="currentChange"
       @selection-change="handleSelectionChange"
     >
-      <el-table-column align="center" type="selection" width="55" v-if="isSelection" />
+      <el-table-column
+        align="center"
+        type="selection"
+        width="55"
+        v-if="isSelection"
+      />
       <el-table-column
         align="center"
         label="搴忓彿"
@@ -405,15 +410,16 @@
 .el-table >>> .el-table__empty-text {
   text-align: center;
 }
+
+>>> .cell {
+  padding: 0 !important;
+}
 .cell {
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
   padding-right: 4px;
-  padding-left: 4px;
-}
->>> .cell {
-  padding: 0 !important;
+  padding-left: 10px;
 }
 .link {
   color: rgb(64, 158, 255);
diff --git a/src/views/CNAS/process/method/standardMethod/index.vue b/src/views/CNAS/process/method/standardMethod/index.vue
index 1b63b97..b970b5f 100644
--- a/src/views/CNAS/process/method/standardMethod/index.vue
+++ b/src/views/CNAS/process/method/standardMethod/index.vue
@@ -280,7 +280,6 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "120px",
           operation: [
             {
               name: "缂栬緫",
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index 127d5bb..8c58f11 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -162,17 +162,6 @@
             </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"
-        /> -->
         <lims-table
           :tableData="tableData"
           :column="column"
@@ -180,6 +169,7 @@
           :tableLoading="tableLoading"
           :height="'calc(100vh - 290px)'"
           @pagination="pagination"
+          key="tableData0"
         ></lims-table>
       </div>
     </div>
@@ -281,12 +271,15 @@
     />-->
     <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"
-        />
+        <lims-table
+          :tableData="lookTableData"
+          :column="lookColumn"
+          :page="lookPage"
+          :tableLoading="lookTableLoading"
+          :height="'60vh'"
+          @pagination="lookPagination"
+          key="tableData1"
+        ></lims-table>
       </div>
     </el-dialog>
     <el-dialog
@@ -400,6 +393,7 @@
   bindingProductTreeByProductId,
   delProductTreeByProductId,
   selectInsOrderPlanList,
+  selectSampleAndProductByOrderId,
 } from "@/api/business/inspectionTask.js";
 import { mapGetters } from "vuex";
 export default {
@@ -521,182 +515,6 @@
         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鏁版嵁鏌ョ湅
@@ -819,7 +637,6 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "260px",
           operation: [
             {
               name: "鏁版嵁鏌ョ湅",
@@ -887,6 +704,91 @@
       },
       tableLoading: false,
       queryParams: {},
+      insResultList: [
+        {
+          value: 1,
+          label: "鍚堟牸",
+          type: "success",
+        },
+        {
+          value: 0,
+          label: "涓嶅悎鏍�",
+          type: "danger",
+        },
+        {
+          value: 3,
+          label: "涓嶅垽瀹�",
+          type: "",
+        },
+      ],
+      lookTableData: [],
+      lookColumn: [
+        {
+          label: "鏍峰搧缂栧彿",
+          prop: "sampleCode",
+          width: "140px",
+          dataType: "link",
+          linkMethod: "selectAllByOne",
+        },
+        { label: "鏍峰搧鍚嶇О", prop: "sample", width: "140px" },
+        { label: "妫�楠岄」鍒嗙被", prop: "inspectionItemClass" },
+        { label: "妫�楠岄」", prop: "inspectionItem", width: "140px" },
+        { label: "妫�楠屽瓙椤�", prop: "inspectionItemSubclass" },
+        { label: "鍗曚綅", prop: "unit" },
+        { label: "鏍峰搧鍨嬪彿", prop: "model" },
+        { label: "鏉′欢", prop: "radius" },
+        { label: "鐢电紗鏍囪瘑", prop: "cableTag" },
+        { label: "璇曢獙瑕佹眰", prop: "tell" },
+        { label: "妫�楠岀粨鏋�", prop: "lastValue" },
+        {
+          label: "缁撴灉鍒ゅ畾",
+          prop: "insResult",
+          dataType: "tag",
+          formatData: (params) => {
+            return this.insResultList.find((m) => m.value == params).label;
+          },
+          formatType: (params) => {
+            return this.insResultList.find((m) => m.value == params).type;
+          },
+        },
+        {
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
+          operation: [
+            {
+              name: "涓嶅悎鏍煎娴嬫煡鐪�",
+              type: "text",
+              clickFun: (row) => {
+                this.getRetestResult(row);
+              },
+              disabled: (row) => {
+                return row.insResult != 0;
+              },
+            },
+            {
+              name: "妫�楠岄」缁戝畾",
+              type: "text",
+              clickFun: (row) => {
+                this.getBinding(row);
+              },
+              disabled: (row) => {
+                return (
+                  this.lookInfo.userName == null ||
+                  this.lookInfo.insState == 3 ||
+                  this.lookInfo.insState == 5
+                );
+              },
+            },
+          ],
+        },
+      ],
+      lookPage: {
+        total: 0,
+        size: 10,
+        current: 0,
+      },
+      lookTableLoading: false,
     };
   },
   created() {
@@ -926,6 +828,27 @@
       this.page.size = limit;
       this.getList();
     },
+    getLookList() {
+      this.lookTableLoading = true;
+      let param = { id: this.lookInfo.id, ...this.lookPage };
+      delete param.total;
+      selectSampleAndProductByOrderId({ ...param })
+        .then((res) => {
+          this.lookTableLoading = false;
+          if (res.code === 200) {
+            this.lookTableData = res.data.records;
+            this.lookPage.total = res.data.total;
+          }
+        })
+        .catch((err) => {
+          this.lookTableLoading = false;
+        });
+    },
+    lookPagination({ page, limit }) {
+      this.lookPage.current = page;
+      this.lookPage.size = limit;
+      this.getLookList();
+    },
     // 淇敼妫�楠屽��
     editInspection(row) {
       this.$refs.editInspectionItem.showDialog(row.id);
@@ -937,7 +860,7 @@
     // 鏁版嵁鏌ョ湅
     handleDataLook(row) {
       this.lookInfo = row;
-      this.componentDataDataLook.entity.id = row.id;
+      this.getLookList();
       this.dataDialogVisible = true;
     },
     // 鏌ョ湅涓嶅悎鏍煎娴嬬粨鏋�
diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue
index ff79cc8..71eac7d 100644
--- a/src/views/performance/manHour/workTimeConfig.vue
+++ b/src/views/performance/manHour/workTimeConfig.vue
@@ -209,7 +209,6 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "160px",
           operation: [
             {
               name: "缂栬緫",
diff --git a/src/views/performance/manHour/workTimeManagement.vue b/src/views/performance/manHour/workTimeManagement.vue
index bf8ffec..b93f8fe 100644
--- a/src/views/performance/manHour/workTimeManagement.vue
+++ b/src/views/performance/manHour/workTimeManagement.vue
@@ -597,7 +597,6 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "160px",
           operation: [
             {
               name: "缂栬緫",
diff --git a/src/views/standard/model/index.vue b/src/views/standard/model/index.vue
index 9a366c8..1d9f42c 100644
--- a/src/views/standard/model/index.vue
+++ b/src/views/standard/model/index.vue
@@ -152,7 +152,6 @@
           dataType: "action",
           fixed: "right",
           label: "鎿嶄綔",
-          width: "320px",
           operation: [
             {
               name: "缂栬緫",
diff --git a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
index c0bf840..820d8d2 100644
--- a/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
+++ b/src/views/structural/capabilityAndLaboratory/laboratory/index.vue
@@ -3,219 +3,383 @@
     <div>
       <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
         <el-form-item label="璧勮川鍚嶇О" prop="name">
-          <el-select v-model="queryParams.name" placeholder="閫夋嫨璧勮川鍚嶇О" size="small" @change="refreshTable()">
-            <el-option v-for="dict in dict.type.qualification_name" :key="dict.value" :label="dict.label" :value="dict.value">
+          <el-select
+            v-model="queryParams.name"
+            placeholder="閫夋嫨璧勮川鍚嶇О"
+            size="small"
+            @change="refreshTable()"
+          >
+            <el-option
+              v-for="dict in dict.type.cnas_method_qualification"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            >
               {{ dict.label }}
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button>
-          <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            size="mini"
+            @click="refreshTable"
+            >鏌� 璇�</el-button
+          >
+          <el-button icon="el-icon-refresh" size="mini" @click="refresh"
+            >閲� 缃�</el-button
+          >
         </el-form-item>
       </el-form>
     </div>
     <div>
       <el-row class="title">
         <el-col :span="12" style="text-align: left">
-          <el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#409EFF">
+          <el-radio-group
+            v-model="radio"
+            @input="selectorSwitch"
+            size="medium"
+            fill="#409EFF"
+          >
             <el-radio-button :label="0">璧勮川鏄庣粏</el-radio-button>
             <el-radio-button :label="1">璧勮川鎬昏</el-radio-button>
           </el-radio-group>
         </el-col>
-        <el-col :span="12" style="text-align: right;" v-if="radio===0">
-          <el-button size="small" type="primary" @click="openAdd">璧勮川鏇存柊</el-button>
-          <el-button size="small" icon="el-icon-delete" @click="handleDel">鍒犻櫎</el-button>
+        <el-col :span="12" style="text-align: right" v-if="radio === 0">
+          <el-button size="small" type="primary" @click="openAdd"
+            >璧勮川鏇存柊</el-button
+          >
+          <el-button size="small" icon="el-icon-delete" @click="handleDel"
+            >鍒犻櫎</el-button
+          >
         </el-col>
       </el-row>
     </div>
-    <div v-if="radio===0">
-      <lims-table :tableData="tableData" :column="column"
-                  :isSelection="true" :handleSelectionChange="handleSelectionChange"
-                  @pagination="pagination" :height="'calc(100vh - 300px)'"
-                  :page="page" :tableLoading="tableLoading"></lims-table>
+    <div v-if="radio === 0">
+      <lims-table
+        :tableData="tableData"
+        :column="column"
+        :isSelection="true"
+        :handleSelectionChange="handleSelectionChange"
+        @pagination="pagination"
+        :height="'calc(100vh - 300px)'"
+        :page="page"
+        :tableLoading="tableLoading"
+      ></lims-table>
     </div>
-    <div class="table" v-if="radio===1" v-loading="pageLoading" @scroll="scrollFn">
+    <div
+      class="table"
+      v-if="radio === 1"
+      v-loading="pageLoading"
+      @scroll="scrollFn"
+    >
       <el-row :gutter="16">
-        <el-col :span="8" v-for="(m,i) in list" :key="i" :xs="24" :sm="12" :md="8" :lg="8" :xl="6" style="margin-bottom: 16px;">
+        <el-col
+          :span="8"
+          v-for="(m, i) in list"
+          :key="i"
+          :xs="24"
+          :sm="12"
+          :md="8"
+          :lg="8"
+          :xl="6"
+          style="margin-bottom: 16px"
+        >
           <div class="table-item">
-            <el-image style="width: 102px;height: 102px;margin-right: 20px;border-radius: 16px;" :src="javaApi +'/img/'+m.imageUrl">
-              <div slot="error" class="image-error" style="width: 100px;
-                height: 100px;
+            <el-image
+              style="
+                width: 102px;
+                height: 102px;
+                margin-right: 20px;
                 border-radius: 16px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                border: 1px solid #EEEEEE;">
-                <i class="el-icon-picture-outline" style="font-size:30px;color:#666666;"></i>
+              "
+              :src="javaApi + '/img/' + m.imageUrl"
+            >
+              <div
+                slot="error"
+                class="image-error"
+                style="
+                  width: 100px;
+                  height: 100px;
+                  border-radius: 16px;
+                  display: flex;
+                  align-items: center;
+                  justify-content: center;
+                  border: 1px solid #eeeeee;
+                "
+              >
+                <i
+                  class="el-icon-picture-outline"
+                  style="font-size: 30px; color: #666666"
+                ></i>
               </div>
             </el-image>
-            <div class="table-item-right" style="flex: 1;font-size: 12px;color: #666666;">
-              <p style="line-height: 26px;">璧勮川鍚嶇О锛�<span style="color: #3A7BFA;">{{ m.name }}</span></p>
-              <p style="line-height: 26px;">棰佸彂鏃堕棿锛歿{m.recentlyTime}}</p>
-              <p style="line-height: 26px;">鍒版湡鏃堕棿锛歿{m.expireTime}}</p>
+            <div
+              class="table-item-right"
+              style="flex: 1; font-size: 12px; color: #666666"
+            >
+              <p style="line-height: 26px">
+                璧勮川鍚嶇О锛�<span style="color: #3a7bfa">{{ m.name }}</span>
+              </p>
+              <p style="line-height: 26px">棰佸彂鏃堕棿锛歿{ m.recentlyTime }}</p>
+              <p style="line-height: 26px">鍒版湡鏃堕棿锛歿{ m.expireTime }}</p>
               <p>
                 <span>鐘舵�侊細</span>
-                <el-tag :type="m.state===0?'danger':'success'" size="small">{{ m.state===0?'澶辨晥':'鏈夋晥' }}</el-tag>
+                <el-tag
+                  :type="m.state === 0 ? 'danger' : 'success'"
+                  size="small"
+                  >{{ m.state === 0 ? "澶辨晥" : "鏈夋晥" }}</el-tag
+                >
               </p>
             </div>
           </div>
         </el-col>
       </el-row>
-      <div v-if="list.length<1&&!pageLoading&&!isLoding" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >鏆傛棤鏁版嵁</div>
-      <div v-if="list.length>0">
-        <el-button v-if="isLoding" type="text" style="display: flex; margin: 0 auto; color: #909399">
-          <i class="el-icon-loading" style="font-size:20px"></i>
+      <div
+        v-if="list.length < 1 && !pageLoading && !isLoding"
+        style="
+          color: #909399;
+          font-size: 14px;
+          text-align: center;
+          margin-top: 200px;
+        "
+      >
+        鏆傛棤鏁版嵁
+      </div>
+      <div v-if="list.length > 0">
+        <el-button
+          v-if="isLoding"
+          type="text"
+          style="display: flex; margin: 0 auto; color: #909399"
+        >
+          <i class="el-icon-loading" style="font-size: 20px"></i>
         </el-button>
-        <el-button type="text" v-if="finishLoding" style="display: flex; margin: 0 auto; color: #909399">宸茬粡娌℃湁鏇村鍟</el-button>
+        <el-button
+          type="text"
+          v-if="finishLoding"
+          style="display: flex; margin: 0 auto; color: #909399"
+          >宸茬粡娌℃湁鏇村鍟</el-button
+        >
       </div>
     </div>
-    <el-dialog title="璧勮川鏇存柊" :visible.sync="qualificationsConnectVisible" width="400px">
-      <el-form ref="formDataRef" :model="formData" label-position="right" :rules="formDataRules" label-width="78px">
+    <el-dialog
+      title="璧勮川鏇存柊"
+      :visible.sync="qualificationsConnectVisible"
+      width="400px"
+    >
+      <el-form
+        ref="formDataRef"
+        :model="formData"
+        label-position="right"
+        :rules="formDataRules"
+        label-width="78px"
+      >
         <el-form-item label="璧勮川鍚嶇О" prop="name">
-          <el-select v-model="formData.name" placeholder="璇烽�夋嫨" style="width: 100%;" size="small" clearable>
-            <el-option v-for="dict in dict.type.qualification_name" :key="dict.value" :label="dict.label" :value="dict.value">
+          <el-select
+            v-model="formData.name"
+            placeholder="璇烽�夋嫨"
+            style="width: 100%"
+            size="small"
+            clearable
+          >
+            <el-option
+              v-for="dict in dict.type.cnas_method_qualification"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            >
               {{ dict.label }}
             </el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="璧勮川缂栫爜" prop="code">
-          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.code"></el-input>
+          <el-input
+            size="small"
+            placeholder="璇疯緭鍏�"
+            clearable
+            v-model="formData.code"
+          ></el-input>
         </el-form-item>
         <el-form-item label="棰佸彂鏈烘瀯" prop="organization">
-          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.organization"></el-input>
+          <el-input
+            size="small"
+            placeholder="璇疯緭鍏�"
+            clearable
+            v-model="formData.organization"
+          ></el-input>
         </el-form-item>
         <el-form-item label="璧勮川璇存槑" prop="explanation">
-          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="formData.explanation"></el-input>
+          <el-input
+            size="small"
+            placeholder="璇疯緭鍏�"
+            clearable
+            v-model="formData.explanation"
+          ></el-input>
         </el-form-item>
         <el-form-item label="棰佸彂鏃堕棿" prop="dateOfIssuance">
-          <el-date-picker style="width:100%" v-model="formData.dateOfIssuance"
-                          type="datetime"
-                          size="small"
-                          format="yyyy-MM-dd HH:mm:ss"
-                          value-format="yyyy-MM-dd HH:mm:ss"
-                          clearable
-                          placeholder="閫夋嫨鏃ユ湡">
+          <el-date-picker
+            style="width: 100%"
+            v-model="formData.dateOfIssuance"
+            type="datetime"
+            size="small"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            clearable
+            placeholder="閫夋嫨鏃ユ湡"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="鍒版湡鏃堕棿" prop="expireTime">
-          <el-date-picker style="width:100%" v-model="formData.expireTime"
-                          type="datetime"
-                          size="small"
-                          format="yyyy-MM-dd HH:mm:ss"
-                          value-format="yyyy-MM-dd HH:mm:ss"
-                          clearable
-                          placeholder="閫夋嫨鏃ユ湡">
+          <el-date-picker
+            style="width: 100%"
+            v-model="formData.expireTime"
+            type="datetime"
+            size="small"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            clearable
+            placeholder="閫夋嫨鏃ユ湡"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="璧勮川鍥剧墖">
           <el-upload
             ref="upload"
             :action="uploadAction"
-            :on-success="m=>handleSuccessUpImg(m,'imageUrl')"
-            accept='image/jpg,image/jpeg,image/png'
+            :on-success="(m) => handleSuccessUpImg(m, 'imageUrl')"
+            accept="image/jpg,image/jpeg,image/png"
             :multiple="false"
             :limit="1"
-            :headers="headers" :on-change="beforeUpload"
-            :on-error="onError">
-            <el-button slot="trigger" size="small" type="primary">閫夊彇鍥剧墖</el-button>
+            :headers="headers"
+            :on-change="beforeUpload"
+            :on-error="onError"
+          >
+            <el-button slot="trigger" size="small" type="primary"
+              >閫夊彇鍥剧墖</el-button
+            >
           </el-upload>
         </el-form-item>
         <el-form-item label="璧勮川闄勪欢">
           <el-upload
             ref="upload1"
             :action="uploadAction"
-            :on-success="m=>handleSuccessUpImg(m,'fileUrl')"
-            accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx'
-            :headers="headers" :multiple="false" :limit="1" :on-change="beforeUpload1"
-            :on-error="onError1">
-            <el-button slot="trigger" size="small" type="primary">閫夊彇鏂囦欢</el-button>
+            :on-success="(m) => handleSuccessUpImg(m, 'fileUrl')"
+            accept="image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx"
+            :headers="headers"
+            :multiple="false"
+            :limit="1"
+            :on-change="beforeUpload1"
+            :on-error="onError1"
+          >
+            <el-button slot="trigger" size="small" type="primary"
+              >閫夊彇鏂囦欢</el-button
+            >
           </el-upload>
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-				<el-button @click="qualificationsConnectVisible = false">鍙� 娑�</el-button>
-				<el-button type="primary" @click="confirmQualifications" :loading="loading">纭� 瀹�</el-button>
-			</span>
+        <el-button @click="qualificationsConnectVisible = false"
+          >鍙� 娑�</el-button
+        >
+        <el-button
+          type="primary"
+          @click="confirmQualifications"
+          :loading="loading"
+          >纭� 瀹�</el-button
+        >
+      </span>
     </el-dialog>
   </div>
 </template>
 
 <script>
 import limsTable from "@/components/Table/lims-table.vue";
-import {addCertificationDetail, delCertificationDetail, getCertificationDetail} from "@/api/structural/laboratory";
-import {getToken} from "@/utils/auth";
+import {
+  addCertificationDetail,
+  delCertificationDetail,
+  getCertificationDetail,
+} from "@/api/structural/laboratory";
+import { getToken } from "@/utils/auth";
 
 export default {
   components: {
-    limsTable
+    limsTable,
   },
-  dicts: ['qualification_name'],
+  dicts: ["cnas_method_qualification"],
   data() {
     return {
       radio: 0,
       queryParams: {
-        name: ''
+        name: "",
       },
       tableData: [],
       selection: [],
       column: [
-        {label: '璧勮川鍚嶇О', prop: 'name'},
-        {label: '璧勮川缂栫爜', prop: 'code'},
-        {label: '棰佸彂鏈烘瀯', prop: 'organization'},
-        {label: '璧勮川璇存槑', prop: 'explanation'},
-        {label: '棣栨棰佸彂鏃堕棿', prop: 'firstIssuanceDate'},
-        {label: '鏈�杩戦鍙戞椂闂�', prop: 'latestIssuanceDate'},
-        {label: '鍒版湡棰佸彂鏃堕棿', prop: 'expireTime'},
+        { label: "璧勮川鍚嶇О", prop: "name" },
+        { label: "璧勮川缂栫爜", prop: "code" },
+        { label: "棰佸彂鏈烘瀯", prop: "organization" },
+        { label: "璧勮川璇存槑", prop: "explanation" },
+        { label: "棣栨棰佸彂鏃堕棿", prop: "firstIssuanceDate" },
+        { label: "鏈�杩戦鍙戞椂闂�", prop: "latestIssuanceDate" },
+        { label: "鍒版湡棰佸彂鏃堕棿", prop: "expireTime" },
         {
-          dataType: 'action',
-          fixed: 'right',
-          label: '鎿嶄綔',
+          dataType: "action",
+          fixed: "right",
+          label: "鎿嶄綔",
           operation: [
             {
-              name: '闄勪欢涓嬭浇',
-              type: 'text',
+              name: "闄勪欢涓嬭浇",
+              type: "text",
               clickFun: (row) => {
                 this.handleDownLoad(row);
               },
             },
-          ]
-        }
+          ],
+        },
       ],
       page: {
-        total:0,
-        size:10,
-        current:1
+        total: 0,
+        size: 10,
+        current: 1,
       },
       tableLoading: false,
-      qualificationsList:[],
-      qualificationsConnectVisible:false,
-      formData:{},
+      qualificationsList: [],
+      qualificationsConnectVisible: false,
+      formData: {},
       formDataRules: {
-        name: [{ required: true, message: "璇峰~鍐欒祫璐ㄥ悕绉�", trigger: "change" }],
+        name: [
+          { required: true, message: "璇峰~鍐欒祫璐ㄥ悕绉�", trigger: "change" },
+        ],
         code: [{ required: true, message: "璇峰~鍐欒祫璐ㄧ紪鐮�", trigger: "blur" }],
-        organization: [{ required: true, message: "璇峰~鍐欓鍙戞満鏋�", trigger: "blur" }],
-        dateOfIssuance: [{ required: true, message: "璇烽�夋嫨棰佸彂鏃堕棿", trigger: "change" }],
-        expireTime: [{ required: true, message: "璇峰~鍐欏埌鏈熸椂闂�", trigger: "change" }],
+        organization: [
+          { required: true, message: "璇峰~鍐欓鍙戞満鏋�", trigger: "blur" },
+        ],
+        dateOfIssuance: [
+          { required: true, message: "璇烽�夋嫨棰佸彂鏃堕棿", trigger: "change" },
+        ],
+        expireTime: [
+          { required: true, message: "璇峰~鍐欏埌鏈熸椂闂�", trigger: "change" },
+        ],
       },
-      loading:false,
-      pageLoading:false,
+      loading: false,
+      pageLoading: false,
       isLoding: false, // 鍔犺浇涓紝loading鍥炬爣,榛樿涓簍rue
       finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
       currentPage: 1, // 褰撳墠椤�
       pageSize: 16, // 涓�椤�16鏉�
-      total: '',
-      list:[],
-      uploadAction: process.env.VUE_APP_BASE_API + '/deviceScope/uploadFile',
+      total: "",
+      list: [],
+      uploadAction: process.env.VUE_APP_BASE_API + "/deviceScope/uploadFile",
       headers: { Authorization: "Bearer " + getToken() },
-    }
+    };
   },
   mounted() {
-    this.refreshTable()
+    this.refreshTable();
   },
   methods: {
     selectorSwitch(radio) {
-      if(radio === 1){
+      if (radio === 1) {
         this.list = [];
         this.refreshTable();
       }
@@ -223,156 +387,165 @@
     refreshTable() {
       if (this.radio === 0) {
         this.tableLoading = true;
-        getCertificationDetail({...this.page,...this.queryParams}).then(res => {
-          this.tableLoading = false
-          if (res.code === 200) {
-            this.tableData = res.data.records
-            this.page.total = res.data.total
-          }
-        }).catch(err => {
-          this.tableLoading = false
-        })
+        getCertificationDetail({ ...this.page, ...this.queryParams })
+          .then((res) => {
+            this.tableLoading = false;
+            if (res.code === 200) {
+              this.tableData = res.data.records;
+              this.page.total = res.data.total;
+            }
+          })
+          .catch((err) => {
+            this.tableLoading = false;
+          });
       } else {
-        if(this.currentPage>1){
-          this.isLoding = true
-        }else{
-          this.pageLoading = true
+        if (this.currentPage > 1) {
+          this.isLoding = true;
+        } else {
+          this.pageLoading = true;
         }
-        if(this.list.length===0){
-          window.addEventListener("scroll", this.throttle(this.scrollFn, 20000));
+        if (this.list.length === 0) {
+          window.addEventListener(
+            "scroll",
+            this.throttle(this.scrollFn, 20000)
+          );
         }
         getCertificationDetail({
           current: this.currentPage,
           size: this.pageSize,
-          ...this.queryParams
-        }).then(res => {
-          if(res.code===200){
-            this.total = res.data.total
-            let list = res.data.records;
-            if(list.length===0){
-              this.finishLoding = true;
-            }else{
-              if(list.length<this.pageSize){
+          ...this.queryParams,
+        })
+          .then((res) => {
+            if (res.code === 200) {
+              this.total = res.data.total;
+              let list = res.data.records;
+              if (list.length === 0) {
                 this.finishLoding = true;
-              }
-              this.list = this.list.concat(list)
-              if(this.total===this.list.length){
-                this.finishLoding = true;
+              } else {
+                if (list.length < this.pageSize) {
+                  this.finishLoding = true;
+                }
+                this.list = this.list.concat(list);
+                if (this.total === this.list.length) {
+                  this.finishLoding = true;
+                }
               }
             }
-          }
-          this.pageLoading = false
-          this.isLoding = false;
-        }).catch(err => {
-          this.pageLoading = false
-          this.isLoding = false;
-        })
+            this.pageLoading = false;
+            this.isLoding = false;
+          })
+          .catch((err) => {
+            this.pageLoading = false;
+            this.isLoding = false;
+          });
       }
     },
     // 閲嶇疆
     refresh() {
-      if(this.radio === 0){
-        this.queryParams.name = ''
-        this.page.size = 10
-        this.page.current = 1
-        this.refreshTable()
+      if (this.radio === 0) {
+        this.queryParams.name = "";
+        this.page.size = 10;
+        this.page.current = 1;
+        this.refreshTable();
       } else {
         this.finishLoding = false;
-        this.currentPage= 1;
-        this.list=[];
-        this.refreshTable()
+        this.currentPage = 1;
+        this.list = [];
+        this.refreshTable();
       }
     },
     // 琛ㄦ牸澶氶��
-    handleSelectionChange (selection) {
+    handleSelectionChange(selection) {
       this.selection = selection;
     },
-    pagination (page) {
-      this.page.size = page.limit
-      this.refreshTable()
+    pagination(page) {
+      this.page.size = page.limit;
+      this.refreshTable();
     },
     // 璧勮川鏄庣粏鎵归噺鍒犻櫎
-    handleDel(){
-      if (this.selection.length===0) {
-        this.$message.warning('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�')
-        return
+    handleDel() {
+      if (this.selection.length === 0) {
+        this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        return;
       }
-      const delIds = []
-      this.selection.forEach(item => {
-        delIds.push(item.id)
-      })
-      delCertificationDetail(delIds).then(res => {
-        if (res.code !== 200) return
+      const delIds = [];
+      this.selection.forEach((item) => {
+        delIds.push(item.id);
+      });
+      delCertificationDetail(delIds).then((res) => {
+        if (res.code !== 200) return;
         this.refreshTable();
-        this.$message.success('鍒犻櫎鎴愬姛')
-      })
+        this.$message.success("鍒犻櫎鎴愬姛");
+      });
     },
     // 璧勮川鏄庣粏闄勪欢涓嬭浇
-    handleDownLoad(row){
+    handleDownLoad(row) {
       // let url = row.fileUrl;
       // const link = document.createElement('a');
       // link.href = this.javaApi + '/img/'+ url;
       // document.body.appendChild(link);
       // link.target = '_blank';
       // link.click();
-      const url = process.env.VUE_APP_BASE_API + '/img/'+ row.fileUrl
+      const url = process.env.VUE_APP_BASE_API + "/img/" + row.fileUrl;
       this.$download.saveAs(url, row.fileUrl);
     },
     openAdd() {
       this.qualificationsConnectVisible = true;
-      this.$nextTick(()=>{
-        this.$refs.upload.clearFiles()
-        this.$refs.upload1.clearFiles()
-      })
+      this.$nextTick(() => {
+        this.$refs.upload.clearFiles();
+        this.$refs.upload1.clearFiles();
+      });
       this.formData = {};
     },
-    handleSuccessUpImg(response,name) {
+    handleSuccessUpImg(response, name) {
       if (response.code === 200) {
         this.formData[name] = response.data.url;
       }
     },
     beforeUpload(file) {
       if (file.size > 1024 * 1024 * 10) {
-        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
-        this.$refs.upload.clearFiles()
+        this.$message.error("涓婁紶鏂囦欢涓嶈秴杩�10M");
+        this.$refs.upload.clearFiles();
         return false;
       } else {
         return true;
       }
     },
     onError(err, file, fileList) {
-      this.$message.error('涓婁紶澶辫触')
-      this.$refs.upload.clearFiles()
+      this.$message.error("涓婁紶澶辫触");
+      this.$refs.upload.clearFiles();
     },
     beforeUpload1(file) {
       if (file.size > 1024 * 1024 * 10) {
-        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
-        this.$refs.upload1.clearFiles()
+        this.$message.error("涓婁紶鏂囦欢涓嶈秴杩�10M");
+        this.$refs.upload1.clearFiles();
         return false;
       } else {
         return true;
       }
     },
     onError1(err, file, fileList) {
-      this.$message.error('涓婁紶澶辫触')
-      this.$refs.upload1.clearFiles()
+      this.$message.error("涓婁紶澶辫触");
+      this.$refs.upload1.clearFiles();
     },
-    confirmQualifications(){
-      this.$refs['formDataRef'].validate((valid) => {
+    confirmQualifications() {
+      this.$refs["formDataRef"].validate((valid) => {
         if (valid) {
           this.loading = true;
-          addCertificationDetail({...this.formData}).then(res => {
-            this.loading = false
-            if (res.code === 201) return
-            this.$message.success('宸叉彁浜�')
-            this.refreshTable()
-            this.resetForm("formDataRef");
-            this.qualificationsConnectVisible = false
-          }).catch(err => {
-            this.loading = false
-          })
+          addCertificationDetail({ ...this.formData })
+            .then((res) => {
+              this.loading = false;
+              if (res.code === 201) return;
+              this.$message.success("宸叉彁浜�");
+              this.refreshTable();
+              this.resetForm("formDataRef");
+              this.qualificationsConnectVisible = false;
+            })
+            .catch((err) => {
+              this.loading = false;
+            });
         }
-      })
+      });
     },
     // 婊氬姩瑙﹀簳鍔犺浇
     scrollFn() {
@@ -380,8 +553,14 @@
       let scrollHeight = document.body.scrollHeight; // 婊氬姩鏂囨。楂樺害
       let scrollTop = parseInt(document.documentElement.scrollTop); // 宸叉粴鍔ㄧ殑楂樺害
       let height = 300;
-      if (scrollTop + clientHeight >= scrollHeight - height && scrollHeight !== 0) {
-        if (!this.finishLoding&&this.currentPage*this.pageSize<this.total) {
+      if (
+        scrollTop + clientHeight >= scrollHeight - height &&
+        scrollHeight !== 0
+      ) {
+        if (
+          !this.finishLoding &&
+          this.currentPage * this.pageSize < this.total
+        ) {
           this.currentPage = this.currentPage + 1;
           this.refreshTable();
         }
@@ -407,7 +586,7 @@
   destroyed() {
     window.removeEventListener("scroll", this.throttle(), false);
   },
-}
+};
 </script>
 
 <style scoped>
@@ -416,10 +595,10 @@
   line-height: 40px;
   margin-bottom: 10px;
 }
-.table-item{
+.table-item {
   border-radius: 8px 8px 8px 8px;
-  box-shadow: 4px 4px 8px 0px rgba(51,51,51,0.04);
-  border: 1px solid #EEEEEE;
+  box-shadow: 4px 4px 8px 0px rgba(51, 51, 51, 0.04);
+  border: 1px solid #eeeeee;
   box-sizing: border-box;
   padding: 14px 12px;
   display: flex;

--
Gitblit v1.9.3