Browse Source

角色多选

dmb
douzhuo 1 year ago
parent
commit
64798bdccf
16 changed files with 1136 additions and 731 deletions
  1. +6
    -0
      App.vue
  2. +0
    -2
      components/uniapp-zaudio/zaudio.vue
  3. +2
    -2
      env/prod_xjzs.js
  4. +140
    -146
      pages/center/Piabodata/Employeesstatistics.vue
  5. +35
    -41
      pages/index/customer.vue
  6. +140
    -119
      pages/index/learning.vue
  7. +125
    -78
      pages/learning/Equinoctial/index.vue
  8. +106
    -68
      pages/mine/details.vue
  9. +327
    -213
      pages/mine/details2.vue
  10. +43
    -9
      pages/mine/reception/addreception.vue
  11. +210
    -52
      pages/mine/reception/consultant.vue
  12. BIN
      static/images/detail/icon1.png
  13. BIN
      static/images/detail/icon2.png
  14. BIN
      static/images/detail/icon3.png
  15. BIN
      static/images/detail/icon4.png
  16. +2
    -1
      utils/domain.js

+ 6
- 0
App.vue View File

@@ -79,6 +79,12 @@
}
return obj
},
// 检测权限 返回 Boolean类型
CHECKAUTHORITY(name = '') {
let menu = uni.getStorageSync('weapp_session_Menu_data')
return menu[name] === undefined ? false : menu[name]
},
},

filters: {


+ 0
- 2
components/uniapp-zaudio/zaudio.vue View File

@@ -197,7 +197,6 @@
this.renderIsPlay = renderIsPlay;
this.audio = renderinfo;
this.loading = loading;
console.log(this.playinfo)
});
this.$zaudio.syncRender()
});
@@ -226,7 +225,6 @@
//进度拖到
change(event) {
if (this.renderIsPlay) {
console.log(event)
this.$zaudio.seek(event.detail.value);
}
},


+ 2
- 2
env/prod_xjzs.js View File

@@ -1,6 +1,6 @@
const ENV_PATH = {
// baseUrl: 'https://www.aihxz.com/', // 销讲助手
baseUrl: 'https://hxz.quhouse.com', // 销讲助手
baseUrl: 'https://www.aihxz.com', // 销讲助手
// baseUrl: 'https://hxz.quhouse.com', // 销讲助手
}

module.exports = ENV_PATH

+ 140
- 146
pages/center/Piabodata/Employeesstatistics.vue View File

@@ -19,36 +19,38 @@
<view class="title1" style="flex: 1;">接待量排名(TOP10)</view>
</view>
<view class="hejisan">
<view class="sanbox1" >
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo1.total}}</view>
<view class="text1-1">合计接待次数</view>
</view>
<view class="sanbox1" >
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo1.count}}</view>
<view class="text1-1">顾问人数</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo1.avg}}</view>
<view class="text1-1">人均接待次数</view>
</view>
</view>
<view class="jindu" style="margin-top: 20rpx;">
<view v-if="newlisttabinfo1.result.length" class="jindu-box" v-for="(item,index) in newlisttabinfo1.result" :key="index">
<view v-if="newlisttabinfo1.result.length" class="jindu-box"
v-for="(item,index) in newlisttabinfo1.result" :key="index">
<view class="jindu-boxche">
<view class="jindu-name u-flex" style='width: 170rpx' v-if="item.name">
<image v-if="index==0" class="sort-img" src="/static/images/top1.png" mode="" />
<image v-if="index==1" class="sort-img" src="/static/images/top2.png" mode="" />
<image v-if="index==2" class="sort-img" src="/static/images/top3.png" mode="" />
<view class="sort-number" v-if="index>2">{{index+1}}</view>
{{item.name.substring(0,4)}}</view>
{{item.name.substring(0,4)}}
</view>
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'" ></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,1) + '%'" ></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,1) + '%'" ></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,1) + '%'" ></view>
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'"></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,1) + '%'"></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,1) + '%'"></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,1) + '%'"></view>
</view>
<view class="jindu-zxl" >{{item.zxl==null?0:item.zxl}}次</view>
<view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}次</view>
</view>
</view>
<view v-if="newlisttabinfo1.result.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">
@@ -59,36 +61,38 @@

<view class="single">
<view class="title">
<view class="title1" style="flex: 1;">平均执行率排行(TOP10)</view>
<view class="title1" style="flex: 1;">平均执行率排行(TOP10)</view>
</view>
<view class="hejisan">
<view class="sanbox1" style="width: 40%;">
<view class="sanbox1" style="width: 40%;">
<view class="text1-2">{{newlisttabinfo3.count}}</view>
<view class="text1-1">顾问人数</view>
</view>
<view class="sanbox1" style="width: 25%;">
<view class="sanbox1" style="width: 25%;">
<view class="text1-2">{{newlisttabinfo3.avg}}%</view>
<view class="text1-1">人均执行率</view>
</view>
</view>
<view class="jindu" style="margin-top: 20rpx;">
<view v-if="newlisttabinfo3.result.length" class="jindu-box" v-for="(item,index) in newlisttabinfo3.result" :key="index">
<view v-if="newlisttabinfo3.result.length" class="jindu-box"
v-for="(item,index) in newlisttabinfo3.result" :key="index">
<view class="jindu-boxche">
<view class="jindu-name u-flex" style='width: 170rpx' v-if="item.name">
<image v-if="index==0" class="sort-img" src="/static/images/top1.png" mode="" />
<image v-if="index==1" class="sort-img" src="/static/images/top2.png" mode="" />
<image v-if="index==2" class="sort-img" src="/static/images/top3.png" mode="" />
<view class="sort-number" v-if="index>2">{{index+1}}</view>
{{item.name.substring(0,4)}}</view>
{{item.name.substring(0,4)}}
</view>
<!-- <view class="jindu-name" v-if="item.name">{{item.name.substring(0,4)}}</view> -->
<!-- <view class="progress-cus">
<view class="color" :style="'width:'+ item.zxl||0 + '%'" ></view>
</view> -->
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ getPercent1(item.zxl) + '%'" ></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent1(item.zxl) + '%'" ></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent1(item.zxl) + '%'" ></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent1(item.zxl) + '%'" ></view>
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ getPercent1(item.zxl) + '%'"></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent1(item.zxl) + '%'"></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent1(item.zxl) + '%'"></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent1(item.zxl) + '%'"></view>
</view>
<view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}%</view>
</view>
@@ -103,33 +107,35 @@
<view class="title1" style="flex: 1;">录音时长(TOP10)</view>
</view>
<view class="hejisan">
<view class="sanbox1" >
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo2.total}}</view>
<view class="text1-1">合计时长/分钟</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo2.count}}</view>
<view class="text1-1">顾问人数</view>
</view>
<view class="sanbox1" >
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo2.avg}}</view>
<view class="text1-1">人均录音时长/分钟</view>
</view>
</view>
<view class="jindu" style="margin-top: 20rpx;">
<view v-if="newlisttabinfo2.result.length" class="jindu-box" v-for="(item,index) in newlisttabinfo2.result" :key="index">
<view v-if="newlisttabinfo2.result.length" class="jindu-box"
v-for="(item,index) in newlisttabinfo2.result" :key="index">
<view class="jindu-boxche">
<view class="jindu-name u-flex" style='width: 170rpx' v-if="item.name">
<image v-if="index==0" class="sort-img" src="/static/images/top1.png" mode="" />
<image v-if="index==1" class="sort-img" src="/static/images/top2.png" mode="" />
<image v-if="index==2" class="sort-img" src="/static/images/top3.png" mode="" />
<view class="sort-number" v-if="index>2">{{index+1}}</view>
{{item.name.substring(0,4)}}</view>
{{item.name.substring(0,4)}}
</view>
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'" ></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,2)+ '%'" ></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,2)+ '%'" ></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,2)+ '%'" ></view>
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'"></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,2)+ '%'"></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,2)+ '%'"></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,2)+ '%'"></view>
</view>
<view class="jindu-zxl u-line-1">{{item.zxl==null?0:item.zxl}}分钟</view>
</view>
@@ -149,31 +155,34 @@
<view class="text1-2">{{newlisttabinfo4.total}}</view>
<view class="text1-1">合计次数</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo4.count}}人</view>
<view class="text1-1">顾问人数</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo4.avg}}</view>
<view class="text1-1">人均违禁次数</view>
</view>
</view>
<view class="jindu" style="margin-top: 20rpx;min-height: 300rpx">
<view v-if="newlisttabinfo4.result.length" class="jindu-box" v-for="(item,index) in newlisttabinfo4.result" :key="index">
<view v-if="newlisttabinfo4.result.length" class="jindu-box"
v-for="(item,index) in newlisttabinfo4.result" :key="index">
<view class="jindu-boxche">
<view class="jindu-name u-flex" style='width: 170rpx' v-if="item.name">
<image v-if="index==0" class="sort-img" src="/static/images/top1.png" mode="" />
<image v-if="index==1" class="sort-img" src="/static/images/top2.png" mode="" />
<image v-if="index==2" class="sort-img" src="/static/images/top3.png" mode="" />
<view class="sort-number" v-if="index>2">{{index+1}}</view>
{{item.name.substring(0,4)}}</view>
{{item.name.substring(0,4)}}
</view>
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'" ></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,4)+ '%'" ></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,4) + '%'" ></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,4)+ '%'" ></view>
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'"></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,4)+ '%'"></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,4) + '%'"></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,4)+ '%'"></view>
</view>
<view class="jindu-zxl" >{{item.zxl==null?0:item.zxl}}次</view>
<view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}次</view>
</view>
</view>
<view v-if="newlisttabinfo4.result.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">
@@ -191,11 +200,11 @@
<view class="text1-2">{{newlisttabinfo5.total||0}}</view>
<view class="text1-1">合计</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo5.count||0}}人</view>
<view class="text1-1">顾问</view>
</view>
<view class="sanbox1">
<view class="sanbox1">
<view class="text1-2">{{newlisttabinfo5.avg||0}}</view>
<view class="text1-1">均值</view>
</view>
@@ -203,20 +212,21 @@
<view class="jindu" style="margin-top: 20rpx;min-height: 300rpx">
<view v-if="newlisttabinfo5.result.length!=0" class="jindu-box"
v-for="(item,index) in newlisttabinfo5.result" :key="index">
<view class="jindu-boxche" >
<view class="jindu-boxche">
<view class="jindu-name u-flex" style='width: 170rpx' v-if="item.name">
<image v-if="index==0" class="sort-img" src="/static/images/top1.png" mode="" />
<image v-if="index==1" class="sort-img" src="/static/images/top2.png" mode="" />
<image v-if="index==2" class="sort-img" src="/static/images/top3.png" mode="" />
<view class="sort-number" v-if="index>2">{{index+1}}</view>
{{item.name.substring(0,4)}}</view>
{{item.name.substring(0,4)}}
</view>
<view class="progress-cus">
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'" ></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,5)+ '%'" ></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,5) + '%'" ></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,5)+ '%'" ></view>
<view class="color1" v-if="index==0" :style="'width:'+ item.zxl||0 + '%'"></view>
<view class="color2" v-if="index==1" :style="'width:'+ getPercent(item.zxl,5)+ '%'"></view>
<view class="color3" v-if="index==2" :style="'width:'+ getPercent(item.zxl,5) + '%'"></view>
<view class="color4" v-if="index>2" :style="'width:'+ getPercent(item.zxl,5)+ '%'"></view>
</view>
<view class="jindu-zxl" >{{item.zxl==null?0:item.zxl}}次</view>
<view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}次</view>
</view>
</view>
<view v-if="newlisttabinfo5.result.length==0" style="width: 100%;text-align: center;margin-top: 60rpx;">
@@ -225,10 +235,10 @@
</view>
</view>
<u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
<!-- 加载组件 -->
<u-loadings v-model="LOADING"></u-loadings>
</view>
</template>

