|
|
@@ -482,7 +482,7 @@ |
|
|
|
<el-radio-group v-model="zhixingcenterindex" size="small"> |
|
|
|
<el-radio-button :label="0" >销讲总执行率{{ userinformationlist.fraction || 0 }}%</el-radio-button> |
|
|
|
<el-radio-button :label="1">禁忌执行</el-radio-button> |
|
|
|
<el-radio-button :label="2">需求挖掘率</el-radio-button> |
|
|
|
<el-radio-button :label="2">需求挖掘率{{ userinformationlist.fraction || 0 }}%</el-radio-button> |
|
|
|
</el-radio-group> |
|
|
|
</div> |
|
|
|
|
|
|
@@ -512,8 +512,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 销讲 --> |
|
|
|
<div id="zxldiv" v-if="zhixingcenterindex == 0"> |
|
|
|
<div class="zxlBox" v-for="(item, index) in ratelist" :key="index"> |
|
|
|
<div class="zxlLev1" @click="changeshow(index)"> |
|
|
@@ -594,7 +593,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 禁忌执行 --> |
|
|
|
<div |
|
|
|
id="zxldiv" |
|
|
|
v-if="zhixingcenterindex == 1" |
|
|
@@ -609,7 +608,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<!-- 需求挖掘 --> |
|
|
|
<div v-if="zhixingcenterindex == 2"> |
|
|
|
<div v-if="zhixingcenterindex == 2"> |
|
|
|
<div |
|
|
|
style=" |
|
|
|
width: 100%; |
|
|
@@ -622,89 +621,79 @@ |
|
|
|
> |
|
|
|
<div style="width: 40%;font-size: 16px;color: #333333;text-indent: 20px;" > 指标 </div> |
|
|
|
<div style="width: 20%; flex: 1; font-size: 16px; color: #333333">执行</div> |
|
|
|
<div style="width: 40%; flex: 1; font-size: 16px; color: #333333"> |
|
|
|
匹配标签 |
|
|
|
</div> |
|
|
|
<div style="width: 40%; flex: 1; font-size: 16px; color: #333333">匹配标签</div> |
|
|
|
</div> |
|
|
|
<div id="zxldiv" v-if="zhixingcenterindex == 2"> |
|
|
|
<div class="zxlBox" v-for="(item, index) in ratelist" :key="index"> |
|
|
|
<div class="zxlLev1" @click="changeshow(index)"> |
|
|
|
<div style="width: 40%" class="zxlLev1box"> |
|
|
|
{{ item.name }} |
|
|
|
</div> |
|
|
|
<div style="width: 60%; display: flex; align-items: center"> |
|
|
|
<div |
|
|
|
style=" |
|
|
|
width: 100%; |
|
|
|
height: 16px; |
|
|
|
background: #c8e8e4; |
|
|
|
border-radius: 8px; |
|
|
|
position: relative; |
|
|
|
" |
|
|
|
> |
|
|
|
<div |
|
|
|
:style="{ |
|
|
|
width: |
|
|
|
( |
|
|
|
(item.ratepercent / item.rate).toFixed(2) * 100 |
|
|
|
).toFixed() + '%', |
|
|
|
height: '16px', |
|
|
|
background: '#07B79D', |
|
|
|
borderRadius: '8px', |
|
|
|
}" |
|
|
|
></div> |
|
|
|
<span |
|
|
|
style=" |
|
|
|
position: absolute; |
|
|
|
top: -12px; |
|
|
|
font-size: 10px; |
|
|
|
right: 12px; |
|
|
|
color: #000; |
|
|
|
" |
|
|
|
>{{ |
|
|
|
( |
|
|
|
(item.ratepercent / item.rate).toFixed(2) * 100 |
|
|
|
).toFixed() |
|
|
|
}}%</span |
|
|
|
> |
|
|
|
</div> |
|
|
|
<div id="zxldiv" v-if="zhixingcenterindex == 2"> |
|
|
|
<div style="width: 100%;" v-for="(item,index) in keyWordsList" :key="index"> |
|
|
|
<!-- 有二级--> |
|
|
|
<div v-if="item.children.length"> |
|
|
|
<div class="rateboxcenttit" @click="changeshow1(item)" style="cursor:pointer"> |
|
|
|
<div style="flex:1">{{item.name}} </div> |
|
|
|
<div style="flex:1">执行{{item.fraction||0}}%</div> |
|
|
|
<div style="flex:1" v-if="item.keywordsList&&item.keywordsList.length">已匹配({{item.keywordsList&&item.keywordsList.length}})</div> |
|
|
|
<div style="flex:1" v-else>未匹配</div> |
|
|
|
<div style="flex:0 0 18px"> |
|
|
|
<i v-if="item.show" style="font-size: 18px" class="el-icon-arrow-up"></i> |
|
|
|
<i v-else style="font-size: 18px" class="el-icon-arrow-down"></i> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-if="item.show" v-for="(subitem,i) in item.children" :key="i" > |
|
|
|
<el-tooltip placement="bottom" effect="light"> |
|
|
|
<div slot="content"> |
|
|
|
<div class="huashu-title">客户标签:{{getKeywordsList(subitem.keywordsList)}}</div> |
|
|
|
<div class="huashu-title">需求挖掘话术</div> |
|
|
|
<div class="huashu"> |
|
|
|
<div class="huashu-item" v-for="(question,questionindex) in subitem.modelList" :key="questionindex"> |
|
|
|
<i class="el-icon-success" :style="question.isAskQuestions==0?'color: #409eff':question.isAskQuestions==2?'color: orange':'color: #666'"></i> |
|
|
|
<div class="text" :style="question.isAskQuestions==0?'color: #409eff':question.isAskQuestions==2?'color: orange':'color:#666'">{{question.showFormatExpression||question.keywordsName}}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="rateboxcent"> |
|
|
|
<div>{{subitem.name}}</div> |
|
|
|
<div> |
|
|
|
<div class="ratebutton" v-if="subitem.isAskQuestions==0">已执行</div> |
|
|
|
<div class="ratebutton1" v-else>未执行</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div class="ratebutton" v-if="subitem.selected==0">已匹配</div> |
|
|
|
<div class="ratebutton1" v-else>未匹配</div> |
|
|
|
</div> |
|
|
|
<div style="flex:0 0 18px"></div> |
|
|
|
</div> |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="width: 40px; text-align: center"> |
|
|
|
<i |
|
|
|
v-if="item.show == true" |
|
|
|
style="font-size: 18px" |
|
|
|
class="el-icon-arrow-up" |
|
|
|
></i> |
|
|
|
<i |
|
|
|
v-if="item.show == false" |
|
|
|
style="font-size: 18px" |
|
|
|
class="el-icon-arrow-down" |
|
|
|
></i> |
|
|
|
<!-- 只有一级标签 --> |
|
|
|
<div v-if="item.children.length==0"> |
|
|
|
<div class="rateboxcenttit" style="cursor:pointer"> |
|
|
|
<el-tooltip placement="bottom" effect="light"> |
|
|
|
<div slot="content"> |
|
|
|
<div class="huashu-title">客户标签:{{getKeywordsList(item.keywordsList)}}</div> |
|
|
|
<div class="huashu-title">需求挖掘话术</div> |
|
|
|
<div class="huashu"> |
|
|
|
<div class="huashu-item" v-for="(question,index) in item.modelList" :key="index"> |
|
|
|
<i class="el-icon-success" :style="question.isAskQuestions==0?'color: #409eff':question.isAskQuestions==2?'color: orange':'color: #666'"></i> |
|
|
|
<div class="text" :style="question.isAskQuestions==0?'color: #409eff':question.isAskQuestions==2?'color: orange':'color: #666'">{{question.showFormatExpression||question.keywordsName}}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div style="display: flex"> |
|
|
|
<div style="flex:1">{{item.name}} </div> |
|
|
|
<div style="flex:1">执行{{item.fraction||0}}%</div> |
|
|
|
<div style="flex:1" v-if="item.keywordsList&&item.keywordsList.length">已匹配({{item.keywordsList&&item.keywordsList.length}})</div> |
|
|
|
<div style="flex:1" v-else>未匹配</div> |
|
|
|
<div style="flex:0 0 18px"></div> |
|
|
|
</div> |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
class="zxlLev2" |
|
|
|
v-if="item.show" |
|
|
|
v-for="(subitem, i) in item.children" |
|
|
|
:key="i" |
|
|
|
> |
|
|
|
<div |
|
|
|
style=" |
|
|
|
width: 40%; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
white-space: nowrap; |
|
|
|
" |
|
|
|
class="zxlLev2tit" |
|
|
|
> |
|
|
|
{{ subitem.name }} |
|
|
|
</div> |
|
|
|
<div style="width: 60%; display: flex; align-items: center"> |
|
|
|
<div class="zxlzx" v-if="!subitem.selected">已执行</div> |
|
|
|
<div v-else class="zxlzx2">未执行</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="mydesc" v-if="zhixingcenterindex==2"> |
|
|
|
<span style="color: #409eff"><i class="el-icon-success" style="margin-right:5px"></i>本次接待执行</span> |
|
|
|
<span style="color: orange"><i class="el-icon-success" style="margin-right:5px"></i>之前接待执行</span> |
|
|
|
<span style="color: gray"><i class="el-icon-success" style="margin-right:5px"></i>未执行</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@@ -1182,6 +1171,7 @@ import { saveAs } from "file-saver"; |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
keyWordsList: [], |
|
|
|
imgArr: ['', 'https://static.quhouse.com/37e0de3f8d1c421dac8bf699d5e7992d.png', 'https://static.quhouse.com/b106e8e75db24a59a579a15a78830a76.png', 'https://static.quhouse.com/8443a2ecb81d4639991ab29c422e9949.png', 'https://static.quhouse.com/1cd794cb6c974d9dad948a6dd444518b.png',], |
|
|
|
mg: 0, |
|
|
|
recordsText: [], |
|
|
@@ -1276,6 +1266,7 @@ export default { |
|
|
|
this.fileId = this.$route.query.flag; |
|
|
|
this.AudioIdx = this.$route.query.AudioIdx; |
|
|
|
this.info = getStore({ name: "userInfo" }); |
|
|
|
this.findKeyWordsBycusId(); |
|
|
|
this.init(); |
|
|
|
}, |
|
|
|
computed: { |
|
|
@@ -1337,6 +1328,95 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
changeshow1(item){ |
|
|
|
item.show = !item.show |
|
|
|
}, |
|
|
|
//挖掘率话术客户标签展示 |
|
|
|
getKeywordsList(list){ |
|
|
|
let keywords = [] |
|
|
|
if(list&&list.length){ |
|
|
|
keywords = list.map(item=>item.name) |
|
|
|
}else{ |
|
|
|
return '--' |
|
|
|
} |
|
|
|
return keywords.join(',') |
|
|
|
}, |
|
|
|
//需求挖掘率-需求话术 |
|
|
|
findKeyWordsBycusId() { |
|
|
|
// axios({ |
|
|
|
// url: `${jypath}/customer/findKeyWordsBycusId`, |
|
|
|
// method: 'get', |
|
|
|
// params: { |
|
|
|
// cusId: this.fileId |
|
|
|
// } |
|
|
|
// }).then(data => { |
|
|
|
// if (data.data.res == 1) { |
|
|
|
// // console.log(data.data.obj) |
|
|
|
// let tempData = data.data.obj |
|
|
|
// if(tempData.length){ |
|
|
|
// tempData.forEach((item,index)=>{ |
|
|
|
// item.show = false |
|
|
|
// if(index==0){ |
|
|
|
// item.show = true |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// }else{ |
|
|
|
// tempData = [] |
|
|
|
// } |
|
|
|
// this.keyWordsList = tempData |
|
|
|
// console.log(this.keyWordsList) |
|
|
|
// } |
|
|
|
// }) |
|
|
|
this.keyWordsList = [{ |
|
|
|
show: true, |
|
|
|
fraction: 10, |
|
|
|
name:'中亚', |
|
|
|
children: [{ |
|
|
|
name:'sdcsd', |
|
|
|
isAskQuestions: 1, |
|
|
|
},{ |
|
|
|
name:'大城市sdcsd', |
|
|
|
isAskQuestions: 0, |
|
|
|
}], |
|
|
|
modelList: [ |
|
|
|
{isAskQuestions: 2, |
|
|
|
selected: 0, |
|
|
|
keywordsName:'as', |
|
|
|
name: 'as'}, |
|
|
|
{isAskQuestions: 2, |
|
|
|
selected: 1, |
|
|
|
keywordsName:'aeeeees', |
|
|
|
name: 'addds'}, |
|
|
|
] |
|
|
|
},{ |
|
|
|
show: false, |
|
|
|
fraction: 10, |
|
|
|
name:'中ddd亚', |
|
|
|
children: [], |
|
|
|
modelList: [ |
|
|
|
{isAskQuestions: 0, |
|
|
|
selected: 0, |
|
|
|
keywordsName:'aeeeees', |
|
|
|
name: 'as'}, |
|
|
|
{isAskQuestions: 1, |
|
|
|
keywordsName:'aeees', |
|
|
|
selected: 1, |
|
|
|
name: 'addds'}, |
|
|
|
{isAskQuestions: 1, |
|
|
|
keywordsName:'aeees', |
|
|
|
selected: 1, |
|
|
|
name: 'addds'}, |
|
|
|
{isAskQuestions: 1, |
|
|
|
keywordsName:'aeees', |
|
|
|
selected: 1, |
|
|
|
name: 'addds'}, |
|
|
|
{isAskQuestions: 1, |
|
|
|
keywordsName:'aeees', |
|
|
|
selected: 1, |
|
|
|
name: 'addds'}, |
|
|
|
] |
|
|
|
}] |
|
|
|
}, |
|
|
|
// 对话加命中标签 |
|
|
|
dealTypes(type){ |
|
|
|
if(type){ |
|
|
@@ -1376,7 +1456,7 @@ export default { |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
console.log(this.outSpeechSkillList); |
|
|
|
// console.log(this.outSpeechSkillList); |
|
|
|
}, |
|
|
|
|
|
|
|
// 导出word |
|
|
@@ -2387,6 +2467,110 @@ export default { |
|
|
|
background-color: #2671e2 !important; |
|
|
|
border-color: #2671e2 !important; |
|
|
|
} |
|
|
|
/deep/.el-radio-button--small .el-radio-button__inner{ |
|
|
|
padding: 9px 10px !important; |
|
|
|
} |
|
|
|
.rateboxcenttit { |
|
|
|
width: 100%; |
|
|
|
height: 44px; |
|
|
|
background: #F8F8F8; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
color: #333333; |
|
|
|
font-size: 16px; |
|
|
|
&>div { |
|
|
|
flex:1; |
|
|
|
white-space: nowrap; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
} |
|
|
|
.ratebutton { |
|
|
|
width: 68px; |
|
|
|
height: 26px; |
|
|
|
background: #2671E2; |
|
|
|
border-radius: 4px; |
|
|
|
font-size: 14px; |
|
|
|
font-weight: 400; |
|
|
|
color: #FFFFFF; |
|
|
|
text-align: center; |
|
|
|
line-height: 26px; |
|
|
|
margin:0 auto; |
|
|
|
} |
|
|
|
|
|
|
|
.ratebutton1 { |
|
|
|
width: 68px; |
|
|
|
height: 26px; |
|
|
|
background: #F2F2F2; |
|
|
|
border-radius: 4px; |
|
|
|
font-size: 14px; |
|
|
|
font-weight: 400; |
|
|
|
color: #999999; |
|
|
|
text-align: center; |
|
|
|
line-height: 26px; |
|
|
|
margin:0 auto; |
|
|
|
} |
|
|
|
|
|
|
|
/*话术*/ |
|
|
|
.huashu-title{ |
|
|
|
background: #fff; |
|
|
|
font-size: 16px; |
|
|
|
line-height: 20px; |
|
|
|
padding: 10px 20px; |
|
|
|
} |
|
|
|
.huashu{ |
|
|
|
width: 400px; |
|
|
|
padding: 0 20px 30px; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
flex-wrap: wrap; |
|
|
|
background: #fff; |
|
|
|
.huashu-item{ |
|
|
|
margin-right: 20px; |
|
|
|
height: 30px; |
|
|
|
line-height: 30px; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
.text{ |
|
|
|
font-size: 14px; |
|
|
|
color: #666; |
|
|
|
margin-left: 5px; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.rateboxcent { |
|
|
|
width: 100%; |
|
|
|
height: 50px; |
|
|
|
border-bottom: 1px solid #F8F8F8; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
color: #666666; |
|
|
|
font-size: 14px; |
|
|
|
&>div{ |
|
|
|
flex:1; |
|
|
|
text-align: center; |
|
|
|
white-space: nowrap; |
|
|
|
overflow: hidden; |
|
|
|
text-overflow: ellipsis; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.mydesc{ |
|
|
|
position: absolute; |
|
|
|
bottom: 0; |
|
|
|
left: 0; |
|
|
|
right: 0; |
|
|
|
padding: 0 10px; |
|
|
|
height: 40px; |
|
|
|
border-top: 1px solid #ccc; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
background: #fff; |
|
|
|
} |
|
|
|
/*对话的标签标识*/ |
|
|
|
.content123 .showmark{ |
|
|
|
font-size: 14px; |
|
|
@@ -2426,9 +2610,10 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
#zxldiv { |
|
|
|
height: calc(70vh - 220px); |
|
|
|
// padding-bottom: 50px; |
|
|
|
overflow-y: scroll; |
|
|
|
// height: 100%; |
|
|
|
height: calc(70vh - 248px); |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
|
|
|
|
.biaotibox { |
|
|
@@ -2481,7 +2666,6 @@ export default { |
|
|
|
width: 100%; |
|
|
|
height: 95%; |
|
|
|
min-width: 1000px; |
|
|
|
// padding-bottom: 100px; |
|
|
|
background: #ffffff; |
|
|
|
} |
|
|
|
|
|
|
@@ -2562,7 +2746,6 @@ export default { |
|
|
|
.center2 .text .avatar { |
|
|
|
width: 34px; |
|
|
|
height: 34px; |
|
|
|
// background-color: #ccc; |
|
|
|
border-radius: 50%; |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
@@ -2650,7 +2833,6 @@ export default { |
|
|
|
height: 100%; |
|
|
|
text-align: center; |
|
|
|
line-height: 38px; |
|
|
|
// color: #ffffff; |
|
|
|
font-size: 24px; |
|
|
|
border-radius: 4px; |
|
|
|
} |
|
|
@@ -2726,7 +2908,6 @@ export default { |
|
|
|
width: 94%; |
|
|
|
margin: 0 auto; |
|
|
|
padding-bottom: 12px; |
|
|
|
// border-bottom: 1px solid #e0e0e0; |
|
|
|
} |
|
|
|
|
|
|
|
.intentionChe { |
|
|
@@ -2985,7 +3166,6 @@ export default { |
|
|
|
|
|
|
|
.aplayer { |
|
|
|
box-shadow: none; |
|
|
|
/*width: 80%;*/ |
|
|
|
width: 95.3%; |
|
|
|
} |
|
|
|
|
|
|
@@ -3102,13 +3282,7 @@ export default { |
|
|
|
.searchbox54 .avatar { |
|
|
|
width: 40px; |
|
|
|
height: 40px; |
|
|
|
/*background-color: #f2f2f2;*/ |
|
|
|
// background-color: #ccc; |
|
|
|
border-radius: 4px; |
|
|
|
// margin-left: 5px; |
|
|
|
// display: flex; |
|
|
|
// justify-content: center; |
|
|
|
// align-items: center; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
@@ -3117,13 +3291,7 @@ export default { |
|
|
|
.searchbox54 .avatar div { |
|
|
|
width: 40px; |
|
|
|
height: 40px; |
|
|
|
/*background-color: #f2f2f2;*/ |
|
|
|
// background-color: #ccc; |
|
|
|
border-radius: 4px; |
|
|
|
// margin-left: 5px; |
|
|
|
// display: flex; |
|
|
|
// justify-content: center; |
|
|
|
// align-items: center; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: center; |
|
|
|