Browse Source

接待页面优化

yun
douzhuo 2 years ago
parent
commit
ed6dd18591
4 changed files with 326 additions and 186 deletions
  1. +110
    -56
      pages/mine/details2.vue
  2. +1
    -1
      pages/mine/reception/addreception.vue
  3. +213
    -127
      pages/mine/reception/consultant.vue
  4. +2
    -2
      utils/domain.js

+ 110
- 56
pages/mine/details2.vue View File

@@ -9,12 +9,6 @@
<image v-if="status==0" @click="notappick()" src="../../static/images/nopike.png" mode=""></image>
</view>
</view>
<!-- <view class="inputbox" v-if="guanjianciishow">
<view class="thisinput" @click="toKeywordsearch()">
请输入或选择
</view>
</view> -->
<!-- 标记顾问 -->
<view class="headboxbott">
<view class="headovfu">
<u-tabs-swiper ref="tabs" font-size="30" :bold="true" swiper-width="600" :current="roleindex"
@@ -35,6 +29,14 @@
<view class="text" :id="'dialog'+csdFileindex+'text'+item.bg"
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow, isGreen: item.isShow == 0}"
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker">

<template v-if="refined">
<view class="checkbox" :class="{select: item.checked}" @click="cbChange(item)">
<template v-if="item.checked">
<u-icon name="checkbox-mark" color="#fff" />
</template>
</view>
</template>
<view class="avatar">
<view :style="[SPEAKERSTYLE(item.speaker)]">
<text v-if="item.isShow == 0">顾</text>
@@ -64,14 +66,14 @@
</view>
</view>
</view>
<image @click="clickbofang(dialog.backindex,item)" class="play"
<image v-if="!refined" @click="clickbofang(dialog.backindex,item)" class="play"
src="../../static/images/recordingManagement/play.png"></image>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="bottombox">
<view class="bottombox" v-if="!refined">
<!-- 播放块 :src="recordPath" -->
<zaudio :duration="duration" theme="theme4"></zaudio>
<!-- 底部弹框 -->
@@ -107,11 +109,10 @@
src="../../static/images/audioinfo2.png" mode=""></image>
<view @click="Receivedetailsabouttab('Receivedetailsabout')">接待信息</view>
</view>


</view>
</view>

<view v-else class="bottomboxs" @click="sureRefinement">确定</view>
<!-- 标记 -->
<view class="zhezhoa" v-if="biojiisshow" @tap="unmarktap()"></view>
<view class="bounced" v-if="biojiisshow">
@@ -131,13 +132,15 @@

<!-- 加入常错词 -->
<view class="zhezhoa" v-if="isshow2" @tap="Cancelout"></view>
<u-modal v-model="isshow2" title="添加常错词" :show-cancel-button="true" @cancel="Cancelout" @confirm="$noMultipleClicks(Confirmtheexit)">

<u-modal v-model="isshow2" title="添加常错词" :show-cancel-button="true" @cancel="Cancelout"
@confirm="$noMultipleClicks(Confirmtheexit)">
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">常错词:</viwe>
<viwe class="tian-view-t3">
<textarea :auto-height="true" type="text" v-model="thewrongword" :disabled="isNum" class="tian-input" placeholder="请输入" />
<textarea :auto-height="true" type="text" v-model="thewrongword" :disabled="isNum"
class="tian-input" placeholder="请输入" />
</viwe>
</view>
<view class="tian-view" style="margin-bottom: 74rpx;">
@@ -148,7 +151,7 @@
</viwe>
</view>
</u-modal>
<!-- <view class="bounced" v-if="isshow2">
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
@@ -281,7 +284,7 @@
</view>
</view>
<view class="hsnrtest" v-if="subitem.show">话术内容</view>
<view class="Level3che" @tap="clickaudeopal(che)" v-if="subitem.show"
<view class="Level3che" @tap="clickaudeopal(che)" v-if="subitem.show"
v-for="(che,inc) in subitem.children" :key='inc'>
<view class="title1" :class="{gray: che.viewFlag == 1}">{{inc+1}}.{{che.name}}</view>
<view class="jiantobox">
@@ -424,7 +427,7 @@

<u-toast ref="uToast" />
</view>
</template>

