From 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 21 十月 2026 17:39:24 +0800
Subject: [PATCH] 青岛维护

---
 src/views/business/ethicalReview/index.vue |  209 +++++++++++++++++++++++-----------------------------
 1 files changed, 93 insertions(+), 116 deletions(-)

diff --git a/src/views/business/ethicalReview/index.vue b/src/views/business/ethicalReview/index.vue
index 6b6a66e..df8748a 100644
--- a/src/views/business/ethicalReview/index.vue
+++ b/src/views/business/ethicalReview/index.vue
@@ -86,12 +86,6 @@
             >淇敼</el-button
           > -->
           <el-button
-            type="warning"
-            icon="el-icon-download"
-            @click="handleExport"
-            >瀵煎嚭</el-button
-          >
-          <el-button
             type="info"
             icon="el-icon-check"
             :disabled="single"
@@ -121,12 +115,7 @@
           prop="inpatientno"
           width="120"
         />
-        <el-table-column
-          label="濮撳悕"
-          align="center"
-          prop="name"
-          width="100"
-        />
+        <el-table-column label="濮撳悕" align="center" prop="name" width="100" />
 
         <el-table-column label="鎬у埆" align="center" prop="sex" width="80">
           <template slot-scope="scope">
@@ -137,55 +126,35 @@
           </template>
         </el-table-column>
         <el-table-column label="骞撮緞" align="center" prop="age" width="80" />
-        <!--
 
-        <el-table-column
-          label="妗堜緥缂栧彿"
-          align="center"
-          prop="caseNo"
-          width="120"
-        />
-        <el-table-column
-          label="鎹愮尞鑰呯紪鍙�"
-          align="center"
-          prop="donorno"
-          width="120"
-        />
-        <el-table-column
-          label="琛�鍨�"
-          align="center"
-          prop="bloodtype"
-          width="80"
-        />
-        <el-table-column
-          label="璇佷欢鍙风爜"
-          align="center"
-          prop="idcardno"
-          width="180"
-        />
-
-        <el-table-column
-          label="鍖荤枟鏈烘瀯"
-          align="center"
-          prop="treatmenthospitalname"
-          min-width="150"
-          show-overflow-tooltip
-        />
-
-        <el-table-column
-          label="涓撳濮撳悕"
-          align="center"
-          prop="expertName"
-          width="100"
-        />
-        -->
+        <el-table-column label="琛�鍨�" align="center" prop="bloodtype" width="80">
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_BloodType"
+              :value="scope.row.bloodtype"
+            />
+          </template>
+        </el-table-column>
         <el-table-column
           label="鐤剧梾璇婃柇"
           align="center"
           prop="diagnosisname"
-          min-width="180"
+          width="200"
           show-overflow-tooltip
         />
+        <el-table-column
+          label="鎹愮尞绫诲瀷"
+          align="center"
+          prop="donationcategory"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <dict-tag
+              :options="dict.type.sys_DonationCategory"
+              :value="scope.row.donationcategory"
+            />
+          </template>
+        </el-table-column>
         <el-table-column
           label="瀹℃煡鐘舵��"
           align="center"
@@ -199,7 +168,7 @@
             />
           </template>
         </el-table-column>
-        <el-table-column
+        <!-- <el-table-column
           label="瀹℃煡缁撹"
           align="center"
           prop="expertConclusion"
@@ -211,7 +180,7 @@
               :value="scope.row.expertConclusion"
             />
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column
           label="瀹℃煡鎰忚"
           align="center"
@@ -236,7 +205,7 @@
         <el-table-column
           label="鎿嶄綔"
           align="center"
-          width="180"
+          width="220"
           fixed="right"
           class-name="small-padding fixed-width"
         >
@@ -245,23 +214,22 @@
               size="mini"
               type="text"
               icon="el-icon-view"
-              @click="handleView(scope.row)"
-              >璇︽儏</el-button
+              @click.stop="handleView(scope.row)"
+              >鏌ョ湅</el-button
             >
             <el-button
               size="mini"
               type="text"
               icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              >淇敼</el-button
+              @click.stop="handleUpdate(scope.row)"
+              >缂栬緫</el-button
             >
             <el-button
               size="mini"
               type="text"
-              icon="el-icon-check"
-              @click="handleEndReview(scope.row)"
-              :disabled="scope.row.status === '2'"
-              >缁撴潫</el-button
+              icon="el-icon-printer"
+              @click.stop="handleDownload(scope.row)"
+              >鎵撳嵃</el-button
             >
           </template>
         </el-table-column>
@@ -280,13 +248,25 @@
 </template>
 
 <script>
-import { reviewinitiateBaseInfoList, ethicalreviewedit,  } from "@/api/businessApi";
+import {
+  reviewinitiateBaseInfoList,
+  ethicalreviewedit,
+  ethicalReviewDownload
+} from "@/api/businessApi";
 import Pagination from "@/components/Pagination";
