修改线索池和客户池

This commit is contained in:
lcc
2025-07-26 23:19:45 +08:00
parent 124ec7b193
commit 29d12cf324
4 changed files with 332 additions and 162 deletions
@@ -38,6 +38,7 @@
</el-form-item>
<el-form-item label="商业保险单:">
<el-image
v-if="form.businessImg"
style="width: 200px; height: 200px"
:src="form.businessImg"
:preview-src-list="[form.businessImg]"
+14
View File
@@ -27,3 +27,17 @@ export async function pageProvinceBiz(params) {
});
return res.data;
}
export async function pageCenterList(params) {
const res = await request.get('/common/centerList', {
params
});
return res.data;
}
export async function pageOrgNameList(params) {
const res = await request.get('/common/orgNameList', {
params
});
return res.data;
}
+160 -83
View File
@@ -4,55 +4,76 @@
<!-- 搜索表单 -->
<el-form label-width="77px" class="ele-form-search">
<el-row :gutter="15">
<el-col :md="6" :sm="12">
<el-form-item label="客户:">
<el-input
placeholder="请输入手机号"
clearable
v-model="where.title"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="客户编号:">
<el-input
placeholder="请输入客户编号"
clearable
v-model="where.sid"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="线索状态:">
<el-select clearable v-model="where.status" class="ele-block">
<el-option
v-for="(item, index) in statusList"
:key="index"
:value="item.value"
:label="item.label"
<el-row :gutter="15">
<el-col :md="6" :sm="12">
<el-form-item label="线索编号:">
<el-input
placeholder="请输入线索编号"
clearable
v-model="where.sid"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="地区:">
<regions-select
v-model="where.citys"
type="provinceCity"
placeholder="请选择省市"
class="ele-fluid"
/>
</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-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="手机号码:">
<el-input
placeholder="请输入手机号"
clearable
v-model="where.title"
/>
</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-select clearable v-model="where.status" class="ele-block">
<el-option
v-for="(item, index) in statusList"
:key="index"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :md="6" :sm="12">
<el-form-item label="所在地区:">
<regions-select
v-model="where.citys"
type="provinceCity"
placeholder="请选择省市"
class="ele-fluid"
/>
</el-form-item>
</el-col>
<el-col
v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }"
>
<el-form-item label="入池时间:">
<el-date-picker
unlink-panels
v-model="where.dateRange"
range-separator="-"
type="daterange"
end-placeholder="结束日期"
start-placeholder="开始日期"
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"
class="ele-fluid"
/>
</el-form-item>
</el-col>
</el-row>
<!--
<el-col :md="6" :sm="12">
<el-form-item label="线索归属:">
@@ -65,8 +86,32 @@
</el-form-item>
</el-col>
-->
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="归属中心">
<el-select v-model="where.centerNumber" clearable>
<el-option
v-for="(item, index) in centerList"
:value="index"
:key="index"
:label="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="归属机构">
<el-select value="" v-model="where.orgName" clearable filterable>
<el-option
v-for="(item, index) in orgNameList"
:value="item"
:key="index"
:label="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="线索归属:">
<el-form-item label="归属人员:">
<el-input
placeholder="请输入工号"
clearable
@@ -74,21 +119,6 @@
/>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
<el-form-item label="筛选日期:">
<el-date-picker
unlink-panels
v-model="where.dateRange"
range-separator="-"
type="daterange"
end-placeholder="结束日期"
start-placeholder="开始日期"
:picker-options="pickerOptions"
value-format="yyyy-MM-dd"
class="ele-fluid"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<div class="ele-form-actions">
<el-button
@@ -115,25 +145,35 @@
<!-- 表头工具栏 -->
<template v-slot:toolbar></template>
<template v-slot:customer="{ row }">
<div>{{ row.name }}</div>
<div>{{ row.mobile }}</div>
<div>{{ row.sid }}</div>
<el-link type="primary" :underline="false" @click="goDetail(row)">
<div>{{ row.name }}</div>
<div>{{ row.mobile }}</div>
<div>{{ row.sid }}</div>
</el-link>
</template>
<template v-slot:belongUserName="{ row }">
<div>{{ row.belongUserName.username }}</div>
<div>{{ row.belongUserName.userCode }}</div>
</template>
<template v-slot:centerNumber="{ row }">
<div>{{ centerList[row.belongUserName.centerNumber] }}</div>
</template>
<template v-slot:orgName="{ row }">
<div>{{ row.belongUserName.orgName }}</div>
</template>
<template v-slot:brandSeries="{ row }">
<div v-for="(item, index) in row.brandList" :key="index">{{
item
}}</div>
</template>
<!-- 操作列 -->
<!--
<template v-slot:action="{ row }">
<el-link type="primary" :underline="false" @click="goDetail(row)">
查看
</el-link>
</template>
-->
</ele-pro-table>
</el-card>
</div>
@@ -143,6 +183,7 @@
import { pageClues, getSearch } from '@/api/receiver/clues';
import RegionsSelect from '@/components/RegionsSelect/index.vue';
import BrandSelect from '@/components/BrandSelect/index.vue';
import { pageCenterList, pageOrgNameList } from '@/api/auto';
export default {
name: 'receiverClues',
@@ -154,16 +195,17 @@
citys: [],
brands: [],
belong: [],
userCode: ''
userCode: '',
centerNumber: '',
orgName: ''
},
// 表格列配置
columns: [
{
prop: 'customer',
label: '线索',
minWidth: 100,
minWidth: 115,
align: 'center',
showOverflowTooltip: true,
fixed: 'left',
slot: 'customer'
},
@@ -175,6 +217,22 @@
minWidth: 80,
slot: 'belongUserName'
},
{
prop: 'centerNumber',
label: '中心',
align: 'center',
showOverflowTooltip: true,
minWidth: 50,
slot: 'centerNumber'
},
{
prop: 'orgName',
label: '机构',
align: 'center',
showOverflowTooltip: true,
minWidth: 50,
slot: 'orgName'
},
{
prop: 'brandSeries',
label: '关注车型',
@@ -189,23 +247,19 @@
label: '状态',
align: 'center',
showOverflowTooltip: true,
minWidth: 80
minWidth: 50
},
{
prop: 'poi',
label: '所属地区',
align: 'center'
},
{
prop: 'enTime',
label: '日期',
label: '入池时间',
align: 'center',
minWidth: 80,
resizable: false,
showOverflowTooltip: true
},
{
columnKey: 'action',
label: '操作',
width: 200,
align: 'center',
resizable: false,
slot: 'action'
resizable: false
}
],
// 表格选中数据
@@ -265,11 +319,15 @@
]
},
belongOptions: [],
statusList: []
statusList: [],
centerList: [],
orgNameList: []
};
},
created() {
this.loadSearch();
this.loadCenterList();
this.loadOrgNameList();
},
computed: {
// 是否开启响应式布局
@@ -278,6 +336,24 @@
}
},
methods: {
loadOrgNameList() {
pageOrgNameList()
.then((data) => {
this.orgNameList = data;
})
.catch((e) => {
this.$message.error(e.message);
});
},
loadCenterList() {
pageCenterList()
.then((data) => {
this.centerList = data;
})
.catch((e) => {
this.$message.error(e.message);
});
},
loadSearch() {
getSearch()
.then((data) => {
@@ -325,6 +401,7 @@
/* 重置搜索 */
reset() {
this.where = {};
this.reload();
}
}
};
+157 -79
View File
@@ -4,15 +4,6 @@
<!-- 搜索表单 -->
<el-form label-width="77px" class="ele-form-search">
<el-row :gutter="15">
<el-col :md="6" :sm="12">
<el-form-item label="客户:">
<el-input
placeholder="请输入手机号"
clearable
v-model="where.title"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="客户编号:">
<el-input
@@ -22,6 +13,26 @@
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="手机号:">
<el-input
placeholder="请输入手机号"
clearable
v-model="where.title"
/>
</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-row>
<el-row :gutter="15">
<el-col :md="6" :sm="12">
<el-form-item label="客户状态:">
<el-select clearable v-model="where.status" class="ele-block">
@@ -35,42 +46,12 @@
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<el-form-item label="门店:">
<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: 6, md: 12 } : { span: 6 }">
<el-form-item label="线索归属:">
<el-input
placeholder="请输入工号"
clearable
v-model="where.userCode"
/>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 12, md: 12 } : { span: 12 }">
<el-form-item label="筛选日期:">
<el-form-item label="入池时间:">
<el-date-picker
unlink-panels
v-model="where.dateRange"
@@ -84,6 +65,41 @@
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="归属中心">
<el-select v-model="where.centerNumber" clearable>
<el-option
v-for="(item, index) in centerList"
:value="index"
:key="index"
:label="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="归属机构">
<el-select value="" v-model="where.orgName" clearable filterable>
<el-option
v-for="(item, index) in orgNameList"
:value="item"
:key="index"
:label="item"
/>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="归属人员:">
<el-input
placeholder="请输入工号"
clearable
v-model="where.userCode"
/>
</el-form-item>
</el-col>
<el-col :md="6" :sm="12">
<div class="ele-form-actions">
<el-button
@@ -109,6 +125,23 @@
>
<!-- 表头工具栏 -->
<template v-slot:toolbar></template>
<template v-slot:userName="{ row }">
<el-link type="primary" :underline="false" @click="goDetail(row)">
<div>{{ row.name }}</div>
<div>{{ row.mobile }}</div>
<div>{{ row.cid }}</div>
</el-link>
</template>
<template v-slot:belongUserName="{ row }">
<div>{{ row.belongUserName.username }}</div>
<div>{{ row.belongUserName.userCode }}</div>
</template>
<template v-slot:centerNumber="{ row }">
<div>{{ centerList[row.belongUserName.centerNumber] }}</div>
</template>
<template v-slot:orgName="{ row }">
<div>{{ row.belongUserName.orgName }}</div>
</template>
<template v-slot:biz="{ row }">
<!--
{{ row.biz_poi }} <br />
@@ -119,11 +152,13 @@
}}</div>
</template>
<!-- 操作列 -->
<!--
<template v-slot:action="{ row }">
<el-link type="primary" :underline="false" @click="goMobileList(row)">
查看
</el-link>
</template>
-->
</ele-pro-table>
</el-card>
</div>
@@ -133,6 +168,7 @@
import { pageCustomer, getSearch } from '@/api/receiver/customer';
import BrandSelect from '@/components/BrandSelect/index.vue';
import BizSelect from '@/components/BizSelect/index.vue';
import { pageCenterList, pageOrgNameList } from '@/api/auto';
export default {
name: 'receiverClues',
@@ -144,56 +180,77 @@
cid: '',
citys: [],
brands: [],
belong: [],
bizIds: [],
userCode: ''
userCode: '',
centerNumber: '',
orgName: ''
},
// 表格列配置
columns: [
{
prop: 'cid',
prop: 'userName',
label: '客户',
align: 'center',
showOverflowTooltip: true,
minWidth: 80
minWidth: 120,
slot: 'userName'
},
{
prop: 'mobile',
label: '手机号',
align: 'center',
showOverflowTooltip: true,
minWidth: 80
},
{
prop: 'biz',
label: '所属门店',
prop: 'belongUserName',
label: '归属',
align: 'center',
showOverflowTooltip: true,
minWidth: 80,
slot: 'biz'
slot: 'belongUserName'
},
// {
// prop: 'status_name',
// label: '状态',
// align: 'center',
// showOverflowTooltip: true,
// minWidth: 80
// },
// {
// prop: 'brand_detail',
// label: '关注车型',
// align: 'center',
// minWidth: 80,
// resizable: false,
// showOverflowTooltip: true
// },
{
columnKey: 'action',
label: '操作',
width: 200,
prop: 'centerNumber',
label: '中心',
align: 'center',
resizable: false,
slot: 'action'
showOverflowTooltip: true,
minWidth: 50,
slot: 'centerNumber'
},
{
prop: 'orgName',
label: '机构',
align: 'center',
showOverflowTooltip: true,
minWidth: 50,
slot: 'orgName'
},
{
prop: 'brand_detail',
label: '关注车型',
align: 'center',
minWidth: 80,
resizable: false
},
{
prop: 'biz_name',
label: '所属门店',
align: 'center',
minWidth: 80
},
{
prop: 'status_name',
label: '状态',
align: 'center',
showOverflowTooltip: true,
minWidth: 80
},
{
prop: 'enTime',
label: '入池时间',
align: 'center',
minWidth: 80,
resizable: false
},
{
prop: 'checkStatus',
label: '审核状态',
align: 'center',
minWidth: 80,
resizable: false
}
],
// 表格选中数据
@@ -252,12 +309,15 @@
}
]
},
belongOptions: [],
statusList: []
statusList: [],
centerList: [],
orgNameList: []
};
},
created() {
this.loadSearch();
this.loadCenterList();
this.loadOrgNameList();
},
computed: {
// 是否开启响应式布局
@@ -266,11 +326,28 @@
}
},
methods: {
loadOrgNameList() {
pageOrgNameList()
.then((data) => {
this.orgNameList = data;
})
.catch((e) => {
this.$message.error(e.message);
});
},
loadCenterList() {
pageCenterList()
.then((data) => {
this.centerList = data;
})
.catch((e) => {
this.$message.error(e.message);
});
},
loadSearch() {
getSearch()
.then((data) => {
this.statusList = data.statusList;
this.belongOptions = data.belongList;
})
.catch((e) => {
this.$message.error(e.message);
@@ -302,6 +379,7 @@
/* 重置搜索 */
reset() {
this.where = {};
this.reload();
}
}
};