crm:code review 客户画像

This commit is contained in:
YunaiV 2024-04-05 14:43:55 +08:00
parent 8926dd1173
commit 6772568a58
5 changed files with 22 additions and 18 deletions

View File

@ -25,6 +25,7 @@ import {
StatisticsPortraitApi StatisticsPortraitApi
} from '@/api/crm/statistics/portrait' } from '@/api/crm/statistics/portrait'
// TODO @puhui999address area
defineOptions({ name: 'CustomerAddress' }) defineOptions({ name: 'CustomerAddress' })
const props = defineProps<{ queryParams: any }>() // const props = defineProps<{ queryParams: any }>() //
@ -34,7 +35,7 @@ echarts?.registerMap('china', china as any)
const loading = ref(false) // const loading = ref(false) //
const areaStatisticsList = ref<CrmStatisticCustomerAreaRespVO[]>([]) // const areaStatisticsList = ref<CrmStatisticCustomerAreaRespVO[]>([]) //
/** 地图配置 */ /** 地图配置(全部客户) */
const echartsOption = reactive<EChartsOption>({ const echartsOption = reactive<EChartsOption>({
title: { title: {
text: '全部客户', text: '全部客户',
@ -66,7 +67,7 @@ const echartsOption = reactive<EChartsOption>({
] ]
}) as EChartsOption }) as EChartsOption
/** 地图配置 */ /** 地图配置(成交客户) */
const echartsOption2 = reactive<EChartsOption>({ const echartsOption2 = reactive<EChartsOption>({
title: { title: {
text: '成交客户', text: '成交客户',
@ -106,7 +107,7 @@ const loadData = async () => {
areaStatisticsList.value = areaList.map((item: CrmStatisticCustomerAreaRespVO) => { areaStatisticsList.value = areaList.map((item: CrmStatisticCustomerAreaRespVO) => {
return { return {
...item, ...item,
areaName: item.areaName areaName: item.areaName // TODO @puhui999
.replace('维吾尔自治区', '') .replace('维吾尔自治区', '')
.replace('壮族自治区', '') .replace('壮族自治区', '')
.replace('回族自治区', '') .replace('回族自治区', '')
@ -120,6 +121,7 @@ const loadData = async () => {
} }
defineExpose({ loadData }) defineExpose({ loadData })
// TODO @puhui999builder build
const builderLeftMap = () => { const builderLeftMap = () => {
let min = 0 let min = 0
let max = 0 let max = 0
@ -143,6 +145,7 @@ const builderRightMap = () => {
echartsOption2.visualMap!['min'] = min echartsOption2.visualMap!['min'] = min
echartsOption2.visualMap!['max'] = max echartsOption2.visualMap!['max'] = max
} }
/** 初始化 */ /** 初始化 */
onMounted(() => { onMounted(() => {
loadData() loadData()

View File

@ -48,7 +48,7 @@ const props = defineProps<{ queryParams: any }>() // 搜索参数
const loading = ref(false) // const loading = ref(false) //
const list = ref<CrmStatisticCustomerIndustryRespVO[]>([]) // const list = ref<CrmStatisticCustomerIndustryRespVO[]>([]) //
/** 饼图配置 */ /** 饼图配置(全部客户) */
const echartsOption = reactive<EChartsOption>({ const echartsOption = reactive<EChartsOption>({
title: { title: {
text: '全部客户', text: '全部客户',
@ -95,7 +95,8 @@ const echartsOption = reactive<EChartsOption>({
} }
] ]
}) as EChartsOption }) as EChartsOption
/** 饼图配置 */
/** 饼图配置(成交客户) */
const echartsOption2 = reactive<EChartsOption>({ const echartsOption2 = reactive<EChartsOption>({
title: { title: {
text: '成交客户', text: '成交客户',
@ -172,9 +173,8 @@ const loadData = async () => {
loading.value = false loading.value = false
} }
defineExpose({ loadData }) defineExpose({ loadData })
/**
* 计算比例 /** 计算比例 */
*/
const calculateProportion = (sourceList: CrmStatisticCustomerIndustryRespVO[]) => { const calculateProportion = (sourceList: CrmStatisticCustomerIndustryRespVO[]) => {
if (isEmpty(sourceList)) { if (isEmpty(sourceList)) {
return return

View File

@ -48,7 +48,7 @@ const props = defineProps<{ queryParams: any }>() // 搜索参数
const loading = ref(false) // const loading = ref(false) //
const list = ref<CrmStatisticCustomerLevelRespVO[]>([]) // const list = ref<CrmStatisticCustomerLevelRespVO[]>([]) //
/** 饼图配置 */ /** 饼图配置(全部客户) */
const echartsOption = reactive<EChartsOption>({ const echartsOption = reactive<EChartsOption>({
title: { title: {
text: '全部客户', text: '全部客户',
@ -95,7 +95,8 @@ const echartsOption = reactive<EChartsOption>({
} }
] ]
}) as EChartsOption }) as EChartsOption
/** 饼图配置 */
/** 饼图配置(成交客户) */
const echartsOption2 = reactive<EChartsOption>({ const echartsOption2 = reactive<EChartsOption>({
title: { title: {
text: '成交客户', text: '成交客户',
@ -172,9 +173,8 @@ const loadData = async () => {
loading.value = false loading.value = false
} }
defineExpose({ loadData }) defineExpose({ loadData })
/**
* 计算比例 /** 计算比例 */
*/
const calculateProportion = (levelList: CrmStatisticCustomerLevelRespVO[]) => { const calculateProportion = (levelList: CrmStatisticCustomerLevelRespVO[]) => {
if (isEmpty(levelList)) { if (isEmpty(levelList)) {
return return
@ -184,6 +184,7 @@ const calculateProportion = (levelList: CrmStatisticCustomerLevelRespVO[]) => {
const sumCustomerCount = getSumValue(list.map((item) => item.customerCount)) const sumCustomerCount = getSumValue(list.map((item) => item.customerCount))
const sumDealCount = getSumValue(list.map((item) => item.dealCount)) const sumDealCount = getSumValue(list.map((item) => item.dealCount))
list.forEach((item) => { list.forEach((item) => {
// TODO @puhui999使 erpCalculatePercentage
item.levelPortion = item.levelPortion =
item.customerCount === 0 ? 0 : ((item.customerCount / sumCustomerCount) * 100).toFixed(2) item.customerCount === 0 ? 0 : ((item.customerCount / sumCustomerCount) * 100).toFixed(2)
item.dealPortion = item.dealCount === 0 ? 0 : ((item.dealCount / sumDealCount) * 100).toFixed(2) item.dealPortion = item.dealCount === 0 ? 0 : ((item.dealCount / sumDealCount) * 100).toFixed(2)

View File

@ -48,7 +48,7 @@ const props = defineProps<{ queryParams: any }>() // 搜索参数
const loading = ref(false) // const loading = ref(false) //
const list = ref<CrmStatisticCustomerSourceRespVO[]>([]) // const list = ref<CrmStatisticCustomerSourceRespVO[]>([]) //
/** 饼图配置 */ /** 饼图配置(全部客户) */
const echartsOption = reactive<EChartsOption>({ const echartsOption = reactive<EChartsOption>({
title: { title: {
text: '全部客户', text: '全部客户',
@ -95,7 +95,8 @@ const echartsOption = reactive<EChartsOption>({
} }
] ]
}) as EChartsOption }) as EChartsOption
/** 饼图配置 */
/** 饼图配置(成交客户) */
const echartsOption2 = reactive<EChartsOption>({ const echartsOption2 = reactive<EChartsOption>({
title: { title: {
text: '成交客户', text: '成交客户',
@ -173,9 +174,7 @@ const loadData = async () => {
} }
defineExpose({ loadData }) defineExpose({ loadData })
/** /** 计算比例 */
* 计算比例
*/
const calculateProportion = (sourceList: CrmStatisticCustomerSourceRespVO[]) => { const calculateProportion = (sourceList: CrmStatisticCustomerSourceRespVO[]) => {
if (isEmpty(sourceList)) { if (isEmpty(sourceList)) {
return return

View File

@ -85,6 +85,7 @@ import * as UserApi from '@/api/system/user'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import { beginOfDay, defaultShortcuts, endOfDay, formatDate } from '@/utils/formatTime' import { beginOfDay, defaultShortcuts, endOfDay, formatDate } from '@/utils/formatTime'
import { defaultProps, handleTree } from '@/utils/tree' import { defaultProps, handleTree } from '@/utils/tree'
// TODO @puhui999CrmStatisticsPortrait
import CustomerAddress from './components/CustomerAddress.vue' import CustomerAddress from './components/CustomerAddress.vue'
import CustomerIndustry from './components/CustomerIndustry.vue' import CustomerIndustry from './components/CustomerIndustry.vue'
import CustomerSource from './components/CustomerSource.vue' import CustomerSource from './components/CustomerSource.vue'