【招生小程序】 优化# 主账号-团队:数据简报移除新增客户,添加线索未领取数量

master
kaeery 2025-03-07 21:40:29 +08:00
parent d06d3f7c78
commit 1d966f3d10
7 changed files with 75 additions and 58 deletions

View File

@ -31,7 +31,7 @@
<text class="text-muted w-[128rpx]">跟进时间</text>
<text class="flex-1">{{ item.followUpTime }}</text>
</view>
<view class="flex gap-[20rpx] mb-[16rpx]">
<view class="flex gap-[20rpx] mb-[16rpx]" v-if="item.recruitTeacherId !== null">
<text class="text-muted w-[128rpx]">招生老师</text>
<text class="flex-1">{{ item.recruitTeacherName }}</text>
</view>
@ -39,17 +39,33 @@
<text class="text-muted w-[128rpx]">领取时间</text>
<text class="flex-1">{{ item.getTime }}</text>
</view>
<view class="flex gap-[20rpx] mb-[16rpx]">
<view
class="flex gap-[20rpx] mb-[16rpx]"
v-if="
(item.situation == converStatusEnum.ADD_RELATION ||
item.situation == converStatusEnum.EXCEPTION) &&
item.state !== null
"
>
<text class="text-muted w-[128rpx]">状态</text>
<text class="flex-1 text-orage">{{ parseStateText }}</text>
</view>
<view class="flex gap-[20rpx] mb-[16rpx]">
<view
class="flex gap-[20rpx] mb-[16rpx]"
v-if="
item.situation == converStatusEnum.CONVERTED ||
item.situation == converStatusEnum.FAILED
"
>
<text class="text-muted w-[128rpx]">备注</text>
<view class="flex gap-[12rpx] flex-1">
<text class="text-error">{{ item.remark }}</text>
</view>
</view>
<view class="flex gap-[20rpx] mb-[16rpx]">
<view
class="flex gap-[20rpx] mb-[16rpx]"
v-if="item.situation == converStatusEnum.CONVERTED"
>
<text class="text-muted w-[128rpx]">成交时间</text>
<text class="flex-1">{{ item.accomplishTime }}</text>
</view>

View File

@ -115,8 +115,8 @@ const handleSubmit = () => {
}
await apiAddCluseProgress(data)
toast('添加进展成功')
uni.navigateBack()
uni.$emit('refreshPage')
uni.navigateBack()
} catch (error) {}
}
})

View File

@ -68,7 +68,7 @@ const dateDropdownPickerRef = ref<InstanceType<typeof dateDropdownPicker>>()
const teamDropdownRef = ref<InstanceType<typeof selectDropdown>>()
const orgDropdownRef = ref<InstanceType<typeof selectDropdown>>()
const uDropdownRef = ref()
const defaultValue = ref() //
const defaultValue = ref('') //
const organizationList = ref([])
const localValue = computed({

View File

@ -45,12 +45,12 @@ interface ICluseStatus {
const data = ref<ICluseStatus[]>([])
const loading = ref(false)
const dataMap: Record<string, string> = {
unclaimedCount: '待领取',
conversionCount: '转化中',
addedCount: '已添加',
abnormalCount: '异常待处理',
tradedCount: '已成交',
failCount: '已战败'
unclaimed: '待领取',
conversion: '转化中',
added: '已添加',
abnormal: '异常待处理',
traded: '已成交',
fail: '已战败'
}
const fetchData = async (payload: IForm) => {
loading.value = true
@ -59,7 +59,7 @@ const fetchData = async (payload: IForm) => {
data.value = Object.keys(dataMap).map(item => {
return {
label: dataMap[item],
value: result[item] * 100 || 0
value: parseFloat(result[item].replace('%', '')) || 0
}
})
console.log(data.value)

View File

@ -40,12 +40,13 @@ const fetchData = async (payload: IForm) => {
const result = await convertedSuccessApi(payload)
console.log(result)
data.value = result.map(item => {
const { clientCount, clueCount, percentConversion } = item.leadToCustomerStatisticsVo
const { transactionClient, clueCount, percentConversion } =
item.leadToCustomerStatisticsVo
return {
name: item.organizationName,
children: [
{ label: '线索', value: clueCount ?? 0 + '个' },
{ label: '成交客户', value: clientCount ?? 0 + '个' },
{ label: '成交客户', value: transactionClient ?? 0 + '个' },
{ label: '转化率', value: percentConversion }
]
}

View File

@ -36,7 +36,8 @@ const loading = ref(false)
const data = ref<DataItem[]>([])
const dataMap: Record<string, string> = {
followUpRecord: '新增跟进',
newCustomer: '新增客户',
// newCustomer: '',
unclaimedQuantity: '未领取',
transactionClient: '成交客户',
convertingClient: '转化中客户',
exceptionPending: '异常待处理',

View File

@ -1,11 +1,11 @@
<template>
<view @click="handleClick">
<view @click.stop="handleClick">
<slot>复制</slot>
</view>
</template>
<script>
export default {
name: "xy-copy",
name: 'xy-copy',
props: {
content: {
type: String,
@ -23,20 +23,20 @@ export default {
emits: ['success'],
methods: {
handleClick() {
let content = this.content;
let content = this.content
if (!content) {
uni.showToast({
title: '暂无',
icon: 'none',
duration: 2000,
});
return false;
duration: 2000
})
return false
}
content = typeof content === 'string' ? content : content.toString() //
/**
* 小程序端 app端的复制逻辑
*/
let that = this;
let that = this
uni.setClipboardData({
data: content,
success: function () {
@ -44,27 +44,26 @@ export default {
uni.showModal({
title: '提示',
content: that.notice
});
})
} else {
uni.showToast({
title: that.notice,
icon: 'none'
});
})
}
that.$emit('success');
that.$emit('success')
},
fail: function () {
uni.showToast({
title: '复制失败',
icon: 'none',
duration:3000,
});
duration: 3000
})
}
});
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<style lang="scss" scoped></style>