You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
4.8 KiB
187 lines
4.8 KiB
<template>
|
|
<el-dialog
|
|
:visible.sync="visible"
|
|
:title="'智能填表'"
|
|
:close-on-click-modal="true"
|
|
:close-on-press-escape="true"
|
|
width="850px"
|
|
:top="diaTop"
|
|
>
|
|
<el-table
|
|
v-loading="loading"
|
|
:data="list"
|
|
row-key="id"
|
|
border
|
|
:height="tableHeight"
|
|
style="width: 100%"
|
|
>
|
|
<el-table-column type="index" label="序号" width="50" />
|
|
<el-table-column
|
|
prop="reportName"
|
|
label="模板名称"
|
|
header-align="center"
|
|
min-width="150"
|
|
></el-table-column>
|
|
<el-table-column
|
|
label="操作"
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="150"
|
|
>
|
|
<template slot-scope="scope">
|
|
<el-button type="text" size="small" @click="fillIn(scope.row)"
|
|
>填写</el-button
|
|
>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<script>
|
|
import { Loading } from "element-ui"; // 引入Loading服务
|
|
import { requestPost, requestGet } from "@/js/dai/request";
|
|
import { mapGetters } from "vuex";
|
|
import axios from "axios";
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
loading: false,
|
|
|
|
visible: false,
|
|
|
|
list: [], //客户列表
|
|
|
|
elseParams: {},
|
|
};
|
|
},
|
|
|
|
computed: {
|
|
tableHeight() {
|
|
// return this.resolution === 'small' ? this.clientHeight - 210 : this.clientHeight - 220
|
|
return this.clientHeight - 300;
|
|
},
|
|
diaWidth() {
|
|
return this.resolution === "small" ? 60 : 50;
|
|
},
|
|
diaHeight() {
|
|
return this.resolution === "small" ? 350 : 600;
|
|
},
|
|
diaTop() {
|
|
return this.resolution === "small" ? "30px" : "100px";
|
|
},
|
|
...mapGetters(["clientHeight", "resolution"]),
|
|
},
|
|
|
|
mounted() {},
|
|
|
|
methods: {
|
|
async existsTemplate(row) {
|
|
console.log("baobiao----------existsTemplate", row);
|
|
const { elseParams } = row;
|
|
this.list = [];
|
|
this.elseParams = { ...elseParams };
|
|
await this.getList();
|
|
return this.list.length > 0;
|
|
},
|
|
|
|
async init(row) {
|
|
console.log("baobiao----------init", row);
|
|
const { elseParams } = row;
|
|
this.visible = true;
|
|
this.elseParams = { ...elseParams };
|
|
|
|
this.list = [];
|
|
|
|
await this.getList();
|
|
},
|
|
|
|
//获取所有客户列表
|
|
async getList() {
|
|
this.loading = true;
|
|
const { elseParams } = this;
|
|
const { data, code, msg } = await requestPost(
|
|
"/oper/customize/icCustomerReport/report-list",
|
|
{
|
|
...elseParams,
|
|
}
|
|
);
|
|
this.loading = false;
|
|
if (code === 0) {
|
|
this.list = data.map((item) => {
|
|
return item;
|
|
});
|
|
} else {
|
|
this.$message.error(msg);
|
|
}
|
|
},
|
|
|
|
async fillIn(item) {
|
|
const { reportId, reportName } = item;
|
|
const url = "/oper/customize/icCustomerReport/preview";
|
|
const parmas = {
|
|
...this.elseParams,
|
|
reportId,
|
|
};
|
|
|
|
const { data, code, msg } = await requestPost(url, parmas);
|
|
|
|
if (code === 0) {
|
|
let token = localStorage.getItem("token");
|
|
let prefix = window.SITE_CONFIG["apiURL"].slice(0, -4);
|
|
if (item.isList) {
|
|
this.exportAll(reportId, data.paramKey, reportName);
|
|
} else {
|
|
window.open(
|
|
`${prefix}/jmreport/view/${reportId}?token=${token}¶mKey=${data.paramKey}`
|
|
);
|
|
}
|
|
|
|
// this.visible = false;
|
|
this.$emit("afterFillIn");
|
|
} else {
|
|
this.$message.error(msg);
|
|
}
|
|
},
|
|
|
|
async exportAll(reportId, paramKey, reportName) {
|
|
const url = "/oper/customize/icCustomerReport/batch-export";
|
|
axios({
|
|
url: window.SITE_CONFIG["apiURL"] + url,
|
|
method: "post",
|
|
data: {
|
|
reportId,
|
|
paramKey,
|
|
},
|
|
responseType: "blob",
|
|
})
|
|
.then((res) => {
|
|
console.log("批量导出接口返回", res);
|
|
// let fileName = window.decodeURI(
|
|
// res.headers["content-disposition"].split(";")[1].split("=")[1]
|
|
// );
|
|
let fileName = reportName;
|
|
console.log("filename", fileName);
|
|
let blob = new Blob([res.data], { type: "application/zip" });
|
|
var url = window.URL.createObjectURL(blob);
|
|
var aLink = document.createElement("a");
|
|
aLink.style.display = "none";
|
|
aLink.href = url;
|
|
aLink.setAttribute("download", fileName);
|
|
document.body.appendChild(aLink);
|
|
aLink.click();
|
|
document.body.removeChild(aLink); //下载完成移除元素
|
|
window.URL.revokeObjectURL(url); //释放掉blob对象
|
|
})
|
|
.catch((err) => {
|
|
console.log("批量导出失败", err);
|
|
return this.$message.error("网络错误");
|
|
});
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped></style>
|
|
|