From cf4d0c947dbe409871910b92d26ba7513e2b4f4e Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期三, 19 三月 2025 13:56:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/components/Table/lims-table.vue         |   31 +------
 src/views/index.vue                         |    1 
 src/components/index/scroll-paging.vue      |    1 
 src/views/business/inspectionTask/index.vue |  193 ++++++++++++++++++++++++++++++-----------------
 4 files changed, 129 insertions(+), 97 deletions(-)

diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index e61c19d..3accd8a 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -12,7 +12,8 @@
       <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey"
         :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
         :filters="item.filters" :fixed="item.fixed" :label="item.label" :prop="item.prop"
-        :show-overflow-tooltip="true"
+                       :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true"
+                       :min-width="item.dataType == 'action' ? btnWidth : getTitleWidth(item)"
         :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType == 'action' ? btnWidth : getTitleWidth(item)" align="center">
         <!-- <div class="123" v-if="item.type == ''"> -->
         <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope">
@@ -307,11 +308,13 @@
     getTitleWidth(row) {
       if (row.label.includes('鏃堕棿') || row.label.includes('缂栧彿') || row.label.includes('鏍峰搧鍚嶇О') || row.label.includes('闆朵欢')) {
         return 160
+      } else if (row.label.includes('鎿嶄綔')) {
+        return row.width
       } else {
         const span = document.createElement('span');
         span.innerText = row.label;
         document.body.appendChild(span);
-        const width = `${span.offsetWidth + 30}px`;
+        const width = `${span.offsetWidth + 50}px`;
         document.body.removeChild(span);
 
         return width;
@@ -464,28 +467,6 @@
           };
         }
       }
-      // // 鐗规畩鐨勫悎骞惰
-      // if (
-      //   this.data.spanConfig != undefined &&
-      //   this.data.spanConfig.special &&
-      //   this.data.spanConfig.special.main &&
-      //   this.data.spanConfig.special.rows &&
-      //   this.data.spanConfig.special.rows.length > 0
-      // ) {
-      //   let i = null;
-      //   let obj = this.data.spanConfig.special.rows.find((item, index) => {
-      //     i = index;
-      //     return item.index == columnIndex;
-      //   });
-      //   if (obj) {
-      //     const _row = this.specialSpanList[i].arr[rowIndex];
-      //     const _col = _row > 0 ? 1 : 0;
-      //     return {
-      //       rowspan: _row,
-      //       colspan: _col,
-      //     };
-      //   }
-      // }
     },
   },
 };
@@ -501,7 +482,7 @@
   cursor: pointer;
 }
 >>>.cell {
-  padding: 0px !important;
+  padding: 0 !important;
 }
 .cell {
   white-space: nowrap;
diff --git a/src/components/index/scroll-paging.vue b/src/components/index/scroll-paging.vue
index 143d08a..16b4de3 100644
--- a/src/components/index/scroll-paging.vue
+++ b/src/components/index/scroll-paging.vue
@@ -34,7 +34,6 @@
       deep:true,
       handler(){
         this.isLoding = false
-        console.log(this.isLoding)
       }
     }
   },
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index b4cd338..b635be5 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -50,7 +50,50 @@
         </div>
         <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
           :rowClassName="rowClassName" :height="'calc(100vh - 300px)'" @pagination="pagination"
-          key="tableData0"></lims-table>
+          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>
+            <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>
+            <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>
+            <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">鍘熷璁板綍</el-button>
+            <el-popover placement="bottom" trigger="hover" style="margin-left: 6px">
+              <template #reference>
+                <el-button link type="text" size="small">鏇村</el-button>
+              </template>
+              <div>
+                <el-button :disabled="scope.row.insState != 3" 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" size="small" type="text">涓婁紶</el-button>
+                </el-upload>
+                <el-button :disabled="scope.row.insState != 3" type="text" size="small" @click="handleRestore(scope.row)">杩樺師</el-button>
+                <el-button :disabled="scope.row.insState != 3" type="text" size="small" @click="handleIssued(scope.row)">鏌ョ湅鎶ュ憡</el-button>
+              </div>
+            </el-popover>
+          </div>
+        </lims-table>
       </div>
     </div>
     <el-dialog :visible.sync="claimVisible" title="鎻愮ず" width="400px">
@@ -184,6 +227,7 @@
 } from "@/api/business/inspectionTask.js";
 import { mapGetters } from "vuex";
 import {getRetestResult} from "@/api/business/rawMaterialOrder";
