8 changed files with 259 additions and 38 deletions
-
39src/views/modules/dm/DMFAIResultEntry.vue
-
2src/views/modules/dm/DMQcItem.vue
-
10src/views/modules/dm/DMQcMethod.vue
-
14src/views/modules/dm/DMQcPartAttribute.vue
-
4src/views/modules/dm/DMQcTemplate.vue
-
4src/views/modules/dm/DMResultEntry.vue
-
222src/views/modules/dm/IQCFileTable.vue
-
2src/views/modules/dm/dm_SOP_upload_file.vue
@ -0,0 +1,222 @@ |
|||
<script> |
|||
import {downLoadObjectFile, downLoadObjectFileMes} from '@/api/eam/eam_object_list.js' |
|||
import {deleteObjectFile} from '@/api/eam/eam.js' |
|||
export default { |
|||
name: "iqcFileTable", |
|||
props:{ |
|||
dataList:{ |
|||
type:Array, |
|||
required:true |
|||
}, |
|||
queryLoading:{ |
|||
type:Boolean, |
|||
default:false, |
|||
}, |
|||
columns:{ |
|||
type:Array, |
|||
required: true, |
|||
} |
|||
}, |
|||
methods: { |
|||
// 预览 |
|||
previewFile (row) { |
|||
// 预览文件 |
|||
let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp'] |
|||
let type = '' |
|||
if (image.includes(row.fileType.toLowerCase())) { |
|||
type = 'image/' + row.fileType |
|||
} |
|||
let video = ['mp4', 'avi', 'mov', 'wmv', 'flv'] |
|||
if (video.includes(row.fileType.toLowerCase())) { |
|||
type = 'video/' + row.fileType |
|||
} |
|||
let txt = ['txt'] |
|||
if (txt.includes(row.fileType.toLowerCase())) { |
|||
type = 'text/plain' |
|||
} |
|||
let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'] |
|||
if (office.includes(row.fileType.toLowerCase())) { |
|||
this.$message.warning(`暂不支持预览${row.fileType.toLowerCase()}文件`) |
|||
return |
|||
} |
|||
let pdf = ['pdf'] |
|||
if (pdf.includes(row.fileType.toLowerCase())) { |
|||
type = 'application/pdf' |
|||
} |
|||
if (type === ''){ |
|||
this.$message.warning(`暂不支持预览${row.fileType.toLowerCase()}文件`) |
|||
return; |
|||
} |
|||
downLoadObjectFile(row).then(({data}) => { |
|||
const blob = new Blob([data], { type: type }); |
|||
// 创建URL来生成预览 |
|||
const fileURL = URL.createObjectURL(blob); |
|||
// 在新标签页中打开文件预览 |
|||
const newTab = window.open(fileURL, '_blank') |
|||
}) |
|||
}, |
|||
|
|||
// 预览 |
|||
previewFileMes (row) { |
|||
// 预览文件 |
|||
let image = ['jpg', 'jpeg', 'png', 'gif', 'bmp'] |
|||
let type = '' |
|||
if (image.includes(row.fileType.toLowerCase())) { |
|||
type = 'image/' + row.fileType |
|||
} |
|||
let video = ['mp4', 'avi', 'mov', 'wmv', 'flv'] |
|||
if (video.includes(row.fileType.toLowerCase())) { |
|||
type = 'video/' + row.fileType |
|||
} |
|||
let txt = ['txt'] |
|||
if (txt.includes(row.fileType.toLowerCase())) { |
|||
type = 'text/plain' |
|||
} |
|||
let office = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'] |
|||
if (office.includes(row.fileType.toLowerCase())) { |
|||
this.$message.warning(`暂不支持预览${row.fileType.toLowerCase()}文件`) |
|||
return |
|||
} |
|||
let pdf = ['pdf'] |
|||
if (pdf.includes(row.fileType.toLowerCase())) { |
|||
type = 'application/pdf' |
|||
} |
|||
if (type === ''){ |
|||
this.$message.warning(`暂不支持预览${row.fileType.toLowerCase()}文件`) |
|||
return; |
|||
} |
|||
downLoadObjectFileMes(row).then(({data}) => { |
|||
const blob = new Blob([data], { type: type }); |
|||
// 创建URL来生成预览 |
|||
const fileURL = URL.createObjectURL(blob); |
|||
// 在新标签页中打开文件预览 |
|||
const newTab = window.open(fileURL, '_blank') |
|||
}) |
|||
}, |
|||
|
|||
// 文件下载 |
|||
downloadFile (row) { |
|||
downLoadObjectFile(row) |
|||
.then(({data}) => { |
|||
// 不限制文件下载类型 |
|||
const blob = new Blob([data], {type: "application/octet-stream"}) |
|||
// 下载文件名称 |
|||
const fileName = row.fileName |
|||
// a标签下载 |
|||
const linkNode = document.createElement('a') |
|||
// a标签的download属性规定下载文件的名称 |
|||
linkNode.download = fileName |
|||
linkNode.style.display = 'none' |
|||
// 生成一个Blob URL |
|||
linkNode.href = URL.createObjectURL(blob) |
|||
document.body.appendChild(linkNode) |
|||
// 模拟在按钮上的一次鼠标单击 |
|||
linkNode.click() |
|||
// 释放URL 对象 |
|||
URL.revokeObjectURL(linkNode.href) |
|||
document.body.removeChild(linkNode) |
|||
}) |
|||
}, |
|||
|
|||
// 文件下载 |
|||
downloadFileMes (row) { |
|||
downLoadObjectFileMes(row) |
|||
.then(({data}) => { |
|||
// 不限制文件下载类型 |
|||
const blob = new Blob([data], {type: "application/octet-stream"}) |
|||
// 下载文件名称 |
|||
const fileName = row.fileName |
|||
// a标签下载 |
|||
const linkNode = document.createElement('a') |
|||
// a标签的download属性规定下载文件的名称 |
|||
linkNode.download = fileName |
|||
linkNode.style.display = 'none' |
|||
// 生成一个Blob URL |
|||
linkNode.href = URL.createObjectURL(blob) |
|||
document.body.appendChild(linkNode) |
|||
// 模拟在按钮上的一次鼠标单击 |
|||
linkNode.click() |
|||
// 释放URL 对象 |
|||
URL.revokeObjectURL(linkNode.href) |
|||
document.body.removeChild(linkNode) |
|||
}) |
|||
}, |
|||
|
|||
// 删除文件 |
|||
deleteFile (row) { |
|||
let tempData = { |
|||
site: row.orderRef1, |
|||
inspectionNo: row.orderRef2, |
|||
buNo: row.orderRef4 |
|||
} |
|||
this.$confirm('确定要删除此文件?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
deleteObjectFile(row).then(({data}) => { |
|||
if (data && data.code == 0) { |
|||
this.getFileContentData(tempData) |
|||
this.$message({ |
|||
message: '操作成功', |
|||
type: 'success', |
|||
duration: 1500, |
|||
onClose: () => {} |
|||
}) |
|||
} else { |
|||
this.$alert(data.msg, '错误', { |
|||
confirmButtonText: '确定' |
|||
}) |
|||
} |
|||
}) |
|||
}).catch(() => { |
|||
}) |
|||
}, |
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<el-table |
|||
:height="350" |
|||
:data="dataList" |
|||
border |
|||
v-loading="queryLoading" |
|||
element-loading-text="拼命加载中" |
|||
style="width: 100%; "> |
|||
<el-table-column |
|||
v-for="(item,index) in columns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed===''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{scope.row[item.columnProp]}}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="center" |
|||
width="100" |
|||
label="操作"> |
|||
<template slot-scope="scope"> |
|||
<el-link v-if="scope.row.orderReftype !== 'mes'" style="cursor: pointer" @click="previewFile(scope.row)">预览</el-link> |
|||
<el-link v-if="scope.row.orderReftype !== 'mes'" style="cursor: pointer" @click="downloadFile(scope.row)">下载</el-link> |
|||
<el-link v-if="scope.row.orderReftype !== 'mes'" style="cursor: pointer" @click="deleteFile(scope.row)">删除</el-link> |
|||
<el-link v-if="scope.row.orderReftype === 'mes'" style="cursor: pointer" @click="previewFileMes(scope.row)">预览</el-link> |
|||
<el-link v-if="scope.row.orderReftype === 'mes'" style="cursor: pointer" @click="downloadFileMes(scope.row)">下载</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue