Ver código fonte

接待详情对话加标签命中

newStyle
corala 1 ano atrás
pai
commit
b98945f1fc
3 arquivos alterados com 548 adições e 540 exclusões
  1. +92
    -146
      src/views/Receive/index.vue
  2. +419
    -389
      src/views/Template/labelModel.vue
  3. +37
    -5
      src/views/Template/modelTodo.vue

+ 92
- 146
src/views/Receive/index.vue Ver arquivo

@@ -312,25 +312,15 @@
/>
</div>
<!-- 1 客户画像 2销讲词 3违禁 4 需求挖掘 -->
<div class="showmark">
<div class="showmark" v-if="item.types">
<div>
<div class="mark-item">
<img class="markicon" :src="imgArr[1]"/>
<p class="marktext">销讲词</p>
</div>
<div class="mark-item">
<img class="markicon" :src="imgArr[3]"/>
<p class="marktext">销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词销讲词</p>
</div>
</div>
<!-- <div class="showmark" v-if="item.types"> -->
<!-- <div class="mark-item" v-for="(subitem,i) in dealTypes(item.types)" :key="i">
<div class="mark-item" v-for="(subitem,i) in dealTypes(item.types)" :key="i">
<img v-if="dealword(subitem)[0]" class="markicon" :src="imgArr[dealword(subitem)[0]]"/>
<p class="marktext" :style="dealword(subitem)[0]==3?'color:#E7483C':'color:#3E50E8'">{{dealword(subitem)[1]}}</p>
</div> -->
</div>
</div>
</div>
</div>

