From 6e73ceceda303d1a73b2f53e0eb55a7f46abc8aa Mon Sep 17 00:00:00 2001
From: deslrey <deslre0381@gmail.com>
Date: 星期一, 12 一月 2026 14:13:31 +0800
Subject: [PATCH] 外购下单时,配置辅助线芯需要输入型号参数,更新检验项的区间设置

---
 src/views/business/inspectionTask/index.vue |  173 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 112 insertions(+), 61 deletions(-)

diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index ea4bfe9..c09abae 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -3,15 +3,34 @@
     <div style="height: 100%">
       <div class="search">
         <el-form :model="queryParams" ref="queryParams" size="small" :inline="true">
+          <el-form-item label="鎵瑰彿" prop="updateBatchNo" v-if="tabIndex !== 0">
+            <el-input v-model="queryParams.updateBatchNo" clearable placeholder="璇疯緭鍏�" size="small"
+              @keyup.enter.native="refreshTable()">
+            </el-input>
+          </el-form-item>
           <el-form-item label="濮旀墭缂栧彿" prop="entrustCode">
             <el-input v-model="queryParams.entrustCode" clearable placeholder="璇疯緭鍏�" size="small"
-                      @keyup.enter.native="refreshTable()"></el-input>
+              @keyup.enter.native="refreshTable()"></el-input>
           </el-form-item>
           <el-form-item label="妫�楠岀姸鎬�" prop="insState">
             <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()">
               <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label"
-                         :value="a.value"></el-option>
+                :value="a.value"></el-option>
             </el-select>
+          </el-form-item>
+
+          <el-form-item label="鐗╂枡灞炴��" prop="materialProp">
+            <el-select clearable size="small" v-model="queryParams.materialProp" style="width: 100%">
+              <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
+                :value="dict.value"">
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label=" 渚涘簲鍟嗗悕绉�" prop="supplierName" v-if="tabIndex === 2">
+                <el-input v-model="queryParams.supplierName" clearable placeholder="璇疯緭鍏�" size="small"
+                  @keyup.enter.native="goSearch">
+                </el-input>
           </el-form-item>
           <el-form-item>
             <el-button size="mini" type="primary" @click="refreshTable()">鏌ヨ</el-button>
@@ -19,7 +38,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <div class="center">
+      <div class="center" v-loading="tableLoading">
         <div class="center-options">
           <div style="display: flex; align-items: center">
             <span style="font-size: 14px">璇曢獙瀹ょ绫�:</span>
@@ -30,7 +49,7 @@
             </ul>
             <div>
               <el-checkbox v-model="alone" class="view-self-checkbox"
-                           @change="changeCheckBox"><span>鎴戠殑浠诲姟</span></el-checkbox>
+                @change="changeCheckBox"><span>鎴戠殑浠诲姟</span></el-checkbox>
             </div>
           </div>
           <div class="center-title">
@@ -38,52 +57,50 @@
             <span>{{ page.total }}</span>
           </div>
         </div>
-        <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
-          :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination"
-          key="tableData0">
+        <lims-table :tableData="tableData" :column="column" :page="page" :rowClassName="rowClassName"
+          :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0">
           <div slot="action" slot-scope="scope">
             <el-button size="small" type="text" @click="handleDataLook(scope.row)">鏁版嵁鏌ョ湅</el-button>
             <el-button type="text" size="small"
-                       :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
-                       @click="editInspection(scope.row)">淇敼妫�楠屽��</el-button>
+              :disabled="(scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5) && checkPermi(['update:product:onPlan'])"
+              @click="editInspection(scope.row)">淇敼妫�楠屽��</el-button>
             <el-button type="text" size="small" :disabled="(
-                  scope.row.userName == null ||
-                  scope.row.insState == 3 ||
-                  scope.row.insState == 5 ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName))
-                )"
-                       @click="handleInspection(scope.row)">妫�楠�</el-button>
+              scope.row.userName == null ||
+              scope.row.insState == 3 ||
+              scope.row.insState == 5 ||
+              (scope.row.userName && !scope.row.userName.includes(nickName))
+            )" @click="handleInspection(scope.row)">妫�楠�</el-button>
             <el-button type="text" size="small" :disabled="(
-                  scope.row.userName == null ||
-                  scope.row.insState == 5 ||
-                  scope.row.insState == 3 ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName))
-                )"
-                       @click="handleConnect(scope.row)">浜ゆ帴</el-button>
+              scope.row.userName == null ||
+              scope.row.insState == 5 ||
+              scope.row.insState == 3 ||
+              (scope.row.userName && !scope.row.userName.includes(nickName))
+            )" @click="handleConnect(scope.row)">浜ゆ帴</el-button>
             <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">鍘熷璁板綍</el-button>
-            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px">
+            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px"
+              :disabled="(scope.row.insState != 3 || scope.row.userName == null || (scope.row.userName && !scope.row.userName.includes(nickName)))">
               <template #reference>
-                <el-button link type="text" size="small">鏇村</el-button>
+                <el-button link type="text" size="small" :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
+                  (scope.row.userName && !scope.row.userName.includes(nickName)))">鏇村</el-button>
               </template>
               <div>
                 <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px" type="text" size="small" @click="download(scope.row)">涓嬭浇鎶ュ憡</el-button>
-                <el-upload ref='upload'
-                           :action="javaApi + '/insReport/inReport'"
-                           :before-upload="beforeUpload"
-                           :data="{id: scope.row.insReportId}"
-                           :headers="uploadHeader" :on-error="onError"
-                           :on-success="handleSuccessUp"
-                           :show-file-list="false"
-                           style="display: inline;margin: 0 6px"
-                           accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
+                  (scope.row.userName && !scope.row.userName.includes(nickName)))" style="margin-left: 10px"
+                  type="text" size="small" @click="download(scope.row)">涓嬭浇鎶ュ憡</el-button>
+                <el-upload ref='upload' :action="javaApi + '/insReport/inReport'" :before-upload="beforeUpload"
+                  :data="{ id: scope.row.insReportId }" :headers="uploadHeader" :on-error="onError"
+                  :on-success="handleSuccessUp" :show-file-list="false" style="display: inline;margin: 0 6px"
+                  accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'>
                   <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small" type="text">涓婁紶</el-button>
+                    (scope.row.userName && !scope.row.userName.includes(nickName)))" size="small"
+                    type="text">涓婁紶</el-button>
                 </el-upload>
                 <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleRestore(scope.row)">杩樺師</el-button>
+                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
+                  @click="handleRestore(scope.row)">杩樺師</el-button>
                 <el-button :disabled="(scope.row.insState != 3 || scope.row.userName == null ||
-                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small" @click="handleIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button>
+                  (scope.row.userName && !scope.row.userName.includes(nickName)))" type="text" size="small"
+                  @click="handleIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button>
               </div>
             </el-popover>
           </div>
@@ -140,7 +157,7 @@
           </el-form>
         </div>
         <lims-table :tableData="lookTableData" :column="lookColumn" :page="lookPage" :tableLoading="lookTableLoading"
-          :height="'60vh'" @pagination="lookPagination" key="tableData1"></lims-table>
+          :height="'60vh'" @pagination="lookPagination" key="tableData1" :key="upIndex"></lims-table>
       </div>
     </el-dialog>
     <el-dialog :visible.sync="bindDialogVisible" title="妫�楠岄」缁戝畾" width="600px">
@@ -155,7 +172,7 @@
         </el-button>
       </div>
       <el-table :data="bindTableData" style="width: 100%" height="70vh" v-loading="bindTableDataLoading"
-                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
+        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border>
         <el-table-column prop="inspectionItemClass" label="妫�楠岄」鍒嗙被" width="150">
         </el-table-column>
         <el-table-column prop="inspectionItem" label="妫�楠岄」" width="150">
@@ -171,7 +188,7 @@
     </el-dialog>
     <el-dialog :visible.sync="bindAddDialogVisible" title="閫夋嫨缁戝畾" width="600px">
       <el-table :data="bindAddTableData" style="width: 100%" height="60vh"
-                :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
+        :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border
         @selection-change="handleBindAddSelectionChange">
         <el-table-column type="selection" width="55"> </el-table-column>
         <el-table-column prop="inspectionItemClass" label="妫�楠岄」鍒嗙被" width="150">
@@ -197,13 +214,14 @@
     <!--鏌ョ湅宸ユ椂寮规-->
     <viewManHourDia ref="viewManHourDia"></viewManHourDia>
     <!--涓嶅悎鏍煎娴嬫煡鐪嬪脊妗�-->
-    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible" @closeRetestLook="closeRetestLook"></un-pass-retest-result>
+    <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible"
+      @closeRetestLook="closeRetestLook"></un-pass-retest-result>
     <!--鎶ュ憡鏌ョ湅-->
     <el-dialog title="鎶ュ憡鏌ョ湅" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false"