+import {upReportUrl} from "@/api/business/insReport";
 export default {
   name: 'InspectionTask',
   components: {
@@ -363,76 +407,12 @@
         { label: "妫�楠屽紑濮嬫椂闂�", prop: "insTime", width: "140px" },
         { label: "鐞嗙敱", prop: "verifyTell", width: "140px" },
         {
-          dataType: "action",
           fixed: "right",
-          label: "鎿嶄綔",
-          operation: [
-            {
-              name: "鏁版嵁鏌ョ湅",
-              type: "text",
-              clickFun: (row) => {
-                this.handleDataLook(row);
-              },
-            },
-            {
-              name: "淇敼妫�楠屽��",
-              type: "text",
-              clickFun: (row) => {
-                this.editInspection(row);
-              },
-              disabled: (row) => {
-                return (row.userName == null || row.insState == 3 || row.insState == 5) && this.checkPermi(['update:product:onPlan'])
-              },
-            },
-            // {
-            //   name: "鏌ョ湅宸ユ椂",
-            //   type: "text",
-            //   clickFun: (row) => {
-            //     this.viewManHour(row);
-            //   },
-            //   showHide: (row) => {
-            //     return this.checkPermi(['get:working:hours:byOrder'])
-            //   },
-            // },
-            {
-              name: "妫�楠�",
-              type: "text",
-              clickFun: (row) => {
-                this.handleInspection(row);
-              },
-              disabled: (row) => {
-                return (
-                  row.userName == null ||
-                  row.insState == 3 ||
-                  row.insState == 5 ||
-                  (row.userName && !row.userName.includes(this.nickName))
-                );
-              },
-            },
-            {
-              name: "浜ゆ帴",
-              type: "text",
-              clickFun: (row) => {
-                this.handleConnect(row);
-              },
-              disabled: (row) => {
-                return (
-                  row.userName == null ||
-                  row.insState == 5 ||
-                  row.insState == 3 ||
-                  (row.userName && !row.userName.includes(this.nickName))
-                );
-              },
-            },
-            {
-              name: "鍘熷璁板綍",
-              type: "text",
-              clickFun: (row) => {
-                this.viewInspectInfo(row);
-              },
-            },
-          ],
-        },
+          dataType: "slot",
+          slot: "action",
+          width: '340px',
+          label: "鎿嶄綔"
+        }
       ],
       page: {
         total: 0,
@@ -638,6 +618,56 @@
       this.page.current = 1;
       this.queryParams.typeSource = this.tabIndex;
       this.getList();
+    },
+    // 涓嬭浇鎶ュ憡
+    download(row) {
+      let url = (row.urlS===null||row.urlS==='')?row.url:row.urlS
+      const link = document.createElement('a');
+      link.href = this.javaApi + url;
+      link.target = '_blank';
+      document.body.appendChild(link);
+      link.click();
+    },
+    // 杩樺師鎿嶄綔
+    handleRestore(row) {
+      this.$confirm('鏄惁杩樺師褰撳墠鎶ュ憡?', "璀﹀憡", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning"
+      }).then(() => {
+        upReportUrl({ id: row.insReportId }).then(res => {
+          if (res.code === 200) {
+            this.$message.success('杩樺師鎴愬姛')
+            this.refreshTable()
+          }
+        })
+      }).catch(() => { })
+
+    },
+    // 鏌ョ湅鎶ュ憡
+    handleIssued(row) {
+      // todo: 鏌ョ湅鎶ュ憡缁勪欢
+      this.currentInfo = row;
+      let fileName = row.url
+      let fileType = "docx"
+      if (row.tempUrlPdf != null || row.tempUrlPdf === '') {
+        fileName = row.tempUrlPdf
+        fileType = "pdf"
+      }
+      fileName = fileName.replace('/word/','')
+      const userName = this.nickName
+      this.option = {
+        url: this.javaApi + "/word/" + fileName,
+        isEdit: false,
+        fileType: fileType,
+        title: fileName,
+        lang: 'zh-CN',
+        isPrint: false,
+        user_id: 1,
+        user_name: userName,
+        editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + fileName
+      }
+      this.issuedVisible = true;
     },
     // 鏌ョ湅浜т笟閾句俊鎭�
     openInfoDialog(row) {
@@ -913,6 +943,29 @@
         });
       });
     },
+    beforeUpload (file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        return false;
+      } else {
+        return true;
+      }
+    },
+    onError(error, file, fileList, index) {
+      this.$message.error('鏂囦欢涓婁紶澶辫触锛岃閲嶈瘯');
+    },
+    onExceed() {
+      this.$message.warning("瓒呭嚭鏂囦欢涓暟");
+    },
+    handleSuccessUp(response) {
+      if (response.code == 200) {
+        this.$refs.upload.clearFiles()
+        this.$message.success("涓婁紶鎴愬姛");
+      } else {
+        this.$message.error(response.message);
+      }
+    },
   },
 };
 </script>
diff --git a/src/views/index.vue b/src/views/index.vue
index 26471bc..858773c 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -353,7 +353,6 @@
         month: month,
       }
       currentUserWorkHourCount(params).then(res => {
-        console.log(res)
         this.totalHour = res.data.totalHour
         this.materialPieSeries[0].data[0].value = res.data.subsidiaryHour
         this.materialPieSeries[0].data[1].value = res.data.yieldHour

--
Gitblit v1.9.3