</div>
</div>
</div>
@@ -478,45 +468,18 @@
</div>
</div>
<div class="topyou">
<div
style="
padding: 0 10px;
height: 100px;
display: flex;
flex-direction: column;
border-bottom: 1px solid #e0e0e0;
"
>
<div style="padding: 0 10px;height: 100px;display: flex;flex-direction: column;border-bottom: 1px solid #e0e0e0;">
<div style="margin: 10px 0 20px;font-size: 16px; color: #333333; text-indent: 5%"> 销讲执行 </div>
<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">需求挖掘率{{ userinformationlist.fraction || 0 }}%</el-radio-button>
<el-radio-button :label="2">需求挖掘率{{ userinformationlist.wordFraction || 0 }}%</el-radio-button>
</el-radio-group>
</div>
<div v-if="zhixingcenterindex == 0">
<div
style="
width: 100%;
height: 44px;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
background: #f0f6ff;
"
>
<div
style="
width: 60%;
font-size: 16px;
color: #333333;
text-indent: 20px;
"
>
指标
</div>
<div style="width: 40%; flex: 1; font-size: 16px; color: #333333">
<div v-if="zhixingcenterindex == 0" class="xiaojaingBox">
<div class="xiaojiang-title">
<div class="label1">指标</div>
<div class="labe2">
<div style="width: 60px; text-align: center">执行</div>
</div>
</div>
@@ -617,20 +580,11 @@
</div>
</div>
<!-- 需求挖掘 -->
<div v-if="zhixingcenterindex == 2">
<div
style="
width: 100%;
height: 44px;
border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
background: #f0f6ff;
"
>
<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 v-if="zhixingcenterindex == 2" class="wajueBox">
<div class="wajue-title">
<div class="label1" > 指标 </div>
<div class="label2">执行</div>
<div class="label3">匹配标签</div>
</div>
</div>
<div id="zxldiv" v-if="zhixingcenterindex == 2">
@@ -1269,7 +1223,6 @@ export default {
this.rec_index_todo = this.permissions["rec_index_todo"]; //禁忌
this.rec_index_receflag = this.permissions["rec_index_receflag"]; //接待标记
this.rec_index_textyh = this.permissions["rec_index_textyh"]; //文本优化
console.log(this.permissions);
},
mounted() {
this.fileId = this.$route.query.flag;
@@ -1352,98 +1305,52 @@ export default {
},
//需求挖掘率-需求话术
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'},
]
}]
axios({
url: `/autoSR/customer/findKeyWordsBycusId`,
method: 'get',
params: {
cusId: this.fileId
}
}).then(data => {
if (data.code==0) {
console.log(data)
let tempData = data.data
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)
}
})
},
// 对话加命中标签
// 对话加命中标签,区分类型的处理
dealTypes(type){
if(type){
let tem = type.substring(1).split(',')
// let tem = type.substring(1).split(',')
let tem = type.split(',')
return tem
}else{
return []
}
},
// 对话加命中标签
// 对话加命中标签-区分同一个类型的标签
dealword(type){
if(type){
let a = type.split('-')
let rest = type.substring(2).split('-').join(',')
let arr =[a[0],rest]
return arr
let a = type.split('-')
console.log(type)
console.log(a)
let rest = type.substring(2).split('-').join(',')
let arr =[a[0],rest]
return arr
}else{
return []
return []
}
},
chooseRoles(index) {
@@ -1708,7 +1615,7 @@ export default {
} else {
this.aplayerId = idx;
this.aplayer.destroy();
console.log(idx);
// console.log(idx);
this.transcriptionlist = JSON.parse(this.arr[idx].audioContent);
this.recordPath = this.arr[idx].recordPath;
this.bofangchushihua();
@@ -1779,6 +1686,7 @@ export default {
saveType: i,
corpusId: this.arr[this.aplayerId].id,
id: this.optimizeobj.id,
customerId: this.fileId,
textContent: JSON.stringify(this.optimizetext),
})
.then((res) => {
@@ -2297,7 +2205,13 @@ export default {

//获取转写内容和播放列表
Getsthetransliteratecontent() {
this.$api.http.findByCusIdcusId({ cusId: this.fileId }).then((res) => {
axios({
url: `/autoSR/zk/file/findBycusId`,
method: 'get',
params: {
cusId: this.fileId
}
}).then(res => {
let audopbj = res.data;
this.mg = res.data[0].merge;
this.recordPath = audopbj[this.AudioIdx].recordPath;
@@ -2310,7 +2224,7 @@ export default {
this.tablist = [];
if (this.userinformationlist.yon == 0) {
this.isd = audopbj[this.AudioIdx].id;
console.log(audopbj[this.AudioIdx].speakerNum, "speakerNum");
// console.log(audopbj[this.AudioIdx].speakerNum, "speakerNum");
this.creatTabList(audopbj[this.AudioIdx].speakerNum)
this.roleList = this.tablist.slice(1);
if (audopbj[this.AudioIdx].speaker == null) {
@@ -2519,7 +2433,39 @@ export default {
line-height: 26px;
margin:0 auto;
}
// 销讲执行率
.xiaojaingBox{
.xiaojiang-title{
width: 100%;height: 44px;border-bottom: 1px solid #e0e0e0;display: flex;align-items: center;background: #f0f6ff;
.label1{
width: 60%;font-size: 16px;color: #333333;text-indent: 20px;
}
.label2{
width: 40%; flex: 1; font-size: 16px; color: #333333
}
}
}
// 需求挖掘率
.wajueBox{
.wajue-title{
width: 100%;
height: 44px
;border-bottom: 1px solid #e0e0e0;
display: flex;
align-items: center;
background: #f0f6ff;
.label1{
width: 40%;font-size: 16px;color: #333333;text-indent: 20px;
}
.label2{
width: 20%; flex: 1; font-size: 16px; color: #333333
}
.label3{
width: 40%; flex: 1; font-size: 16px; color: #333333
}
}

}
/*话术*/
.huashu-title{
background: #fff;


+ 419
- 389
src/views/Template/labelModel.vue Ver arquivo

@@ -8,6 +8,21 @@
<el-radio-button :label="3">违禁词</el-radio-button>
</el-radio-group>
<el-input size="small" clearable style="margin: 0 10px;width: 220px" v-model="value" placeholder="标签名称"></el-input>
<el-select
v-if="orgType==0"
v-model="houseId"
@change="houseChange"
placeholder="请选择"
filterable
>
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
<el-button size="small" type="primary" @click="search()">筛选</el-button>
<el-button size="small" type="text" @click="Emptycondition()">清空筛选条件</el-button>
</div>
@@ -224,424 +239,439 @@ export default {
keyType: 0,
loading: false,
currentPage: 1,
tableData: [{}],
tableData: [],
type: '0',
pageNum:1,
pageSize:10,
houseId:'',
total:0,
huashu: '',
wajueList: [],
level: ''
level: '',
houseId:'',
orgType: '',
houseList: []
}
},
mounted() {
this.houseId=localStorage.getItem("houseId");
created(){
this.houseId=localStorage.getItem("houseId");
this.orgType = localStorage.getItem("orgType")
this.orgType==0?this.zkhousePage():this.getorgCode()
},
methods: {
// 获取项目列表
zkhousePage() {
this.$api.api.findHouseByUser({
orgType: localStorage.getItem("orgType"),
}).then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.getorgCode();
});
},
houseChange(){
this.getorgCode()
},
methods: {
// 校验是否已经选择过此标签
checkrepeat(){
this.wajueList.forEach(item=>{
item.disabled = false
})
this.wajueList.forEach(item=>{
this.dynamiclist.forEach(obj=>{
if(item.id==obj.markid){
item.disabled = true
}
})
})
},
addItemFun(){
this.dynamiclist.push({
editValue: '',//匹配模型正则表达式
markid:'',
level: '',
name:''
})
},
delItemFun(index){
this.wajueList.forEach(item=>{
if(item.id==this.dynamiclist[index].markid){
item.disabled = false
// 校验是否已经选择过此标签
checkrepeat(){
this.wajueList.forEach(item=>{
item.disabled = false
})
this.wajueList.forEach(item=>{
this.dynamiclist.forEach(obj=>{
if(item.id==obj.markid){
item.disabled = true
}
})
this.dynamiclist.splice(index,1)
document.getElementById('huashuModel').focus(); // 防止插入到外面,造成不可删除的操作
},
})
},
addItemFun(){
this.dynamiclist.push({
editValue: '',//匹配模型正则表达式
markid:'',
level: '',
name:''
})
},
delItemFun(index){
this.wajueList.forEach(item=>{
if(item.id==this.dynamiclist[index].markid){
item.disabled = false
}
})
this.dynamiclist.splice(index,1)
document.getElementById('huashuModel').focus(); // 防止插入到外面,造成不可删除的操作
},

// 基于保存的光标插入内容 --用于失去焦点后再继续插入内容
insertContent(str) {
let selection, range = window._range;// 当前光标位置对象
if (!window.getSelection) {
range.pasteHTML(str);
range.collapse(false);
range.select();
} else {
selection = window.getSelection ? window.getSelection() : document.selection;
range.collapse(false);
let hasR = range.createContextualFragment(str);
let hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
let e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e);
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild);
}
selection.removeAllRanges();
selection.addRange(range);
// 基于保存的光标插入内容 --用于失去焦点后再继续插入内容
insertContent(str) {
let selection, range = window._range;// 当前光标位置对象
if (!window.getSelection) {
range.pasteHTML(str);
range.collapse(false);
range.select();
} else {
selection = window.getSelection ? window.getSelection() : document.selection;
range.collapse(false);
let hasR = range.createContextualFragment(str);
let hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
let e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e);
}
},
// 失去焦点时保存光标位置,记录光标位置
saveRange: () => {
let selection = window.getSelection ? window.getSelection() : document.selection;
if (!selection.rangeCount) return;
let range = selection.createRange ? selection.createRange() : selection.getRangeAt(0);
window._range = range;
},
// 回显模型数据,Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上,so在 open 事件回调中进行
openModel(){
this.$nextTick(()=>{
let huashuModel = document.getElementById('huashuModel')
huashuModel.innerHTML = this.form.originalExpression
})
},
//格式化粘贴文本方法
onPaste(event) {
// var e = event || window.event
// // 阻止默认粘贴
// e.preventDefault();
// // 粘贴事件有一个clipboardData的属性,提供了对剪贴板的访问
// // clipboardData的getData(fomat) 从剪贴板获取指定格式的数据
// var text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('在这里输入文本');
// //清除回车
// text = text.replace(/\[\d+\]|\n|\r/ig,"")
// // 插入
// document.execCommand("insertText", false, text);
let e = event || window.event
let types = event.clipboardData.types
// 粘贴事件有一个clipboardData的属性,提供了对剪贴板的访问
let flag = false
if (types && types.length > 0) {
types.forEach(ele => {
if (ele == 'Files') {
flag = true
}
})
}
if (flag) {
event.preventDefault()
}
},
myeditorenter(e) {
e.preventDefault();
},
// 插入节点
insertHtmlAtCaret(html) {
document.getElementById('huashuModel').focus();
var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(),
node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild);
}
} else if (document.selection && document.selection.type != "Control") {
// IE < 9
document.selection.createRange().pasteHTML(html);
selection.removeAllRanges();
selection.addRange(range);
}
},
// 失去焦点时保存光标位置,记录光标位置
saveRange: () => {
let selection = window.getSelection ? window.getSelection() : document.selection;
if (!selection.rangeCount) return;
let range = selection.createRange ? selection.createRange() : selection.getRangeAt(0);
window._range = range;
},
// 回显模型数据,Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上,so在 open 事件回调中进行
openModel(){
this.$nextTick(()=>{
let huashuModel = document.getElementById('huashuModel')
huashuModel.innerHTML = this.form.originalExpression
})
},
//格式化粘贴文本方法
onPaste(event) {
// var e = event || window.event
// // 阻止默认粘贴
// e.preventDefault();
// // 粘贴事件有一个clipboardData的属性,提供了对剪贴板的访问
// // clipboardData的getData(fomat) 从剪贴板获取指定格式的数据
// var text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('在这里输入文本');
// //清除回车
// text = text.replace(/\[\d+\]|\n|\r/ig,"")
// // 插入
// document.execCommand("insertText", false, text);
let e = event || window.event
let types = event.clipboardData.types
// 粘贴事件有一个clipboardData的属性,提供了对剪贴板的访问
let flag = false
if (types && types.length > 0) {
types.forEach(ele => {
if (ele == 'Files') {
flag = true
}
})
}
},
// 拿问题获取所在的标签数据
findKeywordsById(keywordsId){
axios({
url: `/autoSR/zk/keywords/findKeywordsById`,
method: 'get',
params: {
houseId: this.houseId,
keywordsId: keywordsId,
level: 1
}
}).then(res => {
if (res.code==0){
// console.log(res.data)
this.wajueList = res.data
if(this.wajueList&&this.wajueList.length){
this.wajueList.forEach(item=>{
item.disabled = false
})
this.wajueList.forEach(item=>{
this.dynamiclist.forEach(obj=>{
if(item.id==obj.markid){
item.disabled = true
}
})
if (flag) {
event.preventDefault()
}
},
myeditorenter(e) {
e.preventDefault();
},
// 插入节点
insertHtmlAtCaret(html) {
document.getElementById('huashuModel').focus();
var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
// Range.createContextualFragment() would be useful here but is
// non-standard and not supported in all browsers (IE9, for one)
var el = document.createElement("div");
el.innerHTML = html;
var frag = document.createDocumentFragment(),
node, lastNode;
while ((node = el.firstChild)) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);
// Preserve the selection
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
// IE < 9
document.selection.createRange().pasteHTML(html);
}
},
// 拿问题获取所在的标签数据
findKeywordsById(keywordsId){
axios({
url: `/autoSR/zk/keywords/findKeywordsById`,
method: 'get',
params: {
houseId: this.houseId,
keywordsId: keywordsId,
level: 1
}
}).then(res => {
if (res.code==0){
// console.log(res.data)
this.wajueList = res.data
if(this.wajueList&&this.wajueList.length){
this.wajueList.forEach(item=>{
item.disabled = false
})
this.wajueList.forEach(item=>{
this.dynamiclist.forEach(obj=>{
if(item.id==obj.markid){
item.disabled = true
}
})
}
})
}
});
},
// 插入节点
insertTag(item,index){
if(index==4) {// answer
this.huashu = ''
this.innerVisible1 = true
}
});
},
// 插入节点
insertTag(item,index){
if(index==4) {// answer
this.huashu = ''
this.innerVisible1 = true
}else{
if(window._range){
this.insertContent("<span contentEditable='false' style='color:red'>"+item.value+"</span><text>&nbsp;</text>");
}else{
if(window._range){
this.insertContent("<span contentEditable='false' style='color:red'>"+item.value+"</span><text>&nbsp;</text>");
}else{
this.insertHtmlAtCaret("<span contentEditable='false' style='color:red'>"+item.value+"</span><text>&nbsp;</text>");
}
this.insertHtmlAtCaret("<span contentEditable='false' style='color:red'>"+item.value+"</span><text>&nbsp;</text>");
}
},
// 处理标签,删除不需要的标签格式
delMark(str) {
const hasStr = (str) => {
let index = str.indexOf('<')
let index1 = str.indexOf('>')
if(index>0&&index1>0){
let replaceStr= str.substring(index, index1+1)
str= str.replace(replaceStr,'')
hasStr(str)
}
}
},
// 处理标签,删除不需要的标签格式
delMark(str) {
const hasStr = (str) => {
let index = str.indexOf('<')
let index1 = str.indexOf('>')
if(index>0&&index1>0){
let replaceStr= str.substring(index, index1+1)
str= str.replace(replaceStr,'')
hasStr(str)
}
hasStr(str)
},
// 确认插入选择的话术
clickOK(){
this.innerVisible1 = false
if(!this.huashu) {this.$message.error('请选择话术'); return ;}
this.insertContent("<text>"+this.huashu+"</text><span contentEditable='false' style='color:red'>answer</span><text>&nbsp;</text>");
},
search(){
this.pageNum = 1
this.getorgCode()
},
//点击编辑按钮
editFun(item){
this.dialogVisible = true
this.form.id = item.id
if(this.keyType==0){// 挖掘话术类型
// 回显标签模型数据
if(item.answerList&&item.answerList.length){
this.dynamiclist = item.answerList.map(obj=>{
return {
id: obj.id,
mark: obj.level3Name?obj.level3Name:obj.level2Name,
level: obj.level3Id?3:2,
editValue: obj.originalExpression,
markid: obj.level3Id?obj.level3Id:obj.level2Id
}
})
// console.log(this.dynamiclist)
}else{
this.dynamiclist = []
}
this.form.keywordsName = item.level3Name
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level3Name
this.level = item.level2Id?2:1
this.questionId = item.questionId
this.form.keywordsId = item.level2Id?item.level2Id:item.level1Id
this.findKeywordsById(item.level1Id)// 获取标签下拉数据
}else if(this.keyType==3){// 违禁词
this.form.keywordsName = item.level1Name
this.level = 1
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level1Name
}
hasStr(str)
},
// 确认插入选择的话术
clickOK(){
this.innerVisible1 = false
if(!this.huashu) {this.$message.error('请选择话术'); return ;}
this.insertContent("<text>"+this.huashu+"</text><span contentEditable='false' style='color:red'>answer</span><text>&nbsp;</text>");
},
search(){
this.pageNum = 1
this.getorgCode()
},
//点击编辑按钮
editFun(item){
this.dialogVisible = true
this.form.id = item.id
if(this.keyType==0){// 挖掘话术类型
// 回显标签模型数据
if(item.answerList&&item.answerList.length){
this.dynamiclist = item.answerList.map(obj=>{
return {
id: obj.id,
mark: obj.level3Name?obj.level3Name:obj.level2Name,
level: obj.level3Id?3:2,
editValue: obj.originalExpression,
markid: obj.level3Id?obj.level3Id:obj.level2Id
}
})
// console.log(this.dynamiclist)
}else{
this.dynamiclist = []
}
this.form.keywordsName = item.level3Name
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level3Name
this.level = item.level2Id?2:1
this.questionId = item.questionId
this.form.keywordsId = item.level2Id?item.level2Id:item.level1Id
this.findKeywordsById(item.level1Id)// 获取标签下拉数据
}else if(this.keyType==3){// 违禁词
this.form.keywordsName = item.level1Name
this.level = 1
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level1Name
this.dynamiclist = []
}else{
this.form.keywordsId = item.level3Id?item.level3Id:item.level2Id
this.level = item.level3Id?3:2
this.form.keywordsName = item.level3Name||item.level2Name
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level3Name||item.level2Name
if(item.answerList&&item.answerList.length){
this.dynamiclist = item.answerList.map(obj=>{
return {
question: obj.question,
editValue: obj.originalExpression
}
})
}else{
this.form.keywordsId = item.level3Id?item.level3Id:item.level2Id
this.level = item.level3Id?3:2
this.form.keywordsName = item.level3Name||item.level2Name
this.form.distance = item.distance||10
this.form.originalExpression = item.originalExpression||item.level3Name||item.level2Name
if(item.answerList&&item.answerList.length){
this.dynamiclist = item.answerList.map(obj=>{
return {
question: obj.question,
editValue: obj.originalExpression
}
})
}else{
this.dynamiclist = []
}
this.dynamiclist = []
}
},
// 删除列表
deleteFun(item){
this.$alert(item.keywordsName, '确定删除该条数据吗', {
confirmButtonText: '确定',
callback: action => {
axios({
url: `/autoSR/zk/keymodel/delKeywordsModel`,
method: 'get',
params: {
id: item.id,
houseId: this.houseId
}
}).then(data => {
if(data.code==0){
this.getorgCode()
}
}).catch((e)=>{
})
}
});
},
// 处理模型 关键词加#号
replaceFun(str){
let temp = str
temp = temp.replace(/<text>\&nbsp\;<\/text>/g,'');
temp = temp.replace(/\&nbsp\;/g,'');
temp = temp.replace(/<text>/g,'');
temp = temp.replace(/<\/text>/g,'');
temp = temp.replace(/<span contenteditable="false" style="color:red">/g,' #');// 后台返回是这样的,变了,需要也处理一下
temp = temp.replace(/<span style="color:red" contenteditable="false">/g,' #');
temp = temp.replace(/<\/br>/g,'')
temp = temp.replace(/<br>/g,'')
temp = temp.replace(/<\/span>/g,'#')
// console.log('处理前temp',temp);
this.delMark(temp);
// console.log(temp);
return temp
},
//修改保存标签模型
saveFun(){
if(this.cansave) return ; // 防止多次点击
this.cansave = true;
let text = document.getElementById('huashuModel');
let answerList = []
// console.log(text.innerHTML);
// console.log(text.innerText);
let temp = text.innerHTML
if(this.form.distance=='') {this.$message.error('请输入距离'); return;}
if(text.innerText=='') {this.$message.error('请输入标签模型'); return;}
if(this.keyType==0){
for (var i=0;i<this.dynamiclist.length;i++){
// 使用for循环判断可以跳出循环
if(!this.dynamiclist[i].markid) {this.$message.error('请完善要选择的标签'); return ;}
this.wajueList.map(item1=>{
if(item1.id==this.dynamiclist[i].markid){
this.dynamiclist[i].level = item1.level
this.dynamiclist[i].name = item1.name
}
})
let huashuModel = document.getElementById('huashuModel'+i);
if(huashuModel.innerText=='') {this.$message.error('请完善选择的标签模型'); return ;}
this.dynamiclist[i].editValue = huashuModel.innerHTML
this.dynamiclist[i].editText = huashuModel.innerText
}

answerList = this.dynamiclist.map(item=>{
return {
keyType: 2,
id: item.id||null,
level: item.level,
keywordsId: item.markid,
showFormatExpression: item.editText,//文本形式
formatExpression: this.replaceFun(item.editValue),// 问题表达式,关键词加#号
originalExpression: item.editValue // html==带span标签
}
}
},
// 删除列表
deleteFun(item){
this.$alert(item.keywordsName, '确定删除该条数据吗', {
confirmButtonText: '确定',
callback: action => {
axios({
url: `/autoSR/zk/keymodel/delKeywordsModel`,
method: 'get',
params: {
id: item.id,
houseId: this.houseId
}
}).then(data => {
if(data.code==0){
this.getorgCode()
}
}).catch((e)=>{
})
}
axios({
url: `/autoSR/zk/keymodel/updateKeywordsModel`,
method: 'post',
data: {
id: this.form.id,
questionId: this.keyType==0?this.questionId:'',
houseId:this.houseId,
keyType: this.keyType,
level: this.level,
keywordsId: this.form.keywordsId,
keywordsName: this.form.keywordsName,
formatExpression: this.replaceFun(temp),// 问题表达式,关键词加#号
originalExpression: temp, // html==带span标签
answerList: answerList,
showFormatExpression: text.innerText,
distance: this.form.distance // 距离
}
}).then(res => {
this.cansave = false
this.dialogVisible = false
if(res.code==0){
this.$message.success(res.data)
this.getorgCode()
}else{
this.$message.error(res.msg)
}
}).catch((e)=>{
this.cansave = false
this.dialogVisible = false
})
},
//清空筛选条件
Emptycondition(){
this.value='';
this.keyType = 0
this.pageNum =1;
this.getorgCode()
},
//初始化
getorgCode(){
this.loading= true
this.tableData=[];
axios({
url: `/autoSR/zk/keymodel/findKeywordsModel`,
method: 'get',
params: {
houseId:this.houseId,
pageNum:this.pageNum,
pageSize:this.pageSize,
keywordsName: this.value,
keyType: this.keyType
}
}).then(res => {
this.loading= false
if(res.code==0){
this.tableData=res.data.results;
this.total=res.data.totalRecord;
}
}).catch((e)=>{
this.loading= false
});
},
// 处理模型 关键词加#号
replaceFun(str){
let temp = str
temp = temp.replace(/<text>\&nbsp\;<\/text>/g,'');
temp = temp.replace(/\&nbsp\;/g,'');
temp = temp.replace(/<text>/g,'');
temp = temp.replace(/<\/text>/g,'');
temp = temp.replace(/<span contenteditable="false" style="color:red">/g,' #');// 后台返回是这样的,变了,需要也处理一下
temp = temp.replace(/<span style="color:red" contenteditable="false">/g,' #');
temp = temp.replace(/<\/br>/g,'')
temp = temp.replace(/<br>/g,'')
temp = temp.replace(/<\/span>/g,'#')
// console.log('处理前temp',temp);
this.delMark(temp);
// console.log(temp);
return temp
},
//修改保存标签模型
saveFun(){
if(this.cansave) return ; // 防止多次点击
this.cansave = true;
let text = document.getElementById('huashuModel');
let answerList = []
// console.log(text.innerHTML);
// console.log(text.innerText);
let temp = text.innerHTML
if(this.form.distance=='') {this.$message.error('请输入距离'); return;}
if(text.innerText=='') {this.$message.error('请输入标签模型'); return;}
if(this.keyType==0){
for (var i=0;i<this.dynamiclist.length;i++){
// 使用for循环判断可以跳出循环
if(!this.dynamiclist[i].markid) {this.$message.error('请完善要选择的标签'); return ;}
this.wajueList.map(item1=>{
if(item1.id==this.dynamiclist[i].markid){
this.dynamiclist[i].level = item1.level
this.dynamiclist[i].name = item1.name
}
})
let huashuModel = document.getElementById('huashuModel'+i);
if(huashuModel.innerText=='') {this.$message.error('请完善选择的标签模型'); return ;}
this.dynamiclist[i].editValue = huashuModel.innerHTML
this.dynamiclist[i].editText = huashuModel.innerText
}

answerList = this.dynamiclist.map(item=>{
return {
keyType: 2,
id: item.id||null,
level: item.level,
keywordsId: item.markid,
showFormatExpression: item.editText,//文本形式
formatExpression: this.replaceFun(item.editValue),// 问题表达式,关键词加#号
originalExpression: item.editValue // html==带span标签
}
})
},
handleSizeChange(val) {
console.log("每页条"+ val);
this.pageSize=val;
this.getorgCode()
},
handleCurrentChange(val) {
console.log("当前页"+ val);
this.pageNum=val;
this.getorgCode()
}
axios({
url: `/autoSR/zk/keymodel/updateKeywordsModel`,
method: 'post',
data: {
id: this.form.id,
questionId: this.keyType==0?this.questionId:'',
houseId:this.houseId,
keyType: this.keyType,
level: this.level,
keywordsId: this.form.keywordsId,
keywordsName: this.form.keywordsName,
formatExpression: this.replaceFun(temp),// 问题表达式,关键词加#号
originalExpression: temp, // html==带span标签
answerList: answerList,
showFormatExpression: text.innerText,
distance: this.form.distance // 距离
}
}).then(res => {
this.cansave = false
this.dialogVisible = false
if(res.code==0){
this.$message.success(res.data)
this.getorgCode()
}else{
this.$message.error(res.msg)
}
}).catch((e)=>{
this.cansave = false
this.dialogVisible = false
})
},
//清空筛选条件
Emptycondition(){
this.value='';
this.keyType = 0
this.pageNum =1;
this.getorgCode()
},
//初始化
getorgCode(){
this.loading= true
this.tableData=[];
axios({
url: `/autoSR/zk/keymodel/findKeywordsModel`,
method: 'get',
params: {
houseId:this.houseId,
pageNum:this.pageNum,
pageSize:this.pageSize,
keywordsName: this.value,
keyType: this.keyType
}
}).then(res => {
this.loading= false
if(res.code==0){
this.tableData=res.data.results;
this.total=res.data.totalRecord;
}
}).catch((e)=>{
this.loading= false
})
},
handleSizeChange(val) {
console.log("每页条"+ val);
this.pageSize=val;
this.getorgCode()
},
handleCurrentChange(val) {
console.log("当前页"+ val);
this.pageNum=val;
this.getorgCode()
}

}
}
</script>



+ 37
- 5
src/views/Template/modelTodo.vue Ver arquivo

@@ -43,6 +43,21 @@
style="width: 140px"
></el-input>
</div>
<el-select
v-if="orgType==0"
v-model="houseId"
@change="houseChange"
placeholder="请选择"
filterable
>
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
<div style="margin-left: 20px">
<el-button @click="searchFun" type="primary">筛选</el-button>
</div>
@@ -251,20 +266,37 @@ export default {
startTime: "", //搜索开始时间
endTime: "", //搜索结束时间
},
tableData: [{}],
tableData: [],
type: 1,
keyType: "",
pageSize: 10,
total: 0,
pageNum: 1,
houseId: '',
currentHouseId: "",
orgType: ''
};
},
mounted() {
this.houseId = localStorage.getItem("houseId");
this.gettableList()
},
created(){
this.houseId=localStorage.getItem("houseId");
this.orgType = localStorage.getItem("orgType")
this.orgType==0?this.zkhousePage():this.gettableList()
},
methods: {
// 获取项目列表
zkhousePage() {
this.$api.api.findHouseByUser({
orgType: localStorage.getItem("orgType"),
}).then((res) => {
this.houseList = res.data;
this.houseId = res.data[0].id;
this.gettableList();
});
},
houseChange(){
this.gettableList()
},
// keytype =0,获取需求挖掘类型的数据回显接口
wajuehuixian() {
// 获取模型数据回显


Carregando…
Cancelar
Salvar