Przeglądaj źródła

Merge branch 'master' of http://git.2weisou.com/liumin/NewZkgj into master

yun
lancer 2 lat temu
rodzic
commit
205f7ab4c3
13 zmienionych plików z 3130 dodań i 319 usunięć
  1. +1
    -0
      config.js
  2. +26
    -0
      pages.json
  3. +178
    -0
      pages/center/Piabodata/Customerportrait/Detailsofthesearch.vue
  4. +1904
    -0
      pages/center/Piabodata/Customerportrait/Receivedetailabout.vue
  5. +624
    -0
      pages/center/Piabodata/Customerportrait/Receivingrecords.vue
  6. +3
    -3
      pages/center/Piabodata/Userinsightinto.vue
  7. +74
    -133
      pages/center/consumer/consumerDetail.vue
  8. +194
    -4
      pages/center/consumer/consumerSearch.vue
  9. +125
    -178
      pages/center/consumer/index.vue
  10. +1
    -1
      pages/mine/consultanonduty/index.vue
  11. BIN
      static/images/down1.png
  12. BIN
      static/images/down2.png
  13. BIN
      static/images/userorder.png

+ 1
- 0
config.js Wyświetl plik

@@ -16,6 +16,7 @@ var config = {
service: {
host,
iMServiceHost,
getStage:`${host}/customer/getStage`,
//验证toen
verify:`${host}/user/verify`,
//登录


+ 26
- 0
pages.json Wyświetl plik

@@ -310,6 +310,32 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "Piabodata/Customerportrait/Detailsofthesearch",
"style": {
"navigationBarTitleText": "搜索",
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTextStyle": "black"
}
},
{
"path": "Piabodata/Customerportrait/Receivedetailabout",
"style": {
"navigationBarTitleText": "详情",
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTextStyle": "black"
}
},
{
"path": "Piabodata/Customerportrait/Receivingrecords",
"style": {
"navigationBarTitleText": "列表",
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTextStyle": "black"
}
},
{
"path": "records/index",
"style": {


+ 178
- 0
pages/center/Piabodata/Customerportrait/Detailsofthesearch.vue Wyświetl plik

@@ -0,0 +1,178 @@
<template>
<view class="translation">
<view style="display: flex;width: 100%;height: 100rpx;border-bottom: 1px solid #E0E0E0;">
<view style="width: 50%;display: flex;align-items: center;justify-content: center;font-size: 30rpx;">
<view style="line-height: 50rpx;" :class="roleindex == 0 ? 'bosdttom' : ''" @click="tapspagek(0)">画像语义词选择</view>
</view>
<view style="width: 50%;display: flex;align-items: center;justify-content: center;font-size: 30rpx;">
<view style="line-height: 50rpx;" :class="roleindex == 1 ? 'bosdttom' : ''" @click="tapspagek(1)">关键词输入</view>
</view>
</view>
<view v-if='roleindex==0' style="width: 690rpx;height: 64rpx;margin: 0 auto;margin-top: 30rpx;">
<view style="display: flex;align-items: center;border-bottom: 1px solid #C9C9C9;height: 80rpx;">
<view>画像语义词:</view>
<view style="width:70%" @click="oninputtap()">
<text v-if="Semanticword.length==0">请选择</text>
<text v-else>{{Semanticword}}</text>
</view>
<view>
<image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/qf/more.png" style="width:12rpx;height:23rpx;margin-left: 16rpx;">
</view>
</view>
</view>
<view v-if='roleindex==1' style="width: 690rpx;height: 64rpx;margin: 0 auto;margin-top: 30rpx;background: #F2F2F2;border-radius: 32rpx;
display: flex;align-items: center;">
<view style="width: 10%;height: 64rpx;display: flex;align-items: center;">
<image style="width: 28rpx;height: 28rpx;margin-left: 30rpx;" src="/static/images/customer/search.png" mode=""></image>
</view>
<view style="width: 90%;height: 64rpx;display: flex;align-items: center;">
<input type="text" @input="searchinfo" v-model="keyword" placeholder="请输入关键字"
style="width: 100%;color: #999999;font-size: 24rpx;"/>
</view>
</view>
<view style="width: 690rpx;margin: 0 auto;margin-top: 10rpx;">
<view style="width: 100%;border-bottom: 1px solid #E0E0E0;display: flex;padding-bottom: 10rpx;margin-top: 40rpx;"
v-for="(item,index) in listarr" :key='index' @click="toaidoinfo(item.Content,item.corpusId,item.index)">
<view style="width: 26rpx;height: 36rpx;margin-top: 4rpx;">
<image style="width: 26rpx;height: 28rpx;" src="/static/images/testimg.png" mode=""></image>
</view>
<view v-html="item.Content.text" style="color: #666666;font-size: 28rpx;line-height: 36rpx;margin-left: 10rpx;width: 80%;"></view>
<view style="font-size: 28rpx;width: 10%;width: 14%;text-align: right;">{{item.Content.time}}</view>
</view>
</view>
<view v-if="Showhiddenunits">
<u-select v-model="Showhiddenunits" mode="single-column" :list="selectlist" @confirm="confirm"></u-select>
</view>
</view>
</template>

<script>
var util = require("../../../../utils/util.js");
var config = require("../../../../config");
export default {
data() {
return {
customerId:'',
listarr:[],
keyword:'',
skpl:'',
roleindex:0,
Showhiddenunits:false,
selectlist:[],
Semanticword:'',
qujian:true
};
},
onLoad: function(options) {
this.customerId = options.customerId;
this.statistical()
},
methods: {
statistical(){
this.$u.get("/matchKeywords/findCARKeywords", {
customerId: this.customerId
}).then(res => {
res.forEach((item,index)=>{
if(item.isInterval==0){
item.label=item.name+item.unit +'-'+ item.endName+item.unit;
item.value=index
}else{
item.label=item.name;
item.value=index
}
})
this.selectlist=res;
})
},
oninputtap(){
this.Showhiddenunits=true;
},
confirm(e) {
let indexs=e[0].value;
this.selectlist.forEach((item,index)=>{
if(indexs==item.value){
this.Semanticword=item.name;
this.keyword=item.matchName;
if(item.isInterval==0){
this.qujian=false;
this.Semanticword=item.name+item.unit+ '-'+ item.endName+item.unit;
}else{
this.qujian=true;
}
}
})
this.searchinfo()
},
tapspagek(i){
this.roleindex=i;
this.keyword="";
this.Semanticword='';
this.qujian=true;
this.listarr=[];
},
formatTime(num) {
//格式化时间格式
num = num.toFixed(0);
let second = num % 60;
if (second < 10) second = '0' + second;
let min = Math.floor(num / 60);
if (min < 10) min = '0' + min;
return min + ":" + second;
},
searchinfo(){
if(this.keyword.length==0){
return
}else{
let parames={
keyword:this.keyword,
customerId:this.customerId
}
this.$u.post("/corpus/keyWordsMatching", parames).then(res => {
res.forEach(item=>{
item.Content=JSON.parse(item.transferContent)
})
res.forEach(cet=>{
cet.Content.time=this.formatTime(cet.Content.bg/1000)
if(this.qujian==false){
cet.Content.text=cet.Content.onebest;
}else{
cet.Content.text=this.brightKeyword(cet.Content.onebest)
}
})
this.listarr=res;
})
}
},
//替换方法
brightKeyword(val) {
if (val.indexOf(this.keyword) !== -1) {
return val.replace(this.keyword, `<font style='color: red'>${this.keyword}</font>`);
} else {
return val;
}
},
//跳转
toaidoinfo(item,id,index){
item.customerId=this.customerId;
item.id=id;
item.index=index;
let pages = getCurrentPages() //获取当前页面栈的信息
let prevPage = pages[pages.length - 2] //获取上一个页面
prevPage.setData({ //把需要回传的值保存到上一个页面
info: item
});
wx.navigateBack({ //然后返回上一个页面
delta: 1
})
}
},
}
</script>
<style lang="scss" scoped>
.bosdttom{
border-bottom: 2px solid #2671E2;
}
</style>

+ 1904
- 0
pages/center/Piabodata/Customerportrait/Receivedetailabout.vue
Plik diff jest za duży
Wyświetl plik


+ 624
- 0
pages/center/Piabodata/Customerportrait/Receivingrecords.vue Wyświetl plik

@@ -0,0 +1,624 @@
<template>
<view class="cenbox">
<view class="screeningtop">
<view class="screeningview" @click="clickscreening(1)">
<view>近一周</view>
<view class="viewimg">
<image v-if="screeningshow1==false" src="../../../../static/images/down1.png" mode=""></image>
<image v-if="screeningshow1==true" src="../../../../static/images/down2.png" mode=""></image>
</view>
</view>
<view class="screeningview" @click="clickscreening(2)">
<view>客户</view>
<view class="viewimg">
<image v-if="screeningshow2==false" src="../../../../static/images/down1.png" mode=""></image>
<image v-if="screeningshow2==true" src="../../../../static/images/down2.png" mode=""></image>
</view>
</view>
<view class="screeningview" @click="clickscreening(3)">
<view>置业顾问</view>
<view class="viewimg">
<image v-if="screeningshow3==false" src="../../../../static/images/down1.png" mode=""></image>
<image v-if="screeningshow3==true" src="../../../../static/images/down2.png" mode=""></image>
</view>
</view>
<view style="border: none;" class="screeningview" @click="clickscreening(4)">
<view>语义词</view>
<view class="viewimg">
<image v-if="screeningshow4==false" src="../../../../static/images/down1.png" mode=""></image>
<image v-if="screeningshow4==true" src="../../../../static/images/down2.png" mode=""></image>
</view>
</view>
</view>
<view class="zhuti">
<view v-if="tadelist.length!=0" class="cenforview" v-for="(item,index) in tadelist" :key='index' @click="toinfo(item)">
<view class="cenfortop">
<view class="fortopzuo">
<view class="topzuoimg">
<image src="../../../../static/images/userorder.png" mode=""></image>
</view>
</view>
<view class="fortopyou">
<view class="topyouview1">
<view class="youview1-1">{{item.agentName}}</view>
<view class="youview1-2">接待开始时间:{{item.staTime}}</view>
</view>
<view class="topyouview2">客户姓名:{{item.name}}</view>
</view>
</view>
<view class="cenforbottom">
<view class="forbottomview">
<view class="bottomview1">录音时长 (分钟)</view>
<view class="bottomview2">{{item.mm}}分钟</view>
</view>
<view class="forbottomview">
<view class="bottomview1">需求触达次数</view>
<view class="bottomview2">{{item.total}}次</view>
</view>
<view class="forbottomview" style="border: none;">
<view class="bottomview1">接访得分</view>
<view class="bottomview2" v-if="item.fraction==null">0分</view>
<view class="bottomview2" v-else>{{item.fraction}}分</view>
</view>
</view>
</view>
<view v-if="tadelist.length==0" style="width: 100%;height: 100%;display: flex;align-items: center;">
<view style="width: 100%;background: #FFFFFF;padding-top: 200rpx;">
<view style="width: 100%;text-align: center;">
<image style="width: 200rpx;height: 200rpx;" src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
</view>
<view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
</view>
</view>
</view>
<!-- 1 -->
<view v-if="screeningshow1==true" class="call_zhezhao" @click="allcancel()"></view>
<view v-if="screeningshow1==true" class="timepick">
<view class="tiempickbox">
<view :class="{ timeactive: activetime == 0 }" @click="activetimetab(0)">今日</view>
<view :class="{ timeactive: activetime == 1 }" @click="activetimetab(1)">昨日</view>
<view :class="{ timeactive: activetime == 2 }" @click="activetimetab(2)">近一周</view>
<view :class="{ timeactive: activetime == 3 }" @click="activetimetab(3)">本月</view>
</view>
<view class="tiempickzidingyi" @click="activetimetab(5)">
<text v-if="Datesicing.length==0">自定义时间:请选择</text>
<text v-else>{{Datesicing}}</text>
</view>
</view>
<!-- 2 -->
<view v-if="screeningshow2==true" class="call_zhezhao" @click="allcancel()"></view>
<view v-if="screeningshow2==true" class="userinput">
<view class="inputdlex">
<view class="flexzuo">
<input class="flexinput" @confirm="searchinfo()" v-model="name" type="text" placeholder="请输入客户名" />
</view>
<view class="flexyou" @click="searchinfo()">搜索</view>
</view>
</view>
<!-- 3 -->
<view v-if="screeningshow3==true" class="call_zhezhao" @click="allcancel()"></view>
<view v-if="screeningshow3==true" class="userinput">
<view class="inputdlex">
<view class="flexzuo">
<input class="flexinput" @confirm="searchinfo()" v-model="agentName" type="text" placeholder="请输入顾问名" />
</view>
<view class="flexyou" @click="searchinfo()">搜索</view>
</view>
</view>
<!-- 4 -->
<view v-if="screeningshow4==true" class="call_zhezhao" @click="allcancel()"></view>
<view v-if="screeningshow4==true" class="yuyipick">
<view class="inputdlex">
<view :class="{ timeactive111: keywordsId == item.keywordsId }" @click="semantictap(index)"
v-for="(item,index) in semanticlist" :key="index">{{item.name}}</view>
</view>
</view>
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
</view>
</template>

<script>
var app = getApp();
var util = require("../../../../utils/util.js");
var config = require("../../../../config");
export default {
data() {
return {
screeningshow1:false,
screeningshow2:false,
screeningshow3:false,
screeningshow4:false,
activetime:2,
totalTimeShow:false,
Datesicing:'',
Inthemiddletime:'',
starttime:'',//开始时间
endoftime:'',//结束时间
keywordsId:'',//选中语义词id
houseId:'',//楼盘id
semanticlist:[],//语义词集合
name:'',
agentName:'',
pageNum:1,
pageSize:10,
tadelist:[],
totalpage:0
};
},
onLoad(options) {
console.log(options)
if(options.datatype==3){
this.activetime=5;
this.starttime=options.starttime;
this.endoftime=options.endoftime;
this.Datesicing=this.starttime+'至'+this.endoftime;
}else{
this.activetime=options.datatype;
this.starttime='';
this.endoftime='';
this.Datesicing='';
}
this.keywordsId=options.keywordsId
this.houseId=uni.getStorageSync('buildingID').id;
this.Accesstolevel()
},
onReachBottom() {
console.log("4444444444444444444")
if (this.totalpage < this.pageNum * this.pageSize) {
return uni.showToast({
title: "到底了",
})
}
this.pageNum++;
this.getinit();
},
methods: {
toinfo(item){
uni.navigateTo({
url: `/pages/center/Piabodata/Customerportrait/Receivedetailabout?customerId=${item.id}`
})
},
//搜索
searchinfo(){
this.totalpage=0;
this.tadelist=[];
this.pageNum=1;
this.getinit()
},
//点击三级
semantictap(index){
this.keywordsId=this.semanticlist[index].keywordsId;
this.allcancel()
this.totalpage=0;
this.tadelist=[];
this.pageNum=1;
this.getinit()
},
//获取列表数据
getinit(){
uni.showToast({
title: '加载中',
icon:'loading',
duration: 1500
});
let datatype='';
if(this.activetime==5){
var parames={
pageNum:this.pageNum,
pageSize:this.pageSize,
query:{
staTime:this.starttime,
endTime:this.endoftime,
time:1,
name:this.name,
agentName:this.agentName,
type:0,
keywordsId:this.keywordsId,
projectId:this.houseId,
}
}
}else{
datatype=this.activetime;
var parames={
pageNum:this.pageNum,
pageSize:this.pageSize,
query:{
dateType:Number(datatype),
staTime:this.starttime,
endTime:this.endoftime,
time:1,
name:this.name,
agentName:this.agentName,
type:0,
keywordsId:this.keywordsId,
projectId:this.houseId,
}
}
}
this.$u.post("/matchKeywords/receptionRecord", parames).then(data => {
if(data.results==null){
console.log("没有")
return
}else{
this.tadelist=[...this.tadelist, ...data.results];
this.totalpage=data.totalRecord;
}
})
},
//获取三级
Accesstolevel(){
let datatype='';
if(this.activetime==5){
var parames={
type:0,
statDateStart:this.starttime,
statDateEnd:this.endoftime,
houseId:this.houseId
}
}else{
datatype=this.activetime;
var parames={
type:0,
dateType:Number(datatype),
statDateStart:this.starttime,
statDateEnd:this.endoftime,
houseId:this.houseId
}
}
this.$u.post("/matchKeywords/findKeywords", parames).then(data => {
data.forEach(item=>{
if(item.isInterval==0){
item.name=item.name+item.unit+'-'+item.endName+item.unit
}
})
this.semanticlist=data;
this.getinit();
})
},
//遮罩取消
allcancel(){
this.screeningshow1=false;
this.screeningshow2=false;
this.screeningshow3=false;
this.screeningshow4=false;
},
//自定义时间确认
totalTimeChange(e){
this.Datesicing=e.startDate+'至'+e.endDate;
this.starttime=e.startDate;
this.endoftime=e.endDate;
this.activetime=this.Inthemiddletime;
this.totalTimeShow=false;
this.tadelist=[]
this.allcancel()
this.Accesstolevel()
},
//时间选择
activetimetab(index){
if(index==5){
this.Inthemiddletime=index;
this.totalTimeShow=!this.totalTimeShow;
}else{
this.Datesicing='';
this.activetime=index;
this.tadelist=[]
this.allcancel()
this.Accesstolevel()
}
},
//筛选弹框
clickscreening(i){
if(i==1){
this.screeningshow1=!this.screeningshow1;
this.screeningshow2=false;
this.screeningshow3=false;
this.screeningshow4=false;
}else if(i==2){
this.screeningshow2=!this.screeningshow2;
this.screeningshow1=false;
this.screeningshow3=false;
this.screeningshow4=false;
}else if(i==3){
this.screeningshow3=!this.screeningshow3;
this.screeningshow2=false;
this.screeningshow1=false;
this.screeningshow4=false;
}else{
this.screeningshow4=!this.screeningshow4;
this.screeningshow2=false;
this.screeningshow3=false;
this.screeningshow1=false;
}
}
}
};
</script>
<style lang="scss" scoped>
.timeactive111{
color: #2671E2;
}
*{
margin:0;
padding:0;
box-sizing:border-box;
}
.cenbox{
width: 100%;
height: 100%;
background-color: #F8F8F8;
display:flex;
flex-direction:column;
.screeningtop{
width: 100%;
height: 75rpx;
background-color: #FFFFFF;
border-bottom: 1px solid #E0E0E0;
align-items: center;
display: flex;
align-items: center;
position: relative;
}
.screeningview{
flex: 1;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
border-right: 1px solid #E0E0E0;
}
.zhuti{
flex:1;
// soverflow:auto;
}
}
.viewimg{
width: 20rpx;
height: 100%;
line-height: 72rpx;
margin-left: 10rpx;
image{
width: 20rpx;
height: 12rpx;
}
}
.cenforview{
width: 100%;
height: 275rpx;
background: #FFFFFF;
margin-top: 20rpx;
.cenfortop{
width: 100%;
height: 146rpx;
display: flex;
// border-bottom: 1px solid #E0E0E0;
.fortopzuo{
width: 16%;
padding-top: 30rpx;
.topzuoimg{
width: 60rpx;
height: 60rpx;
margin-left: 30rpx;
border-radius: 50%;
image{
width: 100%;
height: 100%;
}
}
}
.fortopyou{
width: 84%;
height: 146rpx;
.topyouview1{
width: 100%;
margin-top: 28rpx;
display: flex;
.youview1-1{
width: 25%;
font-size: 28rpx;
font-weight: 400;
color: #333333;
overflow: hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
.youview1-2{
width: 75%;
font-size: 26rpx;
font-weight: 400;
color: #666666;
}
}
.topyouview2{
width: 100%;
font-size: 28rpx;
font-weight: 400;
color: #333333;
margin-top: 20rpx;
}
}
}
.cenforbottom{
width: 100%;
height: 128rpx;
display: flex;
align-items: center;
.forbottomview{
flex: 1;
height: 128rpx;
// border-right: 1px solid #E0E0E0;
.bottomview1{
width: 100%;
height: 26rpx;
font-size: 26rpx;
font-weight: 400;
color: #666666;
line-height: 26rpx;
text-align: center;
margin-top: 24rpx;
}
.bottomview2{
width: 100%;
height: 30rpx;
font-size: 30rpx;
font-weight: 600;
color: #333333;
line-height: 30rpx;
text-align: center;
margin-top: 24rpx;
}
}
}
}
.timepick{
width: 100%;
height: 210rpx;
background: #FFFFFF;
position: absolute;
top: 74rpx;
left: 0;
z-index: 20;
.tiempickbox{
width: 94%;
margin: 0 auto;
height: 56rpx;
display: flex;
align-items: center;
margin-top: 25rpx;
}
.tiempickbox>view:nth-of-type(1){
width: 156rpx;
height: 56rpx;
border-radius: 4rpx;
text-align: center;
line-height: 56rpx;
font-size: 28rpx;
border: 1px solid #C9C9C9;
}
.tiempickbox>view:nth-of-type(2){
width: 156rpx;
height: 56rpx;
border-radius: 4rpx;
text-align: center;
line-height: 56rpx;
font-size: 28rpx;
border: 1px solid #C9C9C9;
margin-left: 28rpx;
}
.tiempickbox>view:nth-of-type(3){
width: 156rpx;
height: 56rpx;
border-radius: 4rpx;
text-align: center;
line-height: 56rpx;
font-size: 28rpx;
border: 1px solid #C9C9C9;
margin-left: 28rpx;
}
.tiempickbox>view:nth-of-type(4){
width: 156rpx;
height: 56rpx;
border-radius: 4rpx;
text-align: center;
line-height: 56rpx;
font-size: 28rpx;
border: 1px solid #C9C9C9;
margin-left: 28rpx;
}
.tiempickzidingyi{
width: 94%;
margin: 0 auto;
margin-top: 28rpx;
height: 60rpx;
background: #FFFFFF;
border-radius: 4rpx;
border: 1px solid #C9C9C9;
text-align: center;
line-height: 60rpx;
color: #666666;
}
}
.call_zhezhao {
position: fixed;
width: 100%;
height: 100%;
top: 75rpx;
left: 0rpx;
opacity: 0.5;
background-color: #666666;
z-index: 10;
}
.timeactive{
color: #FFFFFF;
background-color: #2671E2;
}
.userinput{
width: 100%;
height: 126rpx;
background: #FFFFFF;
position: absolute;
top: 74rpx;
left: 0;
z-index: 20;
.inputdlex{
width: 90%;
margin: 0 auto;
height: 56rpx;
display: flex;
align-items: center;
margin-top: 30rpx;
.flexzuo{
width: 80%;
.flexinput{
width: 96%;
height: 100%;
border-radius: 20rpx;
border: 1px solid #C9C9C9;
padding-left: 20rpx;
font-size: 24rpx;
}
}
.flexyou{
width: 20%;
font-size: 28rpx;
color: #2671E2;
text-indent: 28rpx;
}
}
}
.yuyipick{
width: 100%;
min-height: 300rpx;
max-height: 500rpx;
background: #FFFFFF;
overflow-y: auto;
padding-bottom: 20rpx;
position: absolute;
top: 74rpx;
left: 0;
z-index: 20;
.inputdlex{
width: 90%;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
margin-top: 30rpx;
}
.inputdlex view{
width: 50%;
font-size: 26rpx;
font-weight: 400;
text-align: center;
margin-top: 26rpx;
}
}
</style>

+ 3
- 3
pages/center/Piabodata/Userinsightinto.vue Wyświetl plik

@@ -196,9 +196,9 @@
},
//查看
Toview(item,i){
// uni.navigateTo({
// url: '/pages/main/Customerportrait/Receivingrecords?datatype='+this.activeTotal+"&keywordsId="+item.matchKeywords[i].keywordsId+"&starttime="+this.timeobj.statDateStart+"&endoftime="+this.timeobj.statDateEnd
// })
uni.navigateTo({
url: '/pages/center/Piabodata/Customerportrait/Receivingrecords?datatype='+this.activeTotal+"&keywordsId="+item.matchKeywords[i].keywordsId+"&starttime="+this.timeobj.statDateStart+"&endoftime="+this.timeobj.statDateEnd
})
},
//时间切换
tabtimetap(index) {


+ 74
- 133
pages/center/consumer/consumerDetail.vue Wyświetl plik

@@ -4,26 +4,20 @@
<view class="content-tips" @click="goedit()">
<view class="content-first">
<view class="left">
<view class="img">
A
</view>
<view class="test">
李先生
</view>
<view class="img">{{customerInfo.name.slice(0,1) || '--'}}</view>
<view class="test">{{customerInfo.name || '--'}}</view>
<view class="edit">
<image class="screen-sel-img" src="../../../static/images/edit.png" mode=""></image>
</view>
</view>
<view class="right">
<!-- <view class="right">
<view class="point"></view>
<view class="test">
定金
</view>
</view>
<view class="test">定金</view>
</view> -->
</view>
<view class="content-sec">
<view class="content-sec-lab">
手机号码:<view class="content-sec-lab1">18777897865</view>
手机号码:<view class="content-sec-lab1">{{customerInfo.phone || '--'}}</view>
</view>
<view class="content-sec-lab">
客户标签:
@@ -32,23 +26,19 @@
<view class="content-sec-tips">学区</view>
</view>
<view class="content-sec-lab">
顾问姓名:<view class="content-sec-lab1">齐横三</view>
顾问姓名:<view class="content-sec-lab1">{{customerInfo.agentName}}</view>
</view>
<view class="content-sec-lab">
添加时间:<view class="content-sec-lab1">2021-07-20 14:00:30</view>
添加时间:<view class="content-sec-lab1">{{customerInfo.createTime}}</view>
</view>
<view class="content-sec-num">
<view class="">
3次到访
</view>
<view class="">
55分/88%
</view>
<view class="">{{customerInfo.visitRecord}}次到访</view>
<view class="">{{customerInfo.fraction || '0'}}% | {{customerInfo.fraction || '0'}}分</view>
</view>
</view>
<view class="content-last">
<view class="content-last-con">
这个客户很有意向,约了明天下午5点半看房,继续跟进~
备注:{{customerInfo.demand.remarks ? customerInfo.demand.remarks : "暂无"}}
</view>
</view>
</view>
@@ -68,85 +58,28 @@
</view>
<view class="tabactive1" v-if="activeTotal==0">
<view class="content-tips">
<view class="content-tips" v-for="(item,index) in Thevisitingrecords" :key="index">
<view class="content-first">
<view class="left">
<view class="img">
</view>
<view class="name">
宋幸运
</view>
<view class="status">
代接待
</view>
</view>
<view class="right">
<view class="point">
</view>
<view class="">
优秀案例
</view>
</view>
</view>
<view class="content-sec">
<view class="left">
<view class="cus">
客户:王先生 |
</view>
<view class="arriveNum">
首次到访
</view>
</view>
<view class="right">
88% | 55分
</view>
</view>
<view class="content-last">
2021-07-20 16:00:30 | 80分钟
</view>
</view>
<view class="content-tips">
<view class="content-first">
<view class="left">
<view class="img">
</view>
<view class="name">
宋幸运
</view>
<view class="status">
代接待
</view>
</view>
<view class="right">
<view class="point">
</view>
<view class="">
优秀案例
</view>
<view class="img">{{item.agentName.slice(0,1) || '--'}}</view>
<view class="name">{{item.agentName || ''}}</view>
<view class="status">代接待</view>
</view>
<!-- <view class="right">
<view class="point"></view>
<view class="">优秀案例</view>
</view> -->
</view>
<view class="content-sec">
<view class="left">
<view class="cus">
客户:王先生 |
</view>
<view class="arriveNum">
首次到访
</view>
</view>
<view class="right">
88% | 55分
<view class="cus">客户:{{item.name || ''}} |</view>
<view class="arriveNum">{{item.visitRecord}}次到访</view>
</view>
<view class="right">{{item.fraction || '0'}}% | {{item.fraction || '0'}}分</view>
</view>
<view class="content-last">
2021-07-20 16:00:30 | 80分钟
</view>
<view class="content-last">{{item.createTime}} | 80分钟</view>
</view>
</view>
<view class="tabactive2" v-if="activeTotal==1">
@@ -154,69 +87,43 @@
<view class="tab2-first">
<view class="tab2-first-1">
<view class="tab2-first-left">
<view class="img">
</view>
<view class="name">
宋幸运
</view>
</view>
<view class="tab2-first-right">
2021-07-20 16:00:30
<view class="img">宋</view>
<view class="name">宋幸运</view>
</view>
<view class="tab2-first-right">2021-07-20 16:00:30</view>
</view>
<view class="tab2-first-foot">
有意向,想要更多优惠
</view>
<view class="tab2-first-foot">有意向,想要更多优惠</view>
</view>
<view class="tab2-sec">
<view class="tab-sec-edit">
编辑记录
</view>
<view class="tab-sec-edit">编辑记录</view>
</view>
</view>
<view class="tab2-tips">
<view class="tab2-first">
<view class="tab2-first-1">
<view class="tab2-first-left">
<view class="img">
</view>
<view class="name">
宋幸运
</view>
<view class="img">宋</view>
<view class="name">宋幸运</view>
</view>
<view class="tab2-first-right">
2021-07-20 16:00:30
</view>
</view>
<view class="tab2-first-foot">
有意向,想要更多优惠
<view class="tab2-first-right">2021-07-20 16:00:30</view>
</view>
<view class="tab2-first-foot">有意向,想要更多优惠</view>
</view>
<view class="tab2-sec">
<view class="tab-sec-edit">
编辑记录
</view>
<view class="tab-sec-edit">编辑记录</view>
</view>
</view>
</view>
<view class="tabactive" v-if="activeTotal==2">
执行率
</view>
<view class="tabactive" v-if="activeTotal==2">执行率</view>
</view>
<view class="pon-foot">
<view class="foot-tab" @click="goRemind">
添加提醒
</view>
<!-- <view class="foot-tab">
拨打电话
</view> -->
<view class="foot-tab">
写跟进
</view>
<view class="foot-tab" @click="goRemind">添加提醒</view>
<!-- <view class="foot-tab">拨打电话</view> -->
<view class="foot-tab">写跟进</view>
</view>
</view>
</template>

@@ -225,12 +132,46 @@
data(){
return{
activeTotal: 0,
customerId:'',
customerInfo:{
name:'',
createTime:'',
agentName:''
},
Thevisitingrecords:[]
}
},
onLoad(options) {
this.customerId = options.id;
},
onShow() {
this.getCustomerInfo()
this.tabtimetap(0)
},
methods:{
// 获取到访记录
getVisitList() {
this.$u.get("/customer/findByPhoneAndProject?id=" + this.customerId, ).then(res => {
this.Thevisitingrecords = res
})
},
// 获取客户信息
getCustomerInfo() {
const that = this;
this.$u.get("/customer/findById", {
id: this.customerId
}).then(res => {
this.customerInfo = res;
})
},
tabtimetap(idx){
console.log(idx)
this.activeTotal=idx
if(idx==0){
this.getVisitList()
}
},
// 去编辑
goedit(){


+ 194
- 4
pages/center/consumer/consumerSearch.vue Wyświetl plik

@@ -1,9 +1,38 @@
<template>
<view class="box">
<view style="width: 690rpx;margin: 0 auto;margin-top: 20rpx;">
<u-search placeholder="请输入" v-model="keyword"></u-search>
<u-search @search='searchinfo()' placeholder="请输入" v-model="keyword"></u-search>
</view>
<view @click="searchinfo()">搜索</view>
<view class="content">
<view class="content-tips" v-for="(item,index) in recordList" :key='index' @click="godetail()">
<view class="content-first">
<view class="left">
<view class="img">{{item.name.slice(0,1)}}</view>
<view class="test">{{item.name}}</view>
</view>
</view>
<view class="content-sec">
<view class="content-sec-lab">
手机号码:<view class="content-sec-lab1">{{item.phone || '--'}}</view>
</view>
<view class="content-sec-lab">
客户标签:
<!-- <view class="content-sec-tips" v-for="(che,ind) in item.demand.cusSemanticWords" :key='ind'>{{che.name}}</view> -->
</view>
<view class="content-sec-lab">
顾问姓名:<view class="content-sec-lab1">{{item.agentName}}</view>
</view>
<view class="content-sec-lab">
添加时间:<view class="content-sec-lab1">{{item.createTime}}</view>
</view>
<view class="content-sec-num">
<view class="">{{item.visitRecord}}次到访</view>
<view class="">{{item.fraction || '0'}}% | {{item.fraction || '0'}}分</view>
</view>
</view>
</view>
</view>
</view>
</template>

@@ -11,8 +40,50 @@
export default{
data(){
return{
keyword:''
keyword:'',
stageList:['未知','到访','意向','定金','成交'],
recordList:[],
nextPage:1,
totalRecord:'',
buildingID:'',
}
},
onShow() {
this.buildingID = uni.getStorageSync('buildingID').id;
},
onReachBottom() {
if(this.totalRecord==this.nextPage){
uni.showToast({
icon:'none',
title: '到底了',
duration: 2000
});
return
}else{
this.nextPage+=1;
this.getMyCustom();
}
},
methods:{
searchinfo(){
this.nextPage=1;
this.recordList=[];
this.getMyCustom();
},
getMyCustom(){
var parames = {
pageNum: this.nextPage,
pageSize: 10,
query: {
projectId:this.buildingID,
}
};
this.$u.post("/customer/customerManagement", parames).then(data => {
var list = data.results || [];
this.recordList = [...this.recordList, ...list];
this.totalRecord=data.totalPage;
})
},
}
}
</script>
@@ -21,6 +92,125 @@
.box {
width: 100%;
height: 100%;
// background: #F8F8F8;
background: #F8F8F8;
}
.content{
// height: 1000rpx;/
overflow: hidden;
border-top: 1px solid #E0E0E0;
.content-tips{
background: #fff;
// box-sizing: border-box;
margin-bottom: 20rpx;
overflow: hidden;
.content-first{
padding: 19rpx 30rpx;
display: flex;
justify-content: space-between;
box-sizing: border-box;
// border-top: 1px solid #E0E0E0;
font-weight: 400;
color: #292929;
height: 90rpx;
font-size: 30rpx;
line-height: 30rpx;
.left{
display: flex;
.img{
// margin-top: 19rpx;
width: 52rpx;
height: 52rpx;
border: 1px solid #E0E0E0;
border-radius: 50%;
text-align: center;
line-height: 50rpx;
}
.test{
margin-top: 11rpx;
margin-left: 20rpx;
font-weight: 500;
color: #333333;
}
}
.right{
display: flex;
.point{
width: 12rpx;
height: 12rpx;
background: #2B6EFF;
border-radius: 50%;
margin-right: 9rpx;
margin-top: 20rpx;
}
.test{
margin-top: 11rpx;
}
}
}
.content-sec{
border-top: 1px solid #E0E0E0;
padding: 0 30rpx;
padding-bottom: 30rpx;
// height: 270rpx;
position: relative;
.content-sec-lab{
margin-top: 30rpx;
display: flex;
font-size: 30rpx;
font-weight: 400;
color: #666666;
line-height: 30rpx;
.content-sec-lab1{
color: #333333;
}
.content-sec-tips{
max-width:174rpx ;
height: 46rpx;
background: #F2F2F2;
border-radius: 6rpx;
text-align: center;
line-height: 26rpx;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
font-size: 26rpx;
font-weight: 400;
color: #333333;
margin-right: 24rpx;
box-sizing: border-box;
padding: 10rpx 24rpx;
}
}
.content-sec-num{
position: absolute;
width: 190rpx;
height: 90rpx;
background: #F4F8FD;
border-radius: 12rpx;
font-weight: 400;
color: #2671E2;
line-height: 45rpx;
bottom: 30rpx;
right: 30rpx;
text-align: center;
}
}
.content-last{
display: flex;
border-top: 1px solid #E0E0E0;
// padding: 0 30rpx;
height: 78rpx;
.content-last-tab{
width: 33.4%;
text-align: center;
font-size: 30rpx;
font-weight: 400;
color: #333333;
line-height: 78rpx;
border-right: 1px solid #E0E0E0;
}
}
}
}
</style>

+ 125
- 178
pages/center/consumer/index.vue Wyświetl plik

@@ -1,6 +1,5 @@
<template>
<view class="box">
<!-- 搜索框点击跳转 -->
<view>
<view class="search-box">
<view class="search" @click="goSearch">
@@ -16,122 +15,45 @@
</view>

<view class="content">
<view class="content-tips" @click="godetail()">
<view class="content-tips" v-for="(item,index) in recordList" :key='index' @click="gotoDetail(item.id)">
<view class="content-first">
<view class="left">
<view class="img">
A
</view>
<view class="test">
李先生
</view>
<view class="img">{{item.name.slice(0,1)}}</view>
<view class="test">{{item.name}}</view>
</view>
<view class="right">
<!-- <view class="right">
<view class="point"></view>
<view class="test">
定金
</view>
</view>
<view class="test">定金</view>
</view> -->
</view>
<view class="content-sec">
<view class="content-sec-lab">
手机号码:<view class="content-sec-lab1">18777897865</view>
手机号码:<view class="content-sec-lab1">{{item.phone || '--'}}</view>
</view>
<view class="content-sec-lab">
客户标签:
<view class="content-sec-tips">投资</view>
<view class="content-sec-tips">理财专用</view>
<view class="content-sec-tips">学区</view>
<!-- <view class="content-sec-tips" v-for="(che,ind) in item.demand.cusSemanticWords" :key='ind'>{{che.name}}</view> -->
</view>
<view class="content-sec-lab">
顾问姓名:<view class="content-sec-lab1">齐横三</view>
顾问姓名:<view class="content-sec-lab1">{{item.agentName}}</view>
</view>
<view class="content-sec-lab">
添加时间:<view class="content-sec-lab1">2021-07-20 14:00:30</view>
添加时间:<view class="content-sec-lab1">{{item.createTime}}</view>
</view>
<view class="content-sec-num">
<view class="">
3次到访
</view>
<view class="">
55分/88%
</view>
<view class="">{{item.visitRecord}}次到访</view>
<view class="">{{item.fraction || '0'}}% | {{item.fraction || '0'}}分</view>
</view>
</view>
<view class="content-last">
<view class="content-last-tab">
添加提醒
</view>
<view class="content-last-tab">
拨打电话
</view>
<view class="content-last-tab" @click="goFollow">
写跟进
</view>
</view>
</view>
<view class="content-tips">
<view class="content-first">
<view class="left">
<view class="img">
A
</view>
<view class="test">
李先生
</view>
</view>
<view class="right">
<view class="point"></view>
<view class="test">
定金
</view>
</view>
</view>
<view class="content-sec">
<view class="content-sec-lab">
手机号码:<view class="content-sec-lab1">18777897865</view>
</view>
<view class="content-sec-lab">
客户标签:
<view class="content-sec-tips">投资</view>
<view class="content-sec-tips">理财专用11</view>
<view class="content-sec-tips">学区</view>
</view>
<view class="content-sec-lab">
顾问姓名:<view class="content-sec-lab1">齐横三</view>
</view>
<view class="content-sec-lab">
添加时间:<view class="content-sec-lab1">2021-07-20 14:00:30</view>
</view>
<view class="content-sec-num">
<view class="">
3次到访
</view>
<view class="">
55分/88%
</view>
</view>
</view>
<view class="content-last">
<view class="content-last-tab">
添加提醒
</view>
<view class="content-last-tab">
拨打电话
</view>
<view class="content-last-tab">
写跟进
</view>
<!-- <view class="content-last-tab">添加提醒</view>
<view class="content-last-tab">拨打电话</view> -->
<view class="content-last-tab" @click.stop="gotoFollowUp(item.id)">写跟进</view>
</view>
</view>
</view>
<u-popup v-model="screenShow" mode="top" >
<view class="screen">
<!-- 顾问选择 -->
@@ -140,7 +62,7 @@
所属顾问
</view>
<view class="screen-sel">
<u-input v-model="screen.counselorName" type="text" placeholder='请选择' @click="selectshow = true" class="screen-inp" disabled />
<u-input v-model="screen.agentIdtext" type="text" placeholder='请选择' @click="selectshow = true" class="screen-inp" disabled />
<image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
</view>
</view>
@@ -173,7 +95,7 @@
</view>
</view>
</view>
<view class="screen-record">
<!-- <view class="screen-record">
<view class="screen-record-text">
客户阶段
</view>
@@ -184,34 +106,26 @@
</view>
</view>
</view>
</view>
</view> -->
<view class="screen-record">
<view class="screen-record-text">
到访次数
</view>
<view class="screen-record-tab">
<view :class="[screen.arriveNum==0?'screen-record-chose':'screen-record-nochose']" @click="screen.arriveNum=0">
<view :class="[screen.visitRecord==1?'screen-record-chose':'screen-record-nochose']" @click="screen.visitRecord=1">
首次到访
</view>
<view :class="[screen.arriveNum==1?'screen-record-chose':'screen-record-nochose']" @click="screen.arriveNum=1">
<view :class="[screen.visitRecord==2?'screen-record-chose':'screen-record-nochose']" @click="screen.visitRecord=2">
第二次
</view>
<view :class="[screen.arriveNum==2?'screen-record-chose':'screen-record-nochose']" @click="screen.arriveNum=2">
<view :class="[screen.visitRecord==3?'screen-record-chose':'screen-record-nochose']" @click="screen.visitRecord=3">
第三次
</view>
<view :class="[screen.arriveNum==3?'screen-record-chose':'screen-record-nochose']" @click="screen.arriveNum=3">
<view :class="[screen.visitRecord==4?'screen-record-chose':'screen-record-nochose']" @click="screen.visitRecord=4">
三次以上
</view>
</view>
</view>
<!-- <view class="screen-record">
<view class="screen-record-text">
最近接待时间
</view>
<view class="screen-record-tab">
</view>
</view> -->
<view class="screen-foot">
<view class="screen-foot-reset" @click="reset">
重置
@@ -223,7 +137,7 @@
</view>
</u-popup>
<!-- 选择顾问的选择框 -->
<u-select v-model="selectshow" :list="list" @confirm="actionSelectCallback"></u-select>
<u-select v-model="selectshow" :list="freeList" @confirm="actionSelectCallback"></u-select>
<!-- 客户标签 -->
<u-select v-model="selectTipshow" :list="list1" @confirm="selectCallback"></u-select>
<!-- 时间选择器 -->
@@ -239,103 +153,135 @@
screenShow:false,
selectshow:false,
selectTipshow:false,
buildingID:'',
screen:{
counselorName:'',
record:'0',
stage:'0',
arriveNum:'0',
agentId:'',
agentIdtext:'',
visitRecord:'',
record:null,
cunsumerTips:''
},
stageList:['未知','到访','意向','定金','成交'],
list:[
{
value:1,
label:'1'
},
{
value:2,
label:'2'
},
{
value:3,
label:'3'
},
{
value:4,
label:'4'
},
],
list1:[
{
value:1,
label:'1'
},
{
value:2,
label:'2'
},
{
value:3,
label:'3'
},
{
value:4,
label:'4'
},
],
recordList:[],
stageList:['未知','到访','意向','定金','成交'],
recordList:[],
nextPage:1,
totalRecord:'',
freeList:[]
}
},
onShow() {
this.buildingID = uni.getStorageSync('buildingID').id;
this.recordList=[]
this.getMyCustom()
this.getFreeList()
},
onReachBottom() {
if(this.totalRecord==this.nextPage){
uni.showToast({
icon:'none',
title: '到底了',
duration: 2000
});
return
}else{
this.nextPage+=1;
this.getMyCustom();
}
},
methods:{
// 客户详情
gotoDetail(id) {
uni.navigateTo({
url: `/pages/center/consumer/consumerDetail?id=${id}`
})
},
getMyCustom(){
var parames = {
pageNum: this.nextPage,
pageSize: 10,
query: {
projectId:this.buildingID,
}
};
if (this.screen.agentId.length > 0) {
parames.query.agentId = this.screen.agentId;
}
if (this.screen.visitRecord.length > 0) {
parames.query.visitRecord = this.screen.visitRecord;
}
if (this.screen.visitRecord > 0) {
parames.query.visitRecord = this.screen.visitRecord;
}
if(this.screen.record==0){
parames.query.levels= ["1"]
}else if(this.screen.record==1){
parames.query.levels= ["2"]
}else if(this.screen.record==2){
parames.query.levels= ["3"]
}else if(this.screen.record==3){
parames.query.levels= ["4"]
}else{
parames.query.levels=''
}
this.$u.post("/customer/customerManagement", parames).then(data => {
var list = data.results || [];
this.recordList = [...this.recordList, ...list];
this.totalRecord=data.totalPage;
})
},
//获取顾问列表
getFreeList() {
this.$u.get("/zkAgentPool/freeList?itemId="+this.buildingID).then(res => {
this.freeList = res;
this.freeList.forEach(item=>{
item.label=item.name;
item.value=item.agentId
})
})
},
// 筛选
screenshow(){
this.screenShow=true
},
//选择顾问
actionSelectCallback(e){
console.log(e[0].label)
// this.value = this.actionSheetList[index].label;
this.screen.counselorName=e[0].label
this.screen.agentId=e[0].value;
this.screen.agentIdtext=e[0].label;
},
//选择标签
selectCallback(e){
console.log(e[0].label)
// this.value = this.actionSheetList[index].label;
this.screen.cunsumerTips=e[0].label
},
//重置
reset(){
this.screen={
counselorName:'',
record:'0',
stage:'0',
arriveNum:'0',
agentId:'',
agentIdtext:'',
visitRecord:'',
record:null,
cunsumerTips:''
}
this.recordList=[];
this.getMyCustom();
},
// 客户详情
godetail(){
uni.navigateTo({
url:'/pages/center/consumer/consumerDetail'
})
},
//筛选确认
screensure(){
console.log(this.screen)
this.screenShow=false
this.screenShow=false;
this.nextPage=1;
this.recordList=[];
this.getMyCustom();
},
goSearch(){
uni.navigateTo({
url: '/pages/center/consumer/consumerSearch'
});
},
goFollow(){
gotoFollowUp(id) {
uni.navigateTo({
url:`/pages/center/consumer/newFollowup/newFollowup?id=5f3846c2e8134dda8b3f41fc90684114`,
url: `/pages/center/consumer/newFollowup/newFollowup?id=${id}`
})
},
},
onLoad() {
console.log('这里是进入')
}
}
</script>
@@ -443,7 +389,8 @@
.content-sec{
border-top: 1px solid #E0E0E0;
padding: 0 30rpx;
height: 270rpx;
padding-bottom: 30rpx;
// height: 270rpx;
position: relative;
.content-sec-lab{
margin-top: 30rpx;


+ 1
- 1
pages/mine/consultanonduty/index.vue Wyświetl plik

@@ -124,7 +124,7 @@
.box{
background: #F8F8F8;
width: 100%;
height: 100%;
height: 100vh;
font-size: 30rpx;
font-weight: 400;
// line-height: 30px;


BIN
static/images/down1.png Wyświetl plik

Przed Po
Szerokość: 40  |  Wysokość: 24  |  Rozmiar: 675 B

BIN
static/images/down2.png Wyświetl plik

Przed Po
Szerokość: 40  |  Wysokość: 24  |  Rozmiar: 672 B

BIN
static/images/userorder.png Wyświetl plik

Przed Po
Szerokość: 120  |  Wysokość: 120  |  Rozmiar: 5.9 KiB

Ładowanie…
Anuluj
Zapisz