【招生小程序】 优化# 主账号-团队:数据简报移除新增客户,添加线索未领取数量
parent
d06d3f7c78
commit
1d966f3d10
|
@ -31,7 +31,7 @@
|
||||||
<text class="text-muted w-[128rpx]">跟进时间</text>
|
<text class="text-muted w-[128rpx]">跟进时间</text>
|
||||||
<text class="flex-1">{{ item.followUpTime }}</text>
|
<text class="flex-1">{{ item.followUpTime }}</text>
|
||||||
</view>
|
</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="text-muted w-[128rpx]">招生老师</text>
|
||||||
<text class="flex-1">{{ item.recruitTeacherName }}</text>
|
<text class="flex-1">{{ item.recruitTeacherName }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
@ -39,17 +39,33 @@
|
||||||
<text class="text-muted w-[128rpx]">领取时间</text>
|
<text class="text-muted w-[128rpx]">领取时间</text>
|
||||||
<text class="flex-1">{{ item.getTime }}</text>
|
<text class="flex-1">{{ item.getTime }}</text>
|
||||||
</view>
|
</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="text-muted w-[128rpx]">状态</text>
|
||||||
<text class="flex-1 text-orage">{{ parseStateText }}</text>
|
<text class="flex-1 text-orage">{{ parseStateText }}</text>
|
||||||
</view>
|
</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>
|
<text class="text-muted w-[128rpx]">备注</text>
|
||||||
<view class="flex gap-[12rpx] flex-1">
|
<view class="flex gap-[12rpx] flex-1">
|
||||||
<text class="text-error">{{ item.remark }}</text>
|
<text class="text-error">{{ item.remark }}</text>
|
||||||
</view>
|
</view>
|
||||||
</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="text-muted w-[128rpx]">成交时间</text>
|
||||||
<text class="flex-1">{{ item.accomplishTime }}</text>
|
<text class="flex-1">{{ item.accomplishTime }}</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
|
@ -115,8 +115,8 @@ const handleSubmit = () => {
|
||||||
}
|
}
|
||||||
await apiAddCluseProgress(data)
|
await apiAddCluseProgress(data)
|
||||||
toast('添加进展成功')
|
toast('添加进展成功')
|
||||||
uni.navigateBack()
|
|
||||||
uni.$emit('refreshPage')
|
uni.$emit('refreshPage')
|
||||||
|
uni.navigateBack()
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -68,7 +68,7 @@ const dateDropdownPickerRef = ref<InstanceType<typeof dateDropdownPicker>>()
|
||||||
const teamDropdownRef = ref<InstanceType<typeof selectDropdown>>()
|
const teamDropdownRef = ref<InstanceType<typeof selectDropdown>>()
|
||||||
const orgDropdownRef = ref<InstanceType<typeof selectDropdown>>()
|
const orgDropdownRef = ref<InstanceType<typeof selectDropdown>>()
|
||||||
const uDropdownRef = ref()
|
const uDropdownRef = ref()
|
||||||
const defaultValue = ref() //保存组织默认值
|
const defaultValue = ref('') //保存组织默认值
|
||||||
const organizationList = ref([])
|
const organizationList = ref([])
|
||||||
|
|
||||||
const localValue = computed({
|
const localValue = computed({
|
||||||
|
|
|
@ -45,12 +45,12 @@ interface ICluseStatus {
|
||||||
const data = ref<ICluseStatus[]>([])
|
const data = ref<ICluseStatus[]>([])
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const dataMap: Record<string, string> = {
|
const dataMap: Record<string, string> = {
|
||||||
unclaimedCount: '待领取',
|
unclaimed: '待领取',
|
||||||
conversionCount: '转化中',
|
conversion: '转化中',
|
||||||
addedCount: '已添加',
|
added: '已添加',
|
||||||
abnormalCount: '异常待处理',
|
abnormal: '异常待处理',
|
||||||
tradedCount: '已成交',
|
traded: '已成交',
|
||||||
failCount: '已战败'
|
fail: '已战败'
|
||||||
}
|
}
|
||||||
const fetchData = async (payload: IForm) => {
|
const fetchData = async (payload: IForm) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
|
@ -59,7 +59,7 @@ const fetchData = async (payload: IForm) => {
|
||||||
data.value = Object.keys(dataMap).map(item => {
|
data.value = Object.keys(dataMap).map(item => {
|
||||||
return {
|
return {
|
||||||
label: dataMap[item],
|
label: dataMap[item],
|
||||||
value: result[item] * 100 || 0
|
value: parseFloat(result[item].replace('%', '')) || 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(data.value)
|
console.log(data.value)
|
||||||
|
|
|
@ -40,12 +40,13 @@ const fetchData = async (payload: IForm) => {
|
||||||
const result = await convertedSuccessApi(payload)
|
const result = await convertedSuccessApi(payload)
|
||||||
console.log(result)
|
console.log(result)
|
||||||
data.value = result.map(item => {
|
data.value = result.map(item => {
|
||||||
const { clientCount, clueCount, percentConversion } = item.leadToCustomerStatisticsVo
|
const { transactionClient, clueCount, percentConversion } =
|
||||||
|
item.leadToCustomerStatisticsVo
|
||||||
return {
|
return {
|
||||||
name: item.organizationName,
|
name: item.organizationName,
|
||||||
children: [
|
children: [
|
||||||
{ label: '线索', value: clueCount ?? 0 + '个' },
|
{ label: '线索', value: clueCount ?? 0 + '个' },
|
||||||
{ label: '成交客户', value: clientCount ?? 0 + '个' },
|
{ label: '成交客户', value: transactionClient ?? 0 + '个' },
|
||||||
{ label: '转化率', value: percentConversion }
|
{ label: '转化率', value: percentConversion }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,8 @@ const loading = ref(false)
|
||||||
const data = ref<DataItem[]>([])
|
const data = ref<DataItem[]>([])
|
||||||
const dataMap: Record<string, string> = {
|
const dataMap: Record<string, string> = {
|
||||||
followUpRecord: '新增跟进',
|
followUpRecord: '新增跟进',
|
||||||
newCustomer: '新增客户',
|
// newCustomer: '新增客户',
|
||||||
|
unclaimedQuantity: '未领取',
|
||||||
transactionClient: '成交客户',
|
transactionClient: '成交客户',
|
||||||
convertingClient: '转化中客户',
|
convertingClient: '转化中客户',
|
||||||
exceptionPending: '异常待处理',
|
exceptionPending: '异常待处理',
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<view @click="handleClick">
|
<view @click.stop="handleClick">
|
||||||
<slot>复制</slot>
|
<slot>复制</slot>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "xy-copy",
|
name: 'xy-copy',
|
||||||
props: {
|
props: {
|
||||||
content: {
|
content: {
|
||||||
type: String,
|
type: String,
|
||||||
|
@ -23,48 +23,47 @@ export default {
|
||||||
emits: ['success'],
|
emits: ['success'],
|
||||||
methods: {
|
methods: {
|
||||||
handleClick() {
|
handleClick() {
|
||||||
let content = this.content;
|
let content = this.content
|
||||||
if (!content) {
|
if (!content) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '暂无',
|
title: '暂无',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration: 2000,
|
duration: 2000
|
||||||
});
|
})
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串
|
content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串
|
||||||
/**
|
/**
|
||||||
* 小程序端 和 app端的复制逻辑
|
* 小程序端 和 app端的复制逻辑
|
||||||
*/
|
*/
|
||||||
let that = this;
|
let that = this
|
||||||
uni.setClipboardData({
|
uni.setClipboardData({
|
||||||
data: content,
|
data: content,
|
||||||
success: function() {
|
success: function () {
|
||||||
if (that.alertStyle == 'modal') {
|
if (that.alertStyle == 'modal') {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
content: that.notice
|
content: that.notice
|
||||||
});
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: that.notice,
|
title: that.notice,
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
that.$emit('success');
|
that.$emit('success')
|
||||||
},
|
},
|
||||||
fail:function(){
|
fail: function () {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '复制失败',
|
title: '复制失败',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
duration:3000,
|
duration: 3000
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped></style>
|
||||||
</style>
|
|
||||||
|
|
Loading…
Reference in New Issue