+import { getToken } from "@/utils/auth";
 
 export default {
   name: "EthicsReviewList",
   components: { Pagination },
-  dicts: ["sys_user_sex", "ReviewForm_status",'sys_ethical','expert_Conclusion'],
+  dicts: [
+    "sys_user_sex",
+    "ReviewForm_status",
+    "sys_ethical",
+    "expert_Conclusion",
+    "sys_BloodType",
+    "sys_DonationCategory"
+  ],
   data() {
     return {
       // 閬僵灞�
@@ -332,9 +312,14 @@
       delete params.reviewTimeRange;
 
       // 濡傛灉鏈夋椂闂磋寖鍥村弬鏁�
-      if (this.queryParams.reviewTimeRange && this.queryParams.reviewTimeRange.length === 2) {
-        params.expertTimeStart = this.queryParams.reviewTimeRange[0] + ' 00:00:00';
-        params.expertTimeEnd = this.queryParams.reviewTimeRange[1] + ' 23:59:59';
+      if (
+        this.queryParams.reviewTimeRange &&
+        this.queryParams.reviewTimeRange.length === 2
+      ) {
+        params.expertTimeStart =
+          this.queryParams.reviewTimeRange[0] + " 00:00:00";
+        params.expertTimeEnd =
+          this.queryParams.reviewTimeRange[1] + " 23:59:59";
       }
 
       reviewinitiateBaseInfoList(params)
@@ -374,7 +359,7 @@
     handleView(row) {
       this.$router.push({
         path: "/case/ethicalReviewInfo",
-        query: { infoid: row.infoid,id:row.id }
+        query: { infoid: row.infoid, id: row.id, mode: "view" }
       });
     },
     // 鏂板鎸夐挳鎿嶄綔
@@ -386,12 +371,13 @@
       const infoid = row.infoid;
       this.$router.push({
         path: "/case/ethicalReviewInfo",
-        query: { infoid: infoid,id:row.id }
+        query: { infoid: infoid, id: row.id, mode: "edit" }
       });
     },
     // 缁撴潫瀹℃煡鎿嶄綔
     handleEndReview(row) {
-      const selectedRow = row || (this.selectedRows.length === 1 ? this.selectedRows[0] : null);
+      const selectedRow =
+        row || (this.selectedRows.length === 1 ? this.selectedRows[0] : null);
       if (!selectedRow) {
         this.$message.warning("璇烽�夋嫨涓�鏉¤褰�");
         return;
@@ -406,7 +392,7 @@
           // 璋冪敤淇敼鎺ュ彛锛屽皢鐘舵�佹敼涓虹粨鏉燂紙status: '2'锛�
           const updateData = {
             infoid: selectedRow.infoid,
-            status: '2',
+            status: "2",
             // 鍙互淇濈暀鍘熸湁鏁版嵁
             expertName: selectedRow.expertName,
             expertConclusion: selectedRow.expertConclusion,
@@ -426,50 +412,41 @@
         })
         .catch(() => {});
     },
-    // 瀵煎嚭鎸夐挳鎿嶄綔
-    handleExport() {
-      const queryParams = { ...this.queryParams };
-      delete queryParams.pageNum;
-      delete queryParams.pageSize;
-
-      // 澶勭悊鏃堕棿鑼冨洿鍙傛暟
-      if (queryParams.reviewTimeRange && queryParams.reviewTimeRange.length === 2) {
-        queryParams.expertTimeStart = queryParams.reviewTimeRange[0] + ' 00:00:00';
-        queryParams.expertTimeEnd = queryParams.reviewTimeRange[1] + ' 23:59:59';
-      }
-      delete queryParams.reviewTimeRange;
-
-      this.$confirm("鏄惁纭瀵煎嚭鎵�鏈変鸡鐞嗗鏌ユ暟鎹紵", "璀﹀憡", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          this.loading = true;
-          // return ethicalreviewexport(queryParams);
-        })
-        .then(response => {
-          if (response.code === 200) {
-            this.$message.success("瀵煎嚭鎴愬姛");
-            // 澶勭悊瀵煎嚭鏂囦欢涓嬭浇
-            if (response.data) {
-              const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });
-              const downloadElement = document.createElement('a');
-              const href = window.URL.createObjectURL(blob);
-              downloadElement.href = href;
-              downloadElement.download = '浼︾悊瀹℃煡鍒楄〃.xlsx';
-              document.body.appendChild(downloadElement);
-              downloadElement.click();
-              document.body.removeChild(downloadElement);
-              window.URL.revokeObjectURL(href);
-            }
-          } else {
-            this.$message.error(response.msg || "瀵煎嚭澶辫触");
+    // 涓嬭浇浼︾悊瀹℃煡妗f
+    handleDownload(row) {
+      ethicalReviewDownload({ nitiateId: row.id })
+        .then(res => {
+          if (res.code !== 200 || !res.data || !res.data.downloadUrl) {
+            this.$message.error(res.msg || "涓嬭浇澶辫触");
+            return;
           }
-          this.loading = false;
+          const fileUrl = res.data;
+          // 鎷兼帴涓嬭浇鍦板潃锛歰rigin + /dev-api(寮�鍙戜唬鐞嗗墠缂�) + /profile + downloadUrl锛�
+          // 鍚庣闈欐�佹枃浠跺疄闄呮寕鍦� /profile 涓嬶紝downloadUrl 灏戜簡杩欏眰鍓嶇紑
+          const urlBase = process.env.VUE_APP_BASE_API;
+          const curWWWPath = window.document.location.href;
+          const pos = curWWWPath.indexOf(window.document.location.pathname);
+          const fullUrl =
+            curWWWPath.substring(0, pos) + urlBase + "/profile" + fileUrl.downloadUrl;
+
+          fetch(fullUrl, {
+            headers: { Authorization: "Bearer " + getToken() }
+          })
+            .then(response => response.blob())
+            .then(blob => {
+              const url = window.URL.createObjectURL(new Blob([blob]));
+              const link = document.createElement("a");
+              link.href = url;
+              link.setAttribute("download", fileUrl.downloadName);
+              document.body.appendChild(link);
+              link.click();
+              link.parentNode.removeChild(link);
+              window.URL.revokeObjectURL(url);
+            });
         })
-        .catch(() => {
-          this.loading = false;
+        .catch(error => {
+          console.error("涓嬭浇妗f澶辫触:", error);
+          this.$message.error("涓嬭浇澶辫触");
         });
     },
     // 鏃堕棿鏍煎紡鍖�

--
Gitblit v1.9.3