From a6cdc43d699044409e06c78583a2337ccaa3b96e Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 04 十一月 2026 14:41:27 +0800
Subject: [PATCH] 器官回款机构搜索

---
 src/views/project/fund/applyDetail0/index.vue |  149 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 98 insertions(+), 51 deletions(-)

diff --git a/src/views/project/fund/applyDetail0/index.vue b/src/views/project/fund/applyDetail0/index.vue
index b061aed..f770dec 100644
--- a/src/views/project/fund/applyDetail0/index.vue
+++ b/src/views/project/fund/applyDetail0/index.vue
@@ -12,7 +12,7 @@
                 style="width: 100%"
                 v-model="form.createTime"
                 type="date" format="yyyy-MM-dd"
-                value-format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd HH:mm:ss"
                 placeholder="鐢宠鏃ユ湡"
               >
               </el-date-picker>
@@ -1034,8 +1034,21 @@
       :close-on-click-modal="false"
       :title="pdftitle"
       :visible.sync="pdfVisible"
+      :fullscreen="pdfFullscreen"
       width="60%"
+      custom-class="pdf-resize-dialog"
+      @closed="pdfFullscreen = false"
     >
+      <template slot="title">
+        <span>{{ pdftitle }}</span>
+        <el-button
+          class="pdf-fullscreen-btn"
+          size="mini"
+          :icon="pdfFullscreen ? 'el-icon-close' : 'el-icon-full-screen'"
+          @click="pdfFullscreen = !pdfFullscreen"
+          >{{ pdfFullscreen ? "杩樺師" : "鍏ㄥ睆" }}</el-button
+        >
+      </template>
       <div class="pdfimg">
         <div class="box-pdf">
           <div>
@@ -1125,16 +1138,7 @@
           </div> -->
         </div>
 
-        <div v-if="this.previewpdf" class="pdfimgmin">
-          <!-- <img :src="pdfimg" /> -->
-          <el-image
-            style="width: 95%; height: 90%"
-            :src="pdfimg"
-            :preview-src-list="pdfimgsrcList"
-          >
-          </el-image>
-        </div>
-        <div v-else class="pdfimgmins">{{ hintitle }}</div>
+        <attachment-preview-pane :file="embeddedFile" style="flex: 1; min-width: 0;" />
       </div>
     </el-dialog>
     <el-dialog title="鎻愮ず" :visible.sync="Savereminder" width="30%">
@@ -1228,6 +1232,7 @@
 import OrgSelecter from "@/views/project/components/orgselect";
 import { getToken } from "@/utils/auth";
 import { moneySum, moneyAdd, moneySub, moneyMul, moneyRound } from "@/utils/money";
