@@ -1,5 +1,5 @@ | |||
{ | |||
"name" : "去房智控管家", | |||
"name" : "数智工牌", | |||
"appid" : "__UNI__7A1611D", | |||
"description" : "去房智控管家", | |||
"versionName" : "1.1.0", | |||
@@ -91,7 +91,7 @@ | |||
}, | |||
"quickapp" : {}, | |||
"mp-weixin" : { | |||
"appid" : "wx8f883dca5ecc5510", | |||
"appid" : "wxe044603515ff2cb5", | |||
"setting" : { | |||
"urlCheck" : false, | |||
"es6" : true, | |||
@@ -76,11 +76,14 @@ | |||
<text style="margin-right: 10rpx;">对比:{{index==1?item.num1+'%':item.num1}} </text> | |||
<template v-if="item.num2*1 != 0"> | |||
<text | |||
:style="{color:item.num2*1>0?'red':'green'}">{{item.num2+'%'}}{{item.num2*1 > 0 ? '↑':'↓'}}</text> | |||
:style="{color:item.num2*1>0?'red':'green'}"> | |||
<!-- +'%' --> | |||
{{item.num2}}{{ item.name == '平均执行率' ? "%" : "" }}{{item.num2*1 > 0 ? '↑':'↓'}}</text> | |||
</template> | |||
<template v-else> | |||
<!-- +'%' --> | |||
<text | |||
:style="{color:item.num2*1>0?'red':'green'}">{{item.num2+'%'}}</text> | |||
:style="{color:item.num2*1>0?'red':'green'}">{{item.num2}}{{ item.name == '平均执行率' ? "%" : "" }}</text> | |||
</template> | |||
</view> | |||
</view> | |||
@@ -1405,12 +1405,12 @@ | |||
} | |||
.pon-foot { | |||
position: fixed; | |||
position: sticky; | |||
bottom: 0; | |||
width: 750rpx; | |||
height: 100rpx; | |||
background: #FFFFFF; | |||
box-shadow: 0px -2rpx 8rpx 0rpx rgba(224, 224, 224, 0.5); | |||
bottom: 0; | |||
display: flex; | |||
justify-content: space-around; | |||
align-items: center; | |||
@@ -17,18 +17,17 @@ | |||
</view> | |||
<zaudio :duration="duration" theme="theme4"></zaudio> | |||
</view> | |||
<scroll-view lower-threshold='20px' @scrolltolower="ltolower()" scroll-y="true" | |||
class="text scroll-Y" :scroll-top="scrollTop" :scroll-into-view="scrollId"> | |||
<scroll-view lower-threshold='20px' @scrolltolower="ltolower()" scroll-y="true" class="text scroll-Y" | |||
:scroll-top="scrollTop" :scroll-into-view="scrollId"> | |||
<!-- 音频识别模块 --> | |||
<view> | |||
<!-- 聊天记录--> | |||
<view class="dialog-block" v-for="(dialog,i) in dialogList" :key="i"> | |||
<view :id="'dialog'+i" class="fileName">录音文件</view> | |||
<view class="text dingweishiy" | |||
v-for="(item,index) in dialog.message" :key="index" :id="'dialog'+csdFileindex+'text'+item.bg" | |||
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow && i==0}" | |||
:data-speaker="item.speaker" | |||
> | |||
<view class="text dingweishiy" v-for="(item,index) in dialog.message" :key="index" | |||
:id="'dialog'+csdFileindex+'text'+item.bg" | |||
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow && i==0}" | |||
:data-speaker="item.speaker"> | |||
<view class="avatar"> | |||
<text :style="[SPEAKERSTYLE(item.speaker)]">{{ item.speaker | toCapital }}</text> | |||
</view> | |||
@@ -208,23 +207,23 @@ | |||
startFile: '', | |||
num: 0, //上拉 转写文件下标 | |||
Bnum: 0, //下拉 转写文件下标 | |||
ACTION: Symbol('zaudio'), // 唯一值区分每个页面的方法 | |||
isPageHide: false, // 是否息屏 | |||
duration: '', | |||
}; | |||
}, | |||
onLoad(options) { | |||
this.startTime=options.startTime | |||
this.customerId=options.customerId, | |||
this.biaoqian=options.biaoqian; | |||
this.startFile=options.startFile; | |||
this.startTime = options.startTime | |||
this.customerId = options.customerId; | |||
this.biaoqian = options.biaoqian; | |||
this.startFile = options.startFile; | |||
this.getdianzan() | |||
this.getCommentList(); | |||
//注意: 不同的回调方法, 相同的业务函数方法名, 不会相互影响; | |||
this.$zaudio.on('stop', this.ACTION, () => { | |||
console.log('我是强制暂停或关闭小程序音频浮窗触发的') | |||
@@ -241,14 +240,16 @@ | |||
}) | |||
}, | |||
onShow() { | |||
//实时渲染当前的播放状态 | |||
this.$zaudio.syncRender() | |||
this.initRecord(); | |||
!this.isPageHide && this.getluyinList(); | |||
}, | |||
onHide() { | |||
this.isPageHide = true | |||
}, | |||
onUnload(){ | |||
onUnload() { | |||
//卸载不需要的业务和获取播放状态的业务,提高页面性能 | |||
this.$zaudio.off('seek', this.ACTION); | |||
this.$zaudio.off('stop', this.ACTION); | |||
@@ -264,11 +265,13 @@ | |||
const message = this.dialogList[0].message; | |||
if (!message) return | |||
for (let i = 0; i < message.length; i++) { | |||
if ((Math.floor(message[i].bg / 1000) <= this.playNow && this.playNow < Math.floor(message[i].ed / 1000))) { | |||
if ((Math.floor(message[i].bg / 1000) <= this.playNow && this.playNow < Math.floor(message[i].ed / | |||
1000))) { | |||
this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; | |||
break; | |||
} | |||
if (i < message.length - 1 && Math.floor(message[i].ed / 1000) < this.playNow && this.playNow < Math.floor(message[i + 1].bg / 1000)) { | |||
if (i < message.length - 1 && Math.floor(message[i].ed / 1000) < this.playNow && this.playNow < | |||
Math.floor(message[i + 1].bg / 1000)) { | |||
this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; | |||
break; | |||
} | |||
@@ -286,8 +289,8 @@ | |||
duration: 2000 | |||
}); | |||
return | |||
}else { | |||
this.num=this.num+1; | |||
} else { | |||
this.num = this.num + 1; | |||
uni.request({ | |||
url: config.service.getCorpusAnalysis + '?corpusId=' + this.luyinList[this.num].id + | |||
"&customerId=" + this.customerId, //仅为示例,并非真实接口地址。 | |||
@@ -298,8 +301,7 @@ | |||
}, | |||
success: (data) => { | |||
if (data.data.code == 10000) { | |||
if (data.data.data.audioContent.length == 0) { | |||
} else { | |||
if (data.data.data.audioContent.length == 0) {} else { | |||
const jsonInfo = JSON.parse(data.data.data.audioContent); | |||
this.dialogList.push({ | |||
message: jsonInfo | |||
@@ -386,9 +388,9 @@ | |||
if (cet.id == this.startFile) { | |||
this.csdFileindex = index; | |||
this.recordPath = res[index].recordPath | |||
this.date=res[index].receptionTime | |||
this.num=index;//下拉起始位置 | |||
this.Bnum=index; | |||
this.date = res[index].receptionTime | |||
this.num = index; //下拉起始位置 | |||
this.Bnum = index; | |||
this.luyinList = res; | |||
this.zyAudio(); | |||
this.getCorpusAnalysis() | |||
@@ -455,7 +457,7 @@ | |||
uni.hideLoading(); | |||
} | |||
}, | |||
//音频前进回退 | |||
sliderChangeComplate(currentTime) {}, | |||
// 获取转义后的对话结果 | |||
@@ -477,11 +479,11 @@ | |||
}); | |||
setTimeout(function() { | |||
uni.hideLoading(); | |||
}, 2000); | |||
}else{} | |||
}, | |||
}, 2000); | |||
} else {} | |||
}, | |||
fail(error) { | |||
return false; | |||
return false; | |||
} | |||
}); | |||
}, | |||
@@ -490,12 +492,12 @@ | |||
}, | |||
// 文件切换播放 | |||
filechange(item, i) { | |||
this.num=i;//下拉起始位置 | |||
this.Bnum=i; | |||
this.csdFileindex=i; | |||
this.num = i; //下拉起始位置 | |||
this.Bnum = i; | |||
this.csdFileindex = i; | |||
this.recordPath = item.recordPath; | |||
this.date=item.receptionTime; | |||
this.isshowFile=false; | |||
this.date = item.receptionTime; | |||
this.isshowFile = false; | |||
setTimeout(() => { | |||
this.$zaudio.operate(i) | |||
}, 50) | |||
@@ -663,7 +665,7 @@ | |||
}) | |||
}) | |||
}, | |||
//录音实例 | |||
zyAudio() { | |||
let data = this.luyinList.map((item, index) => { | |||
@@ -677,10 +679,17 @@ | |||
this.$zaudio.setAudio(data) | |||
//渲染第一首音频 | |||
this.$zaudio.setRender(0) | |||
if (this.startTime) { | |||
setTimeout(() => { | |||
this.stepPlay(parseInt(this.startTime / 1000)) | |||
}) | |||
} | |||
}, | |||
// 跳转指定位置播放 | |||
stepPlay(t) { | |||
console.log(t) | |||
this.$zaudio.seek(t) | |||
if (this.$zaudio.paused) { | |||
this.$zaudio.operate() | |||
@@ -8,15 +8,15 @@ | |||
<view class="cwjs-item center"> | |||
<image src="https://qufang.oss-cn-beijing.aliyuncs.com/channelHelper/user.png" class="logo_input"> | |||
</image> | |||
<input class="cwjs-item cwjs-input" v-model="username" placeholder="请输入账号名" type="number" maxlength="11" placeholder-style="color:#AAAAAA"/> | |||
<input class="cwjs-item cwjs-input" style="font-size: 36rpx;" v-model="username" placeholder="请输入账号名" type="number" maxlength="11" placeholder-style="color:#AAAAAA"/> | |||
</view> | |||
</view> | |||
<view class="cwjs-cells item-flex" style="margin-top:13rpx;"> | |||
<view class="cwjs-item center"> | |||
<image src="https://qufang.oss-cn-beijing.aliyuncs.com/channelHelper/lock.png" class="logo_input"> | |||
</image> | |||
<input class="cwjs-item cwjs-input" placeholder="请输入密码" placeholder-style="color:#AAAAAA" type="password" v-model="password" maxlength="16" v-if="passwordType"/> | |||
<input class="cwjs-item cwjs-input" placeholder="请输入密码" placeholder-style="color:#AAAAAA" maxlength="16" v-model="password" v-else/> | |||
<input class="cwjs-item cwjs-input" style="font-size: 36rpx;" placeholder="请输入密码" placeholder-style="color:#AAAAAA" type="password" v-model="password" maxlength="16" v-if="passwordType"/> | |||
<input class="cwjs-item cwjs-input" style="font-size: 36rpx;" placeholder="请输入密码" placeholder-style="color:#AAAAAA" maxlength="16" v-model="password" v-else/> | |||
</view> | |||
<view class="imagesBox" @tap="changeBindPassword"> | |||
<image v-if="passwordType==false" src="../../static/images/zhengkai.png" class="images" mode="scaleToFill"></image> | |||
@@ -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" | |||
@@ -34,7 +28,14 @@ | |||
<view :id="'dialog'+i" class="fileName">录音文件</view> | |||
<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"> | |||
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker" @click.stop> | |||
<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>{{ item.speaker | toCapital }}</text> | |||
@@ -73,14 +74,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> | |||
<!-- 底部弹框 --> | |||
@@ -106,13 +107,27 @@ | |||
mode=""></image> | |||
<view @click="Receivedetailsabouttab('Receivedetailsabout')">更多</view> | |||
<view class="allimg" v-if="Thetapeidisshow"> | |||
<view v-if="eqLog!=-1" @click="eqLogClick()" style="line-height: 70rpx;margin-top: 10rpx;">设备日志</view> | |||
<view v-if="eqLog!=-1" @click="eqLogClick()" style="line-height: 70rpx;margin-top: 10rpx;">设备日志 | |||
</view> | |||
<view @click="Receivetap()" style="line-height: 70rpx;margin-top: 10rpx;">接待信息</view> | |||
<view v-if="Menulistisshow==true" @click="alllogo()" style="line-height:70rpx;">{{userlistobj.validInvalidName}}</view> | |||
<view v-if="Menulistisshow==true" @click="alllogo()" style="line-height:70rpx;"> | |||
{{userlistobj.validInvalidName}} | |||
</view> | |||
</view> | |||
</view> | |||
<view class="tmmchen" @click="Receivetap()" v-if="Menulistisshow==false"> | |||
<image @click="Receivedetailsabouttab('Receivedetailsabout')" | |||
src="../../static/images/audioinfo2.png" mode=""></image> | |||
<view @click="Receivedetailsabouttab('Receivedetailsabout')">接待信息</view> | |||
</view> | |||
</view> | |||
</view> | |||
<template v-else> | |||
<view class="bottomboxs"> | |||
<view class="bottomboxs-item" @click="sureRefinement">确定</view> | |||
<view class="bottomboxs-item" @click="cancelAllAdd">取消</view> | |||
</view> | |||
</template> | |||
<!-- 标记 --> | |||
<view class="zhezhao" v-if="biojiisshow" @tap="unmarktap()"></view> | |||
<view class="bounced" v-if="biojiisshow"> | |||
@@ -230,9 +245,12 @@ | |||
</view> | |||
</view> | |||
<view class="pingfenbox"> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{totalRate||0}}%</view> | |||
<view v-if="methodsisshow==true" :class="{ activecllasscet: zhixingcenterindex == 1 }" @click="recordclick(1)">禁忌执行</view> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 2 }" @click="recordclick(2)">需求挖掘率{{KeyWordsfraction||0}}%</view> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)"> | |||
销讲总执行率{{totalRate||0}}%</view> | |||
<view v-if="methodsisshow==true" :class="{ activecllasscet: zhixingcenterindex == 1 }" | |||
@click="recordclick(1)">禁忌执行</view> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 2 }" @click="recordclick(2)"> | |||
需求挖掘率{{KeyWordsfraction||0}}%</view> | |||
</view> | |||
<view v-if="zhixingcenterindex == 0" class="cenisbox"> | |||
<view | |||
@@ -269,14 +287,13 @@ | |||
</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"> | |||
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
<view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view> | |||
@@ -303,7 +320,8 @@ | |||
<view class="title1">{{item.name}}</view> | |||
<view class="leve1-jindu"> | |||
<view class="jindutiao"> | |||
<view class="huanxing" v-if="item.selected==0" :style="{width: item.fraction+'%'}"></view> | |||
<view class="huanxing" v-if="item.selected==0" :style="{width: item.fraction+'%'}"> | |||
</view> | |||
<view class="huanxing" v-else style="width: 0"></view> | |||
<view class="text">{{item.selected==0?item.fraction:0}}%</view> | |||
</view> | |||
@@ -313,18 +331,16 @@ | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</view> | |||
<!-- 话术在一级下 --> | |||
<!-- 话术在一级下 --> | |||
<view v-if="item.showLevel==1"> | |||
<view class="hhhbox" v-if="item.show" style="padding: 30rpx;"> | |||
<view class="hsnrtest">话术内容</view> | |||
<view class="Level3che" | |||
v-for="(che,inc) in item.questionList" :key='inc'> | |||
<view class="Level3che" v-for="(che,inc) in item.questionList" :key='inc'> | |||
<view class="title1">{{inc+1}}.{{che.question}}</view> | |||
<view class="jiantobox"> | |||
<view class="jiantobox"> | |||
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -346,14 +362,12 @@ | |||
</view> | |||
<view v-if="subitem.show" style="padding: 30rpx 0;"> | |||
<view class="hsnrtest">话术内容</view> | |||
<view class="Level3che" | |||
v-for="(che,inc) in subitem.questionList" :key='inc'> | |||
<view class="Level3che" v-for="(che,inc) in subitem.questionList" :key='inc'> | |||
<view class="title1">{{inc+1}}.{{che.question}}</view> | |||
<view class="jiantobox"> | |||
<image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" | |||
mode="" /> | |||
<image v-if="che.selected==0" class="arrow" | |||
src="/static/images/rate-checked.png" mode="" /> | |||
<image v-else class="arrow" src="/static/images/rate-nocheck.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
@@ -486,9 +500,9 @@ | |||
<u-select v-model="treeshow" mode="mutil-column-auto" @confirm="confirmTree" :list="treelist"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
@@ -615,7 +629,8 @@ | |||
isPageHide: false, // 是否息屏 | |||
duration: '', // 总时长 | |||
isBand: false, // 阻止二次提交 | |||
eqLog:0, | |||
refined: false, | |||
eqLog: 0, | |||
}; | |||
}, | |||
computed: { | |||
@@ -628,10 +643,11 @@ | |||
onLoad(options) { | |||
this.LOADING = true | |||
let menu = uni.getStorageSync('weapp_session_Menu_data'); | |||
this.eqLog = menu.findIndex(item=>item.name=='设备日志'); | |||
this.eqLog = menu.findIndex(item => item.name == '设备日志'); | |||
this.status = options.status; | |||
this.customerId = options.customerId; | |||
this.KeyWordsfraction = options.wordFraction=='undefined'?0:options.wordFraction; | |||
this.KeyWordsfraction = options.wordFraction == 'undefined' ? 0 : options.wordFraction; | |||
this.itemobj = uni.getStorageSync('searchobj'); | |||
// console.log(this.itemobj) | |||
this.stateisshow = options.stateisshow; | |||
@@ -768,6 +784,11 @@ | |||
this.wajueshow = false | |||
this.wajueItem.isshow= false | |||
}, | |||
// 选中取反 | |||
cbChange(item) { | |||
item.checked = !item.checked | |||
this.$forceUpdate() | |||
}, | |||
// 隐藏长按提示框 | |||
cancelBeast() { | |||
this.dialogList.forEach(res => { | |||
@@ -776,12 +797,27 @@ | |||
}) | |||
}) | |||
}, | |||
hangeshow2(item,type){ | |||
// 重置选择加精的内容 | |||
cancelAllAdd() { | |||
console.log('chufa') | |||
this.dialogList.forEach(item => { | |||
if (item.message && item.message.length > 0) { | |||
item.message.forEach(items => { | |||
items.checked = false | |||
}) | |||
} | |||
}) | |||
this.refined = false | |||
// this.$forceUpdate() | |||
}, | |||
hangeshow2(item, type) { | |||
item.show = !item.show; | |||
}, | |||
eqLogClick(){ | |||
eqLogClick() { | |||
uni.navigateTo({ | |||
url:`./equipmentLog?id=${this.customerId}` | |||
url: `./equipmentLog?id=${this.customerId}` | |||
}) | |||
}, | |||
rolexuanze(index) { | |||
@@ -837,9 +873,9 @@ | |||
this.zhixingcenterindex = i; | |||
if (i == 0) { | |||
this.getRatelist() | |||
} else if(i==1) { | |||
} else if (i == 1) { | |||
this.huoqujinji() | |||
}else{ | |||
} else { | |||
this.getfindKeyWordsBycusId() | |||
} | |||
}, | |||
@@ -866,7 +902,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' | |||
}) | |||
} | |||
}, | |||
@@ -1006,34 +1042,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 { | |||
@@ -1064,7 +1100,7 @@ | |||
this.$u.post("/customer/updateValidInvalid", parames).then(res => { | |||
console.log(res) | |||
this.Thetapeidisshow = false; | |||
}).catch(e=>{ | |||
}).catch(e => { | |||
this.isBand = false | |||
}) | |||
}, | |||
@@ -1166,7 +1202,8 @@ | |||
this.newluyinList = []; | |||
this.fenjiaoseunfo() | |||
this.$forceUpdate() | |||
}, //------------------------------------分角色标记刷新 | |||
}, | |||
//------------------------------------分角色标记刷新 | |||
fenjiaoseunfo() { | |||
var bgcd = this.playNow * 1000; | |||
this.newluyinList = []; | |||
@@ -1247,10 +1284,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; | |||
@@ -1521,7 +1561,7 @@ | |||
title: '正确值不能为空', | |||
type: 'warning', | |||
}) | |||
this.isshow2 = true; | |||
this.isshow2 = true; | |||
return | |||
} | |||
} else { | |||
@@ -1529,7 +1569,7 @@ | |||
title: '错误词不能为空', | |||
type: 'warning', | |||
}) | |||
this.isshow2 = true; | |||
this.isshow2 = true; | |||
return | |||
} | |||
} | |||
@@ -1553,6 +1593,12 @@ | |||
}, | |||
//加精华 | |||
Addtheessence() { | |||
this.refined = true | |||
this.cancelBeast() | |||
}, | |||
// 确认批量加精 | |||
sureRefinement() { | |||
this.isshow3 = true; | |||
this.biaoqianlist = [] | |||
let parames = { | |||
@@ -1566,6 +1612,7 @@ | |||
}) | |||
}) | |||
}, | |||
// 取消加精 | |||
Cancelout2() { | |||
this.isshow3 = false; | |||
@@ -1650,30 +1697,30 @@ | |||
getfindKeyWordsBycusId() { | |||
this.$u.get("/cusLvStatistics/findKeyWordsBycusId?cusId=" + this.customerId).then(res => { | |||
// console.log(res) | |||
if(res.length){ | |||
if (res.length) { | |||
// this.KeyWordsfraction = 0 | |||
res.forEach(item=>{ | |||
res.forEach(item => { | |||
// if(item.selected==0){ | |||
// this.KeyWordsfraction += +item.fraction // 总执行率 | |||
// } | |||
item.show = false | |||
item.children.forEach(obj=>{ | |||
item.children.forEach(obj => { | |||
obj.show = false | |||
if(obj.questionList.length){ | |||
obj.questionList.forEach(subobj=>{ | |||
subobj.show =false | |||
if (obj.questionList.length) { | |||
obj.questionList.forEach(subobj => { | |||
subobj.show = false | |||
}) | |||
} | |||
}) | |||
if(item.questionList.length){ | |||
item.questionList.forEach(obj=>{ | |||
obj.show =false | |||
if (item.questionList.length) { | |||
item.questionList.forEach(obj => { | |||
obj.show = false | |||
}) | |||
} | |||
}) | |||
this.KeyWordsfractionList = res | |||
}else{ | |||
this.KeyWordsfractionList = [] | |||
} else { | |||
this.KeyWordsfractionList = [] | |||
} | |||
}) | |||
}, | |||
@@ -1813,14 +1860,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; | |||
@@ -1829,7 +1875,7 @@ | |||
var itc = parseInt(info.bg / 1000) | |||
this.adasdasdasd(itc) | |||
}, | |||
fail: () => { | |||
this.LOADING = false | |||
} | |||
@@ -2038,6 +2084,25 @@ | |||
align-items: center; | |||
} | |||
} | |||
.bottomboxs { | |||
width: 100%; | |||
height: 90rpx; | |||
display: flex; | |||
justify-content: space-around; | |||
.bottomboxs-item { | |||
width: 45%; | |||
height: 100%; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
color: #fff; | |||
background: #008EF2; | |||
font-size: 36rpx; | |||
font-weight: bold; | |||
} | |||
} | |||
} | |||
.headboxhead { | |||
@@ -2522,6 +2587,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; | |||
@@ -2699,7 +2781,7 @@ | |||
color: #2671E2; | |||
font-weight: 400; | |||
} | |||
.gray { | |||
color: #979797 !important; | |||
} | |||
@@ -2844,7 +2926,8 @@ | |||
padding: 20rpx; | |||
border: 1rpx solid #E4F0FF; | |||
} | |||
/deep/ .u-model-title{ | |||
/deep/ .u-model-title { | |||
padding: 34rpx 0 16rpx !important; | |||
} | |||
@@ -380,7 +380,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) { | |||
@@ -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"> | |||
@@ -13,7 +22,8 @@ | |||
</view> | |||
<view class="text"> | |||
<view class="name"> | |||
{{item.name}} | |||
<text class="names">{{item.name}}</text> | |||
<text :class="item.class">{{ item.label }}</text> | |||
</view> | |||
<view class="num"> | |||
今日接待: {{item.todayNum}} | |||
@@ -26,17 +36,17 @@ | |||
</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> | |||
@@ -68,6 +78,10 @@ | |||
canceltext: '2', //取消文字 | |||
daitiReceptionobj: {}, | |||
replaceReception: 0, | |||
keywords: '', // 关键词 | |||
list: [], // 部门列表 | |||
listCurrent: 0, //选中分类下标 | |||
from: '', // 来源页面需要通知的事件 | |||
} | |||
}, | |||
@@ -88,8 +102,13 @@ | |||
this.getFreeList(); | |||
}, | |||
// | |||
searchFunc() { | |||
this.getFreeList(); | |||
}, | |||
async iniPage() { | |||
// await this.getAllDeptName() | |||
await this.getAllDeptName() | |||
await this.getFreeList(); | |||
}, | |||
// 获取顾问列表 | |||
@@ -112,9 +131,10 @@ | |||
// 获取空闲顾问 | |||
async getFreeList() { | |||
try { | |||
let deptId = this.list.length > 0 ? this.list[this.listCurrent].id : '' | |||
// deptId 部门id | |||
// name 顾问名称 | |||
let res = await this.$u.get(`/zkAgentPool/freeList?itemId=${this.buildingID}`) | |||
let res = await this.$u.get(`/zkAgentPool/freeList?itemId=${this.buildingID}&name=${this.keywords||''}&deptId=${deptId}`) | |||
if (res.length == 0) { | |||
this.freeList = [] | |||
} else { | |||
@@ -123,6 +143,19 @@ | |||
this.current = res.findIndex(item => item.agentId == this.customerId) | |||
} | |||
this.freeList = res; | |||
this.freeList.forEach(item => { | |||
if (item.onLine == 0) { | |||
item.label = "(离线)"; | |||
item.class = 'red' | |||
} else if (item.onLine == 1) { | |||
item.label = "(在线)"; | |||
item.class = 'gren' | |||
} else { | |||
item.label = "(无设备)"; | |||
item.class = 'none' | |||
} | |||
}) | |||
this.textcdhSKJ = res[0].name | |||
} | |||
this.LOADING = false | |||
@@ -148,6 +181,7 @@ | |||
this.replaceReception = 1; | |||
this.baochunfun() | |||
}, | |||
save() { | |||
console.log(this.chosedAgentId) | |||
if (!this.chosedAgentId) { | |||
@@ -227,50 +261,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; | |||
@@ -278,44 +279,122 @@ | |||
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; | |||
.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; | |||
margin-bottom: 24rpx; | |||
line-height: 30rpx; | |||
.names { | |||
font-weight: 600; | |||
color: #333333; | |||
} | |||
.red { | |||
margin-left: 10rpx; | |||
color: #E7483C; | |||
font-size: 28rpx; | |||
} | |||
.gren { | |||
margin-left: 10rpx; | |||
color: #43CD80; | |||
font-size: 28rpx; | |||
} | |||
.none { | |||
margin-left: 10rpx; | |||
color: #999; | |||
font-size: 28rpx; | |||
} | |||
} | |||
.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> |
@@ -454,7 +454,9 @@ | |||
} | |||
if (this.weekObj.ZXLTopList && this.weekObj.ZXLTopList.length > 0) { | |||
this.consultant = this.weekObj.ZXLTopList.reverse().slice(0, 3) | |||
this.lowest.push(this.weekObj.ZXLTopList[this.weekObj.ZXLTopList.length - 1]) | |||
if (this.weekObj.ZXLTopList[this.weekObj.ZXLTopList.length - 1].value != 100) { | |||
this.lowest.push(this.weekObj.ZXLTopList[this.weekObj.ZXLTopList.length - 1]) | |||
} | |||
} | |||
if (this.weekObj.avgJdsList && this.weekObj.avgJdsList.length > 0) { | |||
this.recording = this.weekObj.avgJdsList.reverse().slice(0, 3) | |||
@@ -1,10 +1,10 @@ | |||
// http.js使用域名 | |||
// const baseUrl = 'http://81.70.55.170:9090/autoSR/api';// 最新测试 | |||
// const baseUrl = 'http://127.0.0.1:8080/autoSR/api'; // 本地 | |||
const baseUrl = 'http://192.168.31.169:8080/autoSR/api'; // 长龙 | |||
// const baseUrl = 'http://192.168.31.169:8080/autoSR/api'; // 长龙 | |||
// const baseUrl = 'http://192.168.31.149:9090/api'; // 盛浩 | |||
// const baseUrl = 'https://zkgj.quhouse.com/api'; // 质控正式 | |||
// const baseUrl = 'https://hfju.com/api'; // 数智正式 | |||
const baseUrl = 'https://hfju.com/api'; // 数智正式 | |||
// const baseUrl = 'https://xitong.pachira.cn/api'; // AI营销辅助 普强使用 | |||