修改客户筛选

This commit is contained in:
lcc
2025-07-15 14:13:27 +08:00
parent ab3b894a3f
commit 1d2679fbee
5 changed files with 187 additions and 11 deletions
+10
View File
@@ -33,3 +33,13 @@ export async function pageCustomerOptLog(params) {
}
return Promise.reject(new Error(res.data.message));
}
export async function getSearch(params) {
const res = await request.get('/receiver/customer/search', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
+96
View File
@@ -0,0 +1,96 @@
<!-- 门店选择组件 -->
<template>
<el-cascader
clearable
filterable
collapse-tags
:value="value"
:options="regionsData"
:placeholder="placeholder"
popper-class="ele-pop-wrap-higher"
:props="props"
@input="updateValue"
/>
</template>
<script>
export default {
name: 'BizSelect',
props: {
value: Array,
placeholder: String,
options: Array,
valueField: {
type: String,
validator: (val) => {
return !val || val === 'label';
}
}
},
data() {
return {
// 级联选择器数据
regionsData: [],
props: {
lazy: true
}
};
},
methods: {
/* 更新 value */
updateValue(value) {
this.$emit('input', value);
},
/* 级联选择器数据 value 处理 */
formatData(data) {
if (this.valueField === 'label') {
return data.map((d) => {
const item = {
label: d.label,
value: d.label
};
if (d.children) {
item.children = d.children.map((c) => {
const cItem = {
label: c.label,
value: c.label
};
if (c.children) {
cItem.children = c.children.map((cc) => {
return {
label: cc.label,
value: cc.label
};
});
}
return cItem;
});
}
return item;
});
} else {
return data;
}
},
/* 省市区数据筛选 */
filterData(data) {
return this.formatData(data);
}
},
watch: {
options: {
handler(options) {
console.log(options);
// this.regionsData = this.filterData(options ?? []);
// if (!options) {
// getRegionsData().then((data) => {
// this.regionsData = this.filterData(data ?? []);
// this.$emit('load-data-done', data);
// });
// }
},
immediate: true
}
}
};
</script>
@@ -3,6 +3,7 @@
<el-cascader
clearable
filterable
collapse-tags
:value="value"
:options="regionsData"
:placeholder="placeholder"
+1 -1
View File
@@ -32,7 +32,7 @@
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="省市:">
<el-form-item label="地区:">
<regions-select
v-model="where.citys"
type="provinceCity"
+79 -10
View File
@@ -13,6 +13,48 @@
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="客户编号:">
<el-input
placeholder="请输入客户编号"
clearable
v-model="where.cid"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="客户状态:">
<el-cascader
v-model="where.status"
:options="statusList"
clearable
></el-cascader>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="门店:">
<biz-select v-model="where.bizIds" />
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="关注车型:">
<brand-select
v-model="where.brands"
type="provinceCity"
:props="{ multiple: true }"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="线索归属:">
<el-cascader
v-model="where.belong"
:options="belongOptions"
:props="{ multiple: true, checkStrictly: true }"
clearable
></el-cascader>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
<el-form-item label="筛选日期:">
<el-date-picker
@@ -69,23 +111,32 @@
</template>
<script>
import { pageCustomer } from '@/api/receiver/customer';
import { pageCustomer, getSearch } from '@/api/receiver/customer';
import BrandSelect from '@/components/BrandSelect/index.vue';
import BizSelect from '@/components/BizSelect/index.vue';
export default {
name: 'receiverClues',
components: {},
components: { BrandSelect, BizSelect },
data() {
return {
where: {
title: '',
selectedCar: {
brandId: '',
seriesId: '',
modelId: ''
}
cid: '',
citys: [],
brands: [],
belong: [],
bizIds: []
},
// 表格列配置
columns: [
{
prop: 'cid',
label: '编号',
align: 'center',
showOverflowTooltip: true,
minWidth: 80
},
{
prop: 'mobile',
label: '客户',
@@ -180,10 +231,14 @@
}
}
]
}
},
belongOptions: [],
statusList: []
};
},
created() {},
created() {
this.loadSearch();
},
computed: {
// 是否开启响应式布局
styleResponsive() {
@@ -191,6 +246,16 @@
}
},
methods: {
loadSearch() {
getSearch()
.then((data) => {
this.statusList = data.statusList;
this.belongOptions = data.belongList;
})
.catch((e) => {
this.$message.error(e.message);
});
},
/* 下拉按钮点击 */
dropClick(command, row) {
if (command === 'edit') {
@@ -231,4 +296,8 @@
}
};
</script>
<style scoped></style>
<style scoped>
::v-deep .el-cascader .el-cascader__tags .el-cascader__search-input {
display: none;
}
</style>