-               :fullscreen="fullscreen">
+      :fullscreen="fullscreen">
       <div class="full-screen">
         <i class="el-icon-full-screen" style="cursor: pointer;font-size: 18px" @click="fullscreen = true;"
-           v-if="!fullscreen"></i>
+          v-if="!fullscreen"></i>
         <img src="@/assets/images/no-full.svg" alt="" v-else style="cursor: pointer;" @click="fullscreen = false;">
       </div>
       <div style="height: 80vh;" v-if="issuedVisible">
@@ -212,7 +230,7 @@
     </el-dialog>
     <el-dialog title="鏌ョ湅闄勪欢" :visible.sync="lookDialogVisible" width="800px" top="5vh" fullscreen>
       <filePreview v-if="lookDialogVisible" :fileUrl="javaApi + '/word/' + currentInfo.tempUrlPdf" :currentFile="{}"
-                   style="max-height: 90vh;overflow-y: auto;" />
+        style="max-height: 90vh;overflow-y: auto;" />
     </el-dialog>
   </div>
 </template>
@@ -237,10 +255,11 @@
   selectSampleAndProductByOrderId,
 } from "@/api/business/inspectionTask.js";
 import { mapGetters } from "vuex";
-import {getRetestResult} from "@/api/business/rawMaterialOrder";
-import {upReportUrl} from "@/api/business/insReport";
+import { getRetestResult } from "@/api/business/rawMaterialOrder";
+import { upReportUrl } from "@/api/business/insReport";
 import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue";
 import filePreview from "@/components/Preview/filePreview.vue";
+import tab from "../../../plugins/tab";
 export default {
   name: 'InspectionTask',
   components: {
@@ -250,7 +269,7 @@
     viewManHourDia,
     UnPassRetestResult
   },
-  dicts: ["urgency_level", "inspection_task_state"],
+  dicts: ["urgency_level", "inspection_task_state", 'material_prop_type'],
   computed: {
     ...mapGetters(["nickName", "userId"]),
   },
@@ -277,8 +296,9 @@
       },
       claimVisible: false,
       tabList: [
-        { label: "濮旀墭", value: 0 },
+        { label: "濮旀墭", value: -1 },
         { label: "鍘熸潗鏂�", value: 1 },
+        { label: "澶栬喘", value: 0 },
       ],
       active: 1,
       tabIndex: 0,
@@ -286,7 +306,7 @@
       planTotal: 0,
       insStateList: [],
       state: 0, // 0:鍙拌处椤碉紝1锛氭楠岄〉闈�,2妫�楠岄〉闈�(澶嶆牳)锛岄粯璁や负0,3鏁版嵁鏌ョ湅
-      typeSource: null, // 0:鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟
+      typeSource: -1, // 0:澶栬喘鎴愬搧涓嬪崟锛�1锛氬師鏉愭枡涓嬪崟
       sonLaboratory: null, // 0:濮旀墭锛�1锛氬師鏉愭枡
       activeFace: 0, // 1锛氫笅鍗曪紝2锛氭煡鐪嬶紝3锛氬鏍革紝榛樿涓�0
       currentId: null,
@@ -343,6 +363,11 @@
       tableData: [],
       column: [
         {
+          label: "鎵瑰彿",
+          prop: "updateBatchNo",
+          width: "120px",
+        },
+        {
           label: "濮旀墭缂栧彿",
           prop: "entrustCode",
           width: "160px",
@@ -351,18 +376,36 @@
         },
         { label: "鏍峰搧鍚嶇О", prop: "sample", width: "160px" },
         {
+          label: '鐗╂枡灞炴��',
+          prop: 'materialProp',
+          formatData: (params) => {
+            if (!params) return null
+
+            for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
+              const item = this.dict.type.material_prop_type[i]
+              if (item.value == params) {
+                return item.label
+              }
+            }
+            return null
+          }
+        },
+        {
           label: "涓嬪崟绫诲埆",
           prop: "typeSource",
           width: "100px",
           dataType: "tag",
           formatData: (params) => {
             if (params == 0) {
-              return "鎴愬搧涓嬪崟";
-            } else {
+              return "澶栬喘涓嬪崟";
+            } else if (params == 1) {
               return "鍘熸潗鏂欎笅鍗�";
+            } else {
+              return "濮旀墭涓嬪崟";
             }
           },
         },