<script>
@@ -540,6 +543,8 @@
isPageHide: false, // 是否息屏
duration: '', // 总时长
isBand: false, // 阻止二次提交

refined: false,
};
},
computed: {
@@ -627,6 +632,11 @@
},

methods: {
// 选中取反
cbChange(item) {
item.checked = !item.checked
this.$forceUpdate()
},
rolexuanze(index) {
this.roleindexrow = index;
},
@@ -710,7 +720,7 @@
this.Pinspeak = false
uni.navigateTo({
url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item
.marketingId + "&type=" + 0 + '&UpDateEvent=DETAILS2INIT'
.marketingId + "&type=" + 0 + '&UpDateEvent=DETAILS2INIT'
})
}
},
@@ -850,34 +860,34 @@
success: function(res) {
that.isBand = true
if (that.noClick) {
that.noClick= false;
if (res.confirm) {
let parames = {
id: that.customerId,
validInvalid: '',
invalidReason: 0
}
if (that.userlistobj.validInvalid == 0) {
parames.validInvalid = 1;
} else {
parames.validInvalid = 0;
}
that.$u.post("/customer/updateValidInvalid", parames).then(res => {
console.log(res)
that.noClick = false;
if (res.confirm) {
let parames = {
id: that.customerId,
validInvalid: '',
invalidReason: 0
}
if (that.userlistobj.validInvalid == 0) {
parames.validInvalid = 1;
} else {
parames.validInvalid = 0;
}
that.$u.post("/customer/updateValidInvalid", parames).then(res => {
console.log(res)
that.isBand = false
that.Thetapeidisshow = false;
}).catch(e => {
that.Thetapeidisshow = false;
}).catch(e => {
that.isBand = false
})
}
setTimeout(()=> {
that.noClick= true;
}, 2000)
}
setTimeout(() => {
that.noClick = true;
}, 2000)
} else {
// 这里是重复点击的判断
// 这里是重复点击的判断
}
}
});
} else {
@@ -908,7 +918,7 @@
this.$u.post("/customer/updateValidInvalid", parames).then(res => {
console.log(res)
this.Thetapeidisshow = false;
}).catch(e=>{
}).catch(e => {
this.isBand = false
})
},
@@ -1010,7 +1020,8 @@
this.newluyinList = [];
this.fenjiaoseunfo()
this.$forceUpdate()
}, //------------------------------------分角色标记刷新
},
//------------------------------------分角色标记刷新
fenjiaoseunfo() {
var bgcd = this.playNow * 1000;
this.newluyinList = [];
@@ -1092,10 +1103,13 @@
//下拉标记点
this.toptextindex = data.data.data.index;
this.isShowMark = data.data.data.viewNameFlag;
console.log(this.isShowMark)
jsonInfo.forEach(item => {
item.message = JSON.parse(item.onebest)
item.backindex = this.csdFileindex
console.log(item.message, '123u8123u89i123io')
item.message.forEach(info => {
info.checked = false
})
})

this.newluyinList = jsonInfo;
@@ -1369,7 +1383,7 @@
title: '正确值不能为空',
type: 'warning',
})
this.isshow2 = true;
this.isshow2 = true;
return
}
} else {
@@ -1377,7 +1391,7 @@
title: '错误词不能为空',
type: 'warning',
})
this.isshow2 = true;
this.isshow2 = true;
return
}
}
@@ -1400,6 +1414,16 @@
},
//加精华
Addtheessence() {
this.refined = true
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
},
// 确认批量加精
sureRefinement() {
this.isshow3 = true;
this.biaoqianlist = []
let parames = {
@@ -1413,6 +1437,7 @@
})
})
},
// 取消加精
Cancelout2() {
this.isshow3 = false;
@@ -1647,14 +1672,13 @@
jsonInfo.forEach(item => {
item.message = JSON.parse(item.onebest)
item.backindex = this.csdFileindex;
if (info.onebest) {
item.message.forEach(che => {
if (che.onebest == info.onebest) {
che.onebest =
`<font style='color: red'>${che.onebest}</font>`;
}
})
}
item.message.forEach(che => {
che.checked = false
if (che.onebest == info.onebest) {
che.onebest =
`<font style='color: red'>${che.onebest}</font>`;
}
})
})

this.newluyinList = jsonInfo;
@@ -1873,6 +1897,18 @@
align-items: center;
}
}
.bottomboxs {
width: 100%;
height: 90rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background: #008EF2;
font-size: 36rpx;
font-weight: bold;
}
}

