@@ -6,7 +6,6 @@ | |||
onLaunch(options) { | |||
uni.getSystemInfo({ | |||
success: function(e) { | |||
console.log(e, 'adjsakljdklasjdklsakjdslakjd') | |||
// #ifdef MP-WEIXIN | |||
Vue.prototype.StatusBar = e.statusBarHeight; | |||
let custom = wx.getMenuButtonBoundingClientRect(); | |||
@@ -19,7 +18,8 @@ | |||
return { | |||
StatusBar: Vue.prototype.StatusBar, | |||
CustomBar: Vue.prototype.CustomBar, | |||
windowHeight: Vue.prototype.windowHeight | |||
windowHeight: Vue.prototype.windowHeight, | |||
LOADING: false | |||
}; | |||
}, | |||
@@ -77,17 +77,22 @@ | |||
} | |||
return obj | |||
}, | |||
// 检测权限 | |||
checkAuthority(name = '') { | |||
let menu = uni.getStorageSync('weapp_session_Menu_data') | |||
return menu.findIndex(item => item.name == name) != -1 | |||
}, | |||
}, | |||
filters: { | |||
// ASCII码转换 大写字母A是65 演讲人是从1开始所以num+64 | |||
toCapital(num) { | |||
let str = '' | |||
if (num) { | |||
str = String.fromCharCode(num + 64) | |||
} | |||
str = String.fromCharCode(Number(num) + 64) | |||
return str | |||
} | |||
}, | |||
} | |||
}); | |||
} | |||
@@ -0,0 +1,56 @@ | |||
<template> | |||
<view class="pages" v-if="value"> | |||
<div class="donut"></div> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
name: '加载组件', | |||
props: { | |||
// v-model绑定的变量 | |||
value: { | |||
type: Boolean, | |||
default: false | |||
}, | |||
}, | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.pages { | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
bottom: 0; | |||
z-index: 999999; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
background: #fff; | |||
.donut { | |||
margin-top: 35vh; | |||
display: inline-block; | |||
border: 10rpx solid rgba(0, 0, 0, 0.1); | |||
border-left-color: #1296db; | |||
border-radius: 50%; | |||
width: 150rpx; | |||
height: 150rpx; | |||
animation: donut-spin 1.2s linear infinite; | |||
} | |||
} | |||
@Keyframes donut-spin { | |||
0% { | |||
transform: rotate(0deg); | |||
} | |||
100% { | |||
transform: rotate(360deg); | |||
} | |||
} | |||
</style> |
@@ -1,462 +0,0 @@ | |||
<template> | |||
<view> | |||
<!-- 播放块 --> | |||
<view class="bottomhead"> | |||
<view class="audio-play" @tap="changePlayState"> | |||
<image class="image" mode="widthFix" | |||
:src="audioPlay ? 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/pause.png' : 'https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/play.png'"> | |||
</image> | |||
</view> | |||
<view class="audio-slider"> | |||
<view class="audio-time"> | |||
<text>{{currentTimeStr}}</text> | |||
</view> | |||
<slider class="slider" min="0" :max="sliderMax" @change="sliderChangeComplate" block-size="14" | |||
:value="sliderValue" activeColor="blue"></slider> | |||
<view class="audio-time"> | |||
<text>{{timeStr}}</text> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
var util = require("@/utils/util.js"); | |||
var config = require("@/config"); | |||
export default { | |||
name: "long_audio", | |||
data() { | |||
return { | |||
audioPlay: false, //当前的播放状态控制 | |||
sliderValue: 0, //进度条最小值 | |||
sliderMax: 0, //进度条最大值 | |||
innerAudioContext:null, //播放实例 | |||
currentTimeStr: "00:00", //当前进度的时间 | |||
timeStr: "00:00", //总的时间 | |||
recordPath: "", | |||
luyinList: [], //录音文件 | |||
newluyinList: [], | |||
dialogList: [], //录音识别列表 | |||
csdFileindex: 0, | |||
date: "", //年月日 | |||
scrollId: "", | |||
playNow: 0, | |||
alltimeStr: "00:00:00", | |||
}; | |||
}, | |||
props:{ | |||
customerId:'', | |||
infos:null, | |||
roleindex:0 | |||
}, | |||
mounted() { | |||
this.roleindex = 0; | |||
this.innerAudioContext = uni.createInnerAudioContext(); | |||
this.innerAudioContext.autoplay = false; | |||
this.innerAudioContext.title = '音频'; | |||
this.onPlay() | |||
this.onPause() | |||
this.onCanplay() | |||
this.onEnded() | |||
this.onSeeking() | |||
this.onSeeked() | |||
this.TimeUpdate() | |||
this.init(this.infos) | |||
}, | |||
destroyed() { | |||
//暂停 | |||
this.innerAudioContext.pause() | |||
// 销毁 | |||
// this.innerAudioContext.destroy(); | |||
}, | |||
methods: { | |||
onPlay() { | |||
this.innerAudioContext.onPlay(() => { | |||
// 播放监听 | |||
console.log('播放!'); | |||
this.audioPlay = true; | |||
wx.enableAlertBeforeUnload({ | |||
message: "是否确认退出详情页面?", | |||
success: function(res) { | |||
console.log("方法注册成功:", res); | |||
}, | |||
fail: function(errMsg) { | |||
console.log("方法注册失败:", errMsg); | |||
}, | |||
}); | |||
}); | |||
}, | |||
onPause() { | |||
this.innerAudioContext.onPause(() => { | |||
wx.disableAlertBeforeUnload({ | |||
success: function(res) { | |||
console.log(res) | |||
}, | |||
fail: function(e) { | |||
console.log(e) | |||
} | |||
}); | |||
// 暂停监听 | |||
console.log('暂停播放!'); | |||
this.audioPlay = false | |||
}); | |||
}, | |||
onCanplay() { | |||
this.innerAudioContext.onCanplay((callback) => { | |||
console.log("缓冲回调", this.innerAudioContext.duration); | |||
}) | |||
}, | |||
onEnded() { | |||
this.innerAudioContext.onEnded(() => { | |||
// 结束播放监听 | |||
console.log('播放结束!'); | |||
this.audioPlay = false; | |||
}); | |||
}, | |||
onSeeking() { | |||
this.innerAudioContext.onSeeking((res) => { | |||
console.log("进行跳转", res); | |||
}) | |||
}, | |||
onSeeked() { | |||
this.innerAudioContext.onSeeked((res) => { | |||
console.log("结束跳转", res); | |||
this.$forceUpdate() | |||
}); | |||
}, | |||
TimeUpdate() { | |||
this.innerAudioContext.onTimeUpdate(() => { | |||
// var pages = getCurrentPages(); | |||
// if(pages[pages.length-1].route!="pages/mine/details2"){ | |||
// this.innerAudioContext.destroy(); | |||
// } | |||
const { | |||
currentTime, | |||
duration | |||
} = this.innerAudioContext; | |||
console.log(currentTime, 'TimeUpdate, currentTime') | |||
this.playNow = parseInt(currentTime * 1000) | |||
uni.$emit("playNows", this.playNow) | |||
console.log(this.playNow) | |||
if (this.dialogList.length == 0) { | |||
return | |||
} else { | |||
const message = this.dialogList[0].message; | |||
for (let i = 0; i < message.length; i++) { | |||
if (Number(message[i].bg) < this.playNow && Number(message[i].ed) > this.playNow) { | |||
this.scrollId = "dialog" + this.csdFileindex + "text" + message[i].bg; | |||
uni.$emit("scrollIds", this.scrollId) | |||
break; | |||
} | |||
} | |||
} | |||
const currTimeStr = this.formatTime(currentTime); | |||
this.sliderValue = parseInt(currentTime); | |||
// 变动的时间 | |||
this.currentTimeStr = currTimeStr; | |||
//进度条最大值 | |||
this.sliderMax = this.luyinList[this.csdFileindex].recordDuration; | |||
this.$forceUpdate() | |||
}); | |||
}, | |||
//分角色标记刷新 | |||
fenjiaoseunfo() { | |||
var bgcd = this.sliderValue * 1000; | |||
this.newluyinList = []; | |||
this.dialogList = []; | |||
uni.request({ | |||
url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id + | |||
"&bg=" + bgcd + "&speaker=" + this.roleindex + '&num=50', //仅为示例,并非真实接口地址。 | |||
method: "GET", | |||
header: { | |||
'content-type': 'application/json', | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
success: (data) => { | |||
this.tablist = []; | |||
let jsonInfo = JSON.parse(data.data.data.audioContent); | |||
for (var i = 0; i <= data.data.data.speakerNum; i++) { | |||
if (i === 0) { | |||
this.tablist.push({ | |||
name: '全部' | |||
}) | |||
} else { | |||
this.tablist.push({ | |||
name: String.fromCharCode(i + 64) | |||
}) | |||
} | |||
} | |||
if (data.data.data.speaker == null) { | |||
this.roleindexbiaoji = 0; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = 0; | |||
} else { | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data.speaker] | |||
.name + "顾问"; | |||
this.roleindexbiaoji = data.data.data.speaker - 1; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; | |||
} | |||
if (this.roleindex > this.tablist.length - 1) { | |||
this.roleindex = this.tablist.length - 1 | |||
this.fenjiaoseunfo() | |||
} | |||
this.speaker = data.data.data.speaker; | |||
//上拉标记点 | |||
this.textindex = data.data.data.index; | |||
//下拉标记点 | |||
this.toptextindex = data.data.data.index; | |||
jsonInfo.forEach(item => { | |||
item.message = JSON.parse(item.onebest) | |||
item.backindex = this.csdFileindex | |||
}) | |||
console.log(jsonInfo) | |||
this.newluyinList = jsonInfo; | |||
if (this.textindex == null) { | |||
return | |||
} else { | |||
this.dialogList.push(jsonInfo[this.textindex]); | |||
} | |||
} | |||
}) | |||
}, | |||
// 获取转义后的对话结果 | |||
getCorpusAnalysis(info) { | |||
this.dialogList = []; | |||
this.newluyinList = [] | |||
uni.request({ | |||
url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id + | |||
"&bg=" + info.bg + "&speaker=" + this.roleindex + '&num=50', //仅为示例,并非真实接口地址。 | |||
method: "GET", | |||
header: { | |||
'content-type': 'application/json', | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
success: (data) => { | |||
this.tablist = []; | |||
this.roleindexbiaoji = 0; | |||
let jsonInfo = JSON.parse(data.data.data.audioContent); | |||
for (var i = 0; i <= data.data.data.speakerNum; i++) { | |||
if (i === 0) { | |||
this.tablist.push({ | |||
name: '全部' | |||
}) | |||
} else { | |||
this.tablist.push({ | |||
name: String.fromCharCode(i + 64) | |||
}) | |||
} | |||
} | |||
if (data.data.data.speaker == null) { | |||
this.dshfkjsdkksodofydwfkhwdfkjh = 0; | |||
} else { | |||
this.tablist[data.data.data.speaker].name = this.tablist[data.data.data.speaker] | |||
.name + "顾问"; | |||
this.roleindexbiaoji = data.data.data.speaker - 1; | |||
this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1; | |||
} | |||
this.speaker = data.data.data.speaker; | |||
//上拉标记点 | |||
this.textindex = data.data.data.index; | |||
//下拉标记点 | |||
this.toptextindex = data.data.data.index; | |||
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>`; | |||
} | |||
}) | |||
} | |||
}) | |||
this.newluyinList = jsonInfo; | |||
this.dialogList.push(jsonInfo[this.textindex]); | |||
var itc = parseInt(info.bg / 1000) | |||
this.adasdasdasd(itc) | |||
} | |||
}) | |||
}, | |||
init(info) { | |||
this.sliderMax = 0; //进度条最大值 | |||
this.timeStr = "00:00"; //总的时间 | |||
const parames = { | |||
pageNum: 1, | |||
pageSize: 100, | |||
query: { | |||
customerId: this.customerId | |||
} | |||
} | |||
this.$u.post("/corpus/findByPage", parames).then(res => { | |||
if (res && res.length) { | |||
let alltime = 1 + res[0].recordDuration; | |||
this.calibration = res[0].calibration; | |||
if (this.calibration == 0) { | |||
this.kehuyixiangcenterindex = 0; | |||
} else { | |||
this.kehuyixiangcenterindex = 1; | |||
} | |||
this.alltimeStr = this.getTime(alltime) | |||
if (info.bg != 0) { | |||
this.luyinList = res; | |||
this.recordPath = res[0].recordPath | |||
this.sliderMax = this.getTime(res[0].recordDuration) | |||
this.timeStr = this.getTime(res[0].recordDuration) | |||
this.date = res[0].receptionTime; | |||
this.getCorpusAnalysis(info); | |||
this.creatAudio() | |||
} else { | |||
this.luyinList = res; | |||
this.recordPath = res[0].recordPath | |||
this.sliderMax = this.getTime(res[0].recordDuration) | |||
this.timeStr = this.getTime(res[0].recordDuration) | |||
this.date = res[0].receptionTime; | |||
this.getCorpusAnalysis(info); | |||
this.creatAudio() | |||
} | |||
} | |||
}) | |||
}, | |||
//搜索跳转 | |||
adasdasdasd(e) { | |||
const currTimeStr = this.formatTime(e) | |||
this.currentTimeStr = currTimeStr | |||
this.innerAudioContext.seek(e); | |||
if (uni.getStorageSync('entrance') == 1) { | |||
return | |||
} else { | |||
this.innerAudioContext.play(); | |||
} | |||
}, | |||
getTime(time) { | |||
return util.formatSecond(time) | |||
}, | |||
// 录音暂停播放 | |||
changePlayState() { | |||
if (this.audioPlay == false) { | |||
this.innerAudioContext.play(); | |||
} else { | |||
this.innerAudioContext.pause() | |||
} | |||
}, | |||
//音频前进回退 | |||
sliderChangeComplate(e) { | |||
let platetime = e.detail.value * 1000; | |||
this.dialogList = [] | |||
uni.request({ | |||
url: config.service.fastForward + '?corpusId=' + this.luyinList[this.csdFileindex].id + | |||
"&bg=" + platetime, //仅为示例,并非真实接口地址。 | |||
method: "GET", | |||
header: { | |||
'content-type': 'application/json', | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
success: (data) => { | |||
this.textindex = data.data.data.index; | |||
this.toptextindex = data.data.data.index; | |||
if (data.data.data.index > this.newluyinList.length) { | |||
this.dialogList.push(this.newluyinList[0]) | |||
} else { | |||
this.dialogList.push(this.newluyinList[data.data.data.index]) | |||
} | |||
console.log(e.detail, '1233333333333333333333333333333333333333333333333333333333333') | |||
const currTimeStr = this.formatTime(e.detail.value) | |||
this.currentTimeStr = currTimeStr | |||
this.innerAudioContext.seek(e.detail.value); | |||
this.innerAudioContext.play(); | |||
} | |||
}) | |||
}, | |||
//录音实例 | |||
creatAudio() { | |||
this.innerAudioContext = uni.createInnerAudioContext(); | |||
if (uni.getStorageSync('entrance') == 1) { | |||
this.innerAudioContext.autoplay = false; | |||
} else { | |||
this.innerAudioContext.autoplay = true; | |||
} | |||
this.innerAudioContext.src = this.recordPath; | |||
this.innerAudioContext.title = '音频'; | |||
this.onPlay() | |||
this.onPause() | |||
this.onCanplay() | |||
this.onEnded() | |||
this.onSeeking() | |||
this.onSeeked() | |||
this.TimeUpdate() | |||
}, | |||
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; | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss"> | |||
.bottomhead { | |||
width: 100%; | |||
height: 81rpx; | |||
border-bottom: 1px solid #E0E0E0; | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
.audio-slider { | |||
width: 87%; | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
padding-right: 30rpx; | |||
} | |||
.audio-slider .slider { | |||
width: 100%; | |||
padding: 0px 15rpx; | |||
box-sizing: border-box; | |||
} | |||
.audio-time { | |||
width: 110rpx; | |||
text-align: right; | |||
font-size: 26rpx; | |||
line-height: 28rpx; | |||
color: #70798D; | |||
display: flex; | |||
justify-content: space-between; | |||
} | |||
.audio-play { | |||
width: 48rpx; | |||
height: 48rpx; | |||
flex-shrink: 0; | |||
} | |||
.audio-play .image { | |||
width: 100%; | |||
height: 100%; | |||
margin-left: 30rpx; | |||
} | |||
} | |||
</style> |
@@ -450,8 +450,8 @@ class ZAudio extends util_1.EventBus { | |||
this.audioCtx.singer = renderSinger; | |||
this.audioCtx.coverImgUrl = renderCoverImgUrl || this.defaultCover; | |||
this.audioCtx.startTime = 0; | |||
this.audioCtx.seek(0); | |||
this.audioCtx.play(); | |||
// this.audioCtx.seek(0); | |||
// this.audioCtx.play(); | |||
this.commit("setPause", false); | |||
this.commit("setPlayinfo", { | |||
src: renderSrc, | |||
@@ -626,33 +626,6 @@ class ZAudio extends util_1.EventBus { | |||
// #endif | |||
} | |||
// 重置当前的参数 | |||
resetDatas() { | |||
this.loading = false; | |||
this.renderIndex = 0; | |||
this.audiolist = []; | |||
this.renderinfo = { | |||
current: "00:00:00", | |||
duration: "00:00:00", | |||
duration_value: 0, | |||
current_value: 0, | |||
src: "", | |||
title: "", | |||
singer: "", | |||
coverImgUrl: "", | |||
}; | |||
this.playinfo = { | |||
current: "00:00:00", | |||
duration: "00:00:00", | |||
duration_value: 0, | |||
current_value: 0, | |||
src: "", | |||
title: "", | |||
singer: "", | |||
coverImgUrl: "", | |||
}; | |||
} | |||
} | |||
exports.default = ZAudio; | |||
ZAudio.version = "2.2.51"; |
@@ -199,6 +199,7 @@ | |||
this.loading = loading; | |||
}); | |||
this.$zaudio.syncRender() | |||
console.log(this.$zaudio) | |||
}); | |||
}, | |||
methods: { | |||
@@ -79,6 +79,8 @@ var config = { | |||
firstShowPopup: `${host}/zkMessage/firstShow`, | |||
//消息未读数 | |||
notReadNum: `${host}/zkMessage/findFlagCount`, | |||
//设备日志 | |||
eqLog: `${host}/equipment/equipmentLog`, | |||
} | |||
}; | |||
module.exports = config; |
@@ -1,7 +1,7 @@ | |||
{ | |||
"name" : "去房智控管家", | |||
"appid" : "__UNI__7A1611D", | |||
"description" : "AI营销助理", | |||
"description" : "去房智控管家", | |||
"versionName" : "1.1.0", | |||
"versionCode" : "100", | |||
"transformPx" : false, | |||
@@ -96,7 +96,7 @@ | |||
"urlCheck" : false, | |||
"es6" : true, | |||
"postcss" : true, | |||
"minified" : true | |||
"minified" : false | |||
}, | |||
"usingComponents" : true, | |||
"permission" : {}, | |||
@@ -42,17 +42,21 @@ | |||
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker"> | |||
<view class="avatar"> | |||
<view :style="[SPEAKERSTYLE(item.speaker)]"> | |||
<!-- <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> --> | |||
<text v-if="item.isShow == 0">顾</text> | |||
<text v-else>{{ item.speaker | toCapital }}</text> | |||
<text>{{ item.speaker | toCapital }}</text> | |||
</view> | |||
</view> | |||
<view class="contentInfo"> | |||
<view class="info"> | |||
<text class="AudioUserName" v-if="item.isShow == 0">{{ item.username }}</text> | |||
<text class="AudioUserName" v-else>{{ item.speaker | toCapital }}</text> | |||
<text class="AudioUserName"> | |||
<template v-if="item.username"> | |||
{{ item.username }} | |||
</template> | |||
<template v-else> | |||
{{ item.speaker | toCapital }} | |||
</template> | |||
</text> | |||
<text>{{conversionTiame(item.bg/1000)}}</text> | |||
</view> | |||
<view class="content"> | |||
@@ -535,14 +539,11 @@ | |||
}, | |||
onHide() { | |||
this.isAudio = 0 | |||
this.info = {} | |||
this.isPageHide = true | |||
}, | |||
// 销毁实例 | |||
onUnload() { | |||
this.isAudio = 0 | |||
this.info = {} | |||
//卸载不需要的业务和获取播放状态的业务,提高页面性能 | |||
this.$zaudio.off('seek', this.ACTION); | |||
@@ -2,7 +2,7 @@ | |||
<view class="cenbox"> | |||
<view class="screeningtop"> | |||
<view class="screeningview" @click="clickscreening(1)"> | |||
<view>近一周</view> | |||
<view>{{ showFillterText }}</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> | |||
@@ -77,10 +77,10 @@ | |||
<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 :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> | |||
@@ -162,6 +162,7 @@ export default { | |||
keywordIds:'', | |||
type:0, | |||
customerId: '', // 点击那一项的customerId | |||
showFillterText: '近一周', | |||
}; | |||
}, | |||
onLoad(options) { | |||
@@ -312,6 +313,7 @@ export default { | |||
this.tadelist=[...this.tadelist, ...data.results]; | |||
this.totalpage=data.totalRecord; | |||
} | |||
this.$forceUpdate() | |||
}) | |||
}, | |||
//获取三级 | |||
@@ -360,6 +362,7 @@ export default { | |||
//自定义时间确认 | |||
totalTimeChange(e){ | |||
this.Datesicing=e.startDate+'至'+e.endDate; | |||
this.showFillterText = '自定义' | |||
this.starttime=e.startDate; | |||
this.endoftime=e.endDate; | |||
this.activetime=this.Inthemiddletime; | |||
@@ -369,11 +372,12 @@ export default { | |||
this.Accesstolevel() | |||
}, | |||
//时间选择 | |||
activetimetab(index){ | |||
activetimetab(index, text){ | |||
if(index==5){ | |||
this.Inthemiddletime=index; | |||
this.totalTimeShow=!this.totalTimeShow; | |||
}else{ | |||
this.showFillterText = text | |||
this.Datesicing=''; | |||
this.activetime=index; | |||
this.tadelist=[] | |||
@@ -208,6 +208,10 @@ | |||
<!-- 选择项目 --> | |||
<u-select v-model="staffShow" :list="staffList" @confirm="staffSelectCallback" :default-value='selindex'> | |||
</u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -215,7 +219,11 @@ | |||
var app = getApp(); | |||
var util = require("../../../utils/util.js"); | |||
var config = require("../../../config"); | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
activeTotal: 4, | |||
@@ -312,6 +320,7 @@ | |||
}; | |||
}, | |||
onLoad() { | |||
this.LOADING = true | |||
let that = this | |||
uni.$on('updateGroup', function(data) { | |||
console.log(data) | |||
@@ -354,7 +363,6 @@ | |||
this.getdata() | |||
// console.log(this.staffList,this.staffList,this.houseId) | |||
}) | |||
}, | |||
//指标执行率分析tab | |||
tapspagek2(index) { | |||
@@ -437,6 +445,7 @@ | |||
lastStartDate: this.lastStartDate | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
// console.log(res,123) | |||
// 处理数据 | |||
// return | |||
@@ -467,6 +476,8 @@ | |||
this.opts.extra.radar.max = max + 25 | |||
this.chartData = allobj | |||
this.$forceUpdate() | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//自定义时间 | |||
@@ -120,10 +120,17 @@ | |||
</u-select> | |||
<u-select v-model="staffShow1" :list="staffList1" @confirm="staffSelectCallback" :default-value='selindex'> | |||
</u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
timepickpickisshow: true, | |||
@@ -218,6 +225,7 @@ | |||
}, | |||
onLoad(option) { | |||
this.LOADING = true | |||
// 获取项目id | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
// 请求接口获取所有置业顾问员工的列表 | |||
@@ -459,6 +467,7 @@ | |||
lastStartDate: this.lastStartDate | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
// console.log(res) | |||
let first = res.first | |||
let second = res.second | |||
@@ -499,6 +508,8 @@ | |||
} | |||
this.opts.extra.radar.max = max + 25 | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
tabtimetap(index) { | |||
@@ -256,6 +256,11 @@ | |||
</u-select> | |||
<u-select v-model="staffShow1" :list="staffList1" @confirm="staffSelectCallback" :default-value='selindex'> | |||
</u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -263,7 +268,11 @@ | |||
var app = getApp(); | |||
var util = require("../../../utils/util.js"); | |||
var config = require("../../../config"); | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
activeTotal: 4, | |||
@@ -455,6 +464,7 @@ | |||
}, | |||
onLoad() { | |||
this.LOADING = true | |||
let that = this | |||
uni.$on('update', function(data) { | |||
// console.log(data) | |||
@@ -818,6 +828,7 @@ | |||
lastStartDate: this.lastStartDate | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
// console.log(res) | |||
// 处理数据 | |||
this.chartData1 = { | |||
@@ -899,6 +910,8 @@ | |||
// console.log(allobj) | |||
this.chartData1 = allobj | |||
this.$forceUpdate() | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
// 定义一个公共方法对数据进行处理 | |||
@@ -221,12 +221,21 @@ | |||
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar> | |||
<newcalendar v-model="totalTimeShow2" :planNum='intervaltime' mode="date" @change="totalTimeChange2"> | |||
</newcalendar> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import newcalendar from '@/components/newcalendar/newcalendar.vue'; | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
newcalendar, | |||
loading | |||
}, | |||
data() { | |||
return { | |||
selindexList: [0], // 默认选中第一项 | |||
@@ -322,10 +331,8 @@ | |||
}; | |||
}, | |||
components: { | |||
newcalendar | |||
}, | |||
onLoad(option) { | |||
this.LOADING = true | |||
this.pamect.houseId = uni.getStorageSync('buildingID').id; | |||
this.init() | |||
@@ -472,7 +479,13 @@ | |||
this.aboutEecondary() | |||
} | |||
} | |||
}); | |||
setTimeout(() => { | |||
this.LOADING = false | |||
}, 1500) | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//起始时间 | |||
totalTimeChange(e) { | |||
@@ -589,18 +602,6 @@ | |||
this.guwenshow = false; | |||
this.Selectlevel = false; | |||
this.Selecttuandui = false; | |||
// this.tableDate = [] | |||
// this.pamect.showStatus = 0; | |||
// this.pamect.timeType = "4"; | |||
// this.pamect.firstStartDate = ''; | |||
// this.pamect.firstEndDate = ''; | |||
// this.pamect.lastStartDate = ''; | |||
// this.pamect.lastEndDate = ''; | |||
// this.pamect.accountId = ''; | |||
// this.pamect.marketingId = ''; | |||
// this.pamect.deptId = "" | |||
// this.activeTotal = 0; | |||
this.timepickpickisshow = false; | |||
this.init() | |||
if (index == 1) { | |||
@@ -89,6 +89,10 @@ | |||
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar> | |||
<u-back-top :scroll-top="scrollTop"></u-back-top> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -96,7 +100,11 @@ | |||
var app = getApp(); | |||
var util = require("../../../utils/util.js"); | |||
var config = require("../../../config"); | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
scrollTop: 0, | |||
@@ -120,6 +128,7 @@ | |||
this.scrollTop = e.scrollTop; | |||
}, | |||
onLoad(e) { | |||
this.LOADING = true | |||
this.buildingID=uni.getStorageSync('buildingID').id; | |||
if (e.activeTotal) { | |||
this.activeTotal = e.activeTotal | |||
@@ -147,11 +156,11 @@ | |||
}); | |||
}else if(i==2){ | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=1'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=1&validInvalid=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
}); | |||
}else{ | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+this.activeTotal+'&markAdvisor=0&validInvalid=0'+'&staTime='+this.timeobj.statDateStart+'&endtime='+this.timeobj.statDateEnd | |||
}); | |||
} | |||
}, | |||
@@ -185,10 +194,11 @@ | |||
houseId:this.buildingID | |||
} | |||
this.$u.post("/matchKeywords/findmatchdata", parames).then(data => { | |||
this.numlist.push({ | |||
name:"有效接待", | |||
num:data.total | |||
}) | |||
this.LOADING = false | |||
// this.numlist.push({ | |||
// name:"有效接待", | |||
// num:data.total | |||
// }) | |||
this.efficient = data.total | |||
this.markCount = data.markCount | |||
this.noMarkCount = data.noMarkCount | |||
@@ -243,6 +253,8 @@ | |||
citem.isshow=false | |||
} | |||
}) | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//查看 | |||
@@ -97,8 +97,10 @@ | |||
<view class="title1">团队接待趋势</view> | |||
<view class="title2"> | |||
<view class="title2-che" style="width: 220rpx;display: flex;align-items: center;"> | |||
<text style="flex-grow: 1;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{team.label}}</text> | |||
<image style="flex-shrink: 0;" class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image> | |||
<text | |||
style="flex-grow: 1;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{team.label}}</text> | |||
<image style="flex-shrink: 0;" class="righttochoose" | |||
src="../../../static/images/righttochoose.png" mode=""></image> | |||
</view> | |||
</view> | |||
@@ -208,6 +210,12 @@ | |||
:default-value='selindex'></u-select> | |||
<u-select v-model="staffShow1" :list="teamList" @confirm="staffSelectCallback($event,1)" | |||
:default-value='selindex'></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -215,7 +223,11 @@ | |||
var app = getApp(); | |||
// var util = require("../../../utils/util.js"); | |||
var config = require("../../../config"); | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
activeTotal: 4, | |||
@@ -252,12 +264,11 @@ | |||
totalTimeShow: false, | |||
activeTab: 0, | |||
numlist: [ | |||
{ | |||
numlist: [{ | |||
name: '接待量', | |||
num: '', | |||
setName: 'sumCustomer' | |||
},{ | |||
}, { | |||
name: '有效接待', | |||
num: '', | |||
setName: 'receptionCount' | |||
@@ -294,8 +305,7 @@ | |||
}, | |||
newlistoj: [], | |||
newlistoj1: [ | |||
{ | |||
newlistoj1: [{ | |||
name: "接待量", | |||
id: 3, | |||
title: '单位(个)', | |||
@@ -351,6 +361,7 @@ | |||
}; | |||
}, | |||
onShow() { | |||
this.LOADING = true | |||
// 获取项目id | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
// 获取数据看板 | |||
@@ -452,6 +463,7 @@ | |||
lastStartDate: this.lastStartDate | |||
}) | |||
.then(res => { | |||
this.LOADING = false | |||
// console.log(res) | |||
// 处理销奖维度执行率 | |||
// this.newlisttabinfo | |||
@@ -470,6 +482,8 @@ | |||
this.newlisttabinfo = arr | |||
this.allList = res.list | |||
this.tapspagek3(this.bocindex1) | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
// 获取简报 | |||
@@ -750,4 +764,4 @@ | |||
.grid:nth-child(3) { | |||
border-right: none; | |||
} | |||
</style> | |||
</style> |
@@ -0,0 +1,697 @@ | |||
<template> | |||
<view class="box"> | |||
<!-- 选择器 --> | |||
<view class="boxtittab"> | |||
<view class="tabbox" @click="timeshow=true"> | |||
{{ time }} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
<view class="tabbox" @click="deptshow=true"> | |||
{{ dept}} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
<view class="tabbox" @click="guwenshow=true"> | |||
{{ guwen}} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> | |||
<!-- <view class="tabbox" @click="taptimetuisshow"> | |||
{{ huashu}} | |||
<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> --> | |||
<!-- <view class="tabbox" @click="screenshow"> | |||
更多筛选<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon> | |||
</view> --> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="boxzonglan" style="min-height: 400rpx;"> | |||
<view class="zonglantitle">简报 <text @click="showDesc=true">统计说明</text></view> | |||
<view class="zonglanbox"> | |||
<view class="grid" style="height: auto;" v-for="(item,index) in numlist" :key="index"> | |||
<view class="audonum">{{item.name}}</view> | |||
<view class="num">{{item.firstnum||0}}</view> | |||
<view class="bottom"> | |||
<view class="leftnum">对比:{{item.endnum||0}}</view> | |||
<view class="rightnum" :class="item.duibinum>0?'red':'green'">{{item.duibinum||0}} | |||
<image v-if="item.duibinum>0" src="https://static.quhouse.com/c4145f84cc3c49769ee2ec11465c085b.png" mode="" /> | |||
<image v-else src="https://static.quhouse.com/c5dbf780e09a4da0b0bab2d7fa58accd.png" mode="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 统计说明 --> | |||
<view class="black-bg" v-if="showDesc" > | |||
<view class="tongjiDesc"> | |||
<view class="tongji-title">统计说明</view> | |||
<view class="text"> | |||
<view><text class="bold">平均需求挖掘率:</text>筛选时间内,有效接待中已标记顾问的需求挖掘执行率的平均值;</view> | |||
<view><text class="bold">未标记:</text>筛选时间内,有效接待中未标记顾问的接待数;</view> | |||
<view><text class="bold">有效接待:</text>筛选时间内,标记为有效的接待数,不包含待接单;</view> | |||
<view><text class="bold">未挖掘需求数:</text>筛选时间内,需求挖掘平均执行率未0 的需求数;</view> | |||
</view> | |||
</view> | |||
<view class="close" @click="showDesc=false">X</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">平均需求挖掘率趋势</view> | |||
</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts type="line" :chartData="lineOptsect" :opts="lineOpts" background="none" | |||
:ontouch="true" canvasId="wangxiaohuaerlingilingwuyiba1" :canvas2d="true" /> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">平均需求挖掘分布</view> | |||
</view> | |||
<view class="uchaserbox"> | |||
<qiun-data-charts | |||
type="ring" | |||
:chartData="ringChartData" | |||
:canvas2d="true" | |||
:canvasId="ChartBoxIdwangxiaohuaerlingilingwuyiba1" | |||
:opts='opts' | |||
background="none" /> | |||
</view> | |||
</view> | |||
<view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view> | |||
<view class="single"> | |||
<view class="title"> | |||
<view class="title1">需求挖掘排名</view> | |||
</view> | |||
<view class="tabdada"> | |||
<view class="tabth"> | |||
<view>排名</view> | |||
<view>需求类型/挖掘执行接待数</view> | |||
<view>执行率</view> | |||
<view>操作</view> | |||
</view> | |||
<view v-if="total==0" style="color: #999999;width: 100%;height: 500rpx;line-height: 500rpx;text-align: center;" >暂无数据</view> | |||
<view class="tabtd" v-for="(item,i) in sortList" :key="i"> | |||
<view> | |||
<image v-if="i==0" class="ranking" src="../../../static/images/ranking1.png" mode=""></image> | |||
<image v-else-if="i==1" class="ranking" src="../../../static/images/ranking2.png" mode=""></image> | |||
<image v-else-if="i==2" class="ranking" src="../../../static/images/ranking3.png" mode=""></image> | |||
<view class="ranking1" v-else>{{i+1}}</view> | |||
</view> | |||
<view class="u-line-1">{{item.name}}({{item.selected}})</view> | |||
<view>{{item.fraction}}%</view> | |||
<view @click="Toview(item,i)">查看</view> | |||
</view> | |||
</view> | |||
</view> | |||
<u-popup v-model="timeshow" mode="bottom"> | |||
<view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(4, '近7天')"> | |||
近7天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 5 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(5, '近15天')"> | |||
近15天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 6 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(6, '近30天')"> | |||
近30天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 3 ? '#2B6EFF' : '#333333' }" @click="tabtimetap(3,'自定义')"> | |||
自定义</view> | |||
</u-popup> | |||
<u-calendar v-model="calendarShow" mode="range" @change="calendarTimeChange"></u-calendar> | |||
<u-select v-model="guwenshow" :list="staffList" @confirm="staffSelectCallback($event,0)" | |||
:default-value='selindex'></u-select> | |||
<u-select v-model="deptshow" :list="teamList" @confirm="staffSelectCallback($event,1)" | |||
:default-value='selindex'></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
var app = getApp(); | |||
var config = require("../../../config"); | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
selindex: '', | |||
guwenshow: false, | |||
timeshow: false, | |||
selectshow: false, | |||
deptshow: false, | |||
deptVal: '', | |||
guwenVal: '', | |||
// 筛选文字展示 | |||
time: '近7天', | |||
dept: '部门', | |||
guwen: '顾问', | |||
huashu: '话术', | |||
showDesc: false, | |||
sortList: [], | |||
ringChartData: { | |||
}, | |||
// ring图 分布图 | |||
opts: { | |||
rotate: false, | |||
rotateLock: false, | |||
color: ["#1890FF","#91CB74","#FAC858","#EE6666"], | |||
padding: [5,5,5,5], | |||
dataLabel: true, | |||
legend: { | |||
show: true, | |||
position: "right", | |||
lineHeight: 25 | |||
}, | |||
title: { | |||
name: "", | |||
fontSize: 15, | |||
color: "#666666" | |||
}, | |||
subtitle: { | |||
name: "", | |||
fontSize: 25, | |||
color: "#7cb5ec" | |||
}, | |||
extra: { | |||
ring: { | |||
ringWidth: 60, | |||
activeOpacity: 0.5, | |||
activeRadius: 10, | |||
offsetAngle: 0, | |||
labelWidth: 15, | |||
border: false, | |||
borderWidth: 3, | |||
borderColor: "#FFFFFF" | |||
} | |||
} | |||
}, | |||
activeTotal: 4, | |||
houseId: '', | |||
// 员工列表 | |||
staffList: [], | |||
// 团队列表 | |||
teamList: [], | |||
team: { | |||
value: '', | |||
label: '' | |||
}, | |||
startDate: '', | |||
endDate: '', | |||
calendarShow: false, | |||
activeTab: 0, | |||
numlist: [{ | |||
name: '平均需求挖掘率', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'wordFraction' | |||
}, { | |||
name: '未挖掘需求', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'noFinishWord' | |||
}, | |||
{ | |||
name: '有效接待', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'activeCustomer' | |||
}, | |||
{ | |||
name: '未标记', | |||
firstnum: '', | |||
endnum: '', | |||
duibinum: '', | |||
setName: 'markAdvisor' | |||
}, | |||
], | |||
lineOptsect: { | |||
"categories": [], | |||
"series": [{ | |||
"name": "第一段", | |||
"data": [] | |||
},{ | |||
"name": "第二段", | |||
"data": [] | |||
} | |||
] | |||
}, | |||
Theteamcomparedisshow: false, | |||
Groupcontrastisshow: false, | |||
allList: [], | |||
lineOpts: { | |||
yAxis: { | |||
data: [{ | |||
max: 100, | |||
min: 0, | |||
}] | |||
} | |||
}, | |||
}; | |||
}, | |||
onShow() { | |||
// this.LOADING = true | |||
// 获取项目id | |||
this.houseId = uni.getStorageSync('buildingID').id; | |||
// 获取员工 | |||
this.getStaffList() | |||
// 获取团队 | |||
this.getSectionList() | |||
this.getdata() | |||
}, | |||
onReady: function(){ | |||
this.getRingData() | |||
}, | |||
onPullDownRefresh() { | |||
}, | |||
methods: { | |||
getdata(){ | |||
// 需求挖掘分析-简报 | |||
this.wordMiningAnalyze() | |||
// 挖掘趋势图 | |||
this.getwordMiningAnalyzePercentage() | |||
//需求挖掘排行 | |||
this.getwordMiningRank() | |||
// 需求挖掘f分布图 | |||
this.getRingData() | |||
}, | |||
// 需求挖掘排行 | |||
getwordMiningRank(){ | |||
this.$u.post('/cusLvStatistics/wordMiningRank', { | |||
houseId: this.houseId, | |||
deptId: this.deptVal, | |||
createUser: this.guwenVal, | |||
"dateType":this.activeTotal, | |||
"firstStartDate":!this.activeTotal?this.startDate:'', | |||
"firstEndDate":!this.activeTotal?this.endDate:'' | |||
}) | |||
.then(res => { | |||
console.log(res) | |||
if(res.length){ | |||
this.sortList = res.map(item=>{ | |||
return { | |||
name: item.name, | |||
id: item.id, | |||
fraction: item.fraction, | |||
selected: item.selected | |||
} | |||
}) | |||
} | |||
}) | |||
}, | |||
// 需求挖掘分布图 | |||
getRingData(){ | |||
this.$u.post('/cusLvStatistics/wordMiningAnalyzeFenbu', { | |||
houseId: this.houseId, | |||
deptId: this.deptVal, | |||
createUser: this.guwenVal, | |||
"firstStartDate":!this.activeTotal?this.startDate:'', | |||
"firstEndDate":!this.activeTotal?this.endDate:'', | |||
"dateType":this.activeTotal | |||
}) | |||
.then(res => { | |||
console.log(res) | |||
this.ringChartData = { series: [ | |||
{ | |||
data: [ | |||
{"name":"30%以下","value":res.a}, | |||
{"name":"30%~50%","value":res.b}, | |||
{"name":"50%~70%","value":res.c}, | |||
{"name":"70%以上","value":res.d}, | |||
] | |||
} | |||
]} | |||
}) | |||
}, | |||
Toview(){ | |||
//跳转到接待记录 | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index' | |||
}); | |||
}, | |||
// 需求挖掘分析-简报 | |||
wordMiningAnalyze() { | |||
let params = { | |||
"houseId":this.houseId, | |||
deptId: this.deptVal, | |||
createUser: this.guwenVal, | |||
"dateType": this.activeTotal, | |||
"firstStartDate":!this.activeTotal?this.startDate:'', | |||
"firstEndDate":!this.activeTotal?this.endDate:'' | |||
} | |||
this.$u.post("/cusLvStatistics/wordMiningAnalyze",params).then(res => { | |||
// console.log(res.contrast) | |||
res.contrast.wordFraction = (res.contrast.wordFraction || 0) + '%' | |||
this.numlist.forEach(item => { | |||
item.duibinum = res.contrast[item.setName] | |||
item.endnum = res.end[item.setName] | |||
item.firstnum = res.first[item.setName] | |||
}) | |||
}) | |||
}, | |||
// 获取员工列表 | |||
getStaffList() { | |||
this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', { | |||
houseId: this.houseId | |||
}) | |||
.then(res => { | |||
// console.log(res) | |||
if(res.length){ | |||
this.staffList = res.map(item => { | |||
return { | |||
label: item.name, | |||
value: item.accountId | |||
} | |||
}) | |||
} | |||
}) | |||
}, | |||
// 需求挖掘率趋势图 | |||
getwordMiningAnalyzePercentage() { | |||
this.$u.post('/cusLvStatistics/wordMiningAnalyzePercentage', { | |||
houseId: this.houseId, | |||
deptId: this.deptVal, | |||
createUser: this.guwenVal, | |||
"dateType": this.activeTotal, | |||
"firstStartDate":!this.activeTotal?this.startDate:'', | |||
"firstEndDate":!this.activeTotal?this.endDate:'' | |||
}) | |||
.then(res => { | |||
let categories1 = [] | |||
let categories2 = [] | |||
if(res.first&&res.first.length){ | |||
categories1 = res.first.map(item=> item.statDate.substring(0,10)) | |||
this.lineOptsect.series[0].data=res.first.map(item=> item.wordFraction) | |||
}else{ | |||
categories1= [] | |||
this.lineOptsect.series[0] = [] | |||
} | |||
if(res.end&&res.end.length){ | |||
this.lineOptsect.series[1].data=res.end.map(item=> item.wordFraction) | |||
categories2 = res.end.map(item => item.statDate.substring(0,10)) | |||
}else{ | |||
categories2 = [] | |||
} | |||
let categories3 =[] | |||
categories1.forEach(item1=>{ | |||
categories2.forEach(item2=>{ | |||
categories3.push(item1+ '/' + item2) | |||
}) | |||
}) | |||
this.lineOptsect.categories = categories3 | |||
console.log(this.lineOptsect.categories) | |||
}) | |||
}, | |||
// 获取团队列表 | |||
getSectionList() { | |||
this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', { | |||
houseId: this.houseId | |||
}) | |||
.then(res => { | |||
this.teamList = [] | |||
if(res.length){ | |||
this.teamList = res.map(item=> { | |||
return { | |||
label: item.deptName, | |||
value: item.deptId | |||
} | |||
}) | |||
} | |||
}) | |||
}, | |||
//时间切换 | |||
tabtimetap(index, text) { | |||
if (index == 3) { | |||
this.calendarShow = true; | |||
this.activeTotal = null | |||
} else { | |||
this.activeTotal = index; | |||
this.endDate = '' | |||
this.startDate = '' | |||
this.time = text | |||
this.getdata() | |||
} | |||
this.timeshow = false | |||
}, | |||
staffSelectCallback(e, idx) { | |||
if (idx == 0) { | |||
this.guwenVal = e[0].value | |||
this.guwen = e[0].label | |||
} else { // 部门 | |||
this.dept = e[0].label | |||
this.deptVal = e[0].value | |||
} | |||
this.getdata() | |||
}, | |||
//自定义时间 | |||
calendarTimeChange(e) { | |||
// console.log(e.startDate, e.endDate) | |||
this.activeTotal = null; | |||
this.endDate = e.endDate | |||
this.startDate = e.startDate | |||
this.time = '自定义' | |||
this.getdata() | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.box { | |||
width: 100%; | |||
height: 100%; | |||
background: #FAFAFA; | |||
} | |||
//时间切换的样式 | |||
.boxtittab { | |||
position: sticky; | |||
top: var(--window-top); | |||
z-index: 999; | |||
width: 100; | |||
height: 92rpx; | |||
background: #FFFFFF; | |||
border: 1px solid #E0E0E0; | |||
display: flex; | |||
align-items: center; | |||
.tabbox { | |||
flex: 1; | |||
height: 100%; | |||
text-align: center; | |||
line-height: 92rpx; | |||
color: #666666; | |||
font-size: 28rpx; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
display: -webkit-box; | |||
/* 将对象作为弹性伸缩盒子模型显示 */ | |||
-webkit-line-clamp: 1; | |||
/* 控制最多显示几行 */ | |||
-webkit-box-orient: vertical; | |||
/* 设置或检索伸缩盒对象的子元素的排列方式 */ | |||
} | |||
} | |||
.timeview { | |||
height: 80rpx; | |||
line-height: 80rpx; | |||
width: 100%; | |||
text-align: center; | |||
border-bottom: 1px solid #F8F8F8; | |||
} | |||
.black-bg{ | |||
position: fixed; | |||
background: rgba(0,0,0,0.6); | |||
left: 0; | |||
right: 0; | |||
top: 0; | |||
bottom: 0; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
z-index: 9999; | |||
.tongjiDesc{ | |||
width: 80%; | |||
background: #FFFFFF; | |||
border-radius: 4rpx; | |||
padding: 30rpx; | |||
} | |||
.close{ | |||
background: #fff; | |||
border-radius: 50%; | |||
width: 80rpx; | |||
height: 80rpx; | |||
margin-top: 30rpx; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.tongji-title{ | |||
text-align: center; | |||
font-size: 30rpx; | |||
margin-bottom: 20rpx; | |||
} | |||
.text view{ | |||
margin-bottom: 24rpx; | |||
} | |||
.bold{ | |||
font-weight: bold; | |||
} | |||
} | |||
.grid:nth-child(1) { | |||
border-right: none; | |||
border-bottom: none; | |||
} | |||
.grid:nth-child(2) { | |||
border-bottom: none; | |||
} | |||
.grid:nth-child(3) { | |||
border-right: none; | |||
} | |||
.grid .bottom{ | |||
display: flex; | |||
align-items: center; | |||
padding-left: 20rpx; | |||
margin: 10rpx 0 20rpx; | |||
.leftnum{ | |||
height: 36rpx; | |||
font-size: 26rpx; | |||
font-family: PingFangSC-Regular, PingFang SC; | |||
font-weight: 400; | |||
color: #666666; | |||
line-height: 36rpx; | |||
margin-right: 20rpx; | |||
} | |||
.rightnum{ | |||
height: 36rpx; | |||
font-size: 26rpx; | |||
font-family: PingFangSC-Semibold, PingFang SC; | |||
font-weight: 600; | |||
color: #666; | |||
line-height: 36rpx; | |||
display: flex; | |||
align-items: center; | |||
&.red{ | |||
color: #E6273A; | |||
} | |||
&.green{ | |||
color: #43CD80; | |||
} | |||
image{ | |||
width: 18rpx; | |||
height: 14rpx; | |||
margin-left: 6rpx; | |||
} | |||
} | |||
} | |||
.zonglantitle{ | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
text{ | |||
color: #666666; | |||
} | |||
} | |||
.uchaserbox{ | |||
width: 100%; | |||
height: 500rpx; | |||
} | |||
.tabdada { | |||
width: 100%; | |||
height: 580rpx; | |||
overflow-y: auto; | |||
padding-bottom: 20rpx; | |||
.tabth { | |||
width: 100%; | |||
height: 28rpx; | |||
display: flex; | |||
font-size: 28rpx; | |||
line-height: 28rpx; | |||
color: #666666; | |||
margin-top: 28rpx; | |||
} | |||
.tabth>view:nth-of-type(1) { | |||
width: 10%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(2) { | |||
width: 46%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(3) { | |||
width: 22%; | |||
text-align: center; | |||
} | |||
.tabth>view:nth-of-type(4) { | |||
width: 22%; | |||
text-align: center; | |||
} | |||
.tabtd { | |||
width: 100%; | |||
height: 30rpx; | |||
display: flex; | |||
font-size: 26rpx; | |||
line-height: 30rpx; | |||
margin-top: 32rpx; | |||
} | |||
.tabtd>view:nth-of-type(1) { | |||
width: 10%; | |||
text-align: center; | |||
line-height: 30rpx; | |||
} | |||
.tabtd>view:nth-of-type(2) { | |||
width: 46%; | |||
max-width: 400rpx; | |||
text-align: center; | |||
color: #333333; | |||
} | |||
.tabtd>view:nth-of-type(3) { | |||
width: 22%; | |||
text-align: center; | |||
color: #333333; | |||
} | |||
.tabtd>view:nth-of-type(4) { | |||
width: 22%; | |||
text-align: center; | |||
color: #2671E2; | |||
} | |||
.ranking { | |||
width: 34rpx; | |||
height: 34rpx; | |||
} | |||
.ranking1 { | |||
width: 30rpx; | |||
height: 30rpx; | |||
background: #ECF1FF; | |||
color: #424D64; | |||
font-size: 18rpx; | |||
text-align: center; | |||
line-height: 30rpx; | |||
border-radius: 50%; | |||
margin: 0 auto; | |||
} | |||
.tabech { | |||
width: 100%; | |||
height: 600rpx; | |||
} | |||
} | |||
</style> |
@@ -72,14 +72,17 @@ | |||
</view> | |||
<view class="content-sec-lab"> | |||
顾问姓名:<view class="content-sec-lab1">{{item.agentName}}</view> | |||
顾问姓名:<view class="content-sec-lab1">{{item.agentName||'--'}}</view> | |||
</view> | |||
<view class="content-sec-lab"> | |||
需求挖掘:<view class="content-sec-lab1">{{item.wordFraction||0}}%</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.mm || '0'}}<text | |||
<view class="">{{item.fraction || 0}}% | {{item.mm || 0}}<text | |||
style="font-size: 24rpx;">min</text></view> | |||
</view> | |||
</view> | |||
@@ -246,11 +249,18 @@ | |||
</u-popup> | |||
<u-select v-model="soltishow" :list="orderBylist" @confirm="selectCallback2"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
orderBylist: [{ | |||
@@ -367,6 +377,7 @@ | |||
} | |||
}, | |||
onLoad(options) { | |||
this.LOADING = true | |||
this.isnorefresh = options.refresh; | |||
}, | |||
onShow() { | |||
@@ -577,8 +588,8 @@ | |||
// } | |||
this.userInfo = uni.getStorageSync('weapp_session_userInfo_data'); | |||
this.$u.post("/customer/customerManagement", parames).then(data => { | |||
if(this.staTime && this.endtime) { | |||
this.LOADING = false | |||
if (this.staTime && this.endtime) { | |||
this.arriveFilter = `${this.staTime}-${this.endtime}` | |||
} | |||
var list = data.results || []; | |||
@@ -606,6 +617,8 @@ | |||
} | |||
this.totalRecord = data.totalPage; | |||
this.totalRecords = data.totalRecord; | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//获取顾问列表 | |||
@@ -80,11 +80,19 @@ | |||
<u-select v-model="soltishow" :list="orderBylist" @confirm="selectCallback2"></u-select> | |||
<u-select v-model="showIdent" :list="identList" @confirm="selectIdent"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
orderBylist: [{ | |||
@@ -173,6 +181,7 @@ | |||
} | |||
}, | |||
onLoad(options) { | |||
this.LOADING = true | |||
this.isnorefresh = options.refresh; | |||
if (options.activeTotal) { | |||
this.activeTotal = options.activeTotal | |||
@@ -331,18 +340,18 @@ | |||
let newobj = res[0]; | |||
let obj = { | |||
pageSize: index+1, | |||
pageSize: index + 1, | |||
num: this.totalRecords, | |||
query: { | |||
...this.nextPageObj | |||
} | |||
} | |||
uni.setStorageSync('nextPageObj', JSON.stringify(obj)) | |||
uni.navigateTo({ | |||
url: `/pages/center/prohibited/details?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}&index=${index}&isMerge=${res[0].merge}` | |||
}) | |||
// if (res[0].merge == 0) { | |||
// } | |||
// else { | |||
@@ -387,6 +396,7 @@ | |||
} | |||
this.$u.post("/customer/findbypage", parames).then(data => { | |||
this.LOADING = false | |||
var list = data.results || []; | |||
if (this.isRefresh) { | |||
this.recordList = list; | |||
@@ -396,6 +406,8 @@ | |||
this.totalRecord = data.totalPage; | |||
this.totalRecords = data.totalRecord; | |||
this.nextPageObj = parames.query | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//获取顾问列表 | |||
@@ -444,7 +456,7 @@ | |||
} | |||
return str | |||
}, | |||
// DisposeStatus | |||
DisposeStatus(status) { | |||
let str = ''; | |||
@@ -78,10 +78,12 @@ | |||
<view class="arriveNum">第{{item.visitRecord || "--"}}次接待</view> | |||
</view> | |||
<view class="right"> | |||
<!-- {{item.fraction || '0'}}% | {{item.fraction || '0'}}分 --> | |||
{{item.fraction || '0'}}% | |||
</view> | |||
</view> | |||
<view class="content-last"> | |||
需求挖掘:{{item.wordFraction|| 0}}% | |||
</view> | |||
<view class="content-last"> | |||
{{item.createTime}} | {{item.mm || '0'}} min | |||
</view> | |||
@@ -101,7 +103,7 @@ | |||
<image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image> | |||
</view> | |||
</view> | |||
<!-- <view class="screen-counselor"> | |||
<!-- <view class="screen-counselor"> | |||
<view class="screen-text"> | |||
客户阶段 | |||
</view> | |||
@@ -205,7 +207,8 @@ | |||
<view class="timeview" :style="{ color: activeTotal == 3 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(3, '近30天')"> | |||
近30天</view> | |||
<view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }" @click="tabtimetap(4, '')"> | |||
<view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }" | |||
@click="tabtimetap(4, '')"> | |||
自定义</view> | |||
</u-popup> | |||
<u-popup v-model="timetushow" mode="bottom"> | |||
@@ -229,11 +232,18 @@ | |||
90min以上</view> | |||
</u-popup> | |||
<u-select v-model="soltishow" :list="orderBylist" @confirm="selectCallback2"></u-select> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
orderBylist: [{ | |||
@@ -331,6 +341,7 @@ | |||
} | |||
}, | |||
onLoad(options) { | |||
this.LOADING = true | |||
this.isnorefresh = options.refresh; | |||
if (options.activeTotal) { | |||
this.activeTotal = options.activeTotal | |||
@@ -343,7 +354,7 @@ | |||
} | |||
if (options.staTime) { | |||
this.staTime = options.staTime; | |||
this.endtime = options.endtime; | |||
this.endtime = options.endtime + ' 23:59:59'; | |||
} | |||
}, | |||
@@ -424,6 +435,7 @@ | |||
this.$u.post("/customer/lifeTrackDefineList", { | |||
houseId: this.buildingID | |||
}).then(res => { | |||
this.LOADING = false | |||
let tempArr = [] | |||
res.forEach(item => { | |||
let tempObj = {} | |||
@@ -517,6 +529,7 @@ | |||
var item = { | |||
bg: 0, | |||
customerId: item.id, | |||
wordFraction: item.wordFraction | |||
} | |||
uni.setStorageSync("searchobj", item); //写入缓存 | |||
uni.setStorageSync("entrance", 1); //写入缓存 | |||
@@ -537,7 +550,7 @@ | |||
let newobj = res[0]; | |||
if (res[0].merge == 0) { | |||
uni.navigateTo({ | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}` | |||
url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}&wordFraction=${item.wordFraction}` | |||
}) | |||
} else { | |||
uni.navigateTo({ | |||
@@ -555,6 +568,8 @@ | |||
let orderBy = 0; | |||
if (this.activeTotal == 5) { | |||
dateType = null; | |||
} else if (this.activeTotal == 3) { | |||
dateType = null; | |||
} else if (this.activeTotal == 4) { | |||
dateType = null; | |||
} else { | |||
@@ -594,6 +609,7 @@ | |||
parames.query.agentId = this.screen.agentId | |||
} | |||
this.$u.post("/customer/findbypage", parames).then(data => { | |||
this.LOADING = false | |||
if (this.staTime && this.endtime) { | |||
this.arriveFilter = `${this.staTime}-${this.endtime}` | |||
} | |||
@@ -605,6 +621,8 @@ | |||
} | |||
this.totalRecord = data.totalPage; | |||
this.totalRecords = data.totalRecord; | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
//获取顾问列表 | |||
@@ -43,9 +43,12 @@ | |||
</view> | |||
<!-- checkAuthority('顾问指派顾问') --> | |||
<view class="footer-button" v-if="item.status!=0"> | |||
<view class="footer1" @click.stop="addTime(item)">接待延时</view> | |||
<view class="footer1" @click.stop="assign(item)">重新指派</view> | |||
<template v-if="zhipai"> | |||
<view class="footer1" @click.stop="assign(item)">重新指派</view> | |||
</template> | |||
<template v-if="endReception"> | |||
<view class="footer3" @click.stop="changeEnd(item.id)">结束接待</view> | |||
</template> | |||
@@ -55,15 +58,21 @@ | |||
<view class="centerbox-che">手机号码:<text class="shizai">{{item.phone || "--"}}</text></view> | |||
</view> | |||
<view class="footer-button" v-if="item.status==0"> | |||
<view class="footer3" @click.stop="assign(item)">指派顾问</view> | |||
<template v-if="zhipai"> | |||
<view class="footer3" @click.stop="assign(item)">指派顾问</view> | |||
</template> | |||
</view> | |||
</view> | |||
<image v-if="isAdd == 0 && (dataCode!=6||(dataCode==6&&addAccount==0))" @click="addreception()" class="add" | |||
<image v-if="dataCode!=6||(dataCode==6&&addAccount==0)" @click="addreception()" class="add" | |||
src="/static/images/add.png" mode=""></image> | |||
<image class="add2" @click="reshCustom()" src="https://static.quhouse.com/zhikong_xcx_img/refresh.png" mode=""> | |||
</image> | |||
<u-tabbar activeColor="#1296db" inactiveColor="#999999" v-model="current" :list="tabbarList"></u-tabbar> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -71,36 +80,48 @@ | |||
var util = require("../../utils/util.js"); | |||
var config = require("../../config"); | |||
import tabbarList from '@/utils/tabbar.js' | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
noClick:true, | |||
tabbarList:tabbarList, | |||
noClick: true, | |||
tabbarList: tabbarList, | |||
current: 0, | |||
buildingID: '', | |||
waitCustomList: [], | |||
isAdd: '', | |||
dataCode: '', | |||
addAccount: '', | |||
endReception: true, | |||
fdFlag:null | |||
fdFlag: null | |||
}; | |||
}, | |||
computed: { | |||
zhipai() { | |||
if (this.dataCode == 6) { | |||
return this.checkAuthority('顾问指派顾问') | |||
} else { | |||
return true | |||
} | |||
} | |||
}, | |||
components: {}, | |||
onLoad() {}, | |||
onShow() { | |||
this.LOADING = true | |||
this.buildingID = uni.getStorageSync('buildingID').id; | |||
const { | |||
addAccount, | |||
dataCode | |||
} = uni.getStorageSync("weapp_session_userInfo_data"); | |||
let menulist = uni.getStorageSync('weapp_session_Menu_data') | |||
this.endReception = menulist.findIndex(item => { return item.name == '结束接待' }) != -1 | |||
this.endReception = menulist.findIndex(item => { | |||
return item.name == '结束接待' | |||
}) != -1 | |||
this.addAccount = addAccount; | |||
this.dataCode = dataCode; | |||
console.log(this.menulist) | |||
this.init() | |||
this.queryHaveDept() | |||
this.updateInit() | |||
}, | |||
methods: { | |||
@@ -173,21 +194,16 @@ | |||
} | |||
}, | |||
queryHaveDept() { | |||
return new Promise((resolve, reject) => { | |||
this.$u.get("/user/queryHaveDept?houseId=" + this.buildingID).then(res => { | |||
this.isAdd = res; | |||
resolve(); | |||
}) | |||
}) | |||
}, | |||
init() { | |||
this.waitCustomList = [] | |||
let parames = { | |||
itemId: this.buildingID | |||
} | |||
this.$u.post("/customer/reception", parames).then(data => { | |||
this.LOADING = false | |||
this.waitCustomList = data; | |||
}).catch(e => { | |||
this.LOADING = false | |||
}); | |||
}, | |||
//延时接待 | |||
@@ -216,26 +232,26 @@ | |||
cancelColor: "#999999", | |||
success: res => { | |||
if (this.noClick) { | |||
this.noClick= false; | |||
if (res.confirm) { | |||
if (res.confirm) { | |||
this.$u.post("/customer/endReception", { | |||
id: id, | |||
houseId: this.buildingID | |||
}).then(res => { | |||
uni.showToast({ | |||
icon: "none", | |||
title: "操作成功" | |||
}) | |||
this.init(); | |||
}); | |||
} | |||
} | |||
setTimeout(()=> { | |||
this.noClick= true; | |||
}, 2000) | |||
this.noClick = false; | |||
if (res.confirm) { | |||
if (res.confirm) { | |||
this.$u.post("/customer/endReception", { | |||
id: id, | |||
houseId: this.buildingID | |||
}).then(res => { | |||
uni.showToast({ | |||
icon: "none", | |||
title: "操作成功" | |||
}) | |||
this.init(); | |||
}); | |||
} | |||
} | |||
setTimeout(() => { | |||
this.noClick = true; | |||
}, 2000) | |||
} else { | |||
// 这里是重复点击的判断 | |||
// 这里是重复点击的判断 | |||
} | |||
} | |||
}) | |||
@@ -255,29 +271,10 @@ | |||
}); | |||
return | |||
} | |||
if (this.waitCustomList.length == 0) { | |||
uni.navigateTo({ | |||
url: '/pages/mine/reception/addreception' | |||
}) | |||
return | |||
} else { | |||
for (var i = 0; i < this.waitCustomList.length; i++) { | |||
if (this.waitCustomList[i].status == 1) { | |||
uni.showLoading({ | |||
title: '当前还有未完成的客户项' | |||
}); | |||
setTimeout(function() { | |||
uni.hideLoading(); | |||
}, 1000); | |||
return | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/mine/reception/addreception' | |||
}) | |||
return | |||
} | |||
} | |||
} | |||
uni.navigateTo({ | |||
url: '/pages/mine/reception/addreception' | |||
}); | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/mine/reception/addreception' | |||
@@ -439,7 +436,7 @@ | |||
width: 90upx; | |||
height: 90upx; | |||
position: fixed; | |||
bottom:275upx; | |||
bottom: 275upx; | |||
right: 44upx; | |||
} | |||
@@ -1,7 +1,7 @@ | |||
<template> | |||
<view class="boox"> | |||
<view class="title"> | |||
数智工牌 | |||
{{ isPuqiang ? "数智工牌" : "AI营销辅助"}} | |||
</view> | |||
<view class="booximg"> | |||
<!-- <image class="img" src="https://qufang.oss-cn-beijing.aliyuncs.com/zkgj/xcx/guidepage.png" mode=""></image> --> | |||
@@ -52,6 +52,15 @@ | |||
pathur3:'/pages/center/prohibited/index', | |||
}; | |||
}, | |||
computed: { | |||
// 是否是普强小程序 | |||
isPuqiang() { | |||
return config.service.host.indexOf('xitong.pachira.cn') == -1 | |||
}, | |||
}, | |||
onLoad(opts) { | |||
this.name=opts.loginName ||''; | |||
let stat=opts.path||''; | |||
@@ -4,7 +4,7 @@ | |||
<view class="Switching1"> | |||
<image class="Switching1-img" src="../../static/images/building.png" mode=""></image> | |||
</view> | |||
<view class="Switching2">项目:</view> | |||
<view class="Switching2">{{ isPuqiang ? '项目' : '客户' }}:</view> | |||
<view class="Switching3">{{buildingname}}</view> | |||
<view class="Switching4" v-if="buildingishow" @click="piskbuilding()">切换项目</view> | |||
</view> | |||
@@ -60,7 +60,7 @@ | |||
</view> | |||
<view class="title" v-if="equipmentisshow">设备</view> | |||
<view class="shebenbox" v-if="equipmentisshow" > | |||
<view class="shebenbox" v-if="equipmentisshow"> | |||
<view class="shebenche" @click="tapjumpequipment(0)"> | |||
<view class="shebenchenum">{{equipmentobj.totalNum || 0}}</view> | |||
<view class="shebenchetext">设备总数</view> | |||
@@ -90,7 +90,7 @@ | |||
</view> | |||
</view> --> | |||
<view class="real-timebox"> | |||
<view class="timebox"> | |||
<view class="real" @click="tapjumpreception('1')"> | |||
@@ -102,13 +102,13 @@ | |||
<view class="realtext">有效接待</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('2')"> | |||
<view class="realnum">{{realtimeobj.receivingCustomer || 0}}</view> | |||
<view class="realnum">{{realtimeobj.receivingCustomer || 0}}</view> | |||
<view class="realtext">正在接待</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('4')"> | |||
<view class="realnum">{{realtimeobj.tagCustomer || 0}}</view> | |||
<view class="realtext">未标顾问</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="timebox"> | |||
<view class="real" @click="tapjumpreception('auth')"> | |||
@@ -119,19 +119,18 @@ | |||
<view class="realnum">{{realtimeobj.fraction || 0}}%</view> | |||
<view class="realtext">平均执行率</view> | |||
</view> | |||
<view class="real" > | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realnum" style="color: red;" >{{realtimeobj.prohibitedCustomer || 0}}</view> | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realtext">违禁预警</view> | |||
<view class="real" @click="tapjumpreception('6')"> | |||
<view class="realnum">{{realtimeobj.wordFraction || 0}}%</view> | |||
<view class="realtext">平均挖掘率</view> | |||
</view> | |||
<view class="real"> | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realnum" style="color: red;"> | |||
{{realtimeobj.prohibitedCustomer || 0}} | |||
</view> | |||
<view @click="prohibitedtap(1)" v-if="methodsisshow==true" class="realtext">违禁预警</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="title" style="display: flex;"> | |||
<view style="width: 55%;">概览</view> | |||
@@ -143,7 +142,7 @@ | |||
</view> | |||
<view class="real-timebox"> | |||
<view class="timebox"> | |||
<view class="real" @click="tapjumpreception('3')"> | |||
<view class="real" @click="tapjumpreception('3')"> | |||
<view class="realnum">{{Thisweekobj.receptionCount || 0}}</view> | |||
<view class="realtext">接待量</view> | |||
</view> | |||
@@ -151,56 +150,43 @@ | |||
<view class="realnum">{{Thisweekobj.activeCustomer|| 0}}</view> | |||
<view class="realtext">有效接待</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('333')"> | |||
<view class="realnum">{{Thisweekobj.fraction || 0}}%</view> | |||
<view class="real" @click="tapjumpreception('333')"> | |||
<view class="realnum">{{Thisweekobj.fraction || 0}}%</view> | |||
<view class="realtext">平均执行率</view> | |||
</view> | |||
</view> | |||
<view class="timebox"> | |||
<view class="real" @click="tapjumpreception('333')"> | |||
<view class="real" @click="tapjumpreception('333')"> | |||
<view class="realnum">{{Thisweekobj.avgDuration|| 0}}</view> | |||
<view class="realtext">平均接待时长</view> | |||
</view> | |||
<view class="real" @click="tapjumpreception('3')"> | |||
<view class="realnum">{{Thisweekobj.wordFraction || 0}}%</view> | |||
<view class="realtext">平均挖掘率</view> | |||
</view> | |||
<view class="real" @click="prohibitedtap(2)" v-if="methodsisshow==true"> | |||
<view class="realnum" style="color: red;" >{{Thisweekobj.prohibitedCustomer || 0}}</view> | |||
<view class="realnum" style="color: red;">{{Thisweekobj.prohibitedCustomer || 0}}</view> | |||
<view class="realtext">违禁预警</view> | |||
</view> | |||
<view class="real" v-else> | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
</view> | |||
<view class="real"> | |||
<view class="realnum"></view> | |||
<view class="realtext"></view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="title">常用功能</view> | |||
<view class="commonly-box"> | |||
<!-- 权限菜单控制显隐 因为后台添加的按钮权限并不会在此返回所以需要手动添加 showMenu --> | |||
<view class="commonly" @click="Piabodata(item.name)" v-for="(item,index) in Menulist" :key="index" v-if="showMenu(item.name)"> | |||
<view class="commonly" @click="Piabodata(item.name)" v-for="(item,index) in Menulist" :key="index" | |||
v-if="showMenu(item.name)"> | |||
<view class="commonly-img"> | |||
<image v-if="item.name=='客户管理'" class="commonly-img1" src="../../static/images/function1.png" | |||
mode=""></image> | |||
<image v-if="item.name=='接待记录'" class="commonly-img1" src="../../static/images/function2.png" | |||
mode=""></image> | |||
<image v-if="item.name=='销讲数据'" class="commonly-img1" src="../../static/images/function4.png" | |||
mode=""></image> | |||
<image v-if="item.name=='设备管理'" class="commonly-img1" src="../../static/images/function5.png" | |||
mode=""></image> | |||
<image v-if="item.name=='值班顾问'" class="commonly-img1" src="../../static/images/function6.png" | |||
mode=""></image> | |||
<image v-if="item.name=='顾问排名'" class="commonly-img1" src="../../static/images/rankingguwen.png" | |||
mode=""></image> | |||
<image v-if="item.name=='违禁记录'" class="commonly-img1" src="../../static/images/prohibited.png" | |||
mode=""></image> | |||
<image class="commonly-img1" :src="item.name | imgFilter" mode=""></image> | |||
</view> | |||
<view class="commonly-text">{{item.name}}</view> | |||
</view> | |||
</view> | |||
<!-- 项目切换 --> | |||
<view v-if="Showhiddenunits"> | |||
<u-select :mask-close-able="false" v-model="Showhiddenunits" mode="single-column" :list="lpanlist" | |||
@@ -214,7 +200,7 @@ | |||
</view> | |||
<view class="content"> | |||
<view class="tit">{{tit}}</view> | |||
<u-parse class="ql-editor" :content="content" @preview="preview" @navigate="navigate"/> | |||
<u-parse class="ql-editor" :content="content" @preview="preview" @navigate="navigate" /> | |||
<!-- <rich-text :nodes="content"></rich-text> --> | |||
</view> | |||
<view class="btn" @click="lookDetail">查看详情</view> | |||
@@ -223,8 +209,8 @@ | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
<u-tabbar activeColor="#1296db" inactiveColor="#999999" v-model="current" :list="tabbarList"></u-tabbar> | |||
</view> | |||
</template> | |||
@@ -234,14 +220,20 @@ | |||
var util = require("../../utils/util.js"); | |||
import tabbarList from '@/utils/tabbar.js' | |||
import uParse from '../../components/gaoyia-parse/parse.vue' | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
uParse, | |||
loading | |||
}, | |||
data() { | |||
return { | |||
id:"", | |||
isShowUpdate:false, | |||
tit:"", | |||
content:"", | |||
tabbarList:tabbarList, | |||
id: "", | |||
isShowUpdate: false, | |||
tit: "", | |||
content: "", | |||
tabbarList: tabbarList, | |||
current: 0, | |||
userInfo: {}, | |||
Showhiddenunits: false, | |||
@@ -270,7 +262,8 @@ | |||
prohibitedCustomer: '', | |||
tagCustomer: '', | |||
fraction: '', | |||
receptionCount:'' | |||
wordFraction: '', | |||
receptionCount: '' | |||
}, | |||
Thisweekobj: { | |||
sumCustomer: '', | |||
@@ -279,38 +272,56 @@ | |||
prohibitedCustomer: '', | |||
tagCustomer: '', | |||
fraction: '', | |||
receptionCount:'' | |||
wordFraction: '', | |||
receptionCount: '' | |||
}, | |||
methodsisshow:false, | |||
zhixingcenterindex:2, | |||
methodsisshow: false, | |||
zhixingcenterindex: 2, | |||
totalTimeShow: false, | |||
statDateStart:'', | |||
statDateEnd:'', | |||
statDateStart: '', | |||
statDateEnd: '', | |||
needShow: ['客户管理', '接待记录', '销讲数据', '设备管理', '值班顾问', '顾问排名', '违禁记录'], // 权限配置需要展示出来的功能入口 | |||
}; | |||
}, | |||
computed: { | |||
// 是否是普强小程序 | |||
showMenu() { | |||
return name => { | |||
if (name == '标记有效无效接待' || name == '结束接待' || name == '客户编辑') { | |||
return false | |||
} else { | |||
if (this.needShow.findIndex(item => item == name) != -1) { | |||
return true | |||
} else { | |||
return false | |||
} | |||
} | |||
} | |||
}, | |||
// 是否是普强小程序 | |||
isPuqiang() { | |||
return config.service.host.indexOf('xitong.pachira.cn') == -1 | |||
}, | |||
}, | |||
components: { | |||
uParse | |||
onLoad() { | |||
if (!this.isPuqiang) { | |||
uni.setNavigationBarTitle({ | |||
title: 'AI营销辅助平台' | |||
}) | |||
} | |||
this.initPopup() | |||
}, | |||
onShow() { | |||
this.LOADING = true | |||
this.getMenu() | |||
this.userInfo = uni.getStorageSync('weapp_session_userInfo_data'); | |||
if(this.userInfo.dataCode==6 || this.userInfo.dataCode==3){ | |||
this.methodsisshow=false; | |||
}else{ | |||
this.methodsisshow=true; | |||
if (this.userInfo.dataCode == 6 || this.userInfo.dataCode == 3) { | |||
this.methodsisshow = false; | |||
} else { | |||
this.methodsisshow = true; | |||
} | |||
if (this.userInfo.zkProperties.length == 1) { | |||
this.buildingID = uni.getStorageSync('buildingID').id; | |||
@@ -339,9 +350,10 @@ | |||
this.initrealTimeStatistics() | |||
this.updateInit() | |||
}, | |||
onPullDownRefresh() { | |||
this.getMenu() | |||
this.userInfo = uni.getStorageSync('weapp_session_userInfo_data'); | |||
if (this.userInfo.dataCode == 6 || this.userInfo.dataCode == 3) { | |||
this.methodsisshow = false; | |||
@@ -378,14 +390,16 @@ | |||
uni.stopPullDownRefresh() | |||
}, 3000) | |||
}, | |||
onLoad() { | |||
this.initPopup() | |||
}, | |||
methods: { | |||
close(){ | |||
towajue(){ | |||
uni.navigateTo({ | |||
url: "/pages/center/Piabodata/requireminingAnalysis" | |||
}) | |||
}, | |||
close() { | |||
this.isShowUpdate = false; | |||
}, | |||
lookDetail(){ | |||
lookDetail() { | |||
let datas = { | |||
id: this.id, | |||
title: this.tit, | |||
@@ -396,8 +410,8 @@ | |||
url: "../mine/messageDetail" | |||
}) | |||
let data = { | |||
id:this.id, | |||
accountId:uni.getStorageSync('weapp_session_userInfo_data').accountId | |||
id: this.id, | |||
accountId: uni.getStorageSync('weapp_session_userInfo_data').accountId | |||
} | |||
uni.request({ | |||
url: config.service.updateRead, | |||
@@ -413,7 +427,7 @@ | |||
}) | |||
this.isShowUpdate = false; | |||
}, | |||
initPopup(){ | |||
initPopup() { | |||
uni.request({ | |||
url: config.service.updatePopup, | |||
method: "GET", | |||
@@ -421,9 +435,9 @@ | |||
'content-type': 'application/json', | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
data: { | |||
}, | |||
success: (res) => { | |||
this.first(res.data.data.id) | |||
@@ -431,11 +445,11 @@ | |||
this.tit = res.data.data.title | |||
this.aid = res.data.data.accountId | |||
this.id = res.data.data.id | |||
this.isShowUpdate = res.data.data.readFlag==0?true:false; | |||
this.isShowUpdate = res.data.data.readFlag == 0 ? true : false; | |||
} | |||
}) | |||
}, | |||
first(id){ | |||
first(id) { | |||
uni.request({ | |||
url: config.service.firstShowPopup, | |||
method: "GET", | |||
@@ -443,7 +457,9 @@ | |||
'content-type': 'application/json', | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
data:{id}, | |||
data: { | |||
id | |||
}, | |||
success: (res) => {} | |||
}) | |||
}, | |||
@@ -453,7 +469,7 @@ | |||
method: "GET", | |||
data: { | |||
id: uni.getStorageSync('weapp_session_userInfo_data').accountId, | |||
projectId: uni.getStorageSync('buildingID').id, | |||
projectId: uni.getStorageSync('buildingID').id, | |||
}, | |||
header: { | |||
'content-type': 'application/json', | |||
@@ -465,28 +481,28 @@ | |||
} | |||
}) | |||
}, | |||
//获取权限 | |||
getMenu(){ | |||
getMenu() { | |||
this.$u.get("/user/getMenu").then(data => { | |||
uni.setStorageSync("weapp_session_Menu_data", data) | |||
this.Menulist = uni.getStorageSync('weapp_session_Menu_data'); | |||
console.log(this.Menulist, 'adasdasds123') | |||
}) | |||
}) | |||
}, | |||
//自定义时间 | |||
totalTimeChange(e) { | |||
this.statDateStart=e.startDate; | |||
this.statDateEnd=e.endDate; | |||
this.zhixingcenterindex=7; | |||
this.statDateStart = e.startDate; | |||
this.statDateEnd = e.endDate; | |||
this.zhixingcenterindex = 7; | |||
this.initworkThisWeek() | |||
}, | |||
//时间选择 | |||
tabtimeclick(i){ | |||
if(i==7){ | |||
tabtimeclick(i) { | |||
if (i == 7) { | |||
this.totalTimeShow = true; | |||
}else{ | |||
this.zhixingcenterindex=i; | |||
} else { | |||
this.zhixingcenterindex = i; | |||
this.initworkThisWeek() | |||
} | |||
}, | |||
@@ -501,9 +517,9 @@ | |||
}, | |||
data: { | |||
houseId: this.buildingID, | |||
dateType:this.zhixingcenterindex==7?null:this.zhixingcenterindex, | |||
statDateStart:this.statDateStart, | |||
statDateEnd:this.statDateEnd | |||
dateType: this.zhixingcenterindex == 7 ? null : this.zhixingcenterindex, | |||
statDateStart: this.statDateStart, | |||
statDateEnd: this.statDateEnd | |||
}, | |||
success: (data) => { | |||
if (data.data.data == null) { | |||
@@ -514,10 +530,11 @@ | |||
receivingCustomer: data.data.data.receivingCustomer, | |||
activeCustomer: data.data.data.activeCustomer, | |||
prohibitedCustomer: data.data.data.prohibitedCustomer, | |||
avgDuration: Math.floor(data.data.data.avgDuration/60) ||0, | |||
avgDuration: Math.floor(data.data.data.avgDuration / 60) || 0, | |||
tagCustomer: data.data.data.tagCustomer, | |||
fraction: data.data.data.fraction, | |||
receptionCount:data.data.data.receptionCount | |||
wordFraction: data.data.data.wordFraction, | |||
receptionCount: data.data.data.receptionCount | |||
} | |||
} | |||
} | |||
@@ -536,6 +553,7 @@ | |||
houseId: this.buildingID | |||
}, | |||
success: (data) => { | |||
this.LOADING = false | |||
if (data.data.data == null) { | |||
return | |||
} else { | |||
@@ -544,16 +562,20 @@ | |||
receivingCustomer: data.data.data.receivingCustomer, | |||
activeCustomer: data.data.data.activeCustomer, | |||
prohibitedCustomer: data.data.data.prohibitedCustomer, | |||
avgDuration: Math.floor(data.data.data.avgDuration/60) ||0, | |||
avgDuration: Math.floor(data.data.data.avgDuration / 60) || 0, | |||
tagCustomer: data.data.data.tagCustomer, | |||
fraction: data.data.data.fraction, | |||
receptionCount:data.data.data.receptionCount | |||
wordFraction: data.data.data.wordFraction, | |||
receptionCount: data.data.data.receptionCount | |||
} | |||
} | |||
}, | |||
fail: () => { | |||
this.LOADING = false | |||
} | |||
}) | |||
}, | |||
//设备 | |||
initequipment() { | |||
uni.request({ | |||
@@ -625,7 +647,7 @@ | |||
piskbuilding() { | |||
// this.Showhiddenunits = true; | |||
uni.navigateTo({ | |||
url:"../mine/selectBuilding" | |||
url: "../mine/selectBuilding" | |||
}) | |||
}, | |||
// 项目选择确认 | |||
@@ -641,127 +663,153 @@ | |||
this.initrealTimeStatistics() | |||
this.initequipment() | |||
this.iniodianloang() | |||
}, | |||
// 项目选择取消 | |||
cancel() { | |||
this.Showhiddenunits = false; | |||
}, | |||
tapjumpequipment(i){ | |||
this.Menulist.forEach(item=>{ | |||
if(item.name=='设备管理'){ | |||
tapjumpequipment(i) { | |||
this.Menulist.forEach(item => { | |||
if (item.name == '设备管理') { | |||
uni.navigateTo({ | |||
url: '/pages/mine/equipment/index?active='+i | |||
url: '/pages/mine/equipment/index?active=' + i | |||
}); | |||
} | |||
}) | |||
}, | |||
prohibitedtap(i){ | |||
if(i==1){ | |||
prohibitedtap(i) { | |||
if (i == 1) { | |||
uni.navigateTo({ | |||
url: '/pages/center/prohibited/index?refresh='+'refresh'+'&activeTotal='+'0'+'&violatedStatus=1' | |||
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '0' + | |||
'&violatedStatus=1' | |||
}); | |||
}else{ | |||
if(this.zhixingcenterindex==2){ | |||
} else { | |||
if (this.zhixingcenterindex == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/prohibited/index?refresh='+'refresh'+'&activeTotal='+'2'+'&violatedStatus=1' | |||
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '2' + | |||
'&violatedStatus=1' | |||
}); | |||
}else if(this.zhixingcenterindex==6){ | |||
} else if (this.zhixingcenterindex == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/prohibited/index?refresh='+'refresh'+'&activeTotal='+'3'+'&violatedStatus=1' | |||
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '3' + | |||
'&violatedStatus=1' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/prohibited/index?refresh='+'refresh'+'&activeTotal='+'4'+'&staTime='+this.statDateStart+'&endtime='+this.statDateEnd+'&violatedStatus=1' | |||
url: '/pages/center/prohibited/index?refresh=' + 'refresh' + '&activeTotal=' + '4' + | |||
'&staTime=' + this.statDateStart + '&endtime=' + this.statDateEnd + | |||
'&violatedStatus=1' | |||
}); | |||
} | |||
} | |||
}, | |||
tapjumpreception(i){ | |||
this.Menulist.forEach(item=>{ | |||
if(item.name=='接待记录'){ | |||
if(i==1){ | |||
tapjumpreception(i) { | |||
this.Menulist.forEach(item => { | |||
if (item.name == '接待记录') { | |||
if (i == 1) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + | |||
'0' | |||
}); | |||
} else if (i == 'auth') { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'0'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + | |||
'0' + '&validInvalid=0' | |||
}); | |||
}else if(i==2){ | |||
} else if (i == 2) { | |||
uni.switchTab({ | |||
url: '/pages/index/customer' | |||
}); | |||
}else if(i==3){ | |||
if(this.zhixingcenterindex==2){ | |||
} else if (i == 3) { | |||
if (this.zhixingcenterindex == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'2' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '2' | |||
}); | |||
}else if(this.zhixingcenterindex==6){ | |||
} else if (this.zhixingcenterindex == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'3' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '3' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'4'+'&staTime='+this.statDateStart+'&endtime='+this.statDateEnd | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart + | |||
'&endtime=' + this.statDateEnd | |||
}); | |||
} | |||
}else if(i==333){ | |||
if(this.zhixingcenterindex==2){ | |||
} else if (i == 333) { | |||
if (this.zhixingcenterindex == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'2'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '2' + '&validInvalid=0' | |||
}); | |||
}else if(this.zhixingcenterindex==6){ | |||
} else if (this.zhixingcenterindex == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'3'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '3' + '&validInvalid=0' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'4'+'&staTime='+this.statDateStart+'&endtime='+this.statDateEnd+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart + | |||
'&endtime=' + this.statDateEnd + '&validInvalid=0' | |||
}); | |||
} | |||
}else if(i==3){ | |||
if(this.zhixingcenterindex==2){ | |||
} else if (i == 3) { | |||
if (this.zhixingcenterindex == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'2' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '2' | |||
}); | |||
}else if(this.zhixingcenterindex==6){ | |||
} else if (this.zhixingcenterindex == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'3' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '3' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'4'+'&staTime='+this.statDateStart+'&endtime='+this.statDateEnd | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart + | |||
'&endtime=' + this.statDateEnd | |||
}); | |||
} | |||
}else if(i==6){ | |||
} else if (i == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'0'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + '&activeTotal=' + | |||
'0' + '&validInvalid=0' | |||
}); | |||
}else if(i==7){ | |||
if(this.zhixingcenterindex==2){ | |||
} else if (i == 7) { | |||
if (this.zhixingcenterindex == 2) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'2'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '2' + '&validInvalid=0' | |||
}); | |||
}else if(this.zhixingcenterindex==6){ | |||
} else if (this.zhixingcenterindex == 6) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'3'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '3' + '&validInvalid=0' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal='+'4'+'&staTime='+this.statDateStart+'&endtime='+this.statDateEnd+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=' + '4' + '&staTime=' + this.statDateStart + | |||
'&endtime=' + this.statDateEnd + '&validInvalid=0' | |||
}); | |||
} | |||
}else if (i == 4) { | |||
} else if (i == 4) { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal=0'+'&markAdvisor=0'+'&validInvalid=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=0' + '&markAdvisor=0' + '&validInvalid=0' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh'+'&activeTotal=0'+'&markAdvisor=0' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' + | |||
'&activeTotal=0' + '&markAdvisor=0' | |||
}); | |||
} | |||
} | |||
@@ -774,7 +822,7 @@ | |||
}); | |||
} else if (item == '接待记录') { | |||
uni.navigateTo({ | |||
url: '/pages/center/records/index?refresh='+'refresh' | |||
url: '/pages/center/records/index?refresh=' + 'refresh' | |||
}); | |||
} else if (item == '值班顾问') { | |||
uni.navigateTo({ | |||
@@ -784,97 +832,138 @@ | |||
uni.navigateTo({ | |||
url: '/pages/mine/equipment/index' | |||
}); | |||
} else if(item == '顾问排名') { | |||
} else if (item == '顾问排名') { | |||
uni.navigateTo({ | |||
url: '/pages/center/Piabodata/Employeesstatistics' | |||
}); | |||
}else if(item == '违禁记录'){ | |||
} else if (item == '违禁记录') { | |||
uni.navigateTo({ | |||
url: '/pages/center/prohibited/index?refresh='+'refresh' | |||
url: '/pages/center/prohibited/index?refresh=' + 'refresh' | |||
}); | |||
}else{ | |||
} else { | |||
uni.navigateTo({ | |||
url: '/pages/center/consumer/index?refresh='+'refresh' | |||
url: '/pages/center/consumer/index?refresh=' + 'refresh' | |||
}); | |||
} | |||
}, | |||
}, | |||
filters: { | |||
imgFilter(type) { | |||
let path = '' | |||
switch (type) { | |||
case '客户管理': | |||
path = '../../static/images/function1.png' | |||
break | |||
case '接待记录': | |||
path = '../../static/images/function2.png' | |||
break | |||
case '销讲数据': | |||
path = '../../static/images/function4.png' | |||
break | |||
case '设备管理': | |||
path = '../../static/images/function5.png' | |||
break | |||
case '值班顾问': | |||
path = '../../static/images/function6.png' | |||
break | |||
case '顾问排名': | |||
path = '../../static/images/rankingguwen.png' | |||
break | |||
case '违禁记录': | |||
path = '../../static/images/prohibited.png' | |||
break | |||
} | |||
return path | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.update{ | |||
width: 100%; | |||
height: 100%; | |||
background: rgba(0, 0, 0, 0.5); | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
bottom: 0; | |||
right: 0; | |||
z-index: 9999; | |||
.updateBox{ | |||
width: 80%; | |||
background: #FFFFFF; | |||
position: relative; | |||
left: 50%; | |||
margin-left: -40%; | |||
padding: 20rpx; | |||
border-radius: 10rpx; | |||
top: 140rpx; | |||
.top{ | |||
width: 350rpx; | |||
height: 220rpx; | |||
margin: 0 auto; | |||
image{ | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.btn{ | |||
width: 510rpx; | |||
height: 88rpx; | |||
background: #2671E2; | |||
margin: 0 auto; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
font-size: 36rpx; | |||
border-radius: 8rpx; | |||
color: #FFFFFF; | |||
} | |||
.content{ | |||
height: 268rpx; | |||
overflow-y: auto; | |||
margin: 46rpx 0; | |||
} | |||
.tit{ | |||
font-size: 40rpx; | |||
text-align: center; | |||
font-weight: bold; | |||
} | |||
.close{ | |||
position: absolute; | |||
bottom: -100rpx; | |||
left: 50%; | |||
margin-left: -50rpx; | |||
.update { | |||
width: 100%; | |||
height: 100%; | |||
background: rgba(0, 0, 0, 0.5); | |||
position: fixed; | |||
top: 0; | |||
left: 0; | |||
bottom: 0; | |||
right: 0; | |||
z-index: 9999; | |||
.updateBox { | |||
width: 80%; | |||
background: #FFFFFF; | |||
position: relative; | |||
left: 50%; | |||
margin-left: -40%; | |||
padding: 20rpx; | |||
border-radius: 10rpx; | |||
top: 140rpx; | |||
.top { | |||
width: 350rpx; | |||
height: 220rpx; | |||
margin: 0 auto; | |||
image { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.btn { | |||
width: 510rpx; | |||
height: 88rpx; | |||
background: #2671E2; | |||
margin: 0 auto; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
font-size: 36rpx; | |||
border-radius: 8rpx; | |||
color: #FFFFFF; | |||
} | |||
.content { | |||
height: 268rpx; | |||
overflow-y: auto; | |||
margin: 46rpx 0; | |||
} | |||
.tit { | |||
font-size: 40rpx; | |||
text-align: center; | |||
font-weight: bold; | |||
} | |||
.close { | |||
position: absolute; | |||
bottom: -100rpx; | |||
left: 50%; | |||
margin-left: -50rpx; | |||
} | |||
} | |||
} | |||
.activecllasscet{ | |||
.activecllasscet { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #008ef2; | |||
} | |||
.cet{ | |||
.cet { | |||
font-size: 28rpx; | |||
font-weight: 400; | |||
color: #333333; | |||
.cetview{ | |||
.cetview { | |||
margin-left: 20rpx; | |||
} | |||
} | |||
.cented-box { | |||
padding: 30rpx; | |||
background: #F8F8F8; | |||
@@ -24,15 +24,17 @@ | |||
<image src="/static/images/arrow.png" style="width: 18rpx;height: 32rpx;" mode=""></image> | |||
</view> | |||
</navigator> | |||
<navigator class="line" url="/pages/mine/subscribe"> | |||
<view class="title"> | |||
<image src="/static/images/studyhot.png" style="width: 36rpx;height: 36rpx;" mode=""></image> | |||
订阅消息 | |||
</view> | |||
<view class="right"> | |||
<image src="/static/images/arrow.png" style="width: 18rpx;height: 32rpx;" mode=""></image> | |||
</view> | |||
</navigator> | |||
<template v-if="isPuqiang"> | |||
<navigator class="line" url="/pages/mine/subscribe"> | |||
<view class="title"> | |||
<image src="/static/images/studyhot.png" style="width: 36rpx;height: 36rpx;" mode=""></image> | |||
订阅消息 | |||
</view> | |||
<view class="right"> | |||
<image src="/static/images/arrow.png" style="width: 18rpx;height: 32rpx;" mode=""></image> | |||
</view> | |||
</navigator> | |||
</template> | |||
<navigator class="line" url="/pages/mine/Myprofile"> | |||
<view class="title"> | |||
<image src="/static/images/setting.png" style="width: 36rpx;height: 36rpx;" mode=""></image> | |||
@@ -89,32 +91,37 @@ | |||
var util = require("../../utils/util.js"); | |||
var config = require("../../config"); | |||
import tabbarList from '@/utils/tabbar.js' | |||
export default { | |||
data() { | |||
return { | |||
tabbarList:tabbarList, | |||
tabbarList: tabbarList, | |||
current: 0, | |||
tabList: [ | |||
{ | |||
tabList: [{ | |||
name: '系统消息' | |||
}, | |||
{ | |||
name: '升级公告' | |||
}, | |||
}, | |||
], | |||
name: "", | |||
photo: "", | |||
mobile: "", | |||
count:0, | |||
count: 0, | |||
}; | |||
}, | |||
computed: { | |||
isPuqiang() { | |||
return config.service.host.indexOf('xitong.pachira.cn') == -1 | |||
} | |||
}, | |||
onShow: function() { | |||
var userInfos = uni.getStorageSync('weapp_session_userInfo_data'); | |||
this.name = userInfos.name, | |||
this.photo = userInfos.picUrl, | |||
this.mobile = userInfos.loginName | |||
this.photo = userInfos.picUrl, | |||
this.mobile = userInfos.loginName | |||
this.updateInit() | |||
console.log(config.service.host.indexOf('xitong.pachira.cn') != -1) | |||
}, | |||
methods: { | |||
updateInit() { | |||
@@ -135,10 +142,10 @@ | |||
} | |||
}) | |||
}, | |||
scan(){ | |||
scan() { | |||
uni.navigateTo({ | |||
url:"../mine/registerCode" | |||
url: "../mine/registerCode" | |||
}) | |||
}, | |||
//拨打电话 | |||
@@ -194,23 +201,23 @@ | |||
// }) | |||
// } | |||
// }) | |||
// } else { | |||
// console.log('登录失败!' + res.errMsg) | |||
// } | |||
// } | |||
// }) | |||
// // /pages/mine/subscribe | |||
// }, | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.count{ | |||
.count { | |||
background: red; | |||
width: 50rpx; | |||
height: 50rpx; | |||
@@ -222,6 +229,7 @@ | |||
font-size: 24rpx; | |||
margin-right: 20rpx; | |||
} | |||
.main { | |||
padding: 0 30rpx; | |||
background: #F8F8F8; | |||
@@ -302,4 +310,4 @@ | |||
} | |||
} | |||
} | |||
</style> | |||
</style> |
@@ -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> | |||
<input class="cwjs-item cwjs-input" 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> | |||
<input class="cwjs-item cwjs-input" placeholder="请输入密码" placeholder-style="color:#AAAAAA" maxlength="16" v-model="password" v-else></input> | |||
<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/> | |||
</view> | |||
<view class="imagesBox" @tap="changeBindPassword"> | |||
<image v-if="passwordType==false" src="../../static/images/zhengkai.png" class="images" mode="scaleToFill"></image> | |||
@@ -41,10 +41,8 @@ | |||
export default { | |||
data() { | |||
return { | |||
username: '', | |||
//获取到的用户名的值 | |||
password: '', | |||
//获取到的密码栏中的值 | |||
username: '',//18831048327 ,18888888800 | |||
password: '',//123456 | |||
passwordType: true, | |||
agreeChecked: true | |||
}; | |||
@@ -94,7 +92,8 @@ | |||
method: "POST", | |||
data: loginParams, | |||
success: function(result) { | |||
var data = result.data; //console.log("登陆信息", data); | |||
var data = result.data; | |||
//console.log("登陆信息", data); | |||
if (data && data.code == 10000) { | |||
var res = data.data; | |||
if (res) { | |||
@@ -149,8 +148,6 @@ | |||
uni.setStorageSync("weapp_session_Menu_data", data) | |||
}) | |||
} | |||
} | |||
}; | |||
</script> | |||
@@ -79,6 +79,7 @@ | |||
let param = { | |||
keywordIds:'', | |||
id: this.customerId, | |||
projectId: uni.getStorageSync('buildingID').id, | |||
} | |||
let str = [] | |||
this.allList.map(item => { | |||
@@ -51,9 +51,7 @@ | |||
v-for="(item,index) in dialog.message" :key="index" :data-speaker="item.speaker"> | |||
<view class="avatar"> | |||
<view :style="[SPEAKERSTYLE(item.speaker)]"> | |||
<!-- <image v-if="item.isShow == 0" :src="Aimg.replace(/[\r\n]/g,'')" mode="widthFix"></image> --> | |||
<text v-if="item.speaker == 0">顾</text> | |||
<text v-else>{{ item.speaker | toCapital }}</text> | |||
<text>{{ item.speaker | toCapital }}</text> | |||
</view> | |||
</view> | |||
<view class="contentInfo"> | |||
@@ -115,6 +113,10 @@ | |||
<view class="backTop" @click="gotoTop"> | |||
<image src="/static/images/backTop.png" mode=""></image> | |||
</view> | |||
<view v-if="eqLog!=-1" class="eqLog" @click="eqLogClick()"> | |||
<view style="width: 78rpx;text-align: center;">设备日志</view> | |||
</view> | |||
<!-- 加入常错词 --> | |||
<view class="zhezhoa" v-if="isshow2" @tap="Cancelout"></view> | |||
@@ -278,10 +280,14 @@ | |||
ACTION: Symbol('zaudio'), // 唯一值区分每个页面的方法 | |||
isPageHide: false, // 是否息屏 | |||
duration: '', // 总时长 | |||
eqLog:0, | |||
}; | |||
}, | |||
onLoad(options) { | |||
let menu = uni.getStorageSync('weapp_session_Menu_data'); | |||
this.eqLog = menu.findIndex(item=>item.name=='设备日志'); | |||
this.status = options.status; | |||
this.customerId = options.customerId; | |||
this.itemobj = uni.getStorageSync('searchobj'); | |||
@@ -365,6 +371,11 @@ | |||
} | |||
}, | |||
methods: { | |||
eqLogClick(){ | |||
uni.navigateTo({ | |||
url:`./equipmentLog?id=${this.customerId}` | |||
}) | |||
}, | |||
effectiveAdd() { | |||
if (this.effectiveindex == 4) { | |||
if (this.effectiveitext.length == 0) { | |||
@@ -1690,6 +1701,20 @@ | |||
height: 34upx; | |||
} | |||
} | |||
.eqLog { | |||
width: 115upx; | |||
height: 115upx; | |||
background: rgba(211, 235, 253, 1); | |||
box-shadow: 0 0 10rpx 7rpx #f1f1f1;; | |||
border-radius: 50%; | |||
position: fixed; | |||
bottom: 300upx; | |||
right: 8upx; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
color: #008EF2; | |||
} | |||
// 评分 | |||
.rate-box { | |||
@@ -39,13 +39,19 @@ | |||
</template> | |||
<view class="avatar"> | |||
<view :style="[SPEAKERSTYLE(item.speaker)]"> | |||
<text v-if="item.isShow == 0">顾</text> | |||
<text v-else>{{ item.speaker | toCapital }}</text> | |||
<text>{{ item.speaker | toCapital }}</text> | |||
</view> | |||
</view> | |||
<view class="contentInfo"> | |||
<view class="info"> | |||
<text class="AudioUserName">{{ item.speaker | toCapital }}</text> | |||
<text class="AudioUserName"> | |||
<template v-if="item.username"> | |||
{{ item.username }} | |||
</template> | |||
<template v-else> | |||
{{ item.speaker | toCapital }} | |||
</template> | |||
</text> | |||
<text>{{conversionTiame(item.bg/1000)}}</text> | |||
</view> | |||
<view class="contentMain"> | |||
@@ -94,16 +100,18 @@ | |||
</view> | |||
<view class="fill"></view> | |||
<!-- audioinfo2 --> | |||
<view class="tmmchen" v-if="Menulistisshow==true"> | |||
<view class="tmmchen"> | |||
<image @click="Receivedetailsabouttab('Receivedetailsabout')" src="../../static/images/allimg.png" | |||
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 @click="Receivetap()" style="line-height: 70rpx;margin-top: 10rpx;">接待信息</view> | |||
<view @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> | |||
@@ -111,7 +119,7 @@ | |||
</view> | |||
</view> | |||
</view> | |||
<view v-else class="bottomboxs" @click="sureRefinement">确定</view> | |||
<!-- 标记 --> | |||
<view class="zhezhoa" v-if="biojiisshow" @tap="unmarktap()"></view> | |||
@@ -244,10 +252,12 @@ | |||
</view> | |||
</view> | |||
<view class="pingfenbox"> | |||
<view :class="{ activecllasscet: zhixingcenterindex == 0 }" @click="recordclick(0)">销讲总执行率{{totalRate}}% | |||
</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 | |||
@@ -257,7 +267,7 @@ | |||
</view> | |||
</view> | |||
<view class="Level-box" v-for="(item,index) in ratelist" :key="index"> | |||
<view class="Level1che" @click="changeshow(item,1)"> | |||
<view class="Level1che" @click="hangeshow2(item,1)"> | |||
<view class="title1">{{item.name.substring(0,8)}}</view> | |||
<view class="leve1-jindu"> | |||
<view class="jindutiao"> | |||
@@ -271,7 +281,7 @@ | |||
</view> | |||
</view> | |||
<view class="hhhbox" v-if="item.show" v-for="(subitem,i) in item.children" :key="i"> | |||
<view class="Level2che" @click="changeshow2(subitem,1)"> | |||
<view class="Level2che" @click="hangeshow2(subitem,1)"> | |||
<view class="title1">{{subitem.name.substring(0,8)}}</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="!subitem.selected">已执行</view> | |||
@@ -290,6 +300,7 @@ | |||
<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="" /> | |||
</view> | |||
</view> | |||
<view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view> | |||
@@ -304,6 +315,73 @@ | |||
<view v-if="prohibitedlist.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">暂无数据 | |||
</view> | |||
</view> | |||
<view v-if="zhixingcenterindex == 2" class="cenisbox"> | |||
<view | |||
style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;"> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 20rpx;">指标</view> | |||
<view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 170rpx;">执行率 | |||
</view> | |||
</view> | |||
<view class="Level-box" v-for="(item,index) in KeyWordsfractionList" :key="index"> | |||
<view class="Level1che" @click="hangeshow2(item,1)"> | |||
<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-else style="width: 0"></view> | |||
<view class="text">{{item.selected==0?item.fraction:0}}%</view> | |||
</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!item.show" class="arrow rotatearrow" src="/static/images/down.png" mode="" /> | |||
<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="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="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 话术在二级下 --> | |||
<view v-if="item.showLevel==2"> | |||
<view class="hhhbox" v-if="item.show" v-for="(subitem,i) in item.children" :key="i"> | |||
<view class="Level2che" @click="hangeshow2(subitem,1)"> | |||
<view class="title1 u-line-1">{{subitem.name}}</view> | |||
<view class="leve1-jindu"> | |||
<view class="zhixing" v-if="!subitem.selected">已执行</view> | |||
<view class="zhixing2" v-else>未执行</view> | |||
</view> | |||
<view class="jiantobox"> | |||
<image v-if="!subitem.show" class="arrow rotatearrow" src="/static/images/down.png" | |||
mode="" /> | |||
<image v-else class="arrow" src="/static/images/up.png" mode="" /> | |||
</view> | |||
</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="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="" /> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 客户意向 --> | |||
@@ -426,6 +504,10 @@ | |||
</view> | |||
<u-toast ref="uToast" /> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
@@ -435,13 +517,17 @@ | |||
var config = require("../../config"); | |||
import zaudio from '@/components/uniapp-zaudio/zaudio'; | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
zaudio | |||
zaudio, | |||
loading | |||
}, | |||
data() { | |||
return { | |||
KeyWordsfraction: 0, | |||
KeyWordsfractionList: [], | |||
noClick: true, | |||
kehuyixiangcenterindex: 0, | |||
Acquirecustomerintentlist2: [], | |||
@@ -543,8 +629,8 @@ | |||
isPageHide: false, // 是否息屏 | |||
duration: '', // 总时长 | |||
isBand: false, // 阻止二次提交 | |||
refined: false, | |||
eqLog: 0, | |||
}; | |||
}, | |||
computed: { | |||
@@ -555,8 +641,13 @@ | |||
}, | |||
}, | |||
onLoad(options) { | |||
this.LOADING = true | |||
let menu = uni.getStorageSync('weapp_session_Menu_data'); | |||
this.eqLog = menu.findIndex(item => item.name == '设备日志'); | |||
this.status = options.status; | |||
this.customerId = options.customerId; | |||
this.KeyWordsfraction = options.wordFraction || 0; | |||
this.itemobj = uni.getStorageSync('searchobj'); | |||
console.log(this.itemobj) | |||
this.stateisshow = options.stateisshow; | |||
@@ -637,6 +728,14 @@ | |||
item.checked = !item.checked | |||
this.$forceUpdate() | |||
}, | |||
hangeshow2(item, type) { | |||
item.show = !item.show; | |||
}, | |||
eqLogClick() { | |||
uni.navigateTo({ | |||
url: `./equipmentLog?id=${this.customerId}` | |||
}) | |||
}, | |||
rolexuanze(index) { | |||
this.roleindexrow = index; | |||
}, | |||
@@ -692,9 +791,10 @@ | |||
this.zhixingcenterindex = i; | |||
if (i == 0) { | |||
this.getRatelist() | |||
} else { | |||
console.log('999') | |||
} else if (i == 1) { | |||
this.huoqujinji() | |||
} else { | |||
this.getfindKeyWordsBycusId() | |||
} | |||
}, | |||
//获取禁忌 | |||
@@ -716,7 +816,7 @@ | |||
//评分点击 | |||
clickaudeopal(item) { | |||
if (item.selected == 0 && item.viewFlag != 1) { | |||
console.log(item) | |||
// console.log(item) | |||
this.Pinspeak = false | |||
uni.navigateTo({ | |||
url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item | |||
@@ -937,10 +1037,11 @@ | |||
//接待详情点击 | |||
Receivedetailsabouttab(stringa) { | |||
if (stringa == 'Receivedetailsabout') { | |||
this.gituserlist() | |||
this.Thetapeidisshow = !this.Thetapeidisshow; | |||
this.gituserlist() | |||
} else if (stringa == 'Pinspeak') { | |||
this.getRatelist() | |||
this.getfindKeyWordsBycusId() | |||
this.Pinspeak = true; | |||
} else { | |||
if (this.kehuyixiangcenterindex == 0) { | |||
@@ -1042,7 +1143,6 @@ | |||
} else { | |||
tempRoleIndex = this.roleindex | |||
} | |||
console.log() | |||
uni.request({ | |||
url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id + | |||
"&bg=" + bgcd + "&speaker=" + tempRoleIndex + "&voFlag=" + voFlagValue + | |||
@@ -1421,7 +1521,7 @@ | |||
}) | |||
}) | |||
}, | |||
// 确认批量加精 | |||
sureRefinement() { | |||
this.isshow3 = true; | |||
@@ -1437,7 +1537,7 @@ | |||
}) | |||
}) | |||
}, | |||
// 取消加精 | |||
Cancelout2() { | |||
this.isshow3 = false; | |||
@@ -1512,7 +1612,6 @@ | |||
this.messagelisy = this.dialogList[i].message | |||
this.argtextindex1 = i; | |||
this.argtextindex2 = index; | |||
}, | |||
//回到顶部 | |||
gotoTop() { | |||
@@ -1521,21 +1620,36 @@ | |||
this.scrollId = "top"; | |||
}) | |||
}, | |||
//切换tab | |||
changeTab(type) { | |||
if (type == 0) { | |||
this.tab = 0 | |||
} else { | |||
this.tab = 1; | |||
this.getRatelist(); | |||
} | |||
}, | |||
//评分上下显隐 | |||
changeshow(item, type) { | |||
item.show = !item.show; | |||
}, | |||
changeshow2(item, type) { | |||
item.show = !item.show; | |||
// 客户详情需求挖掘话术 | |||
getfindKeyWordsBycusId() { | |||
this.$u.get("/cusLvStatistics/findKeyWordsBycusId?cusId=" + this.customerId).then(res => { | |||
// console.log(res) | |||
if (res.length) { | |||
// this.KeyWordsfraction = 0 | |||
res.forEach(item => { | |||
// if(item.selected==0){ | |||
// this.KeyWordsfraction += +item.fraction // 总执行率 | |||
// } | |||
item.show = false | |||
item.children.forEach(obj => { | |||
obj.show = false | |||
if (obj.questionList.length) { | |||
obj.questionList.forEach(subobj => { | |||
subobj.show = false | |||
}) | |||
} | |||
}) | |||
if (item.questionList.length) { | |||
item.questionList.forEach(obj => { | |||
obj.show = false | |||
}) | |||
} | |||
}) | |||
this.KeyWordsfractionList = res | |||
} else { | |||
this.KeyWordsfractionList = [] | |||
} | |||
}) | |||
}, | |||
getRatelist() { | |||
this.$u.get("/customer/findzkMByCusId", { | |||
@@ -1624,6 +1738,7 @@ | |||
'Access-Token': uni.getStorageSync('weapp_session_login_data').token | |||
}, | |||
success: (data) => { | |||
this.LOADING = false | |||
this.isShowMark = data.data.data.viewNameFlag | |||
this.tablist = []; | |||
this.roleindexbiaoji = 0; | |||
@@ -1686,6 +1801,10 @@ | |||
this.dialogList.push(jsonInfo[this.textindex]); | |||
var itc = parseInt(info.bg / 1000) | |||
this.adasdasdasd(itc) | |||
}, | |||
fail: () => { | |||
this.LOADING = false | |||
} | |||
}) | |||
}, | |||
@@ -1694,7 +1813,6 @@ | |||
return util.formatSecond(time) | |||
}, | |||
//音频前进回退 | |||
sliderChangeComplate(currentTime) { | |||
this.dialogList = [] | |||
@@ -1897,7 +2015,7 @@ | |||
align-items: center; | |||
} | |||
} | |||
.bottomboxs { | |||
width: 100%; | |||
height: 90rpx; | |||
@@ -1989,7 +2107,8 @@ | |||
.allimg { | |||
position: absolute; | |||
width: 168rpx; | |||
top: -152rpx; | |||
min-height: 210rpx; | |||
top: -240rpx; | |||
border: 1px solid #E0E0E0; | |||
background: #FFFFFF; | |||
font-size: 26rpx; | |||
@@ -0,0 +1,357 @@ | |||
<template> | |||
<view class="eqLog"> | |||
<view class="bg"></view> | |||
<view class="tophead" :style="{height: `${CustomBar}px`}"> | |||
<view class="topheads" :style="{height: `${CustomBar}px`,paddingTop: `${StatusBar}px`}"> | |||
<view class="eqno"> | |||
<image @click="back" class="backs" src="@/static/images/back.png" mode=""></image> | |||
<view class="middle"> | |||
设备日志 | |||
</view> | |||
</view> | |||
<!-- 背景色 --> | |||
<view class="eqNo-bg"></view> | |||
</view> | |||
</view> | |||
<view class="eqNo"> | |||
<view class="noInfo"> | |||
<view class="left"> | |||
<text style="font-weight: 500;">设备编号:{{ info.imei || '' }}</text> | |||
<text>录音说明:{{ info.recordExplain || '' }}</text> | |||
</view> | |||
<view class="right"> | |||
<text>{{state(info.recording)}}</text> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="eqMain"> | |||
<view class="recordingStart"> | |||
<view class="items"> | |||
<text>录音开启用时</text> | |||
<text class="font" | |||
:style="{color: info.recording==1?'red':'#333'}">{{info.startActionTime || ''}}min</text> | |||
</view> | |||
<view class="line"></view> | |||
<view class="items"> | |||
<text>待上传文件</text> | |||
<text class="font" :style="{color: info.fileCount==0?'#333':'red'}">{{info.fileCount || 0}}个</text> | |||
</view> | |||
</view> | |||
<view class="recording"> | |||
<view class="left-box"> | |||
<view class="cycle"></view> | |||
<view class="point"></view> | |||
<view class="cycle"></view> | |||
</view> | |||
<view class="recordingBox"> | |||
<text class="recordingBoxItem-title" >录音开启</text> | |||
<view class="recordingBoxItem"> | |||
<text class="left">指派人:</text> | |||
<text class="right">{{info.owenrName}}</text> | |||
</view> | |||
<view class="recordingBoxItem"> | |||
<text class="left">指派时间:</text> | |||
<text class="right">{{info.assignTime}}</text> | |||
</view> | |||
<view class="recordingBoxItem"> | |||
<text class="left">录音开始时间:</text> | |||
<view class="right" style="font-weight: bold;font-size: 28rpx;"> | |||
<text :style="{color: info.recording==1?'red':'#333'}"> | |||
{{info.recordStartTime}} | |||
</text> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="recordingBox" style="margin-top: 40rpx;"> | |||
<text class="recordingBoxItem-title">录音关闭</text> | |||
<view class="recordingBoxItem"> | |||
<text class="left">结束人:</text> | |||
<text class="right">{{info.userName}}</text> | |||
</view> | |||
<view class="recordingBoxItem"> | |||
<text class="left">结束时间:</text> | |||
<text class="right">{{info.assignEndTime}}</text> | |||
</view> | |||
<view class="recordingBoxItem"> | |||
<text class="left">录音结束时间:</text> | |||
<view class="right" style="font-weight: bold;font-size: 28rpx;"> | |||
<text :style="{color: info.recording==1?'red':'#333'}"> | |||
{{info.recordEndTime}} | |||
</text> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view class="offlineRec"> | |||
<text style="font-size:32rpx;font-weight: 700;">离线记录</text> | |||
<view class="recMain"> | |||
<block v-for="(item,index) in info.offLineList" :key="index"> | |||
<text>{{index+1}}、 {{item}}</text> | |||
</block> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
info: {}, | |||
} | |||
}, | |||
computed: { | |||
state() { | |||
return (e => { | |||
switch (e) { | |||
case 0: | |||
return "接待中"; | |||
case 1: | |||
return "部分录音"; | |||
default: | |||
return "完整录音"; | |||
} | |||
}) | |||
}, | |||
}, | |||
onLoad(options) { | |||
this.$u.get("/equipment/equipmentLog", { | |||
id: options.id | |||
}).then(res => { | |||
// console.log(res) | |||
this.info = res | |||
}) | |||
}, | |||
methods: { | |||
back() { | |||
uni.navigateBack() | |||
} | |||
} | |||
} | |||
</script> | |||
<style lang="scss"> | |||
.eqLog { | |||
position: relative; | |||
width: 100vw; | |||
min-height: 100vh; | |||
background: #F8F8F8; | |||
.bg { | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
z-index: 0; | |||
width: 100%; | |||
height: 420rpx; | |||
background: linear-gradient(180deg, #2671E2 0%, #3B9CF4 54%, #93C8F7 100%); | |||
} | |||
.tophead { | |||
position: sticky; | |||
top: 0; | |||
z-index: 999; | |||
width: 100%; | |||
.topheads { | |||
position: relative; | |||
z-index: 1; | |||
overflow: hidden; | |||
.eqno { | |||
position: relative; | |||
z-index: 1; | |||
width: 100%; | |||
height: 100%; | |||
display: flex; | |||
align-items: center; | |||
.backs { | |||
margin-left: 24rpx; | |||
width: 48rpx; | |||
height: 48rpx; | |||
} | |||
.middle { | |||
position: absolute; | |||
left: 50%; | |||
top: 50%; | |||
transform: translate(-50%, -50%); | |||
font-size: 32rpx; | |||
color: #fff; | |||
} | |||
} | |||
.eqNo-bg { | |||
position: absolute; | |||
top: 0; | |||
left: 0; | |||
right: 0; | |||
z-index: 0; | |||
width: 100%; | |||
height: 420rpx; | |||
background: linear-gradient(180deg, #2671E2 0%, #3B9CF4 54%, #93C8F7 100%); | |||
} | |||
} | |||
} | |||
.eqNo { | |||
position: relative; | |||
z-index: 1; | |||
width: 100%; | |||
.noInfo { | |||
margin: 24rpx auto 0; | |||
padding: 24rpx; | |||
width: 690rpx; | |||
min-height: 152rpx; | |||
background: #FFFFFF; | |||
border-radius: 8rpx; | |||
display: flex; | |||
justify-content: space-between; | |||
.left { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-between; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
.right { | |||
flex-shrink: 0; | |||
font-size: 32rpx; | |||
font-weight: 400; | |||
} | |||
} | |||
} | |||
.eqMain { | |||
position: relative; | |||
z-index: 1; | |||
padding: 0 30rpx; | |||
.recordingStart { | |||
margin-top: 20rpx; | |||
width: 100%; | |||
height: 164rpx; | |||
display: flex; | |||
align-items: center; | |||
border-radius: 8rpx; | |||
background: #FFFFFF; | |||
.items { | |||
flex-grow: 1; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
color: #1C1010; | |||
font-size: 30rpx; | |||
.font { | |||
margin-top: 20rpx; | |||
font-weight: 700; | |||
} | |||
} | |||
.line { | |||
width: 1rpx; | |||
height: 88rpx; | |||
background: #E0E0E0; | |||
} | |||
} | |||
.recording { | |||
position: relative; | |||
z-index: 1; | |||
margin-top: 20rpx; | |||
padding: 30rpx 30rpx 30rpx 68rpx; | |||
display: flex; | |||
flex-direction: column; | |||
background: #FFFFFF; | |||
border-radius: 8rpx; | |||
.left-box { | |||
position: absolute; | |||
left: 30rpx; | |||
top: 40rpx; | |||
width: 24rpx; | |||
height: 300rpx; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
.cycle { | |||
width: 24rpx; | |||
height: 24rpx; | |||
flex-shrink: 0; | |||
border-radius: 50%; | |||
border: 4rpx solid #2671E2; | |||
} | |||
.point { | |||
flex-grow: 1; | |||
border-left: 5rpx dotted #2671E2; | |||
} | |||
} | |||
.recordingBox { | |||
width: 100%; | |||
display: flex; | |||
flex-direction: column; | |||
.recordingBoxItem-title { | |||
font-size: 32rpx; | |||
font-weight: 700; | |||
} | |||
.recordingBoxItem { | |||
margin-top: 24rpx; | |||
display: flex; | |||
.left { | |||
flex-shrink: 0; | |||
width: 210rpx; | |||
color: #505050; | |||
font-size: 30rpx; | |||
} | |||
.right { | |||
flex-grow: 1; | |||
font-size: 30rpx !important; | |||
overflow: hidden; | |||
text-overflow: ellipsis; | |||
white-space: nowrap; | |||
} | |||
} | |||
} | |||
} | |||
.offlineRec { | |||
margin-top: 20rpx; | |||
padding: 28rpx 24rpx; | |||
border-radius: 8rpx; | |||
background: #FFFFFF; | |||
.recMain { | |||
display: flex; | |||
flex-direction: column; | |||
text { | |||
margin: 24rpx 0; | |||
font-size: 30rpx; | |||
} | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@@ -54,13 +54,14 @@ | |||
</view> | |||
</view> | |||
<view class="Pinspeak" v-if="shifoinfo==0">顾问</view> | |||
<view class="chented" v-if="shifoinfo==0" @click="clickShowhid()"> | |||
<!-- <template v-if="shifoinfo==0 && userInfo.dataCode != 6"> --> | |||
<view class="Pinspeak">顾问</view> | |||
<view class="chented" @click="clickShowhid()"> | |||
<view class="title" style="border: none;"> | |||
<view class="titletext">接待顾问</view> | |||
<view class="titletext2" | |||
style="font-size: 30rpx;font-weight: 400;color: #B2B2B2;line-height: 90rpx;padding-left: 10rpx;"> | |||
<!-- {{text || '请选择接待顾问'}} --> | |||
<text v-if="text" style="color: #333333;">{{text}}</text> | |||
<text v-else>请选择接待顾问</text> | |||
</view> | |||
@@ -69,14 +70,14 @@ | |||
</view> | |||
</view> | |||
</view> | |||
<!-- </template> --> | |||
<view class="clive" @click.stop="$noMultipleClicks(save)" :style="{background:(isBand==false?'#2671E2':'#949494')}">确定</view> | |||
<view class="clive" @click.stop="$noMultipleClicks(save)" | |||
:style="{background:(isBand==false?'#2671E2':'#949494')}">确定</view> | |||
<!-- <view v-if="Showhiddenunits"> --> | |||
<!-- <u-select v-model="show" :list="list"></u-select> --> | |||
<u-select :mask-close-able="false" label-name="sourceName" value-name="id" v-model="Showhiddenunits" | |||
mode="single-column" :list="list" @cancel="cancel" @confirm="confirm"></u-select> | |||
<!-- </view> --> | |||
<u-select :mask-close-able="false" v-model="Showhid" mode="single-column" :list="freeList" @cancel="cancel1" | |||
@confirm="confirm1"></u-select> | |||
<u-modal v-model="show" :mask-close-able="true" :title="'代接待提醒'" :confirm-text="confirmtext" | |||
@@ -111,7 +112,7 @@ | |||
replaceReception: 0 | |||
}, | |||
showSourceName: '', // 展示文字 | |||
shifoinfo: 0, | |||
shifoinfo: 0, // 高级权限 项目是否能指派顾问 | |||
freeList: [], | |||
Showhid: false, | |||
text: null, | |||
@@ -123,9 +124,18 @@ | |||
saveisshow: true, | |||
isBand: false, // 阻止二次提交 | |||
tap: true, | |||
fdFlag:null | |||
fdFlag: null, | |||
isPass: false, // 当前顾问是否正在接待 | |||
}; | |||
}, | |||
computed: { | |||
// 用户详情 | |||
userInfo() { | |||
return uni.getStorageSync("weapp_session_userInfo_data") | |||
}, | |||
}, | |||
onShow() { | |||
this.parames.projectId = uni.getStorageSync('buildingID').id; | |||
console.log(this.$u) | |||
@@ -134,6 +144,7 @@ | |||
this.getFromSource(); | |||
}, | |||
methods: { | |||
// 获取客户来源 | |||
getFromSource() { | |||
uni.request({ | |||
@@ -176,8 +187,18 @@ | |||
if (this.isBand) return | |||
this.save() | |||
}, | |||
save() { | |||
// 校验当前登录人是否是顾问 | |||
let obj = this.freeList.find(item => { | |||
return item.agentId == this.userInfo.accountId | |||
}) || null | |||
if (!obj && this.userInfo.dataCode == 6) { | |||
this.isPass = true | |||
} else { | |||
this.isPass = false | |||
} | |||
if (this.parames.name.length == 0) { | |||
uni.showToast({ | |||
icon: "none", | |||
@@ -192,6 +213,15 @@ | |||
}) | |||
return; | |||
} | |||
// 判断条件2是否选中顾问 | |||
if (this.isPass && !this.parames.agentId) { | |||
uni.showToast({ | |||
icon: "none", | |||
title: "请选择顾问~" | |||
}) | |||
return; | |||
} | |||
const that = this; | |||
this.isBand = true | |||
this.$u.post("customer/daitiReception", { | |||
@@ -220,7 +250,7 @@ | |||
that.confirmtext = res.replacement.name + "代接待", //确认文字 | |||
that.canceltext = res.owner.name + '接待', //取消文字 | |||
that.show = true; | |||
this.isBand = false | |||
this.isBand = false | |||
} else { | |||
that.daitiReceptionobj = res; | |||
console.log(that.daitiReceptionobj) | |||
@@ -229,7 +259,7 @@ | |||
that.confirmtext = res.replacement.name + "代接待", //确认文字 | |||
that.canceltext = res.assign.name + '接待', //取消文字 | |||
that.show = true; | |||
this.isBand = false | |||
this.isBand = false | |||
} | |||
} | |||
} | |||
@@ -283,6 +313,23 @@ | |||
this.parames.howMany = num; | |||
}, | |||
clickShowhid() { | |||
if (this.shifoinfo != 0) { | |||
uni.showToast({ | |||
icon: 'none', | |||
title: '您没有指派权限~', | |||
duration: 2000 | |||
}); | |||
return | |||
} | |||
if (this.userInfo.dataCode == 6 && !this.checkAuthority('顾问指派顾问')) { | |||
uni.showToast({ | |||
icon: "none", | |||
title: "您没有指派权限~", | |||
duration: 2000 | |||
}) | |||
return | |||
} | |||
if (this.freeList.length == 0) { | |||
uni.showToast({ | |||
icon: 'none', | |||
@@ -342,6 +389,10 @@ | |||
item.label = item.name + "(无设备)"; | |||
} | |||
item.value = item.agentId | |||
if (this.userInfo.accountId == item.agentId) { | |||
this.text = item.label | |||
this.parames.agentId = item.agentId; | |||
} | |||
}) | |||
}) | |||
}, | |||
@@ -49,11 +49,20 @@ | |||
<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> | |||
<!-- 加载组件 --> | |||
<loading v-model="LOADING"></loading> | |||
</view> | |||
</template> | |||
<script> | |||
import loading from "@/components/loading/index.vue" | |||
export default { | |||
components: { | |||
loading | |||
}, | |||
data() { | |||
return { | |||
customerId: '', | |||
@@ -73,55 +82,17 @@ | |||
list: [], // 部门列表 | |||
listCurrent: 0, //选中分类下标 | |||
deptId: '', | |||
} | |||
}, | |||
onLoad(option) { | |||
this.LOADING = true | |||
this.customerId = option.id; | |||
this.getAllList() | |||
}, | |||
onShow() { | |||
this.buildingID = uni.getStorageSync('buildingID').id; | |||
this.getFreeList(); | |||
}, | |||
methods: { | |||
// 获取全部的列表 | |||
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) { | |||
@@ -139,7 +110,7 @@ | |||
this.replaceReception = 1; | |||
this.baochunfun() | |||
}, | |||
// 保存按钮点击事件 | |||
save() { | |||
console.log(this.chosedAgentId) | |||
if (!this.chosedAgentId) { | |||
@@ -183,7 +154,6 @@ | |||
} | |||
}); | |||
}, | |||
// 保存指派顾问 | |||
baochunfun() { | |||
uni.showLoading({ | |||
title: "保存中", | |||
@@ -199,22 +169,22 @@ | |||
icon: "none", | |||
title: "分配成功" | |||
}) | |||
uni.hideLoading() | |||
uni.navigateBack() | |||
}) | |||
uni.navigateBack(); | |||
uni.hideLoading(); | |||
}); | |||
}, | |||
// 获取顾问列表 | |||
getFreeList() { | |||
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 | |||
} | |||
}) | |||
this.$u.get("/zkAgentPool/freeList?itemId=" + this.buildingID).then(res => { | |||
this.LOADING = false | |||
if (res.length == 0) { | |||
this.freeList = [] | |||
} else { | |||
this.freeList = res; | |||
this.textcdhSKJ = res[0].name | |||
} | |||
}).catch(e => { | |||
this.LOADING = false | |||
}) | |||
}, | |||
radioChange(evt) { | |||
this.chosedAgentId = ''; | |||
@@ -3,8 +3,9 @@ | |||
<view class="text1">第一步:关注数智工牌公众号</view> | |||
<view style="width: 96%;margin: 0 auto;"> | |||
<view class="text2" style="margin-top: 30rpx;">1.长按识别二维码或保存至相册进行关注</view> | |||
<view style="text-align: center;" > | |||
<image @click="baocun()" style="width: 300rpx;height: 300rpx;" src="../../static/images/supimg.png" mode=""></image> | |||
<view style="text-align: center;"> | |||
<image @click="baocun()" style="width: 300rpx;height: 300rpx;" src="../../static/images/supimg.png" | |||
mode=""></image> | |||
</view> | |||
<view style="margin-top: 30rpx;" class="text2">2.微信搜索公众号【数智工牌】进行关注</view> | |||
</view> | |||
@@ -26,66 +27,68 @@ | |||
export default { | |||
data() { | |||
return { | |||
}; | |||
}, | |||
onShow: function() { | |||
var userInfos = uni.getStorageSync('weapp_session_userInfo_data'); | |||
}, | |||
methods: { | |||
baocun () { | |||
const _this = this; | |||
wx.getImageInfo({ | |||
src: '/static/images/supimg.png', | |||
success: function (res) { | |||
wx.saveImageToPhotosAlbum({ | |||
filePath: res.path, | |||
success (result) { | |||
_this.setData({ show: false }); | |||
wx.showToast({ | |||
title: '保存成功', | |||
icon: 'success', | |||
duration: 2000 | |||
}) | |||
}, | |||
fail (err) { | |||
if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") { | |||
wx.openSetting({ | |||
success (settingdata) { | |||
if (settingdata.authSetting['scope.writePhotosAlbum']) { | |||
_this.savePhoto() | |||
} else { | |||
wx.showToast({ | |||
title: '获取权限失败,无法保存图片', | |||
icon: 'success', | |||
duration: 2000 | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
}) | |||
} | |||
baocun() { | |||
const _this = this; | |||
wx.getImageInfo({ | |||
src: '/static/images/supimg.png', | |||
success: function(res) { | |||
wx.saveImageToPhotosAlbum({ | |||
filePath: res.path, | |||
success(result) { | |||
wx.showToast({ | |||
title: '保存成功', | |||
icon: 'success', | |||
duration: 2000 | |||
}) | |||
}, | |||
fail(err) { | |||
if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") { | |||
wx.openSetting({ | |||
success(settingdata) { | |||
if (settingdata.authSetting[ | |||
'scope.writePhotosAlbum']) { | |||
_this.savePhoto() | |||
} else { | |||
wx.showToast({ | |||
title: '获取权限失败,无法保存图片', | |||
icon: 'success', | |||
duration: 2000 | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
} | |||
}) | |||
} | |||
} | |||
}; | |||
</script> | |||
<style lang="scss" scoped> | |||
.main { | |||
padding:30rpx; | |||
padding: 30rpx; | |||
background: #F8F8F8; | |||
display: flex; | |||
flex-direction: column; | |||
min-height: 100vh; | |||
padding-bottom: 40rpx; | |||
background: #FFFFFF; | |||
.text1{ | |||
.text1 { | |||
color: #303030; | |||
font-size: 30rpx; | |||
} | |||
.text2{ | |||
.text2 { | |||
font-size: 30rpx; | |||
color: #666666; | |||
} | |||
@@ -443,8 +443,14 @@ | |||
// 分割数组排名前三,倒三 | |||
getTopThree() { | |||
if (this.weekObj.XJTopList && this.weekObj.XJTopList.length > 0) { | |||
this.carryOutLast = this.weekObj.XJTopList.slice(0, 3) | |||
let arr = this.weekObj.XJTopList.slice(0, 3) | |||
arr.forEach(item => { | |||
if (item.value != 100) { | |||
this.carryOutLast.push(item) | |||
} | |||
}) | |||
this.carryOutTop = this.weekObj.XJTopList.reverse().slice(0, 3) | |||
console.log(this.weekObj.XJTopList) | |||
} | |||
if (this.weekObj.ZXLTopList && this.weekObj.ZXLTopList.length > 0) { | |||
this.consultant = this.weekObj.ZXLTopList.reverse().slice(0, 3) | |||
@@ -1,11 +1,11 @@ | |||
// http.js使用域名 | |||
// 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 = 'http://127.0.0.1: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://xitong.pachira.cn/api'; // AI营销辅助 普强使用 | |||
// config使用域名 | |||
@@ -16,7 +16,6 @@ const baseUrl = 'https://zkgj.quhouse.com/api'; // 质控正式 | |||
// const host = 'http://192.168.31.57:8080/autoSR/api';// 本地 | |||
const host = baseUrl; // 测试站 | |||
// const host = 'http://192.168.31.167:8080/autoSR/api'; // 长龙 | |||
// const host = 'http://192.168.31.134:8080/autoSR/api'; // 佳豪 | |||
// const host = 'http://10.2.1.104:8081/autoSR/api'; // 刘敏 | |||
// const host = 'https://zkgj.quhouse.com/api'; // 质控正式 | |||
// const host = 'https://hfju.com/api'; // 数智正式 | |||
@@ -1,5 +1,6 @@ | |||
import { baseUrl } from './domain.js' | |||
import { | |||
baseUrl | |||
} from './domain.js' | |||
const install = (Vue, vm) => { | |||
Vue.prototype.$u.http.setConfig({ | |||
@@ -7,44 +8,44 @@ const install = (Vue, vm) => { | |||
loadingText: '加载中~', | |||
loadingTime: 800, | |||
}); | |||
// 请求拦截,如果有token,携带token | |||
Vue.prototype.$u.http.interceptor.request = (config) => { | |||
const token = uni.getStorageSync('weapp_session_login_data'); | |||
if(token){ | |||
config.header['Access-Token'] = token.token; | |||
} | |||
return config | |||
} | |||
// 响应拦截,公共错误处理 | |||
Vue.prototype.$u.http.interceptor.response = (res) => { | |||
if(res.code == 10000) { | |||
return res.data; | |||
}else if(res.code == 10003 || res.code == 20006){ | |||
uni.hideToast(); | |||
uni.showToast({ | |||
icon:"none", | |||
title:"您的登录已失效,请重新登录", | |||
duration: 2000 | |||
}) | |||
uni.clearStorageSync(); | |||
setTimeout(function () { | |||
uni.reLaunch({ | |||
url: '/pages/login/index' | |||
}); | |||
},2000); | |||
return false; | |||
}else{ | |||
uni.hideLoading(); | |||
uni.showToast({ | |||
icon:"none", | |||
title:res.message, | |||
duration: 3000 | |||
}) | |||
return false; | |||
} | |||
} | |||
// 请求拦截,如果有token,携带token | |||
Vue.prototype.$u.http.interceptor.request = (config) => { | |||
const token = uni.getStorageSync('weapp_session_login_data'); | |||
if (token) { | |||
config.header['Access-Token'] = token.token; | |||
} | |||
return config | |||
} | |||
// 响应拦截,公共错误处理 | |||
Vue.prototype.$u.http.interceptor.response = (res) => { | |||
if (res.code == 10000) { | |||
return res.data; | |||
} else if (res.code == 10003 || res.code == 20006) { | |||
uni.hideToast(); | |||
uni.showToast({ | |||
icon: "none", | |||
title: "您的登录已失效,请重新登录", | |||
duration: 2000 | |||
}) | |||
uni.clearStorageSync(); | |||
setTimeout(function() { | |||
uni.reLaunch({ | |||
url: '/pages/login/index' | |||
}); | |||
}, 2000); | |||
return false; | |||
} else { | |||
uni.hideLoading(); | |||
uni.showToast({ | |||
icon: "none", | |||
title: res.message, | |||
duration: 3000 | |||
}) | |||
return false; | |||
} | |||
} | |||
} | |||
export default { | |||
install | |||
} | |||
} |