+import { checkFileName, checkDetails } from "@/utils/fileNameCheck";
 
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
@@ -1551,15 +1556,8 @@
     },
     // 鑾峰彇璇锋眰澶�
     Getnetworkheader() {
-      let string = window.location.href;
-      if (string.includes("9091")) {
-        const index = string.indexOf("9091");
-        this.Networkheader = string.slice(0, index + 4); // 鎴彇9091鍙婂叾鍓嶉儴瀛楃
-        // console.log(this.Networkheader);
-      } else {
-        const index = string.indexOf("8032");
-        this.Networkheader = string.slice(0, index + 4); // 鎴彇8032鍙婂叾鍓嶉儴瀛楃
-      }
+      // 浠ュ綋鍓嶉〉闈� origin 涓哄噯锛屽吋瀹� 80/8032/9091 鍙婂悗缁鍙h皟鏁�
+      this.Networkheader = window.location.origin;
     },
     /** 閫氳繃鍙傛暟鑾峰彇涓氬姟绫诲瀷 */
     getroute() {
@@ -1845,6 +1843,11 @@
     },
     /** 鎻愪氦鎸夐挳 */
     submitForm: debounce(function() {
+      // 2026-10-15锛氫繚瀛樺墠闄勪欢鏂囦欢鍚嶈鑼冩牎楠岋紙浠呮柊澧炲崟鎹紱鑰佸崟鎹殑鍘嗗彶闄勪欢鐢卞悗绔寜"鍙牎楠屾湰娆″彉鏇�"鏀捐锛�
+      if (!this.checkDetailFileNames()) {
+        return;
+      }
+
       if (!this.randomnumber) {
         this.randomnumber = this.generateRandomString(9);
         this.form.randomnumber = this.randomnumber;
@@ -2523,6 +2526,11 @@
     },
     // 鎺ュ彈鎻愰啋绔嬪埢淇濆瓨
     Savenow() {
+      // 2026-10-15锛氫繚瀛樺墠闄勪欢鏂囦欢鍚嶈鑼冩牎楠岋紙浠呮柊澧炲崟鎹紱鑰佸崟鎹殑鍘嗗彶闄勪欢鐢卞悗绔寜"鍙牎楠屾湰娆″彉鏇�"鏀捐锛�
+      if (!this.checkDetailFileNames()) {
+        return;
+      }
+
       if (!this.randomnumber) {
         this.randomnumber = this.generateRandomString(9);
         this.form.randomnumber = this.randomnumber;
@@ -2998,7 +3006,43 @@
     //     console.log(response.msg);
     //   }
     // },
+    /**
+     * 2026-10-15锛氫笂浼犳椂鏍¢獙闄勪欢鏂囦欢鍚嶏紙涓氬姟瑕佹眰锛氫笉鍚堟牸绔嬪嵆鎻愮ず涓斾笉鍔犲叆鍒楄〃锛夈��
+     * 瑙勫垯涓庡悗绔� AttachmentNameValidator 鍚屽彛寰勶細涓嶅己鍒跺惈涓枃 / 鍘绘帀鎵╁睍鍚嶅悗涓诲共 鈮�20 瀛� /
+     * 涓嶅惈绌烘牸鍙� / \ : * ? " < > | # % 绛夌壒娈婂瓧绗︺��
+     */
+    checkUploadFileName(file) {
+      const raw = file && file.raw ? file.raw.name : file && file.name;
+      const r = checkFileName(raw);
+      if (!r.ok) {
+        this.$modal.msgError(r.msg);
+        return false;
+      }
+      return true;
+    },
+
+    /**
+     * 2026-10-15锛氫繚瀛樺墠鏍¢獙鏁村崟鏄庣粏闄勪欢鏂囦欢鍚嶏紙鍚悓涓�琛屽唴閲嶅悕锛夈��
+     * 鍙e緞锛堜笟鍔$‘璁わ級锛氬彧鏍¢獙"鏈鍙樻洿"鐨勯檮浠垛�斺�旇�佸崟鎹噷宸插瓨鍦ㄧ殑涓嶅悎瑙勯檮浠跺悕涓嶈兘鎶婁繚瀛樺崱姝�
+     * 锛堝惁鍒欒�佸崟鎹敼涓�涓噾棰濋兘瀛樹笉杩涘幓锛夈�傚悗绔寜 id 璇绘棫璁板綍鏀捐鍘嗗彶闄勪欢锛涘墠绔嬁涓嶅埌"鍝簺鏄巻鍙�"
+     * 鐨勬潈濞佷俊鎭紝鍥犳**浠呮柊澧炲崟鎹�**鍋氫繚瀛樺墠鎷︽埅锛岀紪杈戣�佸崟鎹椂鏂板鐨勪笉鍚堣闄勪欢鐢卞悗绔簩娆℃牎楠屾嫤涓嬨��
+     */
+    checkDetailFileNames() {
+      if (this.form && this.form.id) {
+        return true;
+      }
+      const c = checkDetails(this.rbDetails);
+      if (!c.ok) {
+        this.$modal.msgError(c.msg);
+        return false;
+      }
+      return true;
+    },
+
     uploadSccess(response, file, fileList) {
+      if (!this.checkUploadFileName(file)) {
+        return;
+      }
       this.rbDetails;
 
       //鑾峰彇绁ㄦ嵁淇℃伅浣嶇疆
@@ -3009,9 +3053,15 @@
         this.fileListto.push({ name: file.name, url: response.fileName });
         // this.fileListto.push({ name: file.name, url: response.url });
         this.pdfimgsrcList.push(
-          this.Networkheader + "/prod-api" + response.fileName
+          this.Networkheader + process.env.VUE_APP_BASE_API + response.fileName
         );
-        this.pdfimg = this.Networkheader + "/prod-api" + response.fileName;
+        this.pdfimg = this.Networkheader + process.env.VUE_APP_BASE_API + response.fileName;
+        const localUrl = URL.createObjectURL(file.raw);
+        this.embeddedFile = {
+          name: file.name,
+          url: localUrl,
+          type: /\.pdf$/i.test(file.name) ? "pdf" : "image"
+        };
 
         this.rbDetails[this.atpresent].annexfilesList = this.fileListto;
       } else {
@@ -3026,11 +3076,11 @@
       if (this.rbDetails[index].annexfilesList) {
         this.previewpdf = true;
         this.fileListto = this.rbDetails[index].annexfilesList;
-        this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url;
+        this.pdfimg = this.Networkheader + process.env.VUE_APP_BASE_API + this.fileListto[0].url;
         // this.pdfimg = this.fileListto[0].url;
         this.pdfimgsrcList = [];
         this.fileListto.forEach(item => {
-          this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url);
+          this.pdfimgsrcList.push(this.Networkheader + process.env.VUE_APP_BASE_API + item.url);
         });
         console.log(this.pdfimgsrcList);
         console.log(this.pdfimg);
@@ -3041,34 +3091,31 @@
       }
     },
 
-    // 鐐瑰嚮宸蹭笂浼犳枃浠�
+    // 鐐瑰嚮宸蹭笂浼犳枃浠讹細鍦ㄩ檮浠跺脊绐楀彸渚у唴宓岄瑙�
     downFile(item) {
-      console.log(item);
-      this.pdftitle = item.name;
-      let name = item.name.split(".");
-      if (name[1] == "pdf") {
-        this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮");
-        this.previewpdf = false;
-        this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
-      } else if (name[1] == "jpg" || "png") {
-        this.previewpdf = true;
-        if (item.url) {
-          this.pdfimg = this.Networkheader + "/prod-api" + item.url;
-
-          // if (!this.pdfimgsrcList.includes(this.pdfimg)) {
-          //   this.pdfimgsrcList.push(this.pdfimg);
-          //   console.log("鍔犲叆");
-          // }
-          console.log(this.pdfimg);
-          console.log(this.pdfimgsrcList, "imglist");
-        } else {
-          this.pdfimg = this.Networkheader + "/prod-api" + item.url;
-        }
-      } else {
-        this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
-        this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮");
-        this.previewpdf = false;
+      if (this.operationType == "detail") {
+        const list = (this.fileListto || []).map(f => ({
+          name: f.name,
+          url: f.url
+        }));
+        const index = list.findIndex(f => f.url === item.url);
+        this.$previewFile(list, index > -1 ? index : 0);
+        return;
       }
+      const ext = String(item.name || "").toLowerCase().split(".").pop();
+      const isImage = ["jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(ext);
+      if (ext !== "pdf" && !isImage) {
+        this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
+        this.$modal.msgWarning("褰撳墠鏂囦欢鏆備笉鏀寔棰勮");
+        return;
+      }
+      this.embeddedFile = {
+        name: item.name,
+        url: item.url,
+        type: ext === "pdf" ? "pdf" : "image"
+      };
+      this.pdftitle = item.name;
+      this.pdfVisible = true;
     },
     getIndexInArray(arr, obj) {
       return arr.indexOf(obj);
@@ -3079,7 +3126,7 @@
       console.log(row);
       const indexlist = this.getIndexInArray(
         this.pdfimgsrcList,
-        this.Networkheader + "/prod-api" + row.url
+        this.Networkheader + process.env.VUE_APP_BASE_API + row.url
       );
       console.log(indexlist);
       this.pdfimgsrcList.splice(indexlist, 1);

--
Gitblit v1.9.3