|
@@ -29,6 +29,10 @@
|
|
|
<span class="two_line_ellipsis">{{ row.followUpContent }}</span>
|
|
<span class="two_line_ellipsis">{{ row.followUpContent }}</span>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
|
|
+ <template #lastFollowDatetime="{row}">
|
|
|
|
|
+ {{ row.lastFollowDatetime || '-' }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+
|
|
|
<template #operation="{row}">
|
|
<template #operation="{row}">
|
|
|
<div class="table_row_option">
|
|
<div class="table_row_option">
|
|
|
<span class="option_button_editor" @click="OpenFormDialog(row)">编辑</span>
|
|
<span class="option_button_editor" @click="OpenFormDialog(row)">编辑</span>
|
|
@@ -86,29 +90,31 @@ const searchParams = ref({
|
|
|
queryStr:'',
|
|
queryStr:'',
|
|
|
})
|
|
})
|
|
|
const provinceConfig = ref([]) //省份的配置列表
|
|
const provinceConfig = ref([]) //省份的配置列表
|
|
|
|
|
+const memberConfigList = ref([]) //所有的人员配置列表
|
|
|
|
|
+
|
|
|
|
|
|
|
|
// 获取头部筛选配置
|
|
// 获取头部筛选配置
|
|
|
const GetHeaderSearchOptions = async ()=>{
|
|
const GetHeaderSearchOptions = async ()=>{
|
|
|
let res = await getPrivateHeaderSearchParamsApi()
|
|
let res = await getPrivateHeaderSearchParamsApi()
|
|
|
if(res?.code == 200){
|
|
if(res?.code == 200){
|
|
|
const { groupData, memberData, regionData, stageData, typeData} = res.data
|
|
const { groupData, memberData, regionData, stageData, typeData} = res.data
|
|
|
- let typeDataOption = typeData?.slice(1)?.map(item=>{
|
|
|
|
|
|
|
+ let typeDataOption = typeData?.map(item=>{
|
|
|
return {
|
|
return {
|
|
|
label:item.name,
|
|
label:item.name,
|
|
|
value:item.id
|
|
value:item.id
|
|
|
}
|
|
}
|
|
|
}) || []
|
|
}) || []
|
|
|
- let stageOption = stageData?.slice(1)?.map(item=>{
|
|
|
|
|
|
|
+ let stageOption = stageData?.map(item=>{
|
|
|
return {
|
|
return {
|
|
|
label:item.name,
|
|
label:item.name,
|
|
|
value:item.id
|
|
value:item.id
|
|
|
}
|
|
}
|
|
|
}) || []
|
|
}) || []
|
|
|
- provinceConfig.value = regionData?.slice(1)?.map(item=>{
|
|
|
|
|
|
|
+ provinceConfig.value = regionData?.map(item=>{
|
|
|
return {
|
|
return {
|
|
|
label:item.name,
|
|
label:item.name,
|
|
|
value:item.id,
|
|
value:item.id,
|
|
|
- subData:item.subData?.slice(1)?.map(city=>{
|
|
|
|
|
|
|
+ subData:item.subData?.map(city=>{
|
|
|
return {
|
|
return {
|
|
|
label:city.name,
|
|
label:city.name,
|
|
|
value:city.id
|
|
value:city.id
|
|
@@ -122,17 +128,20 @@ const GetHeaderSearchOptions = async ()=>{
|
|
|
}).flat() || []
|
|
}).flat() || []
|
|
|
|
|
|
|
|
|
|
|
|
|
- let groupDataOption = groupData?.slice(1)?.map(item=>{
|
|
|
|
|
|
|
+ let groupDataOption = groupData?.map(item=>{
|
|
|
return {
|
|
return {
|
|
|
label:item.name,
|
|
label:item.name,
|
|
|
value:item.id,
|
|
value:item.id,
|
|
|
}
|
|
}
|
|
|
}) || []
|
|
}) || []
|
|
|
|
|
|
|
|
- let personOption = memberData?.slice(1)?.map(item=>{
|
|
|
|
|
|
|
+ memberConfigList.value = memberData?.map(item=>{
|
|
|
return{
|
|
return{
|
|
|
label:item.username,
|
|
label:item.username,
|
|
|
value:item.id,
|
|
value:item.id,
|
|
|
|
|
+ groupIds:item.groupIds || [],
|
|
|
|
|
+ cityIds:item.cityIds || [],
|
|
|
|
|
+ provinceIds:item.provinceIds || []
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
@@ -176,7 +185,7 @@ const GetHeaderSearchOptions = async ()=>{
|
|
|
case 'personnel':
|
|
case 'personnel':
|
|
|
item.options = [
|
|
item.options = [
|
|
|
{ label: '全部', value: 'all' },
|
|
{ label: '全部', value: 'all' },
|
|
|
- ...personOption,
|
|
|
|
|
|
|
+ ...memberConfigList.value,
|
|
|
]
|
|
]
|
|
|
item.defaultValue = searchParams.value[item.key]
|
|
item.defaultValue = searchParams.value[item.key]
|
|
|
break
|
|
break
|
|
@@ -193,7 +202,9 @@ const HandleBlockSearchChange = (params,key)=>{
|
|
|
...params
|
|
...params
|
|
|
}
|
|
}
|
|
|
if(key == 'province'){
|
|
if(key == 'province'){
|
|
|
- let cityOption = []
|
|
|
|
|
|
|
+ let cityOption = [] //市区配置
|
|
|
|
|
+ let filterProvinceMemberOption = [] //人员配置
|
|
|
|
|
+
|
|
|
if(searchParams.value.province !== 'all'){
|
|
if(searchParams.value.province !== 'all'){
|
|
|
// 重新修改当前市区的 配置
|
|
// 重新修改当前市区的 配置
|
|
|
cityOption = provinceConfig.value.find(item=>{
|
|
cityOption = provinceConfig.value.find(item=>{
|
|
@@ -204,6 +215,13 @@ const HandleBlockSearchChange = (params,key)=>{
|
|
|
return item.subData
|
|
return item.subData
|
|
|
}).flat() || []
|
|
}).flat() || []
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 过滤当前 省+分组 下的人员
|
|
|
|
|
+ filterProvinceMemberOption = memberConfigList.value.filter(item=>{
|
|
|
|
|
+ return (params.group == 'all' ? 1 : item.groupIds.includes(params.group))
|
|
|
|
|
+ && (params.province == 'all' ? 1 : item.provinceIds.includes(params.province) )
|
|
|
|
|
+ }) || []
|
|
|
|
|
+
|
|
|
headerSearchList.value = headerSearchList.value.map(item=>{
|
|
headerSearchList.value = headerSearchList.value.map(item=>{
|
|
|
switch(item.key){
|
|
switch(item.key){
|
|
|
case 'city':
|
|
case 'city':
|
|
@@ -211,6 +229,14 @@ const HandleBlockSearchChange = (params,key)=>{
|
|
|
{ label: '全部', value: 'all' },
|
|
{ label: '全部', value: 'all' },
|
|
|
...cityOption,
|
|
...cityOption,
|
|
|
]
|
|
]
|
|
|
|
|
+ item.defaultValue = 'all'
|
|
|
|
|
+ break
|
|
|
|
|
+ case 'personnel':
|
|
|
|
|
+ item.options = [
|
|
|
|
|
+ { label: '全部', value: 'all' },
|
|
|
|
|
+ ...filterProvinceMemberOption,
|
|
|
|
|
+ ]
|
|
|
|
|
+ item.defaultValue = 'all'
|
|
|
break
|
|
break
|
|
|
default:
|
|
default:
|
|
|
item.defaultValue = searchParams.value[item.key]
|
|
item.defaultValue = searchParams.value[item.key]
|
|
@@ -218,6 +244,55 @@ const HandleBlockSearchChange = (params,key)=>{
|
|
|
return item
|
|
return item
|
|
|
})
|
|
})
|
|
|
searchParams.value.city = 'all'
|
|
searchParams.value.city = 'all'
|
|
|
|
|
+ searchParams.value.personnel = 'all'
|
|
|
|
|
+ }else if(key == 'city'){
|
|
|
|
|
+ let filterCityMemberOption = [] //人员配置
|
|
|
|
|
+
|
|
|
|
|
+ // 过滤当前 省+地区+分组 下的人员
|
|
|
|
|
+ filterCityMemberOption = memberConfigList.value.filter(item=>{
|
|
|
|
|
+ return (params.group == 'all' ? 1 : item.groupIds.includes(params.group) )
|
|
|
|
|
+ && (params.province == 'all' ? 1 : item.provinceIds.includes(params.province) )
|
|
|
|
|
+ && (params.city == 'all' ? 1 : item.cityIds.includes(params.city) )
|
|
|
|
|
+ }) || []
|
|
|
|
|
+
|
|
|
|
|
+ headerSearchList.value = headerSearchList.value.map(item=>{
|
|
|
|
|
+ switch(item.key){
|
|
|
|
|
+ case 'personnel':
|
|
|
|
|
+ item.options = [
|
|
|
|
|
+ { label: '全部', value: 'all' },
|
|
|
|
|
+ ...filterCityMemberOption,
|
|
|
|
|
+ ]
|
|
|
|
|
+ item.defaultValue = 'all'
|
|
|
|
|
+ break
|
|
|
|
|
+ default:
|
|
|
|
|
+ item.defaultValue = searchParams.value[item.key]
|
|
|
|
|
+ }
|
|
|
|
|
+ return item
|
|
|
|
|
+ })
|
|
|
|
|
+ searchParams.value.personnel = 'all'
|
|
|
|
|
+ }else if(key == 'group'){
|
|
|
|
|
+ let filterMemberOption = []
|
|
|
|
|
+
|
|
|
|
|
+ filterMemberOption = memberConfigList.value.filter(item=>{
|
|
|
|
|
+ return (params.group == 'alll' ? 1 : item.groupIds.includes(params.group))
|
|
|
|
|
+ }) || []
|
|
|
|
|
+
|
|
|
|
|
+ // 这里边的 分组变更的时候,需要 过滤对应分组下的人员
|
|
|
|
|
+ headerSearchList.value = headerSearchList.value.map(item=>{
|
|
|
|
|
+ switch(item.key){
|
|
|
|
|
+ case 'personnel':
|
|
|
|
|
+ item.options = [
|
|
|
|
|
+ { label: '全部', value: 'all' },
|
|
|
|
|
+ ...filterMemberOption,
|
|
|
|
|
+ ]
|
|
|
|
|
+ item.defaultValue = 'all'
|
|
|
|
|
+ break
|
|
|
|
|
+ default:
|
|
|
|
|
+ item.defaultValue = searchParams.value[item.key]
|
|
|
|
|
+ }
|
|
|
|
|
+ return item
|
|
|
|
|
+ })
|
|
|
|
|
+ searchParams.value.personnel = 'all'
|
|
|
}
|
|
}
|
|
|
GetCustomerList()
|
|
GetCustomerList()
|
|
|
}
|
|
}
|