客户导出

master
xy 12 months ago
parent 083a761628
commit 1dd87f1f4b

@ -88,7 +88,9 @@
}">
取消选择
</Button>
<Button type="primary" style="margin-left: 10px" @click="$refs['imports'].show()"></Button>
<Button type="primary" style="margin-left: 10px" @click="exportExcel(new Date().getTime())">导出</Button>
<!-- <Button type="primary" style="margin-left: 10px" @click="$refs['imports'].show()"></Button>-->
</div>
</slot>
</lx-header>
@ -223,6 +225,8 @@ import addCustomer from "@/views/customer/component/addCustomer";
import addOrder from "./component/addOrder";
import imports from "./component/imports.vue";
import longInsuranceDetail from './component/longInsuranceDetail.vue'
import * as XLSX from "xlsx";
import { saveAs } from "file-saver";
export default {
components: {
addCustomer,
@ -350,6 +354,7 @@ export default {
{
label: "姓名",
width: "180",
prop: "name",
customFn: (row) => {
let getColor = () => {
if (row.near_age == 2) {
@ -371,37 +376,19 @@ export default {
label: "区域",
prop: 'village',
width: 200,
customFn: row => {
return (
<span>
{
row.village?.reduce((pre, cur, index) => (pre + (index === 0 ? "" : "/") + cur.village_name),"")
}
</span>
)
}
formatter: (row, column, cellValue) => cellValue?.reduce((pre, cur, index) => (pre + (index === 0 ? "" : "/") + cur.village_name),"")
},
{
label: "订单产品",
width: 220,
align: "left",
customFn: (row) => {
return (
<div>
{" "}
{row.orders
.map((item) => {
return item.product.name;
})
.toString()}{" "}
</div>
);
},
formatter: (row, column, cellValue) => row.orders?.reduce((pre, cur, index) => (pre + (index === 0 ? "" : ",") + cur.product?.name),""),
},
{
prop: "long_insurances",
width: 140,
label: "长护险回访数",
formatter: (row, column, cellValue) => cellValue?.length ?? 0,
customFn: row => {
return (
<el-popover
@ -565,21 +552,15 @@ export default {
width: 140,
},
{
prop: 'default_address',
label: "默认上门地址",
minWidth: 300,
align: "left",
customFn: (row) => {
return (
<div>
{" "}
{row.customer_address.filter((item) => {
return item.default === 1;
})[0]?.address ||
row.customer_address[0]?.address ||
"无"}{" "}
</div>
);
},
formatter: (row, column, cellValue) => (row.customer_address.find((item) => {
return item.default === 1;
})?.address ||
row.customer_address[0]?.address ||
"无"),
},
{
label: "上门地址数",
@ -590,6 +571,55 @@ export default {
};
},
methods: {
async exportExcel(sheetName) {
let loading;
try {
loading = this.$loading({
lock:true,
background:"rgba(0,0,0,0.4)",
text:"正在导出..."
})
let copySelect = deepCopy(this.select);
copySelect.product_type_id = copySelect?.product_type_id.toString();
const res = await getList(
Object.assign(copySelect, { page: 1, page_size: 9999 }),false
);
if (res.data) {
let headers = this.tableItem.filter(i => i.prop).map((i) => {
return {
key: i.prop,
title: i.label,
formatter: i.formatter
};
});
const data = res.data.data.map((row) =>
headers.map((header) => {
if (header.formatter) {
return header.formatter(row, {}, row[header.key])??''
} else {
return row[header.key]??''
}
})
);
data.unshift(headers.map((header) => header.title));
const wb = XLSX.utils.book_new();
const ws = XLSX.utils.aoa_to_sheet(data);
XLSX.utils.book_append_sheet(wb, ws, sheetName.toString());
const wbout = XLSX.write(wb, {
bookType: "xlsx",
bookSST: true,
type: "array",
});
saveAs(
new Blob([wbout], { type: "application/octet-stream" }),
`${sheetName.toString()}.xlsx`
);
loading.close()
}
} catch (err) {
loading.close()
}
},
save,
async getLevelTypes() {
const types = await getparameter(

Loading…
Cancel
Save