<template>
|
<el-dialog :visible.sync="dialogPush" append-to-body :close-on-click-modal="false" @close="recoverPage" title="导出">
|
<div style="margin-bottom: 10px">
|
<el-radio-group v-model="radio">
|
<el-radio :label="0">选择</el-radio>
|
<el-radio :label="1">全部</el-radio>
|
<el-radio :label="2">页码</el-radio>
|
</el-radio-group>
|
</div>
|
<div style="text-align: center">
|
<el-transfer
|
style="text-align: left; display: inline-block;height: 400px"
|
filterable
|
:filter-method="filterMethod"
|
filter-placeholder="关键词搜索"
|
v-model="value"
|
:titles="['未选属性', '已选属性']"
|
:data="data">
|
</el-transfer>
|
</div>
|
<div style="display: flex;justify-content: flex-end;">
|
<el-button size="small" plain type="success" @click="handleExcel">确定</el-button>
|
<el-button size="small" plain >取消</el-button>
|
</div>
|
</el-dialog>
|
</template>
|
|
<script>
|
import {exportCode} from '@/api/GetItem'
|
export default {
|
name: "MasterTransfer",
|
props:['visible','tableHeadData','codeClassifyOid','tableData','selectRow'],
|
data(){
|
return {
|
data: [],
|
value: [],
|
filterMethod(query, item) {
|
return item.label.indexOf(query) > -1;
|
},
|
dialogPush:this.visible,
|
radio:0,
|
tableHeadFindData:[],
|
tableExportData:[],
|
option:{
|
title: '文档标题',
|
column: [{
|
label: '主数据',
|
prop: 'header',
|
children: []
|
}],
|
data: []
|
}
|
};
|
},
|
watch:{
|
//监听初始化
|
visible (){
|
this.dialogPush = this.visible;
|
},
|
//表头数据 用来渲染穿梭框
|
tableHeadData:{
|
handler(newval,oldval){
|
console.log(newval)
|
if(newval){
|
//excel表头数据转换
|
this.tableHeadFindData=newval.map(obj => obj.label);
|
this.tableHeadFindData.forEach((city, index) => {
|
this.data.push({
|
label: city,
|
key: index,
|
});
|
});
|
//excel表格数据转换
|
this.option.column[0].children=newval.map(obj => {
|
return {
|
label: obj.label,
|
prop: obj.prop
|
}
|
})
|
}
|
}
|
},
|
tableData(){
|
// 将值里面的true或false改变为是或否
|
this.option.data = this.tableData.map(obj => {
|
for (let prop in obj) {
|
if (obj[prop] === "true") {
|
obj[prop] = "是";
|
} else if (obj[prop] === "false") {
|
obj[prop] = "否";
|
}
|
}
|
return obj;
|
});
|
},
|
codeClassifyOid:{
|
handler(newval,oldval){
|
}
|
}
|
},
|
computed:{
|
|
},
|
mounted() {
|
},
|
methods:{
|
//关闭页面
|
recoverPage(){
|
this.$emit('update:visible', false);
|
},
|
handleExcel(){
|
// this.$Export.excel({
|
// title: this.option.title,
|
// columns: this.option.column,
|
// data: this.option.data
|
// });
|
if(this.radio === 0){
|
if(this.selectRow.length<=0){
|
this.$message.warning('请选择要导出的模板')
|
}else {
|
//已选择多选
|
const selectList=[]
|
//已选择属性
|
let exportArr={}
|
const ids = this.selectRow.map(item => item.oid).join(',')
|
this.selectRow.forEach(item=>{
|
selectList.push(
|
item.oid
|
)
|
})
|
this.value.map(index => this.tableHeadData[index].prop).forEach((item, index) => {
|
exportArr[`attrIdIndexMap[${index}]`] = item
|
})
|
exportCode({codeClassifyOid:this.codeClassifyOid,'conditionMap[oid]':ids,...exportArr}).then(res=>{
|
console.log('res',res)
|
const filename = '下载.xlsx'; // 下载的文件名
|
const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' });
|
const a = document.createElement('a');
|
const url = window.URL.createObjectURL(blob);
|
a.href = url;
|
a.download = filename;
|
a.style.display = 'none';
|
document.body.appendChild(a);
|
a.click();
|
document.body.removeChild(a);
|
window.URL.revokeObjectURL(url);
|
|
// const filename = '下载.xlsx'; // 下载的文件名
|
// const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });
|
//
|
// const url = window.URL.createObjectURL(blob);
|
// const link = document.createElement('a');
|
// link.href = url;
|
// link.setAttribute('download', filename);
|
// document.body.appendChild(link);
|
// link.click();
|
// document.body.removeChild(link);
|
// URL.revokeObjectURL(url);
|
})
|
|
}
|
};
|
},
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
|
</style>
|