【招生平台用户端】 新增# 线索列表接口
parent
889efd326d
commit
8cf9f6e0ea
|
@ -0,0 +1,10 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 线索详情
|
||||||
|
export function clueDetail(params?: any) {
|
||||||
|
return request.get({ url: '/clue/detail', params })
|
||||||
|
}
|
||||||
|
// 线索列表
|
||||||
|
export function clueLists(params?: any) {
|
||||||
|
return request.get({ url: '/clue/list', params })
|
||||||
|
}
|
|
@ -10,3 +10,21 @@ export enum isDisabledEnum {
|
||||||
YES = 1,
|
YES = 1,
|
||||||
NO = 0
|
NO = 0
|
||||||
}
|
}
|
||||||
|
export enum converStatusEnum {
|
||||||
|
INTENTION = 0, //有意向
|
||||||
|
UN_RECEIVED = 1, //待领取
|
||||||
|
CONVERTED_PROCESS = 2, //转化中
|
||||||
|
ADD_RELATION = 3, //已添加
|
||||||
|
EXCEPTION = 4, //异常待处理
|
||||||
|
CONVERTED = 5, //已成交
|
||||||
|
FAILED = 6 //已战败
|
||||||
|
}
|
||||||
|
export const conversionMap = {
|
||||||
|
[converStatusEnum.INTENTION]: '有意向',
|
||||||
|
[converStatusEnum.UN_RECEIVED]: '待领取',
|
||||||
|
[converStatusEnum.CONVERTED_PROCESS]: '转化中',
|
||||||
|
[converStatusEnum.ADD_RELATION]: '已添加',
|
||||||
|
[converStatusEnum.EXCEPTION]: '异常待处理',
|
||||||
|
[converStatusEnum.CONVERTED]: '已成交',
|
||||||
|
[converStatusEnum.FAILED]: '已战败'
|
||||||
|
}
|
||||||
|
|
|
@ -17,14 +17,16 @@ const loading = ref(false)
|
||||||
watch(
|
watch(
|
||||||
() => props.modelValue,
|
() => props.modelValue,
|
||||||
() => {
|
() => {
|
||||||
console.log('基础信息')
|
fetchClueDetail()
|
||||||
loading.value = true
|
|
||||||
setTimeout(() => {
|
|
||||||
loading.value = false
|
|
||||||
}, 500)
|
|
||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
|
const fetchClueDetail = () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
} catch (error) {}
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
const baseInfo = ref([
|
const baseInfo = ref([
|
||||||
{
|
{
|
||||||
title: '线索基本信息',
|
title: '线索基本信息',
|
||||||
|
|
|
@ -14,16 +14,16 @@
|
||||||
import searchForm from './modules/search-form.vue'
|
import searchForm from './modules/search-form.vue'
|
||||||
import clueList from './modules/clue-list.vue'
|
import clueList from './modules/clue-list.vue'
|
||||||
import clueDetail from './modules/clue-detail.vue'
|
import clueDetail from './modules/clue-detail.vue'
|
||||||
import { postLists } from '@/api/org/post'
|
|
||||||
import { usePaging } from '@/hooks/usePaging'
|
import { usePaging } from '@/hooks/usePaging'
|
||||||
|
import { clueLists } from '@/api/clue'
|
||||||
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
name: '',
|
likeWork: '',
|
||||||
conversionStatus: ''
|
situation: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const { pager, getLists, resetPage, resetParams } = usePaging({
|
const { pager, getLists, resetPage, resetParams } = usePaging({
|
||||||
fetchFun: postLists,
|
fetchFun: clueLists,
|
||||||
params: queryParams
|
params: queryParams
|
||||||
})
|
})
|
||||||
getLists()
|
getLists()
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<el-card shadow="never" class="!border-none mt-4">
|
<el-card shadow="never" class="!border-none mt-4">
|
||||||
<ProTable ref="proTableRef" :columns="columns" :tableData="tableData" :loading="loading" :maxHeight="530">
|
<ProTable ref="proTableRef" :columns="columns" :tableData="tableData" :loading="loading" :maxHeight="530">
|
||||||
|
<template #listSource="{ row }">
|
||||||
|
<span>{{ parseClueSource(row.listSource) }}</span>
|
||||||
|
</template>
|
||||||
|
<template #situation="{ row }">
|
||||||
|
<span>{{ parseConversion(row.situation) }}</span>
|
||||||
|
</template>
|
||||||
<template #operation="{ row }">
|
<template #operation="{ row }">
|
||||||
<slot name="operation" :row="row" />
|
<slot name="operation" :row="row" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -9,6 +15,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { converStatusEnum, conversionMap } from '@/enums'
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
loading: {
|
loading: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
@ -21,14 +29,20 @@ defineProps({
|
||||||
})
|
})
|
||||||
const proTableRef = ref()
|
const proTableRef = ref()
|
||||||
const columns = reactive([
|
const columns = reactive([
|
||||||
{ prop: 'accountName', label: '学生名字', width: 180 },
|
{ prop: 'studentName', label: '学生名字', width: 180 },
|
||||||
{ prop: 'mobile', label: '联系电话', width: 180 },
|
{ prop: 'phone', label: '联系电话', width: 180 },
|
||||||
{ prop: 'organization', label: '电销老师', width: 180 },
|
{ prop: 'telemarketingTeacherName', label: '电销老师', width: 180 },
|
||||||
{ prop: 'position', label: '转化老师', width: 180 },
|
{ prop: 'recruitTeacherName', label: '转化老师', width: 180 },
|
||||||
{ prop: 'position', label: '名单来源', width: 180 },
|
{ prop: 'listSource', label: '名单来源', width: 180 },
|
||||||
{ prop: 'position', label: '转化情况', width: 180 },
|
{ prop: 'situation', label: '转化情况', width: 180 },
|
||||||
{ prop: 'accountStatus', label: '创建人', width: 180 },
|
|
||||||
{ prop: 'operation', label: '操作', fixed: 'right', width: 250 }
|
{ prop: 'operation', label: '操作', fixed: 'right', width: 250 }
|
||||||
])
|
])
|
||||||
|
const clueSource = shallowRef([{ label: '线下名单', value: 0 }])
|
||||||
|
const parseClueSource = (value: number) => {
|
||||||
|
const item = clueSource.value.find((item: any) => item.value === value)
|
||||||
|
return item?.label || ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const parseConversion = computed(() => (value: converStatusEnum) => conversionMap[value])
|
||||||
</script>
|
</script>
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|
Loading…
Reference in New Issue