You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
202 lines
9.0 KiB
202 lines
9.0 KiB
<template>
|
|
<div class="flex-col" style="height:100%;padding: 16px;" v-if="details">
|
|
<div class="flex-row" style="background: white;width: 100%;padding: 10px;">
|
|
<CropperAvatar :value="avatar" width="90px" @change="uploadAvatarAfter"/>
|
|
<div class="flex-col" style="flex: 1;margin-left: 10px;">
|
|
<div class="flex-row-center-start">
|
|
<span style="font-size: 18px;font-weight: bold;">{{details.nickName}}</span>
|
|
<!-- <Icon icon="ant-design:edit-twotone" size="18px" style="margin-left: 12px;color:#0960bd;"/> -->
|
|
<Button type="link"><template #icon><Icon icon="ant-design:edit-twotone" size="16px" style="margin-left: 12px;color:#0960bd;"/></template></Button>
|
|
<span style="color: #666;margin: 0 12px;">(ID:{{details.id}} | 渠道来源:{{channelList.find((find) => find.value === details.channelType)?.label}})</span>
|
|
<Tag color="#d5d5d5">#线索阶段-0呼</Tag>
|
|
</div>
|
|
<div class="flex-row-center-start" style="margin-top: 8px;">
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">电话:</span>
|
|
<span style="color: #333;font-weight: bold;">{{details.phone}}</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">微信:</span>
|
|
<span style="color: #333;font-weight: bold;">{{details.weChatId || '--'}}</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">客户标签:</span>
|
|
<Tag color="#f50">无效</Tag>
|
|
<Button style="height: 22px;line-height: 22px;width: 24px;border: 1px solid #0960bd;"><template #icon><Icon icon="ant-design:plus-outlined" size="14px" style="color:#0960bd;display: block;"/></template></Button>
|
|
</div>
|
|
</div>
|
|
<div class="flex-row-center-start" style="margin-top: 8px;">
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">下次跟进时间:</span>
|
|
<span style="color: #333;">{{details.nextFollowTime || '--'}}</span>
|
|
</div>
|
|
<!-- <div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">创建人:</span>
|
|
<span style="color: #333;">{{details.creatorName || '--'}}</span>
|
|
</div> -->
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">跟进人:</span>
|
|
<span style="color: #333;">{{details.followName || '--'}}</span>
|
|
</div>
|
|
<div class="flex-row-center-end" style="flex:1;padding-right: 32px;">
|
|
<Button size="small" type="primary">查看下一个客户</Button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex-col" style="background: white;width: 100%;margin-top: 16px;padding: 12px 40px 12px 40px;">
|
|
<div class="flex-row-center-space">
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
</div>
|
|
<div class="flex-row-center-space" style="margin-top: 8px;">
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--</span>
|
|
</div>
|
|
<div class="flex-row-center-start" style="width: 240px;">
|
|
<span style="color: #666;">签约红娘:</span>
|
|
<span style="color: #333;font-weight: bold;">--dddd</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex-row" style="width: 100%;flex: 1;margin-top: 16px;">
|
|
<div style="flex: 1;background: white;padding: 0px 10px 10px 10px;">
|
|
<Tabs v-model:activeKey="activeKey" :animated="false">
|
|
<TabPane key="1" tab="客户资料">
|
|
<div class="flex-col" style="padding-right: 48px; flex:1;padding-top: 16px;">
|
|
<BasicForm @register="registerForm1"></BasicForm>
|
|
</div>
|
|
</TabPane>
|
|
<TabPane key="2" tab="邀约进店">
|
|
<Spin :spinning="spinning">
|
|
<Result subTitle="暂无数据"></Result>
|
|
</Spin>
|
|
</TabPane>
|
|
<TabPane key="3" tab="合同">
|
|
<Result subTitle="暂无数据"></Result>
|
|
</TabPane>
|
|
<TabPane key="4" tab="约见记录">
|
|
<Result subTitle="暂无数据"></Result>
|
|
</TabPane>
|
|
<template v-if="activeKey == '1'" #tabBarExtraContent>
|
|
<Button type="link"><template #icon><Icon icon="ant-design:edit-twotone" size="16px" style="margin-right: -4px;"/></template>编辑资料</Button>
|
|
</template>
|
|
</Tabs>
|
|
</div>
|
|
<div style="width: 480px;background: white;margin-left: 16px;padding: 0px 10px 10px 10px;">
|
|
<Tabs v-model:activeKey="activeKey2" :animated="false">
|
|
<TabPane key="1" tab="跟进小计">
|
|
<div class="flex-col-center-center" style="flex:1;padding-top: 16px;">
|
|
<BasicForm @register="registerForm"></BasicForm>
|
|
<Button type="primary" style="width: 160px;margin-top: 48px;">保存</Button>
|
|
</div>
|
|
</TabPane>
|
|
<TabPane key="2" tab="跟进记录" style="flex:1;padding: 16px 16px 0px 16px;">
|
|
<Timeline>
|
|
<TimelineItem color="green">Create a services site 2015-09-01</TimelineItem>
|
|
<TimelineItem color="red">
|
|
<p>Solve initial network problems 1</p>
|
|
<p>Solve initial network problems 2</p>
|
|
<p>Solve initial network problems 3 2015-09-01</p>
|
|
</TimelineItem>
|
|
<TimelineItem>
|
|
<p>Technical testing 1</p>
|
|
<p>Technical testing 3 2015-09-01</p>
|
|
</TimelineItem>
|
|
<TimelineItem color="gray">
|
|
<p>Technical testing 1</p>
|
|
<p>Technical testing 2</p>
|
|
<p>Technical testing 3 2015-09-01</p>
|
|
</TimelineItem>
|
|
<TimelineItem color="gray">
|
|
<p>Technical testing 1</p>
|
|
<p>Technical testing 3 2015-09-01</p>
|
|
</TimelineItem>
|
|
</Timeline>
|
|
</TabPane>
|
|
</Tabs>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { useRoute } from 'vue-router'
|
|
import { onMounted, ref } from 'vue'
|
|
import { Tabs, Card, Table, Button, TabPane, Tag, Timeline, TimelineItem, Result, Spin } from 'ant-design-vue'
|
|
import { Icon } from '/@/components/Icon'
|
|
import { CropperAvatar } from '/@/components/Cropper';
|
|
import BasicForm from '/@/components/Form/src/BasicForm.vue'
|
|
import { useForm } from '/@/components/Form'
|
|
import { basicSchema, modalFormSchema } from './data'
|
|
import { getClueInfo } from '/@/api/clue'
|
|
import { genderList, channelList, clueStatusList } from '/@/enums/customerEnum'
|
|
|
|
const details = ref<any>()
|
|
onMounted(() => {
|
|
initFetch()
|
|
})
|
|
|
|
async function initFetch() {
|
|
const { query } = useRoute()
|
|
const { id } = query || {}
|
|
if (!id) return
|
|
details.value = await getClueInfo(`${id}`)
|
|
}
|
|
|
|
const activeKey = ref<string>('1')
|
|
const activeKey2 = ref<string>('1')
|
|
const avatar = ref<string>('')
|
|
|
|
// 基础信息表单配置
|
|
const [registerForm1, { validate: validate1, setFieldsValue: setFieldsValue1 }] = useForm({
|
|
labelWidth: 120,
|
|
schemas: basicSchema,
|
|
baseColProps: { span: 22 },
|
|
showActionButtonGroup: false,
|
|
})
|
|
|
|
//这里是上传头像成功后的回调
|
|
function uploadAvatarAfter(value) {
|
|
//修改表单的值
|
|
// setFieldsValue1({
|
|
// avatar: value,
|
|
// });
|
|
}
|
|
|
|
const [registerForm, { setFieldsValue, resetFields, validate, getFieldsValue, updateSchema }] =
|
|
useForm({
|
|
labelWidth: 90,
|
|
schemas: modalFormSchema,
|
|
baseColProps: { span: 22 },
|
|
showActionButtonGroup: false,
|
|
})
|
|
|
|
const spinning = ref<boolean>(false)
|
|
</script>
|
|
<style scoped lang="less">
|
|
|
|
</style>
|