From 84d5f2ddb619b227a6f8b2e331326bc824dd68d5 Mon Sep 17 00:00:00 2001 From: WXL <wl_5969728@163.com> Date: 星期日, 28 九月 2025 10:13:20 +0800 Subject: [PATCH] 档案和附件相关 --- src/components/CustomImageViewer/index.vue | 38 ++++++++++++++++++ src/views/project/fund/applyDetail/index.vue | 45 ++++++++++++++-------- vue.config.js | 12 +++--- src/views/project/travelexpenseapply/travelexpensedetail/index.vue | 22 +++++++++-- 4 files changed, 90 insertions(+), 27 deletions(-) diff --git a/src/components/CustomImageViewer/index.vue b/src/components/CustomImageViewer/index.vue index 0457395..942cb20 100644 --- a/src/components/CustomImageViewer/index.vue +++ b/src/components/CustomImageViewer/index.vue @@ -87,6 +87,11 @@ if (!newVal) { this.showTip = false; this.tipMessage = ''; + this.removeKeyListener(); + } else { + this.$nextTick(() => { + this.addKeyListener(); + }); } } }, @@ -117,7 +122,6 @@ showTipMessage(message) { this.tipMessage = message; this.showTip = true; - // 2绉掑悗鑷姩闅愯棌鎻愮ず setTimeout(() => { this.hideTip(); }, 2000); @@ -128,7 +132,39 @@ }, handleError() { console.error(`鍥剧墖鍔犺浇澶辫触: ${this.currentUrl}`); + }, + + // 閿洏浜嬩欢澶勭悊 + handleKeydown(event) { + switch(event.key) { + case 'ArrowLeft': + event.preventDefault(); // 闃绘榛樿琛屼负 + this.goPrev(); + break; + case 'ArrowRight': + event.preventDefault(); + this.goNext(); + break; + case 'Escape': + event.preventDefault(); + this.close(); + break; + } + }, + addKeyListener() { + document.addEventListener('keydown', this.handleKeydown); + }, + removeKeyListener() { + document.removeEventListener('keydown', this.handleKeydown); } + }, + mounted() { + if (this.visible) { + this.addKeyListener(); + } + }, + beforeUnmount() { + this.removeKeyListener(); } }; </script> diff --git a/src/views/project/fund/applyDetail/index.vue b/src/views/project/fund/applyDetail/index.vue index f5a64fc..a6687bb 100644 --- a/src/views/project/fund/applyDetail/index.vue +++ b/src/views/project/fund/applyDetail/index.vue @@ -1135,17 +1135,17 @@ :src="pdfimg" @click="handleImageClick(initialIndex)" > - <!-- <div slot="error" class="image-slot"> + <!-- <div slot="error" class="image-slot"> <i class="el-icon-picture-outline"></i> </div> --> - </el-image> - <custom-image-viewer - :url-list="pdfimgsrcList" - :initial-index="currentIndex" - :visible="viewerVisible" - @update:visible="viewerVisible = $event" - @close="handleViewerClose" - /> + </el-image> + <custom-image-viewer + :url-list="pdfimgsrcList" + :initial-index="currentIndex" + :visible="viewerVisible" + @update:visible="viewerVisible = $event" + @close="handleViewerClose" + /> </div> <div v-else class="pdfimgmins">{{ hintitle }}</div> </div> @@ -1242,15 +1242,20 @@ <!-- <img :src="pdfimg" /> --> <el-image style="width: 95%; height: 90%" - @error="handleImageError" - @load="handleImageLoad" :src="invoicepdfimg" - :preview-src-list="invoicepdfimgsrcList" + @click="invoicehandleImageClick(initialIndex)" > <!-- <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> --> + <i class="el-icon-picture-outline"></i> + </div> --> </el-image> + <custom-image-viewer + :url-list="invoicepdfimgsrcList" + :initial-index="invoicecurrentIndex" + :visible="invoiceviewerVisible" + @update:visible="invoiceviewerVisible = $event" + @close="invoicehandleViewerClose" + /> </div> <div v-else class="pdfimgmins">{{ hintitle }}</div> </div> @@ -1388,13 +1393,12 @@ import { getToken } from "@/utils/auth"; import CustomImageViewer from "@/components/CustomImageViewer"; // 鏍规嵁浣犵殑璺緞璋冩暣 - export default { //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� components: { Li_area_select, OrgSelecter, - CustomImageViewer, + CustomImageViewer }, name: "fundApply", @@ -1686,8 +1690,10 @@ pdfimg: "", pdfimgsrcList: [], currentIndex: 0, // 鍒濆绱㈠紩 + invoicecurrentIndex: 0, // 鍒濆绱㈠紩 initialIndex: 0, // 鍒濆绱㈠紩 viewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず + invoiceviewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず pdfVisible: false, previewpdf: false, hintitle: "璇蜂笂浼犳枃浠跺悗鏌ョ湅", @@ -3201,9 +3207,16 @@ this.currentIndex = index; this.viewerVisible = true; }, + invoicehandleImageClick(index) { + this.invoicecurrentIndex = index; + this.invoiceviewerVisible = true; + }, handleViewerClose() { this.viewerVisible = false; }, + invoicehandleViewerClose() { + this.invoiceviewerVisible = false; + }, handleUploadError() {}, remove(file, fileList) { const rbDetails = [...this.rbDetails]; diff --git a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue index f24c82e..2f36bc2 100644 --- a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue +++ b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue @@ -1220,12 +1220,16 @@ <el-image style="width: 95%; height: 90%" :src="invoicepdfimg" - :preview-src-list="invoicepdfimgsrcList" + @click="invoicehandleImageClick(initialIndex)" > - <!-- <div slot="error" class="image-slot"> - <i class="el-icon-picture-outline"></i> - </div> --> </el-image> + <custom-image-viewer + :url-list="invoicepdfimgsrcList" + :initial-index="invoicecurrentIndex" + :visible="invoiceviewerVisible" + @update:visible="invoiceviewerVisible = $event" + @close="invoicehandleViewerClose" + /> </div> <div v-else class="pdfimgmins">{{ hintitle }}</div> </div> @@ -1460,8 +1464,11 @@ invoicepdfimg: "", invoicepdfimgsrcList: [], currentIndex: 0, // 鍒濆绱㈠紩 + invoicecurrentIndex: 0, // 鍒濆绱㈠紩 initialIndex: 0, // 鍒濆绱㈠紩 viewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず + invoiceviewerVisible: false, // 鎺у埗棰勮缁勪欢鏄剧ず + //浜哄憳绫诲埆 persontype: null, //鍒拌揪鍦� @@ -1615,9 +1622,16 @@ this.currentIndex = index; this.viewerVisible = true; }, + invoicehandleImageClick(index) { + this.invoicecurrentIndex = index; + this.invoiceviewerVisible = true; + }, handleViewerClose() { this.viewerVisible = false; }, + invoicehandleViewerClose() { + this.invoiceviewerVisible = false; + }, handleImageError() { console.error("鍥剧墖鍔犺浇澶辫触"); }, diff --git a/vue.config.js b/vue.config.js index d788a6c..d185d3b 100644 --- a/vue.config.js +++ b/vue.config.js @@ -32,9 +32,9 @@ open: true, proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy - [process.env.VUE_APP_BASE_API]: { - target:`http://localhost:8080`, - //target:`http://116.62.18.175:8080`, + [process.env.VUE_APP_BASE_API]: { + // target:`http://localhost:8080`, + target:`http://192.168.100.10:8080`, // target:`http://192.168.1.4:8086`, // target: `https://slb.hospitalstar.com:9093`, changeOrigin: true, @@ -45,10 +45,10 @@ //褰損df鍜屾暟鎹帴鍙d笉鍦ㄥ悓涓�涓姹傚湴鍧�涓嬫椂,涓簆df棰勮杩藉姞涓�涓唬鐞� '/pdf': { target: 'http://192.168.1.4/pdf/data', - changOrigin: true, + changOrigin: true, pathRewrite: { - '^/pdf': '' - } + '^/pdf': '' + } } }, disableHostCheck: true -- Gitblit v1.9.3