| screen/src/view/accidentCase/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/view/planOfAudit/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/view/projectProgress/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
screen/src/view/accidentCase/index.vue
@@ -194,8 +194,9 @@ <img v-if="item.img" :src="VUE_APP_BASE_URL + '/project/download/' + item.img" class="w--264 h--160 shrink0 ml--54 br--10" class="w--264 h--160 shrink0 ml--54 br--10 cursor-pointer" @error="handleImageError" @click.stop="previewImage(item)" /> <img v-else @@ -220,16 +221,23 @@ :total="total" /> </div> <!-- 图片预览 --> <CustomPreview :show="previewVisible" :imgArr="previewImages" @close="previewVisible = false" /> </div> </template> <script> import HeaderBox from "../header/index.vue"; import CustomPreview from "../../components/customPreview.vue"; import moment from "moment"; import { getAccidentClassify, getStoryPage } from "./service"; export default { components: { HeaderBox }, components: { HeaderBox, CustomPreview }, props: {}, data() { return { @@ -256,6 +264,8 @@ storyList: [], loading: false, VUE_APP_BASE_URL: process.env.VUE_APP_BASE_URL, previewVisible: false, previewImages: [], }; }, computed: {}, @@ -539,11 +549,31 @@ if (!this.dateTime) { this.handleSearch(); } } }, // 预览图片 previewImage(item) { if (item.img) { // 如果img是字符串,可能是逗号分隔的多张图片 const imageUrl = this.VUE_APP_BASE_URL + '/project/download/' + item.img; this.previewImages = [imageUrl]; this.previewVisible = true; } else { this.$message.warning("暂无图片"); } }, }, }; </script> <style scoped lang="less"> .br--10 { border-radius: 10px; } .cursor-pointer { cursor: pointer; } .text-ellipsis-3 { display: -webkit-box; -webkit-box-orient: vertical; screen/src/view/planOfAudit/index.vue
@@ -156,7 +156,7 @@ <template #reference> <el-button type="text" class="btnColor" :class="hasAnyReport(row) ? 'btnColor' : 'btnDisabled'" :disabled="!hasAnyReport(row)" @click="checkReportAvailability(row)" > @@ -729,7 +729,7 @@ } // 检查 Word 文档是否生成成功 if (!wordBlob || wordBlob.size === 0) { this.$message.error("报告生成失败"); @@ -755,7 +755,7 @@ return; } // 根据后端返回的数据结构获取PDF链接 // 假设后端返回格式为 { data: "http://xxx.pdf" } 或直接返回字符串 @@ -1033,6 +1033,11 @@ color: #00ebfc; } .btnDisabled { color: #666666 !important; cursor: not-allowed !important; } .report-btn { cursor: pointer; transition: all 0.3s ease; screen/src/view/projectProgress/index.vue
@@ -188,26 +188,24 @@ </div> </CustomDialog> <!-- 媒体预览弹窗 --> <!-- 图片预览 --> <CustomPreview :show="previewVisible" :imgArr="previewImages" @close="previewVisible = false" /> <!-- 视频预览弹窗 --> <el-dialog :visible.sync="previewVisible" :visible.sync="videoPreviewVisible" width="80%" :show-close="true" @close="closePreview" @close="closeVideoPreview" class="media-preview-dialog" append-to-body > <div class="preview-content"> <!-- 图片预览 --> <img v-if="previewType === 'image'" :src="previewUrl" class="preview-image" @error="handleImageError" /> <!-- 视频预览 --> <video v-else-if="previewType === 'video'" :src="previewUrl" class="preview-video" controls @@ -221,6 +219,7 @@ <script> import HeaderBox from "../header/index.vue"; import CustomPreview from "../../components/customPreview.vue"; import moment from "moment"; import { getProjectProgressList, @@ -228,7 +227,7 @@ } from "./service"; export default { components: { HeaderBox }, components: { HeaderBox, CustomPreview }, props: {}, data() { return { @@ -264,9 +263,10 @@ VUE_APP_BASE_URL: process.env.VUE_APP_IMAGE_BASE_URL, // 基础URL progressMediaList: [], // 处理后的媒体列表(包含类型信息) // 预览相关 previewVisible: false, // 预览弹窗显示状态 previewVisible: false, // 图片预览弹窗显示状态 previewImages: [], // 图片预览数组 videoPreviewVisible: false, // 视频预览弹窗显示状态 previewUrl: '', // 预览的URL previewType: 'image', // 预览类型:'image' 或 'video' }; }, computed: {}, @@ -507,7 +507,7 @@ }); const contentType = response.headers.get('Content-Type') || ''; // 判断是否为视频 if (contentType.startsWith('video/')) { @@ -531,17 +531,22 @@ // 预览进度媒体(图片或视频)- 弹窗预览 previewProgressMedia(item) { if (item && item.url) { this.previewUrl = item.url; this.previewType = item.type || 'image'; this.previewVisible = true; if (item.type === 'video') { // 视频使用单独的弹窗 this.previewUrl = item.url; this.videoPreviewVisible = true; } else { // 图片使用 CustomPreview 组件 this.previewImages = [item.url]; this.previewVisible = true; } } }, // 关闭预览弹窗 closePreview() { this.previewVisible = false; // 关闭视频预览弹窗 closeVideoPreview() { this.videoPreviewVisible = false; this.previewUrl = ''; this.previewType = 'image'; }, // 图片加载失败处理