|
|
@@ -0,0 +1,331 @@
|
|
|
+<template>
|
|
|
+ <el-drawer append-to-body :visible.sync="dialogFormVisible" size="97%">
|
|
|
+ <div class="Mcontainer">
|
|
|
+ <div style="background:#ffffff;padding:10px" v-if="Object.keys(detailInfo).length">
|
|
|
+ <div class="Mcontainer-header">
|
|
|
+ <div class="Mcontainer-header__left">
|
|
|
+ <div style="width:60px;height: 60px;background:#F3F9FC;border-radius:10px;padding:10px">
|
|
|
+ <img src="@/assets/saler.svg" style="width:100%;height:100%" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="account">
|
|
|
+ <p class="normal-title" style="font-size:18px">
|
|
|
+ <el-tooltip class="item" effect="dark" :content="detailInfo.projectname" placement="top">
|
|
|
+ <span>{{ detailInfo.name }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </p>
|
|
|
+ <div class="Mtag">
|
|
|
+ <el-tag size="small" v-for="(item,index) in detailInfo.tag" :key="index" style="margin-right:10px">{{ item }}</el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="Mcontainer-header__right">
|
|
|
+ <el-descriptions class="margin-top">
|
|
|
+ <el-descriptions-item label="联系方式">{{ detailInfo.phonenumber }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="微信">{{ detailInfo.wechatnum }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="偏好">{{ detailInfo.preference }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="分级"> {{ detailInfo.grade }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="邮箱">{{ detailInfo.email }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="爱好">{{ detailInfo.hobby }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="性别"> {{ detailInfo.sex }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="传真">{{ detailInfo.fax }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="备注"> {{ detailInfo.remarks }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="生日"> {{ detailInfo.birthday }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="单位">{{ detailInfo.company }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="负责人">{{ detailInfo.leadername }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="家庭住址"> {{ detailInfo.homeaddress }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="部门"> {{ detailInfo.depname }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="未跟进天数">{{ detailInfo.subdate ? detailInfo.subdate + '天' : detailInfo.subdate}}
|
|
|
+ <el-tooltip class="item" effect="dark" content="未跟进天数=当前查询时间-最近跟进时间-节假日" placement="top">
|
|
|
+ <i class="el-icon-warning-outline"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="群组">{{ detailInfo.groupname }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="职位"> {{ detailInfo.position }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="padding: 0 10px;">
|
|
|
+ <!-- 跟进记录 -->
|
|
|
+ <div class="Mproject" style="margin-top:10px">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <span class="myTitle">跟进记录</span>
|
|
|
+ <myRadio :value1="followParam.content" :value2="followParam.content.where" key1="dateType" @clickBtn="refreshTable('followParam','followRef')" :btnOptions="[{label:'全部',value:0},{label:'本年',value:1},{label:'本季',value:2},{label:'本月',value:3}]">
|
|
|
+ </myRadio>
|
|
|
+ </div>
|
|
|
+ <myCard
|
|
|
+ :list="
|
|
|
+ [
|
|
|
+ {title:'跟进次数',value:$refs.followRef && $refs.followRef.total,bg:'#F3F9FC',color:'#3874F6'},
|
|
|
+ {title:'最近跟进人',value:$refs.followRef && $refs.followRef.list[0] && $refs.followRef.list[0].createby || '--',bg:'#E8F7EC',color:'#78B32B'},
|
|
|
+ {title:'最近跟进时间',value:$refs.followRef && $refs.followRef.list[0] && $refs.followRef.list[0].createdate || '--',bg:'#F9F2E5',color:'#FF7603'},
|
|
|
+ {title:'跟进频率',value:$refs.followRef && $refs.followRef.list[0] && $refs.followRef.list[0].followfrequency,descript:'定义:平均跟进天数;若有跟进次数,则按照:跟进频率=(首次跟进时间到当前时间的天数-节假日)÷跟进次数;',bg:'#FDF3F3',color:'#E85B5B'},
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ </myCard>
|
|
|
+ <p style="font-size:14px;font-weight:bold;margin-bottom:10px" v-if="$refs.followRef && $refs.followRef.list[0] && $refs.followRef.list[0].followDetail.length">跟进人及次数</p>
|
|
|
+ <div style="display:flex">
|
|
|
+ <myTag
|
|
|
+ style="margin-right:10px"
|
|
|
+ v-for="(item,index) in $refs.followRef && $refs.followRef.list[0] && $refs.followRef.list[0].followDetail"
|
|
|
+ :key="index + 'b'"
|
|
|
+ :data="{title:item.name,descript:'跟进次数',value:item.qty}"
|
|
|
+ >
|
|
|
+ </myTag>
|
|
|
+ </div>
|
|
|
+ <showIsNone title="项目跟进记录明细">
|
|
|
+ <pageTable
|
|
|
+ ref="followRef"
|
|
|
+ :tablecols="tool.tabelCol($route.name).followTable.tablecols"
|
|
|
+ :param="followParam"
|
|
|
+ :custom="true"
|
|
|
+ >
|
|
|
+ <template v-slot:custom="scope">
|
|
|
+ <div v-if="scope.data.columnname === 'followname'">
|
|
|
+ </div>
|
|
|
+ <div v-else style="text-wrap:wrap;word-wrap: break-word;white-space: normal;">
|
|
|
+ {{ scope.data.data[scope.data.columnname] || '--' }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </pageTable>
|
|
|
+ </showIsNone>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-drawer>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import myRadio from '@/HDrpManagement/customerPortrait/modules/myRadio'
|
|
|
+import myCard from '@/HDrpManagement/customerPortrait/modules/myCrad'
|
|
|
+import pageTable from '@/HDrpManagement/customerPortrait/modules/pageTable'
|
|
|
+import showIsNone from '@/HDrpManagement/customerPortrait/modules/showIsNone'
|
|
|
+/*import myNewCard from './myNewCrad'*/
|
|
|
+import myTag from '@/HDrpManagement/customerPortrait/modules/myTag'
|
|
|
+export default {
|
|
|
+ name: "detail",
|
|
|
+ props:['data'],
|
|
|
+ components:{myRadio,myCard,pageTable,showIsNone,myTag},
|
|
|
+ data(){
|
|
|
+ return {
|
|
|
+ dialogFormVisible:false,
|
|
|
+ detailInfo:{},
|
|
|
+ followParam:{
|
|
|
+ "id": 20240605110904,
|
|
|
+ "content": {
|
|
|
+ "sys_phonebookid":'',
|
|
|
+ "dateType":"0",
|
|
|
+ "where":{
|
|
|
+ "begdate":"",
|
|
|
+ "enddate":""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ follow:[]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ /*详情页信息*/
|
|
|
+ async getDetailInfo(){
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20240605102804,
|
|
|
+ "content": {
|
|
|
+ "sys_phonebookid":this.$route.query.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.detailInfo = res.data[0]
|
|
|
+ console.log(this.detailInfo,'detailInfo')
|
|
|
+ },
|
|
|
+ /*跟进记录*/
|
|
|
+ async followData(){
|
|
|
+ this.followParam.content.sys_phonebookid = this.$route.query.id
|
|
|
+ const res = await this.$api.requested(this.followParam)
|
|
|
+ console.log(res,'跟进记录')
|
|
|
+ },
|
|
|
+ refreshTable(param,el){
|
|
|
+ console.log(param,'param')
|
|
|
+ console.log(this[param],'111')
|
|
|
+ this[param].content.pageNumber = 1
|
|
|
+ this.$refs[el] && this.$refs[el].listData()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.getDetailInfo()
|
|
|
+ this.followData()
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+*{
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+.my-label {
|
|
|
+ background: rgba(235, 245, 253, 1);
|
|
|
+}
|
|
|
+.nowrap {
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ flex: 100;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/.el-drawer {
|
|
|
+ background:#F5F5F5 !important;
|
|
|
+}
|
|
|
+/deep/.el-drawer__header{
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/.el-descriptions-item__cell {
|
|
|
+ padding: 8px 8px 0px 8px !important;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/deep/.el-card__header,/deep/.el-card__body {
|
|
|
+ padding: 10px !important;
|
|
|
+}
|
|
|
+.Mcontainer .Mcontainer-header {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.Mcontainer .Mcontainer-header .Mcontainer-header__left {
|
|
|
+ display: flex;
|
|
|
+ max-width: 350px;
|
|
|
+ min-width: 350px;
|
|
|
+ align-items: center;
|
|
|
+ padding-right: 20px;
|
|
|
+}
|
|
|
+.Mcontainer .Mcontainer-header .Mcontainer-header__right {
|
|
|
+ flex: 100;
|
|
|
+ border-left: 1px solid #cccccc;
|
|
|
+ padding-left: 20px;
|
|
|
+}
|
|
|
+.Mcontainer .Mcontainer-header .Mcontainer-header__left .account{
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-left: 10px;
|
|
|
+ overflow: hidden;
|
|
|
+ flex:100;
|
|
|
+}
|
|
|
+.Mcontainer .Mcontainer-header .Mcontainer-header__left .account .Mtag{
|
|
|
+ margin-top: 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.Mcontainer .Mfollow{
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.Mcontainer .peopleInfo {
|
|
|
+ margin-top: 10px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+.peopleInfo-content {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ height: 300px;
|
|
|
+ overflow-y: scroll;
|
|
|
+}
|
|
|
+.peopleInfo-content::-webkit-scrollbar {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .title {
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .content {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .content .item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin: 0 20px 10px 0;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .content .avatar {
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ border-radius: 50%;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 50px;
|
|
|
+ background: #3874F6;
|
|
|
+ margin-right:10px;
|
|
|
+ color: #ffffff;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .content .Info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+}
|
|
|
+.peopleInfo-content .leader .content .Info div {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #cccccc;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.peopleInfo-content .people {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .title {
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .content {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap:wrap;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .content .item {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin: 0 20px 10px 0;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .content .avatar {
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ border-radius: 50%;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 50px;
|
|
|
+ background: #3874F6;
|
|
|
+ margin-right: 10px;
|
|
|
+ color: #ffffff;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .content .Info {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+}
|
|
|
+.peopleInfo-content .people .content .Info div {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #cccccc;
|
|
|
+}
|
|
|
+
|
|
|
+.peopleInfo-content .people {}
|
|
|
+
|
|
|
+.descript {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #cccccc;
|
|
|
+ margin-right: 20px;
|
|
|
+ white-space:nowrap;
|
|
|
+}
|
|
|
+.title {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #000000;
|
|
|
+ margin-right: 10px;
|
|
|
+ white-space:nowrap;
|
|
|
+}
|
|
|
+.myTitle {
|
|
|
+ margin-right:24px;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+</style>
|