From eb158b7d686f6e09caefb42be10b6ae77fd7cd90 Mon Sep 17 00:00:00 2001 From: hayu <1604366271@qq.com> Date: Wed, 14 Jan 2026 18:04:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/material/ma/partType/index.vue | 2 +- .../repair/repairManage/component/edit.vue | 200 +++++++++++++++--- 2 files changed, 176 insertions(+), 26 deletions(-) diff --git a/src/views/material/ma/partType/index.vue b/src/views/material/ma/partType/index.vue index ca855948..49eab895 100644 --- a/src/views/material/ma/partType/index.vue +++ b/src/views/material/ma/partType/index.vue @@ -547,7 +547,7 @@ export default { handleUpdate(row) { this.flagTemp = 2; this.reset(); - this.getTreeselect(); + // this.getTreeselect(); const id = row.id; getAccessoryDetail(id).then((response) => { this.form = response.data; diff --git a/src/views/material/repair/repairManage/component/edit.vue b/src/views/material/repair/repairManage/component/edit.vue index 29a300d1..cd25cf31 100644 --- a/src/views/material/repair/repairManage/component/edit.vue +++ b/src/views/material/repair/repairManage/component/edit.vue @@ -89,13 +89,17 @@ 上传 + - 查看 + 查看图片 + + ({{ getImageCount(scope.row) }}) + @@ -546,8 +550,98 @@ - - + + + + + + +
+ + + + +
+ + + + + + + + + +
+ + +
+ {{ previewFileIndex + 1 }} / {{ previewImageFiles.length }} +
+ + + + + + + + +
+ + +
+
+ +
+
@@ -827,6 +921,9 @@ export default { idsList:[], //一级页面传来的id taskIdTemp:undefined, + previewRow: null, // 当前预览的行数据 + previewImageFiles: [], // 当前行的图片文件列表 + previewFileIndex: 0, // 当前预览的图片索引 }; }, mounted() { @@ -842,9 +939,27 @@ export default { ...mapState(["user"]), }, methods: { + // 重置表单方法 + resetForm(formName) { + if (this.$refs[formName]) { + this.$refs[formName].resetFields(); + } + }, goBack() { this.$emit("goBackPage"); }, + // 计算行数据中的图片数量 + getImageCount(row) { + if (!row.bmFileInfos || row.bmFileInfos.length === 0) return 0; + + const imageFiles = row.bmFileInfos.filter(file => { + const parts = file.name.split("."); + const extension = parts.pop().toLowerCase(); + return ["jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(extension); + }); + + return imageFiles.length; + }, // 获取 任务详情数据 async GetViewByApply() { console.log(this.repairRow); @@ -1035,8 +1150,10 @@ export default { this.innerRowData = row; this.partTableList = []; if (this.innerRowData.partTableList && this.innerRowData.partTableList.length > 0) { - this.partTableList = this.innerRowData.partTableList; + this.partTableList = JSON.parse(JSON.stringify(this.innerRowData.partTableList)); } + // 重置配件选择器 + this.partTypeId = null; this.getPartTypeTreeData(); this.openInner = true; }, @@ -1387,28 +1504,61 @@ export default { this.repairDeviceList[index].bmFileInfos; }, //维修弹窗图片查看 +// 图片查看 - 支持多张图片预览(只处理图片) picturePreview(row) { - // console.log(row); - // console.log(row.bmFileInfos); - // if (row.bmFileInfos.length > 0) { - // let file = row.bmFileInfos[0]; - // this.dialogImageUrl = file.url; - // const parts = file.name.split("."); - // const extension = parts.pop(); - // if ( - // extension === "doc" || - // extension === "docx" || - // extension === "pdf" - // ) { - // const windowName = file.name; - // window.open(file.url, windowName); - // } else { - // this.dialogVisible = true; - // } - // } - console.log(file); - this.dialogImageUrl = file.url.replaceAll('#','%23'); - this.dialogVisible = true; + if (row.bmFileInfos && row.bmFileInfos.length > 0) { + // 筛选出图片文件(只显示图片) + const imageFiles = row.bmFileInfos.filter(file => { + const parts = file.name.split("."); + const extension = parts.pop().toLowerCase(); + return ["jpg", "jpeg", "png", "gif", "bmp", "webp"].includes(extension); + }); + + // 如果没有图片,显示提示 + if (imageFiles.length === 0) { + this.$message.info("没有可预览的图片文件"); + return; + } + + // 存储当前行和图片列表 + this.previewRow = row; + this.previewImageFiles = imageFiles; + this.previewFileIndex = 0; + + // 显示第一张图片 + this.dialogImageUrl = imageFiles[0].url; + this.dialogVisible = true; + } else { + this.$message.info("没有可预览的附件"); + } + }, + +// 切换到上一张图片 + prevImage() { + if (this.previewImageFiles && this.previewImageFiles.length > 0) { + this.previewFileIndex--; + if (this.previewFileIndex < 0) { + this.previewFileIndex = this.previewImageFiles.length - 1; + } + this.dialogImageUrl = this.previewImageFiles[this.previewFileIndex].url; + } + }, + +// 切换到下一张图片 + nextImage() { + if (this.previewImageFiles && this.previewImageFiles.length > 0) { + this.previewFileIndex++; + if (this.previewFileIndex >= this.previewImageFiles.length) { + this.previewFileIndex = 0; + } + this.dialogImageUrl = this.previewImageFiles[this.previewFileIndex].url; + } + }, + // 预览弹窗关闭时的清理 + handlePreviewClose() { + this.previewRow = null; + this.previewImageFiles = []; + this.previewFileIndex = 0; }, // 图片上传 handleChange(file, fileList) {