|
|
|
|
@ -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(
|
|
|
|
|
|