.headboxhead {
@@ -2356,6 +2392,23 @@
}
}

.checkbox {
margin: 80rpx 20rpx 0;
width: 48rpx;
height: 48rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
border: 1rpx solid #70798D;

&.select {
border-color: #008EF2;
background: #008EF2;
color: #fff;
}
}

.scroll-Y .text .contentInfo .info {
color: #ccc;
font-size: 18rpx;
@@ -2536,7 +2589,7 @@
color: #2671E2;
font-weight: 400;
}
.gray {
color: #979797 !important;
}
@@ -2681,7 +2734,8 @@
padding: 20rpx;
border: 1rpx solid #E4F0FF;
}
/deep/ .u-model-title{

/deep/ .u-model-title {
padding: 34rpx 0 16rpx !important;
}



+ 1
- 1
pages/mine/reception/addreception.vue View File

@@ -331,7 +331,7 @@
},
//获取顾问列表
getFreeList() {
this.$u.get("/zkAgentPool/freeList?itemId=" + this.parames.projectId).then(res => {
this.$u.get("/zkAgentPool/freeList?itemId=" + this.parames.projectId+"&deptId="+''+'&name='+'').then(res => {
this.freeList = res;
this.freeList.forEach(item => {
if (item.onLine == 0) {


+ 213
- 127
pages/mine/reception/consultant.vue View File

@@ -4,7 +4,16 @@
<view class="nextcon">
下一位接待顾问:{{textcdhSKJ}}
</view>
<view class="content" style="padding-bottom: 200rpx;">
<!-- 搜索筛选顾问 -->
<view class="search-tag">
<u-search v-model="keywords" @search="searchFunc" bgColor="#F8F8F8" shape="round" placeholder="顾问名称"
:showAction="false" :clearabled="true"></u-search>

<view class="tabs-box" v-if="list.length > 0">
<u-tabs :list="list" :current="listCurrent" name="deptName" @change="change"></u-tabs>
</view>
</view>
<view class="content">
<radio-group @change="radioChange">
<view v-for="(item,index) in freeList" :key="index" class="content-tips">
<view class="left">
@@ -26,18 +35,20 @@
</view>
</view>
</radio-group>
</view>
<view class="empty" v-if="freeList.length == 0">
<image class="image" src="@/static/images/customerEmpty.png" mode=""></image>
<view class="tips">
暂无空闲顾问

<view class="empty" v-if="freeList.length == 0">
<image class="image" src="@/static/images/customerEmpty.png" mode=""></image>
<view class="tips">
暂无空闲顾问
</view>
</view>
</view>
<view class="save" @click="save" :class="{active:chosedAgentId}">
<view v-if="freeList.length > 0" class="save" @click="save" :class="{active:chosedAgentId}">
保存
</view>
<u-modal v-model="show" :mask-close-able="true" :title="'代接待提醒'" :confirm-text="confirmtext" :cancel-text='canceltext' @cancel="confirmA" @confirm="confirmB" :show-cancel-button='true' :content="content"></u-modal>
<u-modal v-model="show" :mask-close-able="true" :title="'代接待提醒'" :confirm-text="confirmtext"
:cancel-text='canceltext' @cancel="confirmA" @confirm="confirmB" :show-cancel-button='true'
:content="content"></u-modal>
</view>
</template>

@@ -51,39 +62,84 @@
current: null,
chosedAgentId: '',
textcdhSKJ: '',
show:false,
show: false,
content: '东临碣石,以观沧海',
confirmtext:'1',//确认文字
canceltext:'2',//取消文字
daitiReceptionobj:{},
replaceReception:0
confirmtext: '1', //确认文字
canceltext: '2', //取消文字
daitiReceptionobj: {},
replaceReception: 0,
keywords: '', // 关键词

list: [], // 部门列表
listCurrent: 0, //选中分类下标
deptId: '',

}
},
onLoad(option) {
this.customerId = option.id;
this.getAllList()
},
onShow() {
this.buildingID = uni.getStorageSync('buildingID').id;
this.getFreeList();
this.getFreeList();

},
methods: {
//取消
confirmA(){
if(this.daitiReceptionobj.assign!=null){
// 获取全部的列表
getAllList() {
let params = {
houseId: uni.getStorageSync('buildingID').id
}
this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', params)
.then(res => {
console.log(res, 'list')
if (res && res.length > 0) {
this.list = res
this.list.unshift({
deptName: '全部',
deptId: '',
})
}
})
},

// 重置页面数据
initPageList() {
this.freeList = []
},
// 选中部门
change(index) {
this.deptId = this.list[index].deptId
this.listCurrent = index;
this.initPageList()
this.getFreeList()
},
// 搜索
searchFunc() {
console.log('我搜索了', 'keywords')
this.initPageList()
this.getFreeList()
},

//取消
confirmA() {
if (this.daitiReceptionobj.assign != null) {
this.baochunfun()
} else {
uni.showToast({
icon: "none",
title: "【" + this.daitiReceptionobj.owner.name + "】正在接待中"
})
return;
}
},
// 确认
confirmB() {
this.replaceReception = 1;
this.baochunfun()
}else{
uni.showToast({
icon: "none",
title: "【"+this.daitiReceptionobj.owner.name+"】正在接待中"
})
return;
}
},
// 确认
confirmB(){
this.replaceReception=1;
this.baochunfun()
},
},
// 保存按钮点击事件
save() {
console.log(this.chosedAgentId)
if (!this.chosedAgentId) {
@@ -98,34 +154,37 @@
agentId: that.chosedAgentId,
id: that.customerId
}).then(res => {
if(res.unchecked==0){
if (res.unchecked == 0) {
that.baochunfun()
}else{
if(res.zs==0){
} else {
if (res.zs == 0) {
that.baochunfun()
}else{
if(res.assign==null&&res.replacement==null){
} else {
if (res.assign == null && res.replacement == null) {
that.baochunfun()
}else{
if(res.assign==null){
that.daitiReceptionobj=res;
that.content="此客户的顾问为【"+ res.owner.name +"】,确认让【"+ res.replacement.name +"】代接待吗?"
that.confirmtext=res.replacement.name +"代接待",//确认文字
that.canceltext=res.owner.name +'接待',//取消文字
that.show=true;
}else{
that.daitiReceptionobj=res;
that.content="此客户的顾问为【"+ res.owner.name +"】,确认让【"+ res.replacement.name +"】代接待吗?"
that.confirmtext=res.replacement.name +"代接待",//确认文字
that.canceltext=res.assign.name +'接待',//取消文字
that.show=true;
} else {
if (res.assign == null) {
that.daitiReceptionobj = res;
that.content = "此客户的顾问为【" + res.owner.name + "】,确认让【" + res.replacement.name +
"】代接待吗?"
that.confirmtext = res.replacement.name + "代接待", //确认文字
that.canceltext = res.owner.name + '接待', //取消文字
that.show = true;
} else {
that.daitiReceptionobj = res;
that.content = "此客户的顾问为【" + res.owner.name + "】,确认让【" + res.replacement.name +
"】代接待吗?"
that.confirmtext = res.replacement.name + "代接待", //确认文字
that.canceltext = res.assign.name + '接待', //取消文字
that.show = true;
}
}
}
}
});
},
baochunfun(){
// 保存指派顾问
baochunfun() {
uni.showLoading({
title: "保存中",
mask: true
@@ -134,27 +193,30 @@
this.$u.post("customer/assign", {
agentId: that.chosedAgentId,
id: that.customerId,
replaceReception:this.replaceReception
replaceReception: this.replaceReception
}).then(res => {
uni.showToast({
icon: "none",
title: "分配成功"
})
uni.navigateBack();
uni.hideLoading();
});
uni.hideLoading()
uni.navigateBack()
})
},
// 获取顾问列表
getFreeList() {
this.$u.get("/zkAgentPool/freeList?itemId=" + this.buildingID).then(res => {
if (res.length == 0) {
this.freeList = []
} else {
this.freeList = res;
this.textcdhSKJ = res[0].name
}
})
this.$u.get("/zkAgentPool/freeList?itemId=" + this.buildingID + "&deptId=" + this.deptId + '&name=' + this
.keywords)
.then(res => {
if (res.length == 0) {
this.freeList = []
} else {
this.freeList = res;
this.textcdhSKJ = res[0].name
}
})
},
radioChange: function(evt) {
radioChange(evt) {
this.chosedAgentId = '';
this.chosedAgentId = evt.detail.value;
},
@@ -163,50 +225,17 @@
</script>

<style lang="scss" scoped>
.empty {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;

.image {
width: 478upx;
height: 478upx;
}

.tips {
font-size: 36upx;
color: #242424;
line-height: 1;
margin-top: 50upx;
}
}

.save {
position: fixed;
width: calc(100vw - 60upx);
bottom: 50upx;
left: 30rpx;
color: #FFFFFF;
font-size: 30upx;
height: 98upx;
border-radius: 8upx;
display: flex;
justify-content: center;
align-items: center;
background: rgba(42, 111, 255, 1);
}

.box {
background: #F8F8F8;
width: 100%;
height: 100%;
min-height: calc(100vh - var(--window-top));
display: flex;
flex-direction: column;
font-size: 30rpx;
font-weight: 400;

// line-height: 30px;
.nextcon {
flex-shrink: 0;
height: 78rpx;
background: #F4F8FD;
color: #2671E2;
@@ -214,44 +243,101 @@
line-height: 78rpx;
}

.content-tips {
display: flex;
justify-content: space-between;
.search-tag {
margin: 0 0 20rpx 0;
padding: 30rpx 30rpx 0;
background: #fff;
padding: 0 30rpx;
height: 148rpx;
margin-bottom: 20rpx;

.left {
.tabs-box {
background: #fff;
}
}


.content {
flex-grow: 1;
display: flex;
flex-direction: column;

.content-tips {
display: flex;
margin-top: 30rpx;
justify-content: space-between;
background: #fff;
padding: 0 30rpx;
height: 148rpx;
margin-bottom: 20rpx;

.img {
width: 72rpx;
height: 72rpx;
background: #FFFFFF;
border: 1px solid #C9C9C9;
line-height: 64rpx;
text-align: center;
border-radius: 50%;
margin-right: 20rpx;
}
.left {
display: flex;
margin-top: 30rpx;

.text {
.name {
margin-top: 4rpx;
font-weight: 600;
color: #333333;
line-height: 30rpx;
margin-bottom: 24rpx;
.img {
width: 72rpx;
height: 72rpx;
background: #FFFFFF;
border: 1px solid #C9C9C9;
line-height: 64rpx;
text-align: center;
border-radius: 50%;
margin-right: 20rpx;
}

.text {
.name {
margin-top: 4rpx;
font-weight: 600;
color: #333333;
line-height: 30rpx;
margin-bottom: 24rpx;
}

}
}

.right {
margin: 54rpx 0;
}
}

.right {
margin: 54rpx 0;

.empty {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;

.image {
width: 300rpx;
height: 300rpx;
}

.tips {
font-size: 36rpx;
color: #242424;
line-height: 1;
margin-top: 50rpx;
}
}
}



.save {
position: sticky;
bottom: 50rpx;
z-index: 10;
flex-shrink: 0;
margin: 50rpx auto;
width: calc(100vw - 60rpx);
color: #FFFFFF;
font-size: 30rpx;
height: 98rpx;
border-radius: 8rpx;
display: flex;
justify-content: center;
align-items: center;
background: rgba(42, 111, 255, 1);
}
}
</style>

+ 2
- 2
utils/domain.js View File

@@ -1,10 +1,10 @@
// http.js使用域名
const baseUrl = 'http://81.70.55.170:9090/autoSR/api';// 最新测试
// const baseUrl = 'http://81.70.55.170:9090/autoSR/api';// 最新测试
// const baseUrl = 'http://192.168.31.211:8080/api';// 泽明
// const baseUrl = 'http://localhost:8080/autoSR/api'; // 本地
// const baseUrl = 'http://192.168.31.161:8080/autoSR/api'; // 长龙
// const baseUrl = 'http://192.168.31.86:9090/api'; // 盛浩
// const baseUrl = 'https://zkgj.quhouse.com/api'; // 质控正式
const baseUrl = 'https://zkgj.quhouse.com/api'; // 质控正式
// const baseUrl = 'https://hfju.com/api'; // 数智正式




Loading…
Cancel
Save