11 changed files with 631 additions and 106 deletions
-
1src/api/base/properties.js
-
2src/api/test/testInformation.js
-
36src/views/modules/base/propertiesItem/propertiesModel.vue
-
117src/views/modules/common/uploadFileList.vue
-
366src/views/modules/quotation/requestForQuote.vue
-
2src/views/modules/quotation/sellForQuotation/quotationDetail/billOfMateriel.vue
-
10src/views/modules/quotation/sellForQuotation/quotationDetail/quoteRouting.vue
-
138src/views/modules/test/file/testFile.vue
-
59src/views/modules/test/requestForTest.vue
-
4src/views/modules/test/testSoBom/testTable.vue
-
2src/views/modules/test/test_upload_file.vue
@ -0,0 +1,117 @@ |
|||
<script> |
|||
import {uploadFileList} from "../../../api/test/testInformation"; |
|||
|
|||
export default { |
|||
name: "uploadFileList", |
|||
props:{ |
|||
uploadDialog:{ |
|||
type:Boolean, |
|||
default:false, |
|||
}, |
|||
label:{ |
|||
type:String, |
|||
default: '', |
|||
}, |
|||
no:{ |
|||
type:[String,Number], |
|||
default:'' |
|||
}, |
|||
path:{ |
|||
type:String, |
|||
request:true, |
|||
}, |
|||
uploadStatus:{ |
|||
type:Boolean, |
|||
default:false, |
|||
}, |
|||
fileList:{ |
|||
type: Array, |
|||
default:()=>[], |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
fileRemark:'', |
|||
} |
|||
}, |
|||
methods:{ |
|||
closeFileUpdate(){ |
|||
if (this.uploadStatus){ |
|||
return |
|||
} |
|||
this.$refs.uploadFile.clearFiles(); |
|||
this.$emit("update:fileList",[]) |
|||
}, |
|||
onRemove(file,fileList){ |
|||
this.$emit("update:fileList",fileList) |
|||
}, |
|||
onChange(file,fileList){ |
|||
this.$emit("update:fileList",fileList) |
|||
}, |
|||
upload(){ |
|||
if (this.fileList.length === 0){ |
|||
this.$message.warning("未选择需要上传的文件") |
|||
return; |
|||
} |
|||
if (this.uploadStatus){ |
|||
this.$emit('update:uploadDialog',false) |
|||
this.$message.success("操作成功") |
|||
return |
|||
} |
|||
let data = new FormData(); |
|||
for (let i = 0; i < this.fileList.length; i++) { |
|||
data.append("file",this.fileList[i].raw) |
|||
} |
|||
data.append("orderRef1",this.$store.state.user.site) |
|||
data.append("orderRef2",this.no) |
|||
data.append("createBy",this.$store.state.user.name) |
|||
data.append("fileRemark",this.fileRemark) |
|||
uploadFileList(this.path,data).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$emit('update:uploadDialog',false) |
|||
this.$message.success(data.msg) |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<el-dialog title="测试文件" v-drag @close="closeFileUpdate" :visible.sync="uploadDialog" width="22vw" append-to-body > |
|||
<el-form label-position="top" label-width="80px"> |
|||
<el-form-item :label="label" > |
|||
<el-input v-model="no" readonly style="width: 120px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<el-upload drag :file-list="fileList" |
|||
action="/test/file" ref="uploadFile" |
|||
:on-remove="onRemove" :on-change="onChange" |
|||
multiple :auto-upload="false" |
|||
style="text-align: left;"> |
|||
<i class="el-icon-upload"></i> |
|||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
|||
</el-upload> |
|||
</el-form-item> |
|||
<el-form-item label="备注:"> |
|||
<el-input type="textarea" placeholder="请输入内容" v-model="fileRemark"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="upload">保存</el-button> |
|||
<el-button type="primary" @click="$emit('update:uploadDialog',false)">关闭</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
/deep/ .el-form-item--medium .el-form-item__content{ |
|||
height: auto; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,138 @@ |
|||
<script> |
|||
import UploadFileList from "../../common/uploadFileList.vue"; |
|||
import {getFileContentList, removeFile} from "../../../../api/test/testInformation"; |
|||
import {downLoadQuotationFile} from "../../../../api/quotation/quotationInformation"; |
|||
|
|||
export default { |
|||
name: "testFile", |
|||
components: {UploadFileList}, |
|||
props:{ |
|||
dataList:{ |
|||
type: Array, |
|||
default: ()=>[], |
|||
}, |
|||
testNo:{ |
|||
type:String, |
|||
}, |
|||
columnList:{ |
|||
type: Array, |
|||
default: ()=>[], |
|||
}, |
|||
height:{ |
|||
type:Number, |
|||
default:300 |
|||
}, |
|||
}, |
|||
model:{ |
|||
prop:"dataList", |
|||
event:"change" |
|||
}, |
|||
data(){ |
|||
return{ |
|||
uploadDialog:false, |
|||
fileRemark:'', |
|||
token:'', |
|||
fileList:[], |
|||
} |
|||
}, |
|||
methods:{ |
|||
getFileContentList(){ |
|||
let params = { |
|||
orderRef1:this.$store.state.user.site, |
|||
orderRef2:this.testNo |
|||
} |
|||
getFileContentList(params).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$emit("change",data.rows) |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
}, |
|||
downloadFile (row) { |
|||
downLoadQuotationFile(row).then(({data}) => { |
|||
// 不限制文件下载类型 |
|||
const blob = new Blob([data], {type:'application/octet-stream;charset=utf-8'}) |
|||
// 下载文件名称 |
|||
const fileName = row.fileName |
|||
// a标签下载 |
|||
const linkNode = document.createElement('a') |
|||
linkNode.download = fileName // a标签的download属性规定下载文件的名称 |
|||
linkNode.style.display = 'none' |
|||
linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL |
|||
document.body.appendChild(linkNode) |
|||
linkNode.click() // 模拟在按钮上的一次鼠标单击 |
|||
URL.revokeObjectURL(linkNode.href) // 释放URL 对象 |
|||
document.body.removeChild(linkNode) |
|||
}) |
|||
}, |
|||
removeFile(row){ |
|||
removeFile(row).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.getFileContentList() |
|||
this.$message.success(data.msg) |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
} |
|||
}, |
|||
watch:{ |
|||
uploadDialog(newValue,oldValue){ |
|||
if (newValue === false){ |
|||
this.getFileContentList(); |
|||
} |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<div style="margin: 5px 0px"> |
|||
<el-button type="primary" @click="uploadDialog = true">上传文件</el-button> |
|||
</div> |
|||
<el-table |
|||
:height="height" |
|||
:data="dataList" |
|||
border |
|||
style="width: 100%"> |
|||
<el-table-column |
|||
v-for="(item,index) in columnList" :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 |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="120" |
|||
label="操作"> |
|||
<template slot-scope="{row,$index}"> |
|||
<el-link style="cursor:pointer;" @click="downloadFile(row)">下载</el-link> |
|||
<el-link style="cursor:pointer;" @click="removeFile(row)">删除</el-link> |
|||
<!-- <el-link>预览</el-link>--> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<upload-file-list :label="'测试单号:'" :file-list.sync="fileList" :no="testNo" :upload-dialog.sync="uploadDialog" path="/upload/test"></upload-file-list> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue