diff --git a/src/views/modules/longtron/production-work-report.vue b/src/views/modules/longtron/production-work-report.vue
index d0f6dc4c..0953b9df 100644
--- a/src/views/modules/longtron/production-work-report.vue
+++ b/src/views/modules/longtron/production-work-report.vue
@@ -254,7 +254,12 @@
-
![capture-image]()
+
@@ -314,6 +319,14 @@
关闭
+
+
+
![]()
+
@@ -358,7 +371,10 @@ export default {
recording: false,
recordedChunks: [],
captureIndex: 1,
- capturedMediaList: []
+ capturedMediaList: [],
+ imagePreviewVisible: false,
+ imagePreviewUrl: '',
+ imagePreviewName: ''
}
},
computed: {
@@ -851,6 +867,19 @@ export default {
}
this.capturedMediaList.splice(index, 1)
},
+ openImagePreview (item) {
+ if (!item || !item.previewUrl) {
+ return
+ }
+ this.imagePreviewUrl = item.previewUrl
+ this.imagePreviewName = item.name || ''
+ this.imagePreviewVisible = true
+ },
+ closeImagePreview () {
+ this.imagePreviewVisible = false
+ this.imagePreviewUrl = ''
+ this.imagePreviewName = ''
+ },
resetCapturedMedia () {
this.capturedMediaList.forEach(item => {
if (item && item.previewUrl) {
@@ -858,6 +887,7 @@ export default {
}
})
this.capturedMediaList = []
+ this.closeImagePreview()
},
resetRecordingState () {
this.mediaRecorder = null
@@ -1433,6 +1463,28 @@ export default {
background: #000;
}
+.capture-thumb--image {
+ cursor: zoom-in;
+}
+
+.image-preview-overlay {
+ position: fixed;
+ inset: 0;
+ z-index: 3000;
+ background: rgba(0, 0, 0, 0.85);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 24px;
+}
+
+.image-preview-full {
+ max-width: calc(100vw - 48px);
+ max-height: calc(100vh - 48px);
+ object-fit: contain;
+ cursor: zoom-out;
+}
+
.capture-meta {
display: flex;
align-items: center;