@@ -284,73 +294,66 @@
this.init()
},
computed: {
},
onPullDownRefresh(){
onPullDownRefresh() {
this.init()
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
methods: {
getPercent(num,type) {
if(this.newlisttabinfo1.result&&this.newlisttabinfo1.result.length&&type==1){
console.log(this.newlisttabinfo1.result)
getPercent(num, type) {
if (this.newlisttabinfo1.result && this.newlisttabinfo1.result.length && type == 1) {
let index0 = this.newlisttabinfo1.result[0]
let percent = num/(index0.zxl) * 100
// console.log(index0.zxl)
// console.log(index0)
// console.log('num',num)
// console.log(percent)
// console.log(percent.toFixed(2))
let percent = num / (index0.zxl == 0 ? 1 : index0.zxl) * 100
return percent.toFixed(2)

}else if(this.newlisttabinfo2.result&&this.newlisttabinfo2.result.length&&type==2){
} else if (this.newlisttabinfo2.result && this.newlisttabinfo2.result.length && type == 2) {
let index0 = this.newlisttabinfo2.result[0]
let percent = num/(index0.zxl) * 100
let percent = num / (index0.zxl == 0 ? 1 : index0.zxl) * 100
return percent.toFixed(2)
}else if(this.newlisttabinfo4.result&&this.newlisttabinfo4.result.length&&type==4){
} else if (this.newlisttabinfo4.result && this.newlisttabinfo4.result.length && type == 4) {
let index0 = this.newlisttabinfo4.result[0]
let percent = num/(index0.zxl) * 100
let percent = num / (index0.zxl == 0 ? 1 : index0.zxl) * 100
return percent.toFixed(2)
}else if(this.newlisttabinfo5.result&&this.newlisttabinfo5.result.length&&type==5){
} else if (this.newlisttabinfo5.result && this.newlisttabinfo5.result.length && type == 5) {
let index0 = this.newlisttabinfo5.result[0]
let percent = num/(index0.zxl) * 100
let percent = num / (index0.zxl == 0 ? 1 : index0.zxl) * 100
return percent.toFixed(2)
}else{
} else {
return 0
}
},
getPercent1(num){
console.log(num)
return num||0
getPercent1(num) {
return num || 0
},
init(){
this.newlisttabinfo1={
avg:'',
count:'',
total:'',
result:[],
},
this.newlisttabinfo2={
avg:'',
count:'',
total:'',
result:[],
},
this.newlisttabinfo3={
avg:'',
count:'',
total:'',
result:[],
},
this.newlisttabinfo4={
avg:'',
count:'',
total:'',
result:[],
}
init() {
this.newlisttabinfo1 = {
avg: '',
count: '',
total: '',
result: [],
},
this.newlisttabinfo2 = {
avg: '',
count: '',
total: '',
result: [],
},
this.newlisttabinfo3 = {
avg: '',
count: '',
total: '',
result: [],
},
this.newlisttabinfo4 = {
avg: '',
count: '',
total: '',
result: [],
}
this.newlisttabinfo2 = {
avg: '',
count: '',
@@ -458,7 +461,6 @@

//自定义时间
totalTimeChange(e) {
console.log(e.startDate, e.endDate)
this.activeTotal = 3;
this.lastEndDate = e.endDate
this.lastStartDate = e.startDate
@@ -470,8 +472,8 @@
if (index == 3) {
this.totalTimeShow = true;
} else {
this.lastEndDate='';
this.lastStartDate='';
this.lastEndDate = '';
this.lastStartDate = '';
this.init()
}
},
@@ -481,22 +483,6 @@
let num = Math.max.apply(Math, arr.map(function(o) {
return o.zxl
})) //结果:3
// console.log(num)
// if(num>100){
// // 获取最大值的下标
// // let idx=arr.findIndex(item=>item.zxl==num)
// // console.log(idx,123)
// arr.map(item=>{
// item.zxl1=Math.floor(item.zxl/num*100)
// })
// // console.log(arr)
// return arr
// }else{
// arr.map(item=>{
// item.zxl1=item.zxl
// })
// return arr
// }
arr.map(item => {
item.zxl1 = Math.floor(item.zxl / num * 100)
})
@@ -513,10 +499,11 @@
background: #FAFAFA;
}

.single{
padding-bottom: 20rpx;
margin-top: 20rpx;
}
.single {
padding-bottom: 20rpx;
margin-top: 20rpx;
}

.boxtittab {
position: sticky;
top: var(--window-top);
@@ -529,15 +516,17 @@
display: flex;
padding-top: 20rpx;

padding-bottom:20rpx;
.sanbox1{
padding-bottom: 20rpx;

.sanbox1 {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
position: relative;
&::after{

&::after {
position: absolute;
content: '';
width: 1rpx;
@@ -546,6 +535,7 @@
right: 0;
top: 0;
}

&:last-child::after {
position: absolute;
content: '';
@@ -556,7 +546,8 @@
background: #fff;
}
}
.text1-1{

.text1-1 {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
@@ -572,26 +563,29 @@
margin-bottom: 10rpx;
}
}
.jindu-name{
width: 180rpx;
margin-left: 15rpx;
}
.sort-img{
width: 44rpx;
height: 44rpx;
margin-right: 15rpx;
}
.sort-number{
width: 40rpx;
height: 40rpx;
background: #E5F0FF;
border-radius: 50%;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
text-align: center;
line-height: 40rpx;
margin-right: 15rpx;
}

.jindu-name {
width: 180rpx;
margin-left: 15rpx;
}

.sort-img {
width: 44rpx;
height: 44rpx;
margin-right: 15rpx;
}

.sort-number {
width: 40rpx;
height: 40rpx;
background: #E5F0FF;
border-radius: 50%;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
text-align: center;
line-height: 40rpx;
margin-right: 15rpx;
}
</style>

+ 35
- 41
pages/index/customer.vue View File

@@ -136,15 +136,16 @@
</view>
</view>
<view class="footer-button" v-if="item.status!=0">
<view v-if="permissions.commonly4" class="footer1" @click.stop="addTime(item)">接待延时</view>
<view v-if="permissions.commonly3" class="footer1" @click.stop="assign(item)">重新指派</view>
<view v-if="permissions.commonly5" class="footer3" @click.stop="changeEnd(item.id)">结束接待</view>
<view v-if="CHECKAUTHORITY('jdys')" class="footer1" @click.stop="addTime(item)">接待延时</view>
<view v-if="CHECKAUTHORITY('jd_zp')" class="footer1" @click.stop="assign(item)">重新指派</view>
<view v-if="CHECKAUTHORITY('jsjd')" class="footer3" @click.stop="changeEnd(item.id)">结束接待</view>
</view>
<view class="footer-button" v-if="item.status==0 && permissions.commonly3">
<view class="footer3" @click.stop="assign(item)">指派顾问</view>
<view class="footer-button" v-if="item.status==0">
<view v-if="CHECKAUTHORITY('scjd')" @tap.stop="deleteReception(item)" class="footer3">删除接待</view>
<view v-if="CHECKAUTHORITY('jd_zp')" class="footer3" @click.stop="assign(item)">指派顾问</view>
</view>
</view>
<image v-if="permissions.commonly2" @click="addreception()" class="add" src="/static/images/add.png" mode="">
<image v-if="CHECKAUTHORITY('jd_xz')" @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>
@@ -152,7 +153,7 @@
</template>

<script>
var config = require("../../config");
var config = require("../../config");
export default {
data() {
return {
@@ -162,16 +163,8 @@
//--- end --- tabbar配置项
buildingID: '',
waitCustomList: [],
isAdd: '',
dataCode: '',
addAccount: '',
permissions: {
commonly1: false, //查看
commonly2: false, //添加
commonly3: false, //指派
commonly4: false,
commonly5: false,
},
};
},
computed: {
@@ -183,20 +176,9 @@
return totalTime - nowTime
}
}
// judgeHalfAnHour(){
// return (e)=>{

// }
// }
},
onShow() {
this.buildingID = uni.getStorageSync('buildingID').id;
let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
this.permissions.commonly1 = newmenulist.jd_ck;
this.permissions.commonly2 = newmenulist.jd_xz;
this.permissions.commonly3 = newmenulist.jd_zp;
this.permissions.commonly4 = newmenulist.jdys;
this.permissions.commonly5 = newmenulist.jsjd;
const {
addAccount,
dataCode
@@ -204,7 +186,6 @@
this.addAccount = addAccount;
this.dataCode = dataCode;
this.init()
this.queryHaveDept()
this.updateInit()
},

@@ -215,18 +196,39 @@
}, 1000);
},
methods: {


// 删除接待
deleteReception(data) {
uni.showModal({
content: `确认删除“${data.name}”接待吗?`,
cancelColor: "#999999",
success: res => {
if (res.confirm) {
this.$u.get(`/customer/delete?id=${data.id}`).then(res => {
if (!res) {
this.init()
}
}).catch(e => {
console.log(e)
uni.showToast({
title: '网络异常,请稍后重试~',
icon: 'none'
});
})
}
}
})
},
// 未读消息数量
updateInit() {
this.$u.get(config.service.notReadNum, {
id: uni.getStorageSync('weapp_session_userInfo_data').accountId,
projectId: uni.getStorageSync('buildingID').id
}).then(res => {
console.log(res)
if (res > 0) {
uni.setTabBarBadge({ //显示数字
index: 4, //tabbar下标
text: `${res}`//数字
text: `${res}` //数字
})
} else {
uni.removeTabBarBadge({
@@ -244,7 +246,7 @@
this.init()
},
tapThevisiting(item) {
if (this.permissions.commonly1 != true) {
if (this.CHECKAUTHORITY('jd_ck') != true) {
return
}
uni.showLoading({
@@ -294,14 +296,6 @@
}

},
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 = {
@@ -346,7 +340,7 @@
uni.showToast({
icon: "none",
title: "操作成功"
})
})
this.init();
});
}


+ 140
- 119
pages/index/learning.vue View File

@@ -8,55 +8,67 @@
<!-- 内容部分 :style="[otherHeight]" -->
<view class="container">
<template v-if="activeClass==0">
<view class="cented">
<block v-for="(item,index) in alllist" :key="index">
<view class="ceninfo" @click="quclick(item)">
<view class="infoview">
<view class="infozuo">
<view class="infozuochiud2">顾</view>
<view class="infozuochiud1">{{item.jbaName}}</view>
</view>
<view class="infoyou">
<view class="infoyouchiud2">{{ item.studyStatus }}</view>
</view>
</view>
<view class="footerinfo">
<view class="footerinfozuo">
<image src="../../static/images/img/time.png" mode=""></image>
{{item.assignedTime}}
</view>
<view class="footerinfozuo">
<image src="../../static/images/img/voice.png" mode=""></image>
{{ item.duration | formatTime }}min
</view>
<view class="footerinfozuo" style="color: #2671E2;">
<image src="../../static/images/img/percent.png" mode=""></image>
{{ item.fraction || 0 }}%
</view>
</view>
<!-- 底部按钮组 -->
<view class="footicon">
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/view.png" mode="">
</image>
<!-- 浏览量 -->
{{ item.pageviews || 0 }}
<template v-if="alllist.length > 0">
<view class="cented">
<block v-for="(item,index) in alllist" :key="index">
<view class="ceninfo" @click="quclick(item)">
<view class="infoview">
<view class="infozuo">
<view class="infozuochiud2">顾</view>
<view class="infozuochiud1">{{item.jbaName}}</view>
</view>
<view class="infoyou">
<view class="infoyouchiud2">{{ item.studyStatus }}</view>
</view>
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/message.png" mode="">
</image>
<!-- 热度 -->
{{ item.commentCount || 0 }}
<view class="footerinfo">
<view class="footerinfozuo">
<image src="../../static/images/img/time.png" mode=""></image>
{{item.assignedTime}}
</view>
<view class="footerinfozuo">
<image src="../../static/images/img/voice.png" mode=""></image>
{{ item.duration | formatTime }}min
</view>
<view class="footerinfozuo" style="color: #2671E2;">
<image src="../../static/images/img/percent.png" mode=""></image>
{{ item.fraction || 0 }}%
</view>
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/hand.png" mode="">
</image>
<!-- 点赞数 -->
{{ item.likeCount || 0 }}
<!-- 底部按钮组 -->
<view class="footicon">
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/view.png" mode="">
</image>
<!-- 浏览量 -->
{{ item.pageviews || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/message.png" mode="">
</image>
<!-- 热度 -->
{{ item.commentCount || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/hand.png" mode="">
</image>
<!-- 点赞数 -->
{{ item.likeCount || 0 }}
</view>
</view>
</view>
</block>
</view>
</template>
<view v-else class="empty">
<view style="width: 100%;display: flex;
flex-direction: column;justify-content: center;align-items: center;">
<view style="width: 100%;text-align: center;">
<image style="width: 220rpx;height: 200rpx;"
src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
</view>
</block>
<view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
</view>
</view>
</template>

@@ -72,47 +84,62 @@
</scroll-view>

<scroll-view scroll-y="true" class="rside-scroll">
<view class="rside-box">
<block v-for="(item,index) in alllists" :key="index">
<view class="ceninfo" @click="quclicks(item)">
<view class="infoview">
<view class="infozuo">
<view class="infozuochiud2">顾</view>
<view class="infozuochiud1">{{item.jbaName}}</view>
<template v-if="alllists.length > 0">
<view class="rside-box">
<block v-for="(item,index) in alllists" :key="index">
<view class="ceninfo" @click="quclicks(item)">
<view class="infoview">
<view class="infozuo">
<view class="infozuochiud2">顾</view>
<view class="infozuochiud1">{{item.jbaName}}</view>
</view>
<view class="infoyou">
<view class="infoyouchiud2">{{item.studyStatus}}</view>
</view>
</view>
<view class="infoyou">
<view class="infoyouchiud2">{{item.studyStatus}}</view>
<view class="footerinfo">
<view class="footerinfozuo">
<image src="../../static/images/img/time.png" mode=""></image>
{{item.assignedTime}}
</view>
</view>
</view>
<view class="footerinfo">
<view class="footerinfozuo">
<image src="../../static/images/img/time.png" mode=""></image>
{{item.assignedTime}}
</view>
</view>
<!-- 底部按钮组 -->
<view class="footicon">
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/view.png"
mode=""></image>
<!-- 浏览量 -->
{{item.pageviews || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/message.png"
mode=""></image>
<!-- 热度 -->
{{item.commentCount || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/hand.png"
mode=""></image>
<!-- 点赞数 -->
{{item.likeCount || 0 }}
<!-- 底部按钮组 -->
<view class="footicon">
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/view.png"
mode=""></image>
<!-- 浏览量 -->
{{item.pageviews || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/message.png"
mode=""></image>
<!-- 热度 -->
{{item.commentCount || 0 }}
</view>
<view class="icon">
<image class="Piabodata-img1" src="../../static/images/img/hand.png"
mode=""></image>
<!-- 点赞数 -->
{{item.likeCount || 0 }}
</view>
</view>
</view>
</block>
</view>
</template>

<view v-else class="empty">
<view style="width: 100%;display: flex;
flex-direction: column;justify-content: center;align-items: center;">
<view style="width: 100%;text-align: center;">
<image style="width: 220rpx;height: 200rpx;"
src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode="">
</image>
</view>
<view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据
</view>
</block>
</view>
</view>
</scroll-view>
</view>
@@ -120,7 +147,7 @@
</view>

<!-- 底部导航栏 -->
<!-- <u-tabbar :isBtnTop="false" class="tabbar" :mid-button="true" activeColor="#1296db" inactiveColor="#999999"
<!-- <u-tabbar :isBtnTop="false" class="tabbar" :mid-button="true" activeColor="#1296db" inactiveColor="#999999"
v-model="current" :list="tabbarList"></u-tabbar> -->
</view>
</template>
@@ -162,37 +189,32 @@
this.clocktab(i)
this.leftIndex = 0
this.infoinit()
setTimeout(() => {
uni.stopPullDownRefresh()
}, 3000)
},
onShow() {
try {
this.$store.commit('stopAduio')
} catch(e) {
} catch (e) {
console.log(e)
}
var i = uni.getStorageSync('fendianindex')
var i = uni.getStorageSync('fendianindex')
this.buildingID = uni.getStorageSync('buildingID').id;
this.clocktab(i)
// this.leftIndex = 0
// this.infoinit()
let left = uni.getStorageSync('left');
if(left!=undefined){
if (left != undefined) {
this.leftIndex = left.split(',')[0]
this.getSecond(left.split(',')[1])
this.infoinit(left.split(',')[1])
}else{
} else {
this.leftIndex = 0
this.infoinit()
}
this.updateInit()
},
// onLoad() {
// this.infoinit()
// },
methods: {

updateInit() {
@@ -204,7 +226,7 @@
if (res > 0) {
uni.setTabBarBadge({ //显示数字
index: 4, //tabbar下标
text: `${res}`//数字
text: `${res}` //数字
})
} else {
uni.removeTabBarBadge({
@@ -233,11 +255,6 @@
id: item.startFile
}
}
var cet = {
bg: 0,
customerId: item.id,
id: ''
}
this.$u.post("/corpus/fendianFindByPage", parames).then(res => {
var newobj = res[0];
setTimeout(function() {
@@ -251,13 +268,15 @@
})
return
}
console.log(this.equinoctial)
console.log(this.leftIndex)
if (res[0].merge == 0) {
uni.navigateTo({
url: `/pages/learning/Equinoctial/index2?customerId=${newobj.customerId}&biaoqian=${this.equinoctial[this.leftIndex].name}&startTime=${item.startTime}&startFile=${item.startFile}`
url: `/pages/learning/Equinoctial/index2?customerId=${newobj.customerId}&biaoqian=${this.equinoctial[this.leftIndex || 0].name}&marketingId=${this.equinoctial[this.leftIndex || 0].marketingId}&startTime=${item.startTime}&startFile=${item.startFile}`
})
} else {
uni.navigateTo({
url: `/pages/learning/Equinoctial/index?customerId=${newobj.customerId}&biaoqian=${this.equinoctial[this.leftIndex].name}&startTime=${item.startTime}&startFile=${item.startFile}`
url: `/pages/learning/Equinoctial/index?customerId=${newobj.customerId}&biaoqian=${this.equinoctial[this.leftIndex || 0].name}&marketingId=${this.equinoctial[this.leftIndex || 0].marketingId}&startTime=${item.startTime}&startFile=${item.startFile}`
})
}
})
@@ -301,14 +320,8 @@
routerclick(item, index) {
if (this.leftIndex === index) return
this.leftIndex = index
uni.setStorageSync("left", index+','+item.marketingId); //写入缓存
let mid = uni.getStorageSync('left').split(',')[1]
this.getSecond(mid)
// // return
// uni.navigateTo({
// url: "/pages/learning/Equinoctiallearning?id=" + item.marketingId + "&biaoqian=" + item.name
// })
uni.setStorageSync("left", index + ',' + item.marketingId); //写入缓存
this.getSecond(item.marketingId)
},
// tab切换
clocktab(index) {
@@ -320,12 +333,12 @@
uni.setStorageSync("fendianindex", 1); //写入缓存
this.leftIndex = uni.getStorageSync('left').split(',')[0]
let mid = uni.getStorageSync('left').split(',')[1]
if(mid!=undefined){
if (mid != undefined) {
this.getSecond(mid)
}else{
} else {
this.infoinit()
}
}
},

@@ -379,8 +392,6 @@
},
data: infoobj,
success: (data) => {
console.log(data.data.data.results,
"qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq");
if (data.data.code == 10000) {
this.alllists = data.data.data.results
} else {
@@ -407,12 +418,15 @@
'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token
},
success: (data) => {
console.log(data.data.data, 'dsadjsakljdskaljdaskljdklsajdklasjkdlsa')
if (data.data.code == 10000) {
this.equinoctial = data.data.data
if(mid!=undefined){
this.getSecond(mid)
}else{
this.getSecond(data.data.data[0].marketingId)
if (data.data.data) {
this.equinoctial = data.data.data
if (mid != undefined) {
this.getSecond(mid)
} else {
this.getSecond(data.data.data[0].marketingId)
}
}
} else {
uni.showToast({
@@ -428,7 +442,7 @@
filters: {
//格式化时间
formatTime(num) {
if (!num) return 0
if (!num) return 0
num = parseInt(num);
//格式化时间格式
num = num.toFixed(0);
@@ -601,6 +615,7 @@
display: flex;
flex-direction: column;


.ceninfo {
position: relative;
margin-top: 20rpx;
@@ -694,5 +709,11 @@
}
}


.empty {
height: 50vh;
display: flex;
align-items: center;
}
}
</style>

+ 125
- 78
pages/learning/Equinoctial/index.vue View File

@@ -33,18 +33,22 @@
<view class="content">
<view v-html="item.onebest"></view>
</view>
<view class="tankuangcss" v-if="startTime==item.bg">
<view style="max-width: 85rpx;padding: 0 10rpx; height: 38rpx;font-size: 24rpx;color: #333333;text-align: center;line-height: 38rpx;
border-radius: 2rpx;border: 1px solid #979797;">标签</view>
<view style="max-width: 171rpx;height: 38rpx;background: #008EF2;border-radius: 2rpx;display: flex;
align-items: center;margin-left: 10rpx;" @click="dianjibiaoqian()">
<view style="width: 126rpx;height: 38rpx;line-height: 38rpx;font-size: 24rpx;color: #FFFFFF;
text-align: center; overflow: hidden;">{{biaoqian}}</view>
<view v-if="biaoqian.length>4" style="width: 37rpx;height: 37rpx;line-height: 37rpx;">
<u-icon name="chat-fill" color="#ffffff" size="32rpx"></u-icon>
<template v-if="refinement(item)">
<view class="tankuangcss">
<view class="tags">标签</view>
<view class="tags-t" @click="dianjibiaoqian()">
<view class="tags-t-c">{{biaoqian}}</view>
<view v-if="biaoqian.length>4" class="tipsss">
<u-icon name="chat-fill" color="#ffffff" size="32rpx"></u-icon>
</view>
</view>
</view>
</view>
<view class="biaoqianya">
<view class="biaoqianyaisshow" v-if="biaoqianyaisshow">
{{biaoqian}}
</view>
</view>
</template>
<view class="biaoqianya" v-if="startTime==item.bg">
<view class="biaoqianyaisshow" v-if="biaoqianyaisshow">
{{biaoqian}}
@@ -54,9 +58,9 @@
</view>
<!-- 点赞 -->
<view class="likeArea" :class="{'liked':isLiked}">
<image
<!-- <image
:src="isLiked?'/static/images/recordingManagement/likeActive.png':'/static/images/recordingManagement/like_gray.png'"
mode=""></image>
mode=""></image> -->
</view>
<view class="hash" id="hash">
</view>
@@ -205,17 +209,36 @@
timer: null,
Bnum: 0, //下拉 转写文件下标
watchAllCommit: false, // 查看全部评论
pageInfo: {}, // 当前转写页面的值

ACTION: Symbol('zaudio'), // 唯一值区分每个页面的方法
isPageHide: false, // 是否息屏
duration: '', // 播放时长
marketingId: 0, // 当前选中的id
};
},


computed: {
// 通过时间戳筛选找到需要展示的加精标签
refinement() {
return timestamp => {
if (this.pageInfo.zatd instanceof Array) {
return this.pageInfo.zatd.findIndex(item => (item.startTime == timestamp.bg && item
.jjTransfer == timestamp.onebest && item.marketingId == this.marketingId)) != -1
} else {
return false
}
}
}
},

onLoad(options) {
this.startTime = options.startTime
this.customerId = options.customerId,
this.biaoqian = options.biaoqian;
this.startFile = options.startFile;
if (options.marketingId) this.marketingId = options.marketingId

this.getdianzan()
this.getCommentList();
@@ -261,54 +284,54 @@

methods: {
borderColor(index) {
let obj = {
color: '',
borderRadius: '',
border: ''
}
switch (index) {
case 1:
obj.color = '#E6625B';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #E6625B';
break;
case 2:
obj.color = '#FF981E';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #FF981E';
break;
case 3:
obj.color = '#F6BD16';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #F6BD16';
break;
case 5:
obj.color = '#4980C8';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #4980C8';
break;
case 6:
obj.color = '#60CBEC';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #60CBEC';
break;
case 7:
obj.color = '##FF981E';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #FF981E';
break;
case 8:
obj.color = '#4F861E';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #4F861E';
break;
default:
obj.color = '#9F61C8';
obj.borderRadius = '8rpx';
obj.border= '2rpx solid #9F61C8';
break;
}
return obj
let obj = {
color: '',
borderRadius: '',
border: ''
}
switch (index) {
case 1:
obj.color = '#E6625B';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #E6625B';
break;
case 2:
obj.color = '#FF981E';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #FF981E';
break;
case 3:
obj.color = '#F6BD16';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #F6BD16';
break;
case 5:
obj.color = '#4980C8';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #4980C8';
break;
case 6:
obj.color = '#60CBEC';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #60CBEC';
break;
case 7:
obj.color = '##FF981E';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #FF981E';
break;
case 8:
obj.color = '#4F861E';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #4F861E';
break;
default:
obj.color = '#9F61C8';
obj.borderRadius = '8rpx';
obj.border = '2rpx solid #9F61C8';
break;
}
return obj
},
addHot() {
// console.log('30')
@@ -323,21 +346,7 @@
this.$u.get('/addtodigest/addPageviews', {
id: this.customerId
})
.then(res => {
// console.log(res)
})
// uni.request({
// url: config.service.getView,
// method: "POST",
// data: {id:this.customerId},
// header: {
// 'content-type': 'application/json',
// 'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token
// },
// success: (data) => {
// console.log(data)
// }
// })
.then(res => {})
},
TimeUpdate(currentTime) {
this.playNow = Number(currentTime)
@@ -574,6 +583,7 @@
},
success: (data) => {
if (data.data.code == 10000) {
this.pageInfo = data.data.data
const jsonInfo = JSON.parse(data.data.data.audioContent);
this.dialogList.push({
message: jsonInfo
@@ -863,6 +873,43 @@
}
}

.tags {
max-width: 85rpx;
height: 38rpx;
font-size: 24rpx;
color: #333333;
text-align: center;
line-height: 38rpx;
border-radius: 2rpx;
border: 1px solid #979797;
}

.tags-t {
max-width: 171rpx;
height: 38rpx;
background: #008EF2;
border-radius: 2rpx;
display: flex;
align-items: center;
margin-left: 10rpx;

.tags-t-c {
width: 126rpx;
height: 38rpx;
line-height: 38rpx;
font-size: 24rpx;
color: #FFFFFF;
text-align: center;
overflow: hidden;

.tipsss {
width: 37rpx;
height: 37rpx;
line-height: 37rpx;
}
}
}

.biaoqiantom {
background-color: #008EF2;
color: #FFFFFF;
@@ -1361,7 +1408,7 @@
}

.scroll-Y .text .avatar {
text{
text {

display: block;
width: 72rpx;
@@ -1411,10 +1458,10 @@
display: flex;
justify-content: center;
align-items: center;
border: 1rpx solid #C1C2C1;
// border: 1rpx solid #C1C2C1;

&.liked {
border: 1rpx solid rgba(21, 144, 233, 1);
// border: 1rpx solid rgba(21, 144, 233, 1);
}

image {


+ 106
- 68
pages/mine/details.vue View File

@@ -54,21 +54,37 @@
<text :style="[borderColor(item.speaker)]">{{ item.speaker | toCapital }}</text>
</view>
<view class="content">
<view @longpress="changanxiaoguo(item,index,i)" v-html="item.onebest"></view>
<view class="tankuangcss" v-if="item.isshow">
<view @click="clickcopy()"
style="width: 60rpx;font-size: 24rpx;text-align: center;margin-left: 24rpx;">复制
</view>
<view @click="Oftenthewrongword()" v-if="permissions.commonly4"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">常错词
</view>
<view @click="Addtheessence()" v-if="permissions.commonly3"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">加精华
</view>
<view @click="clickbofang(dialog.backindex,item)"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 14rpx;">播放
</view>
<view class="contentdesc" @longpress="changanxiaoguo(item,index,i)" v-html="item.onebest">
</view>

<image v-if="Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow"
class="play" src="https://static.quhouse.com/ce73a5225f7f44be9f313b0e4e4c2c0e.png">
</image>
<image v-else @click="clickbofang(dialog.backindex,item)" class="play"
src="https://static.quhouse.com/1b6ac53247e043a1bdc59ecfb2167eba.png"></image>

<template v-if="item.isshow">
<view class="tankuangcss">
<view class="tankuangcss-items" @click="clickcopy()">
<image src="@/static/images/detail/icon1.png" mode=""></image>
<text>复制</text>
</view>
<view class="tankuangcss-items" @click="Oftenthewrongword()"
v-if="permissions.commonly4">
<image src="@/static/images/detail/icon2.png" mode=""></image>
<text>常错词</text>
</view>
<view class="tankuangcss-items" @click="Addtheessence()"
v-if="permissions.commonly3">
<image src="@/static/images/detail/icon3.png" mode=""></image>
<text>加精华</text>
</view>
<!-- <view class="tankuangcss-items" @click="clickbofang(dialog.backindex,item)">
<image src="@/static/images/detail/icon4.png" mode=""></image>
<text>播放</text>
</view> -->
</view>
</template>
</view>
</view>
</view>
@@ -121,7 +137,7 @@
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">常错词:</viwe>
<viwe class="tian-view-t3">
<textarea :auto-height="true" type="text" v-model="thewrongword" :disabled="isNum"
<u-input :auto-height="true" height="30" type="textarea" v-model="thewrongword" :disabled="isNum"
class="tian-input" placeholder="请输入" />
</viwe>
</view>
@@ -129,31 +145,10 @@
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">正确词:</viwe>
<viwe class="tian-view-t3">
<input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" />
<u-input class="tian-input" height="30" v-model="reswrongword" type="textarea" placeholder="请输入" />
</viwe>
</view>
</u-modal>

<!-- <view class="bounced" v-if="isshow2">
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">常错词:</viwe>
<viwe class="tian-view-t3">
<input type="text" v-model="thewrongword" :disabled="isNum" class="tian-input" placeholder="请输入" />
</viwe>
</view>
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">正确词:</viwe>
<viwe class="tian-view-t3">
<input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" />
</viwe>
</view>
<view class="bounced3">
<view class="bounced3-1" @tap="Cancelout">取消</view>
<view class="bounced3-2" @tap="Confirmtheexit">确认</view>
</view>
</view> -->
<!-- 加精华 -->
<view class="zhezhoa" v-if="isshow3" @tap="Cancelout2"></view>
<view class="bounced" v-if="isshow3">
@@ -187,7 +182,7 @@
</radio-group>
</view>
<view v-if="effectiveindex==4">
<textarea class="ffectivetext" v-model="effectiveitext" placeholder="备注" />
<u-input class="ffectivetext" v-model="effectiveitext" placeholder="备注" />
</view>
</view>
<view class="bounced3">
@@ -806,12 +801,12 @@
changanxiaoguo(item, index, i) {
this.messagelisy = [];
this.changanitem = {};
this.duihuawenjianid = "",
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
this.duihuawenjianid = "";
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.changanitem = item;
this.duihuawenjianid = this.luyinList[this.csdFileindex].id;
this.dialogList[i].message[index].isshow = !this.dialogList[i].message[index].isshow;
@@ -1396,6 +1391,7 @@
}

.scroll-Y .text {
position: relative;
line-height: 42rpx;
display: flex;
margin-top: 30rpx;
@@ -1410,8 +1406,18 @@
text-align: right;

.content {
margin-left: 0;
margin-right: 30rpx;
flex-direction: row-reverse;

.contentdesc {
margin-left: 0;
margin-right: 30rpx;
}

.play {
margin-right: 20rpx;
width: 50rpx;
height: 50rpx;
}
}
}

@@ -1432,44 +1438,75 @@
}

.scroll-Y .text .content {
margin-left: 30rpx;
text-align: left;
padding: 15rpx 20rpx;
line-height: 42rpx;
background: #f8f8f8;
border-radius: 12rpx;
max-width: 460rpx;
color: #505050;
position: relative;
display: flex;
align-items: center;

.contentdesc {
border-radius: 12rpx;
max-width: 460rpx;
margin-left: 30rpx;
text-align: left;
line-height: 42rpx;
padding: 15rpx 20rpx;
background: #f8f8f8;
color: #505050;
}

.play {
width: 50rpx;
height: 50rpx;
margin-left: 20rpx;
}

.tankuangcss {
position: absolute;
top: -140rpx;
left: -120rpx;
width: 308rpx;
height: 130rpx;
background-color: #333333;
font-size: 24rpx;
color: #FFFFFF;
padding-top: 4rpx;
padding-bottom: 4rpx;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
min-width: 150rpx;
height: 140rpx;
display: flex;
flex-wrap: wrap;
background: rgba(48, 48, 48, 0.8);
border-radius: 15rpx;
z-index: 1000;

.play {
width: 50rpx;
height: 50rpx;
margin-left: 20rpx;
}

.tankuangcss-items {
width: 150rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;

image {
width: 36rpx;
height: 36rpx;
}

text {
margin: 12rpx 0 0 0;
font-size: 24rpx;
color: #fff;
}
}
}
}

.scroll-Y .text.active .content {
color: #2671E2 !important;
position: relative;
// position: relative;
}

.scroll-Y .text.active[data-speaker="2"] .content,
.scroll-Y .text.active[data-speaker="4"] .content,
.scroll-Y .text.active[data-speaker="6"] .content {
color: #2671E2 !important;
position: relative;
// position: relative;
}

.tab-box {
@@ -1540,7 +1577,8 @@
width: 115upx;
height: 115upx;
background: rgba(211, 235, 253, 1);
box-shadow: 0 0 10rpx 7rpx #f1f1f1;;
box-shadow: 0 0 10rpx 7rpx #f1f1f1;
;
border-radius: 50%;
position: fixed;
bottom: 300upx;
@@ -1550,7 +1588,7 @@
align-items: center;
color: #008EF2;
}
.backTop {
width: 112rpx;
height: 112rpx;


+ 327
- 213
pages/mine/details2.vue View File

@@ -1,5 +1,5 @@
<template>
<view class="box">
<view class="box" @click="cancelBeast">
<view class="headbox">
<!-- 顶部时间 -->
<view class="headboxhead">
@@ -8,8 +8,8 @@
<!-- 标记顾问 -->
<view class="headboxbott">
<view class="headovfu">
<view class="mytab" v-for="(item,index) in tablist" :key="index" @click="tapspagek(index)">
<view class="tab-item" :class="roleindex==index?'tabActive':''">{{item.name}}</view>
<view class="mytab" v-for="(item,index) in tablist" :key="index" @click="tapspagek(item, index)">
<view class="tab-item" :class="{tabActive: item.select}">{{item.name}}</view>
</view>
</view>
<view v-if="permissions.commonly1" class="headpade">
@@ -27,6 +27,13 @@
:class="{active: Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow, isGreen: item.isShow == 0}"
:data-guwen="item.isShow" :data-speaker="item.speaker"
:id="'dialog'+csdFileindex+'text'+item.bg">
<template v-if="refined">
<view class="checkbox" :class="{select: item.checked}" @click="cbChange(item)">
<template v-if="item.checked">
<u-icon name="checkbox-mark" color="#fff" />
</template>
</view>
</template>
<view class="avatar">
<view>
<image v-if="item.isShow == 0"
@@ -39,33 +46,33 @@
<view class="contentInfo">
<view class="info">
{{ item.speaker | toCapital }} {{conversionTiame(item.bg/1000)}}
<!-- <text class="AudioUserName">{{ item.speaker | toCapital }}</text>
<text>{{conversionTiame(item.bg/1000)}}</text> -->
</view>
<view class="contentMain">
<view class="contentMain" @click.stop>
<view class="content">
<view @longpress.stop="changanxiaoguo(item,index,i)" v-html="item.onebest"></view>
<view class="tankuangcss" :class="{bottoms:index == 0}" v-if="item.isshow">
<view @click="clickcopy"
style="width: 60rpx;font-size: 24rpx;text-align: center;margin-left: 24rpx;">
复制
</view>
<view @click="Oftenthewrongword" v-if="permissions.commonly4"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">
常错词
</view>
<view v-if="permissions.commonly3" @click="Addtheessence()"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 22rpx;">
加精华
</view>
<!-- 暂时注释掉 -->
<!-- <view @click="clickbofang(dialog.backindex,item)"
style="width: 80rpx;font-size: 24rpx;text-align: center;margin-left: 14rpx;">播放
</view> -->
<view @click="Modifyrole(index,item)"
style="font-size: 24rpx;text-align: center;margin-left: 14rpx;">修改角色

<template v-if="item.isshow">
<view class="tankuangcss" :class="{bottoms:index == 0}">
<view class="tankuangcss-items" @click="clickcopy">
<image src="@/static/images/detail/icon1.png" mode=""></image>
<text>复制</text>
</view>
<view v-if="permissions.commonly4" class="tankuangcss-items"
@click="Oftenthewrongword">
<image src="@/static/images/detail/icon2.png" mode=""></image>
<text>常错词</text>
</view>
<view v-if="permissions.commonly3" class="tankuangcss-items"
@click="Addtheessence">
<image src="@/static/images/detail/icon3.png" mode=""></image>
<text>加精华</text>
</view>
<view class="tankuangcss-items" @click="Modifyrole(index,item)">
<image src="@/static/images/detail/icon4.png" mode=""></image>
<text>修改角色</text>
</view>
</view>
</view>
</template>
</view>
<image v-if="Math.floor(item.bg/1000) <= playNow && Math.floor(item.ed/1000) > playNow"
class="play" src="https://static.quhouse.com/ce73a5225f7f44be9f313b0e4e4c2c0e.png">
@@ -78,7 +85,7 @@
</block>
</view>
</scroll-view>
<view class="bottombox">
<view class="bottombox" v-if="!refined">
<!-- 播放块 -->
<zaudio :duration="duration" theme="theme4"></zaudio>
<!-- 底部弹框 -->
@@ -104,6 +111,14 @@
</view>
</view>
</view>
<template v-else>
<view class="bottomboxs">
<view class="bottomboxs-item" @click="sureRefinement">确定</view>
<view class="bottomboxs-item" @click="cancelAllAdd">取消</view>
</view>
</template>


<!-- 更多弹框 -->
<view class="moremodal" v-if="Thetapeidisshow">
<view class="more-cont">
@@ -175,39 +190,22 @@
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">常错词:</viwe>
<viwe class="tian-view-t3">
<textarea :auto-height="true" v-model="thewrongword" :disabled="isNum" class="tian-input"
placeholder="请输入" />
<!-- <textarea :auto-height="true" v-model="thewrongword" class="tian-input"
placeholder="请输入" /> -->
<u-input :auto-height="false" height="30" :disabled="isNum" type="textarea" v-model="thewrongword"
:border="false" class="tian-input" placeholder="请输入" />
</viwe>
</view>
<view class="tian-view" style="margin-bottom: 74rpx;">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">正确词:</viwe>
<viwe class="tian-view-t3">
<input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" />
<u-input class="tian-input" height="30" type="textarea" v-model="reswrongword" :border="false"
placeholder="请输入" />
</viwe>
</view>
</u-modal>

<!-- <view class="bounced" v-if="isshow2">
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">错误词:</viwe>
<viwe class="tian-view-t3">
<input type="text" v-model="thewrongword" :disabled="isNum" class="tian-input" maxlength="8" placeholder="请输入" />
</viwe>
</view>
<view class="tian-view">
<viwe class="tian-view-t1"></viwe>
<viwe class="tian-view-t2">正确词:</viwe>
<viwe class="tian-view-t3">
<input class="tian-input" v-model="reswrongword" type="text" placeholder="请输入" />
</viwe>
</view>
<view class="bounced3">
<view class="bounced3-1" @tap="Cancelout">取消</view>
<view class="bounced3-2" @tap="Confirmtheexit">确认</view>
</view>
</view> -->

<!-- 加精华 -->
<view class="zhezhao" v-if="isshow3" @tap="Cancelout2"></view>
@@ -485,6 +483,9 @@
guanjianciishow: false,
tablist: [],
roleindex: 0,

roleSelectArr: [0], // 当前选中的角色标记点

roleindexbiaoji: -1,
recordPath: "",
customerId: "",
@@ -577,7 +578,8 @@
duration: '', // 总时长
refresh: false, // 默认false
isNum: false,
eqLog: 0
eqLog: 0,
refined: false, // 多选加精;
};
},
computed: {
@@ -652,7 +654,6 @@
this.intention = false;
this.kehuyixiangcenterindex = 0;
this.buildingID = uni.getStorageSync('buildingID').id;
this.roleindex = 0;
if (this.stateisshow == 2) {
var info = this.itemobj;
}!this.isPageHide && this.init(info);
@@ -733,11 +734,7 @@

// 关闭弹窗
close() {
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
this.$forceUpdate();
},
// 添加角色
@@ -766,11 +763,7 @@
}).then(res => {
this.dialogList[this.csdFileindex].message[this.roletiaoshu].speaker = this.roleindexrow + 1
this.roleisshaw = false;
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
uni.showToast({
title: '修改成功',
duration: 2000
@@ -1077,16 +1070,22 @@
},
//确认标记
Confirmthetag() {
var num = this.roleindexbiaoji + 1;
if (this.roleindexbiaoji == -1) {
uni.showToast({
title: '请选择标记角色~',
duration: 2000
});
return
}
let params = {
id: this.luyinList[this.csdFileindex].id,
speaker: num,
speaker: this.roleindexbiaoji + 1,
customerId: this.customerId
}
this.$u.get(config.service.markConsultant, params).then((data) => {
this.biojiisshow = false;
this.biaojiyuyi()
this.fenjiaoseunfo()
this.fenjiaoseunfo('refresh')
uni.showToast({
title: '标记成功',
duration: 2000
@@ -1100,74 +1099,115 @@
}
this.$u.post("/matchKeywords/toMatchKeywords", parames).then(res => {})
},

//分角色
tapspagek(index) {
this.roleindex = index;
this.newluyinList = [];
tapspagek(data, index) {
if (index == 0) this.resetTabList();
else this.resetAll();
data.select = !data.select
this.roleSelectArr = []
if (index != 0) {
this.tablist.forEach(item => {
if (item.select) {
this.roleSelectArr.push(item.speaker)
}
})
} else {
this.roleSelectArr.push(0)
}
this.fenjiaoseunfo()
},
//分角色标记刷新
fenjiaoseunfo() {
var bgcd = this.playNow * 1000;
this.newluyinList = [];
this.dialogList = [];
console.log(this.playNow, '当前播放时长')
let obj = {
corpusId: this.luyinList[this.csdFileindex].id,
bg: bgcd,
speaker: this.roleindex
}
this.$u.get(config.service.getCorpusAnal, obj).then((data) => {
this.tablist = [];
let jsonInfo = JSON.parse(data.audioContent);
for (var i = 0; i <= data.speakerNum; i++) {
if (i === 0) {
this.tablist.push({
name: '全部'
})
} else {
this.tablist.push({
name: String.fromCharCode(i + 64)
})
}
}

if (data.speaker == null) {
this.roleindexbiaoji = 0;
this.dshfkjsdkksodofydwfkhwdfkjh = 0;
} else {
this.tablist[data.speaker].name = this.tablist[data.speaker]
.name + "顾问";
// 选中全部时互斥全部选项与角色选项
resetTabList() {
this.tablist.forEach(item => {
item.select = false
})
},

this.roleindexbiaoji = data.speaker - 1;
this.dshfkjsdkksodofydwfkhwdfkjh = data.speaker - 1;
}
// 选中角色时将全部反选
resetAll() {
this.tablist[0].select = false
},

if (this.roleindex > this.tablist.length - 1) {
this.roleindex = this.tablist.length - 1
this.fenjiaoseunfo()
// 生成角色列表
creatTabList(num) {
for (var i = 0; i <= num; i++) {
if (i === 0) {
this.tablist.push({
name: '全部',
select: false,
speaker: i
})
} else {
this.tablist.push({
name: String.fromCharCode(i + 64),
select: false,
speaker: i
})
}
}
},

// 获取flag
getVoFlagValue() {
return this.roleSelectArr.findIndex(item => item == 0) == -1 ? 1 : 0
},

this.speaker = data.speaker;
//上拉标记点
this.textindex = data.index;
//下拉标记点
this.toptextindex = data.index;
//分角色标记刷新
fenjiaoseunfo(type) {
this.newluyinList = [];
this.dialogList = [];
let str =
`?corpusId=${this.luyinList[this.csdFileindex].id}&bg=${this.playNow * 1000}&speaker=0&voFlag=${this.getVoFlagValue()}&num=50`
if (this.roleSelectArr.findIndex(item => item == 0) == -1) {
str += `&speakerStr=${this.roleSelectArr.join(',')}`
}

jsonInfo.forEach(item => {
item.message = JSON.parse(item.onebest)
item.backindex = this.csdFileindex
})
uni.request({
url: `${config.service.getCorpusAnal}${str}`,
method: "GET",
header: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token
},
success: (data) => {
let res = data.data.data
let jsonInfo = JSON.parse(res.audioContent);
//上拉标记点
this.textindex = res.index;
//下拉标记点
this.toptextindex = res.index;
jsonInfo.forEach(item => {
item.message = JSON.parse(item.onebest)
item.backindex = this.csdFileindex
item.message.forEach(info => {
info.checked = false
})
})
// 当页面标记重新刷新时
if (type == 'refresh') {
this.tablist = []
this.roleSelectArr = [0]
this.creatTabList(res.speakerNum)
this.tablist[0].select = true
this.tablist[res.speaker].name = this.tablist[res.speaker].name + "顾问";
}
if (this.roleSelectArr.length == 0) {
this.tablist[0].select = true
}

this.newluyinList = jsonInfo;
if (this.textindex == null) {
return
} else {
this.dialogList.push(jsonInfo[this.textindex]);
this.newluyinList = jsonInfo;
if (this.textindex == null) {
return
} else {
this.dialogList.push(jsonInfo[this.textindex]);
}
}
})
},


toKeywordsearch() {
this.stateisshow = 1;
uni.navigateTo({
@@ -1428,11 +1468,7 @@
let sas = this.textItself.replace(this.thewrongword, this.reswrongword)
this.dialogList[this.argtextindex1].message[this.argtextindex2].onebest = sas

this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
this.$u.post("/corpus/addCorrectWord", parames).then(data => {
this.thewrongword = "";
this.reswrongword = "";
@@ -1460,11 +1496,7 @@
//取消加入常错词
Cancelout() {
this.isshow2 = false;
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
},
//加入长错词
Oftenthewrongword() {
@@ -1476,8 +1508,42 @@
this.isNum = true
}
},

// 选中取反
cbChange(item) {
item.checked = !item.checked
this.$forceUpdate()
},
// 隐藏长按提示框
cancelBeast() {
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
},

//加精华
Addtheessence() {
this.refined = true
this.cancelBeast()
},

// 重置选择加精的内容
cancelAllAdd() {
console.log('chufa')
this.dialogList.forEach(item => {
if (item.message && item.message.length > 0) {
item.message.forEach(items => {
items.checked = false
})
}
})
this.refined = false
// this.$forceUpdate()
},
// 确认批量加精
sureRefinement() {
this.isshow3 = true;
this.biaoqianlist = []
let parames = {
@@ -1491,15 +1557,13 @@
})
})
},

// 取消加精
Cancelout2() {
this.isshow3 = false;
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
},

// 确认加精
Confirmtheexit2() {
if (this.biaoqianid) {
@@ -1508,54 +1572,62 @@
this.biaoqianid = 0
}
this.isshow3 = false;
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
let objdata = {
"itemId": this.buildingID,
"carId": this.customerId, //客户id
"startTime": this.changanitem.bg, //开始时间
"startFile": this.duihuawenjianid, //对话所在录音文件id
"endTime": this.changanitem.ed, //结束时间
"marketingId": this.biaoqianid, //对应一级父id
"jjTransfer": this.changanitem.onebest, //选中对话
"status": 1
itemId: this.buildingID,
carId: this.customerId, //客户id
status: 1,
startFile: this.duihuawenjianid, //对话所在录音文件id
marketingId: this.biaoqianid, //对应一级父id

// jjTransfer: this.changanitem.onebest, //选中对话
// endTime: this.changanitem.ed, //结束时间
// startTime: this.changanitem.bg, //开始时间

toDigestList: [], // 加精多选的内容
// jjTransfer: this.changanitem.onebest, //选中对话
// endTime: this.changanitem.ed, //结束时间
// startTime: this.changanitem.bg, //开始时间
}
uni.request({
url: config.service.addATD,
method: "POST",
header: {
'content-type': 'application/json',
'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token
},
data: objdata,
success: (data) => {
if (data.data.code == 10000) {
uni.showToast({
title: '加精成功',
duration: 2000
});
} else {
uni.showToast({
title: data.data.message,
duration: 2000
});
}
// 将数据筛选出来并排序并且翻转数据让后端获取第一条加精的数据在分点加精的学习列表使用
this.dialogList.forEach(items => {
if (items.message && items.message.length > 0) {
items.message.forEach(item => {
if (item.checked) {
objdata.toDigestList.push({
jjTransfer: item.onebest,
startTime: item.bg,
endTime: item.ed,
})
}
})
}
})
objdata.toDigestList.sort((a, b) => {
return Number(a.startTime) - Number(b.startTime)
}).reverse()
this.isshow3 = false;
this.$u.post(config.service.addATD, objdata).then(res => {
console.log(res)
uni.showToast({
title: '加精成功',
duration: 2000
});
this.cancelAllAdd()
}).catch(e => {
uni.showToast({
title: '网络异常,请稍候重试~',
duration: 2000
});
this.cancelAllAdd()
})
},
//长按对话
changanxiaoguo(item, index, i) {
this.messagelisy = [];
this.changanitem = {};
this.duihuawenjianid = "",
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.duihuawenjianid = "";
this.cancelBeast()
this.changanitem = item;
this.duihuawenjianid = this.luyinList[this.csdFileindex].id;
this.dialogList[i].message[index].isshow = !this.dialogList[i].message[index].isshow;
@@ -1671,7 +1743,7 @@
this.newluyinList = []
uni.request({
url: config.service.getCorpusAnal + '?corpusId=' + this.luyinList[this.csdFileindex].id +
"&bg=" + info.bg + "&speaker=" + this.roleindex, //仅为示例,并非真实接口地址。
"&bg=" + info.bg + "&speaker=" + this.roleindex + '&num=50', //仅为示例,并非真实接口地址。
method: "GET",
header: {
'content-type': 'application/json',
@@ -1682,18 +1754,8 @@
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)
})
}
}

this.creatTabList(data.data.data.speakerNum)
this.tablist[0].select = true // 默认选中第一个
if (data.data.data.speaker == null) {
this.roleindexbiaoji = -1;
this.dshfkjsdkksodofydwfkhwdfkjh = -1;
@@ -1704,7 +1766,6 @@
this.dshfkjsdkksodofydwfkhwdfkjh = data.data.data.speaker - 1;
}

this.speaker = data.data.data.speaker;
//上拉标记点
this.textindex = data.data.data.index;
//下拉标记点
@@ -1758,11 +1819,7 @@

//长按点击播放
clickbofang(dialog, item) {
this.dialogList.forEach(res => {
res.message.forEach(asd => {
asd.isshow = false;
})
})
this.cancelBeast()
this.$forceUpdate()
let platetime = item.bg;
let newtime = Math.floor(item.bg / 1000);
@@ -1933,6 +1990,26 @@
align-items: center;
}
}


.bottomboxs {
width: 100%;
height: 90rpx;
display: flex;
justify-content: space-around;

.bottomboxs-item {
width: 45%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background: #008EF2;
font-size: 36rpx;
font-weight: bold;
}
}
}

.moremodal {
@@ -2063,12 +2140,13 @@
.headovfu {
flex: 1;
height: 88rpx;
overflow: hidden;
overflow-x: scroll;
display: flex;
align-items: center;

.mytab {
margin-left: 20rpx;
flex-shrink: 0;

.tab-item {
padding: 0 20rpx;
@@ -2090,6 +2168,11 @@
}
}

&::-webkit-scrollbar {
width: 0;
height: 0;
color: transparent;
}
}

.headpade {
@@ -2457,12 +2540,6 @@
width: 100%;
}

.scroll-Y .text {
margin: 30rpx;
line-height: 80rpx;
display: flex;
}

// 顾问默认在右边显示
.scroll-Y .text[data-guwen="0"] // .scroll-Y .text[data-speaker="2"],

@@ -2521,6 +2598,11 @@
}

.scroll-Y .text {
position: relative;
margin: 30rpx;
line-height: 80rpx;
display: flex;
.contentInfo {
.info {
.AudioUserName {
@@ -2572,7 +2654,6 @@
border-radius: 8rpx;
max-width: 442rpx;
background: #F8F8F8;
position: relative;
font-size: 30rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
@@ -2581,18 +2662,33 @@
.tankuangcss {
position: absolute;
top: -140rpx;
left: -120rpx;
width: 308rpx;
height: 130rpx;
background-color: #333333;
font-size: 24rpx;
color: #FFFFFF;
padding-top: 4rpx;
padding-bottom: 4rpx;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
min-width: 150rpx;
height: 140rpx;
display: flex;
flex-wrap: wrap;
background: rgba(48, 48, 48, 0.8);
border-radius: 15rpx;
z-index: 1000;

.tankuangcss-items {
width: 150rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;

image {
width: 36rpx;
height: 36rpx;
}

text {
margin: 12rpx 0 0 0;
font-size: 24rpx;
color: #fff;
}
}
}

.bottoms {
@@ -2880,12 +2976,12 @@

.scroll-Y .text.active .content {
color: #2671E2 !important;
position: relative;
// position: relative;
}

.scroll-Y .text.active .info {
color: #2671E2 !important;
position: relative;
// position: relative;
}

.scroll-Y .text.active[data-speaker] .content,
@@ -2893,10 +2989,28 @@
.scroll-Y .text.active[data-speaker="4"] .content,
.scroll-Y .text.active[data-speaker="6"] .content {
color: #2671E2 !important;
position: relative;
// position: relative;
}

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


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

&.select {
border-color: #008EF2;
background: #008EF2;
color: #fff;
}
}
</style>

+ 43
- 9
pages/mine/reception/addreception.vue View File

@@ -69,7 +69,7 @@
</view>
</view>
<view class="clive" @click="$noMultipleClicks(save)">确定</view>
<u-select :mask-close-able="false" v-model="Showhiddenunits" mode="single-column" :list="list" @cancel="cancel"
<u-select :mask-close-able="false" v-model="Showhiddenunits" mode="single-column" value-name="id" label-name="sourceName" :list="list" @cancel="cancel"
@confirm="confirm"></u-select>
<u-select :mask-close-able="false" v-model="Showhid" mode="single-column" :list="freeList" @cancel="cancel1"
@confirm="confirm1"></u-select>
@@ -118,22 +118,48 @@
canceltext: '2', //取消文字
daitiReceptionobj: {},
isShow: false, // 默认隐藏该权限
userInfo: {}, // 用户信息
isPass: false, // 当前顾问是否正在接待
fromBack: false, // 从选择顾问页面跳回
};
},

computed: {
// 用户详情
userInfo() {
return uni.getStorageSync("weapp_session_userInfo_data")
},
},
onLoad() {
this.userInfo = uni.getStorageSync('weapp_session_userInfo_data');
console.log(this.userInfo, 'adkljsakldjaskljdklasjdklsajdklasjdklasjdlk')
uni.$on('addreception', customerId => {
let obj = this.freeList.find(item => item.agentId == customerId)
this.fromBack = true
this.text = obj.name;
this.parames.agentId = customerId;
})
},

onUnload() {
uni.$off('addreception')
},
onShow() {
let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
this.isShow = newmenulist.jd_zp
this.parames.projectId = uni.getStorageSync('buildingID').id;
this.getFreeList();
this.zkAgentPoolSourceList();
},
methods: {
// 获取客户来源
zkAgentPoolSourceList() {
this.$u.get('/zkAgentPool/source/list', { houseId: this.parames.projectId }).then(res => {
console.log(res)
if (res) {
this.list = res
}
})
},
//取消
confirmA() {
if (this.daitiReceptionobj.assign != null) {
@@ -283,7 +309,10 @@
duration: 2000
});
} else {
this.Showhid = true;
// this.Showhid = true;
uni.navigateTo({
url: `/pages/mine/reception/consultant?from=addreception&id=${this.parames.agentId}&chosedAgentId=${this.parames.agentId}`
})
}
},
cancel1() {
@@ -302,7 +331,9 @@
this.Showhiddenunits = false;
},
confirm(e) {
this.parames.sourceName = e[0].value;
console.log(e)
this.parames.sourceName = e[0].label;
this.parames.source = e[0].value;
this.Showhiddenunits = false;
},
//获取顾问列表
@@ -319,9 +350,12 @@
item.label = item.name + "(无设备)";
}
item.value = item.agentId
if (this.userInfo.accountId == item.agentId) {
this.text = item.label
this.parames.agentId = item.agentId;
// 从选择顾问页面跳回时需阻断用当前登录人的顾问id选中自身
if (!this.fromBack) {
if (this.userInfo.accountId == item.agentId) {
this.text = item.label
this.parames.agentId = item.agentId;
}
}
})
})


+ 210
- 52
pages/mine/reception/consultant.vue View File

@@ -4,6 +4,15 @@
<view class="nextcon">
下一位接待顾问:{{textcdhSKJ}}
</view>
<!-- 搜索筛选顾问 -->
<view class="search-tag" :class="{ pdBtm: isShowBtn }">
<u-search v-model="keywords" @search="searchFunc" @input="searchFunc" bgColor="#F8F8F8" shape="round" placeholder="顾问名称"
:showAction="false" :clearabled="true"></u-search>

<view class="tabs-box" v-if="list.length > 0">
<u-tabs :list="list" :current="listCurrent" name="deptName" @change="change"></u-tabs>
</view>
</view>
<view class="content" style="padding-bottom: 200rpx;">
<radio-group @change="radioChange">
<view v-for="(item,index) in freeList" :key="index" class="content-tips">
@@ -13,7 +22,8 @@
</view>
<view class="text">
<view class="name">
{{item.name}}
<text class="names">{{item.name}}</text>
<text :class="item.class">{{ item.label }}</text>
</view>
<view class="num">
今日接待: {{item.todayNum}}
@@ -33,7 +43,7 @@
暂无空闲顾问
</view>
</view>
<view class="save" @click="save" :class="{active:chosedAgentId}">
<view v-if="freeList.length > 0" class="save" @click="save" :class="{active:chosedAgentId}">
保存
</view>

@@ -58,23 +68,107 @@
chosedAgentId: '',
textcdhSKJ: '',
show: false,
content: '东临碣石,以观沧海',
confirmtext: '1', //确认文字
canceltext: '2', //取消文字
content: '',
confirmtext: '', //确认文字
canceltext: '', //取消文字
daitiReceptionobj: {},
replaceReception: 0
replaceReception: 0,

keywords: '', // 关键词
list: [], // 部门列表
listCurrent: 0, //选中分类下标
from: '', // 来源页面需要通知的事件
}
},
computed: {
isShowBtn() {
return this.list.length > 0
}
},
onLoad(option) {
this.LOADING = true
this.customerId = option.id;
this.freeList = []
if (option.id) this.customerId = option.id;
if (option.from) this.from = option.from
if (option.chosedAgentId) this.chosedAgentId = option.chosedAgentId
},
onShow() {
async onShow() {
this.buildingID = uni.getStorageSync('buildingID').id;
this.getFreeList();
await this.iniPage()
},
methods: {
change(e) {
console.log(e)
this.keywords = ''
this.listCurrent = Number(e)
this.getFreeList();
},

//
searchFunc() {
this.getFreeList();
},

async iniPage() {
await this.getAllDeptName()
await this.getFreeList();
},
// 获取顾问列表
async getAllDeptName() {
try {
let res = await this.$u.get(`/zkAgentPool/getAllDeptName?itemId=${this.buildingID}`)
console.log(res)
if (res && res.length > 0) {
res.unshift({
deptId: '',
deptName: '全部'
})
this.list = res
}
} catch (e) {
console.log(e)
}
},

// 获取空闲顾问
async getFreeList() {
try {
let deptId = this.list.length > 0 ? this.list[this.listCurrent].deptId : ''
// deptId 部门id
// name 顾问名称"
let res = await this.$u.get(
`/zkAgentPool/freeList?itemId=${this.buildingID}&name=${this.keywords||''}&deptId=${deptId}`
)
if (res.length == 0) {
this.freeList = []
} else {
// 回显上次选中的顾问
if (this.from != '' && this.id != '') {
this.current = res.findIndex(item => item.agentId == this.customerId)
}
this.freeList = res;

this.freeList.forEach(item => {
if (item.onLine == 0) {
item.label = "(离线)";
item.class = 'red'
} else if (item.onLine == 1) {
item.label = "(在线)";
item.class = 'gren'
} else {
item.label = "(无设备)";
item.class = 'none'
}
})
this.textcdhSKJ = res[0].name
}
this.LOADING = false
} catch (e) {
this.LOADING = false
}
},
//取消
confirmA() {
if (this.daitiReceptionobj.assign != null) {
@@ -101,6 +195,14 @@
})
return
}

// 如果是从其他页面跳转过来的
if (this.from) {
uni.$emit(this.from, this.chosedAgentId)
uni.navigateBack()
return
}

const that = this;
this.$u.post("customer/daitiReception", {
agentId: that.chosedAgentId,
@@ -155,20 +257,7 @@
uni.hideLoading();
});
},
getFreeList() {
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: function(evt) {
radioChange(evt) {
this.chosedAgentId = '';
this.chosedAgentId = evt.detail.value;
},
@@ -197,6 +286,8 @@
}
}



.save {
position: fixed;
width: calc(100vw - 60rpx);
@@ -219,8 +310,11 @@
font-size: 30rpx;
font-weight: 400;

// line-height: 30px;
.nextcon {
position: sticky;
top: 0;
z-index: 9999;
flex-shrink: 0;
height: 78rpx;
background: #F4F8FD;
color: #2671E2;
@@ -228,44 +322,108 @@
line-height: 78rpx;
}

.content-tips {
display: flex;
justify-content: space-between;
.search-tag {
position: sticky;
top: 78rpx;
z-index: 9999;
margin: 0 0 20rpx 0;
padding: 30rpx;
background: #fff;
padding: 0 30rpx;
height: 148rpx;
margin-bottom: 20rpx;
}

.left {
.pdBtm {
padding: 30rpx 30rpx 0;
}

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

.content-tips {
display: flex;
margin-top: 30rpx;

.img {
width: 72rpx;
height: 72rpx;
background: #FFFFFF;
border: 1px solid #C9C9C9;
line-height: 64rpx;
text-align: center;
border-radius: 50%;
margin-right: 20rpx;
}
justify-content: space-between;
background: #fff;
padding: 0 30rpx;
height: 148rpx;
margin-bottom: 20rpx;

.left {
display: flex;
margin-top: 30rpx;

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

.text {
.name {
margin-top: 4rpx;
margin-bottom: 24rpx;
line-height: 30rpx;

.names {
font-weight: 600;
color: #333333;
}

.red {
margin-left: 10rpx;
color: #E7483C;
font-size: 28rpx;
}

.gren {
margin-left: 10rpx;
color: #43CD80;
font-size: 28rpx;
}

.none {
margin-left: 10rpx;
color: #999;
font-size: 28rpx;
}
}

}
}

.right {
margin: 54rpx 0;
}
}

.right {
margin: 54rpx 0;

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

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

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



}
</style>

BIN
static/images/detail/icon1.png View File

Before After
Width: 72  |  Height: 72  |  Size: 1.1 KiB

BIN
static/images/detail/icon2.png View File

Before After
Width: 72  |  Height: 72  |  Size: 1.6 KiB

BIN
static/images/detail/icon3.png View File

Before After
Width: 72  |  Height: 72  |  Size: 1.6 KiB

BIN
static/images/detail/icon4.png View File

Before After
Width: 72  |  Height: 72  |  Size: 1.8 KiB

+ 2
- 1
utils/domain.js View File

@@ -1,7 +1,8 @@
/**
* env文件里配置自定义运行菜单每一个js代表一个域名
*/
const base = process.env.ENV_PATH == undefined ? require('../env/dev.js') : require(process.env.ENV_PATH)
const obj = process.env.ENV_PATH == undefined ? require('../env/dev.js') : require(process.env.ENV_PATH)
const base = obj.baseUrl
// http.js使用
const baseUrl = `${base}/autoSR/api`;
// config 使用


Loading…
Cancel
Save