6 changed files with 1856 additions and 9 deletions
-
22src/api/qc/qc.js
-
4src/views/modules/qc/FQCResultEntry.vue
-
4src/views/modules/qc/IQCResultEntry.vue
-
219src/views/modules/qc/SQCFileTable.vue
-
1054src/views/modules/qc/SQCResultEntry.vue
-
562src/views/modules/qc/qcPartAttribute.vue
@ -0,0 +1,219 @@ |
|||||
|
<script> |
||||
|
import {downLoadObjectFile, downLoadObjectFileMes} from '@/api/eam/eam_object_list.js' |
||||
|
import {deleteObjectFile} from '@/api/eam/eam.js' |
||||
|
export default { |
||||
|
name: "sqcFileTable", |
||||
|
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 type = 'text/plain;charset=utf-8'; // 指定编码 |
||||
|
const blob = new Blob([data], { type }); |
||||
|
const reader = new FileReader(); |
||||
|
reader.onload = function(e) { |
||||
|
const content = e.target.result; |
||||
|
// 新窗口展示内容 |
||||
|
const newTab = window.open(); |
||||
|
newTab.document.write('<pre>' + content + '</pre>'); |
||||
|
}; |
||||
|
reader.readAsText(blob, 'utf-8'); |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 预览 |
||||
|
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); |
||||
|
// 在新标签页中打开文件预览 |
||||
|
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) { |
||||
|
this.$confirm('确定要删除此文件?', '提示', { |
||||
|
confirmButtonText: '确定', |
||||
|
cancelButtonText: '取消', |
||||
|
type: 'warning' |
||||
|
}).then(() => { |
||||
|
deleteObjectFile(row).then(({data}) => { |
||||
|
if (data && data.code == 0) { |
||||
|
this.$emit('refresh') |
||||
|
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> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
||||
|
|
||||
1054
src/views/modules/qc/SQCResultEntry.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue