Commit a5820f2d by yuzhenWang

优化4

parent 34bd58a3
...@@ -275,6 +275,8 @@ ...@@ -275,6 +275,8 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<!-- 文件预览弹窗 -->
<FilePreview ref="filePreviewRef" />
</div> </div>
</template> </template>
...@@ -286,37 +288,47 @@ import { Upload, Document } from '@element-plus/icons-vue' ...@@ -286,37 +288,47 @@ import { Upload, Document } from '@element-plus/icons-vue'
import useDictStore from '@/store/modules/dict' import useDictStore from '@/store/modules/dict'
import { getDicts } from '@/api/system/dict/data' import { getDicts } from '@/api/system/dict/data'
import request from '@/utils/request' import request from '@/utils/request'
import FilePreview from '@/components/Preview/filePreview.vue'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import * as PDFJS from 'pdfjs-dist'
PDFJS.GlobalWorkerOptions.workerSrc = '/js/pdf.worker.min.mjs'
// ==================== 文件预览弹窗 ==================== // ==================== 文件预览弹窗 ====================
const filePreviewRef = ref(null)
const previewDialogVisible = ref(false) const previewDialogVisible = ref(false)
const previewUrl = ref('') const previewUrl = ref('')
const previewFileName = ref('') const previewFileName = ref('')
const previewFileType = ref('') // 'image', 'pdf', 'unsupported' const previewFileType = ref('') // 'image', 'pdf', 'unsupported'
// 预览文件(页面内弹窗,不打开新窗口)
function previewFile(file, item) { function previewFile(file, item) {
const url = file.url || file.response?.data?.url // 确保传入对象包含 url 和 name 属性
if (!url) { filePreviewRef.value?.open({
ElMessage.warning('文件地址不存在') url: file.url || file.response?.data?.url,
return name: file.name
} })
const ext = (file.name || '').split('.').pop().toLowerCase()
previewUrl.value = url
previewFileName.value = file.name || '文件'
if (['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp', 'svg'].includes(ext)) {
previewFileType.value = 'image'
previewDialogVisible.value = true
} else if (ext === 'pdf') {
previewFileType.value = 'pdf'
previewDialogVisible.value = true
} else {
// 不支持预览的文件类型,弹窗显示提示
previewFileType.value = 'unsupported'
previewDialogVisible.value = true
}
} }
// 预览文件(页面内弹窗,不打开新窗口)
// function previewFile(file, item) {
// const url = file.url || file.response?.data?.url
// if (!url) {
// ElMessage.warning('文件地址不存在')
// return
// }
// const ext = (file.name || '').split('.').pop().toLowerCase()
// previewUrl.value = url
// previewFileName.value = file.name || '文件'
// if (['jpg', 'jpeg', 'png', 'webp', 'gif', 'bmp', 'svg'].includes(ext)) {
// previewFileType.value = 'image'
// previewDialogVisible.value = true
// } else if (ext === 'pdf') {
// previewFileType.value = 'pdf'
// previewDialogVisible.value = true
// } else {
// // 不支持预览的文件类型,弹窗显示提示
// previewFileType.value = 'unsupported'
// previewDialogVisible.value = true
// }
// }
// 删除文件(复用原有删除逻辑) // 删除文件(复用原有删除逻辑)
function removeFile(file, item) { function removeFile(file, item) {
......
...@@ -582,6 +582,9 @@ const searchConfig = ref([ ...@@ -582,6 +582,9 @@ const searchConfig = ref([
labelKey: 'productName', labelKey: 'productName',
transform: res => { transform: res => {
return res?.data.records || [] return res?.data.records || []
},
onChangeExtraFields: {
productName: 'productName'
} }
}, },
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment