From d84ce4c19f67b22cbca8cb14bda37ec0cbb718fd Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 05 三月 2025 15:43:57 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev

---
 src/views/structural/capabilityAndLaboratory/capability/index.vue |  232 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 165 insertions(+), 67 deletions(-)

diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue
index 9916b1e..96083ab 100644
--- a/src/views/structural/capabilityAndLaboratory/capability/index.vue
+++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -3,7 +3,7 @@
     <div>
       <el-row class="title">
         <el-col :span="12" style="text-align: left">
-          <el-radio-group v-model="radio" size="medium" fill="#409EFF">
+          <el-radio-group v-model="radio" size="medium" fill="#409EFF" @change="refreshTable">
             <el-radio-button :label="0">妫�楠岄」鐩弬鏁�</el-radio-button>
             <el-radio-button :label="1">妫�楠屽璞�</el-radio-button>
           </el-radio-group>
@@ -13,7 +13,7 @@
                      style="display: inline;margin-right: 8px"
                      :action="uploadAction1"
                      :before-upload="beforeUpload1" :headers="token" :on-error="onError1"
-                     :on-success="handleSuccessUp" :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'>
+                     :on-success="handleSuccessUp1" :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'>
             <el-button size="small" type="primary">瀵煎叆</el-button>
           </el-upload>
           <el-button size="small" type="primary" v-if="radio === 1" @click="uploadDia = true">瀵煎叆</el-button>
@@ -33,9 +33,9 @@
                     v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()">
           </el-input>
         </el-form-item>
-        <el-form-item label="妫�楠屽璞�" prop="sample">
+        <el-form-item label="妫�楠屽璞�" prop="specimenName">
           <el-input size="small" placeholder="璇疯緭鍏�" clearable
-                    v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()">
+                    v-model="itemParameterForm.specimenName" @keyup.enter.native="refreshTable()">
           </el-input>
         </el-form-item>
         <el-form-item>
@@ -43,29 +43,31 @@
           <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button>
         </el-form-item>
       </el-form>
+<!--      妫�楠岄」鐩弬鏁拌〃鏍�-->
       <div class="table" v-if="radio===0">
-        <lims-table :tableData="tableData" :column="column"
+        <lims-table :tableData="tableData" :column="column" key="tableData"
+                    @pagination="pagination" :height="'calc(100vh - 290px)'"
                     :page="page" :tableLoading="tableLoading"></lims-table>
       </div>
+<!--      妫�楠屽璞¤〃鏍�-->
       <div class="table" v-if="radio===1">
-        <lims-table :tableData="testObjectTableData" :column="testObjectColumn"
+        <lims-table :tableData="testObjectTableData" :column="testObjectColumn" key="testObjectTableData"
+                    @pagination="pagination" :height="'calc(100vh - 290px)'"
                     :page="testObjectPage" :tableLoading="tableLoading"></lims-table>
       </div>
     </div>
     <!--浜у搧缁存姢寮规-->
-    <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="600px">
-      <div class="body" v-if="diaProduct" style="height: 350px;overflow-y: auto;padding: 5px 0;">
-        <lims-table :tableData="productData" :column="productColumn"
-                    :page="productPage" :tableLoading="productableLoading"></lims-table>
-      </div>
+    <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="900px">
+      <lims-table :tableData="productData" :column="productColumn" height="460"
+                  :page="productPage" :tableLoading="productableLoading"></lims-table>
       <span slot="footer" class="dialog-footer">
         <el-button @click="diaProduct = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="editProduct('add')" :loading="productLoad">鏂� 澧�</el-button>
       </span>
     </el-dialog>
     <!--浜у搧缁存姢缂栬緫-->
-    <el-dialog title="缂栬緫浜у搧缁存姢" :visible.sync="productEditDia" width="400px">
-      <el-form :model="productEditForm" ref="productEditForm" :rules="productRules">
+    <el-dialog title="鎿嶄綔浜у搧缁存姢" :visible.sync="productEditDia" width="400px">
+      <el-form :model="productEditForm" ref="productEditForm" :rules="productRules" label-position="right" label-width="100px">
         <el-form-item label="浜у搧鍚嶇О" prop="name">
           <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="productEditForm.name"></el-input>
         </el-form-item>
@@ -96,8 +98,8 @@
       </span>
     </el-dialog>
     <!--妫�楠岄」鐩弬鏁�-缂栬緫寮规-->
-    <EditForm ref="editForm" @refreshTable="refreshTable"></EditForm>
-    <testObjectEditForm ref="testObjectEditForm"></testObjectEditForm>
+    <EditForm ref="editForm" @refreshList="refreshList1"></EditForm>
+    <testObjectEditForm ref="testObjectEditForm" @refreshList="refreshList"></testObjectEditForm>
     <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog"
                     :currentRow="currentRow"
                     :type="type"
@@ -110,16 +112,18 @@
 </template>
 
 <script>
