Browse Source

2025-12-10

过站采集sop预览优化
master
fengyuan_yang 1 month ago
parent
commit
48b918b94b
  1. 1
      src/api/qc/qc.js
  2. 45
      src/views/modules/qc/sopListComponent.vue
  3. 48
      src/views/modules/yieldReport/com_produce_report_normal.vue

1
src/api/qc/qc.js

@ -246,6 +246,7 @@ export const sopListSearch = data => createAPI(`/pms/qc/sopListSearch`,'post',da
export const sopAvailableFiles = data => createAPI(`/pms/qc/sopAvailableFiles`,'post',data) export const sopAvailableFiles = data => createAPI(`/pms/qc/sopAvailableFiles`,'post',data)
export const sopFileUploadSave = data => createAPI(`/pms/qc/sopFileUploadSave`,'post',data) export const sopFileUploadSave = data => createAPI(`/pms/qc/sopFileUploadSave`,'post',data)
export const sopRecordDelete = data => createAPI(`/pms/qc/sopList/delete`,'post',data) export const sopRecordDelete = data => createAPI(`/pms/qc/sopList/delete`,'post',data)
export const downloadSopFile = sopUrl => createAPI(`/pms/qc/downloadSopFile?sopUrl=${encodeURIComponent(sopUrl)}`,'post', 777)
// ===================================== BOM清单 ===================================== // ===================================== BOM清单 =====================================
export const bomListSearch = data => createAPI(`/pms/qc/bomListSearch`,'post',data) export const bomListSearch = data => createAPI(`/pms/qc/bomListSearch`,'post',data)

45
src/views/modules/qc/sopListComponent.vue

@ -124,7 +124,7 @@
<script> <script>
import SopFileUpload from './sopFileUpload' import SopFileUpload from './sopFileUpload'
import { sopListSearch, sopRecordDelete } from '@/api/qc/qc.js'
import { sopListSearch, sopRecordDelete, downloadSopFile } from '@/api/qc/qc.js'
export default { export default {
name: 'SopListComponent', name: 'SopListComponent',
@ -226,11 +226,48 @@ export default {
}, },
// //
previewHandle (row) { previewHandle (row) {
if (row.sopUrl) {
window.open(row.sopUrl, '_blank')
} else {
if (!row.sopUrl) {
this.$message.warning('该文件暂无预览路径') this.$message.warning('该文件暂无预览路径')
return
}
//
const fileName = row.sopName || row.sopUrl
let fileSuffix = ''
if (fileName.includes('.')) {
fileSuffix = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase()
}
//
const imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
const videoTypes = ['mp4', 'avi', 'mov', 'wmv', 'flv']
const pdfTypes = ['pdf']
const txtTypes = ['txt']
const officeTypes = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx']
if (officeTypes.includes(fileSuffix)) {
this.$message.warning(`暂不支持在线预览${fileSuffix.toUpperCase()}文件,请使用下载功能`)
return
} }
let mimeType = 'application/octet-stream'
if (imageTypes.includes(fileSuffix)) {
mimeType = 'image/' + fileSuffix
} else if (videoTypes.includes(fileSuffix)) {
mimeType = 'video/' + fileSuffix
} else if (pdfTypes.includes(fileSuffix)) {
mimeType = 'application/pdf'
} else if (txtTypes.includes(fileSuffix)) {
mimeType = 'text/plain'
}
downloadSopFile(row.sopUrl).then(({ data }) => {
const blob = new Blob([data], { type: mimeType })
const fileURL = URL.createObjectURL(blob)
window.open(fileURL, '_blank')
}).catch(() => {
this.$message.error('文件预览失败,请稍后重试')
})
}, },
// //
batchDeleteHandle () { batchDeleteHandle () {

48
src/views/modules/yieldReport/com_produce_report_normal.vue

@ -794,7 +794,7 @@ import {
import { import {
getUserSpecialSecurity, getUserSpecialSecurity,
} from '@/api/yieldReport/produce_order.js' } from '@/api/yieldReport/produce_order.js'
import { sopListSearch } from '@/api/qc/qc.js'
import { sopListSearch, downloadSopFile } from '@/api/qc/qc.js'
/*打印标签专用的js*/ /*打印标签专用的js*/
import { import {
printSfdcLabel, printSfdcLabel,
@ -5013,11 +5013,51 @@ export default {
// SOP // SOP
previewSopFile(row) { previewSopFile(row) {
if (row.sopUrl) {
window.open(row.sopUrl, '_blank');
} else {
if (!row.sopUrl) {
this.$message.warning('该文件暂无预览路径'); this.$message.warning('该文件暂无预览路径');
return;
}
//
const fileName = row.sopName || row.sopUrl;
let fileSuffix = '';
if (fileName.includes('.')) {
fileSuffix = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
}
//
const imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'bmp'];
const videoTypes = ['mp4', 'avi', 'mov', 'wmv', 'flv'];
const pdfTypes = ['pdf'];
const txtTypes = ['txt'];
const officeTypes = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'];
//
if (officeTypes.includes(fileSuffix)) {
this.$message.warning(`暂不支持在线预览${fileSuffix.toUpperCase()}文件,请使用下载功能`);
return;
}
// MIME
let mimeType = 'application/octet-stream';
if (imageTypes.includes(fileSuffix)) {
mimeType = 'image/' + fileSuffix;
} else if (videoTypes.includes(fileSuffix)) {
mimeType = 'video/' + fileSuffix;
} else if (pdfTypes.includes(fileSuffix)) {
mimeType = 'application/pdf';
} else if (txtTypes.includes(fileSuffix)) {
mimeType = 'text/plain';
} }
// APIBlob
downloadSopFile(row.sopUrl).then(({ data }) => {
const blob = new Blob([data], { type: mimeType });
const fileURL = URL.createObjectURL(blob);
window.open(fileURL, '_blank');
}).catch(() => {
this.$message.error('文件预览失败,请稍后重试');
});
}, },
// SOP // SOP

Loading…
Cancel
Save