+        { label: "闆朵欢鎻忚堪", prop: "partDesc", width: "150px" },
         { label: "鏍峰搧鍨嬪彿", prop: "sampleModel", width: "120px" },
         {
           label: "绱ф�ョ▼搴�",
@@ -511,7 +554,7 @@
                 this.getRetestResultInfo(row);
               },
               disabled: (row) => {
-                return row.insResult!=0
+                return row.insResult != 0
               },
             },
             {
@@ -539,11 +582,14 @@
       lookTableLoading: false,
       // 鏁版嵁鏌ョ湅鐩稿叧瀛楁---缁撴潫
       retestVisible: false,
+      upIndex: 0,
+      tabLabel: ''
     };
   },
   mounted() {
     this.getAuthorizedPerson();
     this.queryParams.userId = this.userId;
+    this.queryParams.typeSource = this.typeSource
     this.currentTime = getYearAndMonthAndDays();
     this.getDicts("urgency_level").then((response) => {
       this.urgencyLevel = this.dictToValue(response.data);
@@ -555,7 +601,6 @@
   },
   activated() {
     this.getAuthorizedPerson();
-    this.queryParams.userId = this.userId;
     this.currentTime = getYearAndMonthAndDays();
     this.getDicts("urgency_level").then((response) => {
       this.urgencyLevel = this.dictToValue(response.data);
@@ -563,6 +608,7 @@
     this.getDicts("inspection_task_state").then((response) => {
       this.inspectionTaskState = this.dictToValue(response.data);
     });
+    this.queryParams.typeSource = this.typeSource
     this.refreshTable();
   },
   methods: {
@@ -597,6 +643,7 @@
           if (res.code === 200) {
             this.lookTableData = res.data.records;
             this.lookPage.total = res.data.total;
+            this.upIndex++
             this.dataDialogVisible = true;
           }
         })
@@ -634,12 +681,13 @@
     },
     refreshTable(e) {
       this.page.current = 1;
-      this.queryParams.typeSource = this.tabIndex;
+      this.queryParams.tabLabel = this.tabLabel;
+      this.queryParams.typeSource = this.typeSource;
       this.getList();
     },
     // 涓嬭浇鎶ュ憡
     download(row) {
-      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+      let url = (row.urlS === null || row.urlS === '') ? row.url : row.urlS
       const link = document.createElement('a');
       link.href = this.javaApi + url;
       link.target = '_blank';
@@ -673,7 +721,7 @@
         fileName = row.tempUrlPdf
         fileType = "pdf"
       }
-      fileName = fileName.replace('/word/','')
+      fileName = fileName.replace('/word/', '')
       const userName = this.nickName
       this.option = {
         url: this.javaApi + "/word/" + fileName,
@@ -721,6 +769,7 @@
     },
     handleTab(m, i) {
       this.tabIndex = i;
+      this.typeSource = m.value;
       this.queryParams.sonLaboratory = "";
       this.refreshTable();
     },
@@ -735,7 +784,7 @@
         case 0:
           // 鍘熸潗鏂�
           this.$router.push({
-            path: "/materialOrder/customsInspection", query: {
+            path: "/materialOrder/customsInspectionView", query: {
               customsInspection: row,
               active: this.activeFace,
               currentId: this.currentId,
@@ -756,7 +805,7 @@
         case 1:
           // 閾滄潗
           this.$router.push({
-            path: "/materialOrder/copperOrder", query: {
+            path: "/materialOrder/CopperView", query: {
               active: this.activeFace,
               currentId: this.currentId
             }
@@ -792,6 +841,7 @@
           state: this.state,
           typeSource: this.typeSource,
           orderId: this.orderId,
+          isSplit: row.isSplitOrder
         },
       });
     },
@@ -887,13 +937,13 @@
       });
     },
     // 鏌ョ湅涓嶅悎鏍煎娴嬬粨鏋�
-    getRetestResultInfo (row) {
-      getRetestResult({insProductId: row.insProductId}).then(res => {
+    getRetestResultInfo(row) {
+      getRetestResult({ insProductId: row.insProductId }).then(res => {
         this.retestVisible = true
         this.retestInfo = res.data
       })
     },
-    closeRetestLook () {
+    closeRetestLook() {
       this.retestVisible = false
     },
     // 缁戝畾妫�楠岄」缁戝畾
@@ -962,7 +1012,7 @@
         });
       });
     },
-    beforeUpload (file) {
+    beforeUpload(file) {
       if (file.size > 1024 * 1024 * 10) {
         this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
         this.$refs.upload.clearFiles()
@@ -1033,6 +1083,7 @@
   border-color: #3a7bfa;
   color: #3a7bfa;
 }
+
 .center-options {
   display: flex;
   align-items: center;

--
Gitblit v1.9.3