-import BindPartDialog from "@/components/capability/bindPartDialog.vue"
-import BindSupplierDensityDialog from "@/components/capability/bindSupplierDensityDialog.vue"
+import BindPartDialog from "@/views/structural/capabilityAndLaboratory/capabilityComponents/bindPartDialog.vue"
+import BindSupplierDensityDialog from "@/views/structural/capabilityAndLaboratory/capabilityComponents/bindSupplierDensityDialog.vue"
 import {
+  addProduct,
   delItemParameter, delProduct, delTestObject, selectItemParameterList, selectProductListByObjectId,
-  selectTestObjectList,
+  selectTestObjectList, upProduct,
 } from "@/api/structural/capability";
 import limsTable from "@/components/Table/lims-table.vue";
-import EditForm from "@/components/capability/EditForm.vue";
-import testObjectEditForm from "@/components/capability/testObjectEditForm.vue";
+import EditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue";
+import testObjectEditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue";
 import {getToken} from "@/utils/auth";
+import { obtainItemParameterList } from '@/api/structural/laboratoryScope'
 
 export default {
   components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog},
@@ -128,6 +132,7 @@
       uploadAction: process.env.VUE_APP_BASE_API + '/capacityScope/importExcel',
       uploadAction1: process.env.VUE_APP_BASE_API + '/capacityScope/importEquipData',
       tableData: [],
+      tableLoading: false,
       column: [
         {label: '妫�楠岄」', prop: 'inspectionItem'},
         {label: '妫�楠岄」EN', prop: 'inspectionItemEn'},
@@ -151,6 +156,7 @@
           dataType: 'action',
           fixed: 'right',
           label: '鎿嶄綔',
+          width: '140px',
           operation: [
             {
               name: '缂栬緫',
@@ -172,7 +178,7 @@
       page: {
         total:0,
         size:10,
-        current:0
+        current:1
       },
       testObjectTableData: [],
       testObjectColumn: [
@@ -182,17 +188,23 @@
           prop: 'laboratoryId',
           minWidth: '130',
           formatData: (params) => {
-            if (params == 1) {
-              return '瑁呭鐢电紗璇曢獙瀹�'
-            } else if (params == 5) {
-              return '閫氫俊浜у搧瀹為獙瀹�'
-            } else if (params == 6) {
-              return '鐢靛姏浜у搧瀹為獙瀹�'
-            } else if (params == 8) {
-              return '鍌ㄨ兘浜у搧瀹為獙瀹�'
-            } else {
-              return '灏勯绾跨紗瀹為獙瀹�'
+            let index = this.laboratoryList.findIndex(item => item.value == params)
+            if(index > -1) {
+              return this.laboratoryList[index].label
+            }else {
+              return null
             }
+            // if (params == 1) {
+            //   return '瑁呭鐢电紗璇曢獙瀹�'
+            // } else if (params == 5) {
+            //   return '閫氫俊浜у搧瀹為獙瀹�'
+            // } else if (params == 6) {
+            //   return '鐢靛姏浜у搧瀹為獙瀹�'
+            // } else if (params == 8) {
+            //   return '鍌ㄨ兘浜у搧瀹為獙瀹�'
+            // } else {
+            //   return '灏勯绾跨紗瀹為獙瀹�'
+            // }
           },
           formatType: (params) => {
             if (params == 1) {
@@ -204,7 +216,7 @@
             } else if (params == 8) {
               return 'danger'
             } else {
-              return ''
+              return null
             }
           }
         },
@@ -240,6 +252,7 @@
           dataType: 'action',
           fixed: 'right',
           label: '鎿嶄綔',
+          width: '240px',
           operation: [
             {
               name: '缂栬緫',
@@ -277,14 +290,13 @@
         size:10,
         current:0
       },
-      tableLoading: false,
       addOrUpdate: '',
       tree: null,
       loading: true,
       itemParameterForm: {
         inspectionItem: null,
         inspectionItemSubclass: null,
-        sample: null
+        specimenName: null
       },
       radio: 0,
       productLoad: false,
@@ -294,7 +306,6 @@
         {label: '浜у搧鍚嶇ОEN', prop: 'nameEn'},
         {
           dataType: 'action',
-          fixed: 'right',
           label: '鎿嶄綔',
           operation: [
             {
@@ -332,14 +343,19 @@
       productPage: {
         total:0,
         size:10,
-        current:0
+        current:0,
+        layout: 'total, prev, pager, next'
       },
       productableLoading: false,
       productEditDia: false,
+      operationType: '',
       productEditForm: {
+        objectId: '',
+        id: '',
         name: '',
         nameEn: ''
       },
+      objectId: '',
       productRules: {
         name: [{ required: true, message: '璇峰~鍐欎骇鍝佸悕绉�', trigger: 'blur' }],
         nameEn: [{ required: true, message: '璇峰~鍐欎骇鍝佸悕绉癊N', trigger: 'blur' }]
@@ -352,10 +368,12 @@
       currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭�
       bindSupplierDensityDialog: false,
       bindPartDialog: false,
-      type: null,  // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�
+      type: null,  // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�,
+      laboratoryList:[]
     }
   },
-  mounted() {
+  created() {
+    this.getItemParameterList()
     this.refreshTable()
   },
   computed: {
@@ -365,7 +383,7 @@
   },
   methods: {
     submitUpload() {
-      if (this.$refs.upload.uploadFiles.length == 0) {
+      if (this.$refs.upload.uploadFiles.length === 0) {
         this.$message.error('鏈�夋嫨鏂囦欢')
         return
       }
@@ -376,8 +394,8 @@
       this.$refs.upload.clearFiles()
       this.uploadDia = false
       this.uploading = false
-      if (response.code == 201) {
-        this.$message.error(response.message)
+      if (response.code !== 200) {
+        this.$message.error(response.msg)
         return
       }
       this.$message.success('涓婁紶鎴愬姛')
@@ -412,13 +430,19 @@
         return true;
       }
     },
-    handleSuccessUp (response, file, fileList) {
-      this.$refs.upload.clearFiles()
-      if (response.code == 201) {
-        this.$message.error(response.message)
+    handleSuccessUp1 (response, file, fileList) {
+      this.$refs.upload1.clearFiles()
+      if (response.code !== 200) {
+        this.$message.error(response.msg)
         return
       }
       this.$message.success('涓婁紶鎴愬姛')
+      this.refreshTable()
+    },
+    refreshList () {
+      this.refreshTable()
+    },
+    refreshList1 () {
       this.refreshTable()
     },
     refreshTable() {
@@ -447,6 +471,11 @@
     },
     refresh() {
       this.resetForm('itemParameterForm')
+      this.page.current = 1
+      this.refreshTable()
+    },
+    pagination (page) {
+      this.page.size = page.limit
       this.refreshTable()
     },
     // 妫�楠岄」鐩弬鏁版柊澧�
@@ -463,12 +492,23 @@
     },
     // 妫�楠岄」鐩弬鏁�-鍒犻櫎
     delete (row) {
-      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
-        return delItemParameter(row.id);
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+        delItemParameter({id:row.id}).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.refreshTable();
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      })
     },
     // 妫�楠屽璞�-鎵撳紑淇敼寮规
     editTestObjectForm (row) {
@@ -476,27 +516,37 @@
     },
     // 妫�楠岄」鐩弬鏁�-鍒犻櫎
     deleteTest (row) {
-      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
-        return delTestObject(row.id);
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+        delTestObject({id:row.id}).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.refreshTable();
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      })
     },
     // 浜у搧缁存姢
     upProduct(row) {
       this.diaProduct = true
+      this.objectId = row.id
       this.getProductList(row)
     },
-    getProductList (row) {
+    getProductList () {
       const params = {
-        objectId: 0,
-        partNo: row.partNo
+        objectId: this.objectId,
       }
       this.productableLoading = true
       selectProductListByObjectId({...params, ...this.productPage}).then(res => {
         this.productableLoading = false
-        if (res.code === 200) return
         this.productData = res.data.records
         this.productPage.total = res.data.total
       }).catch(err => {
@@ -506,30 +556,66 @@
     // 浜у搧缁存姢-鏂板-缂栬緫
     editProduct (type, row) {
       this.productEditDia = true
+      this.operationType = type
       if (type === 'edit') {
-        this.productEditForm = row
+        this.productEditForm = this.HaveJson(row)
       }
     },
     // 鎻愪氦浜у搧缁存姢淇敼
     submitProduct () {
       this.$refs['productEditForm'].validate((valid) => {
         if (valid) {
-
+          this.uploading = true
+          this.productEditForm.objectId = this.objectId
+          if (this.operationType === 'add') {
+            addProduct(this.productEditForm).then(res => {
+              this.uploading = false
+              if (res.code === 200) {
+                this.$message.success('鏂板鎴愬姛')
+                this.closeProduct()
+                this.getProductList();
+              }
+            }).catch(err => {
+              this.uploading = false
+            })
+          } else {
+            upProduct(this.productEditForm).then(res => {
+              this.uploading = false
+              if (res.code === 200) {
+                this.$message.success('鏂板鎴愬姛')
+                this.closeProduct()
+                this.getProductList();
+              }
+            }).catch(err => {
+              this.uploading = false
+            })
+          }
         }
       })
     },
     closeProduct() {
-      this.productEditDia = false
       this.resetForm('productEditForm')
+      this.productEditDia = false
     },
     // 浜у搧缁存姢-鍒犻櫎
     deleteProduct (row) {
-      this.$modal.confirm('鏄惁纭鍒犻櫎姝ゆ暟鎹」锛�').then(function() {
-        return delProduct(row.id);
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
       }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
+        delProduct({id:row.id}).then(res => {
+          if (res.code === 200) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.getProductList();
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      })
     },
     // 闆朵欢缁戝畾
     bindPartFirst (row) {
@@ -559,6 +645,18 @@
     closeBindSupplierDensityDialog () {
       this.bindSupplierDensityDialog = false
     },
+    getItemParameterList(){
+      obtainItemParameterList().then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.laboratoryName,
+            value: a.id
+          })
+        })
+        this.laboratoryList = data
+      })
+    }
   }
 }
 </script>

--
Gitblit v1.9.3