张雄 3 years ago
parent d9d6b71215
commit 1b03fb4e82

@ -221,9 +221,22 @@ export function getRegionWeiBo(params) {
}) })
} }
// 主题分析-看板导出 // 主题分析-热点资讯
export function ToWord(params) { export function getSsimData(params) {
let obj = Object.assign({action: 'ToWord', sType: 'ZhuTiFenXiBl'}, params) let obj = Object.assign({action: 'getSsimData', sType: ''}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}
// 主题分析-ppt导出
export function getToPptTask(params) {
let obj = Object.assign({action: 'getToPptTask', sType: 'ZhuTiFenXiBl'}, params)
return httpService({ return httpService({
url: `/api/v6.ashx`, url: `/api/v6.ashx`,
method: 'post', method: 'post',

@ -0,0 +1,62 @@
<template>
<div class="text-container">
<h4 class="text-item">便捷模式注释</h4>
<div>1.分析词含义</div>
<div>
(1)必选关键词所有词语全部匹配关键词之间是和的关系最大字符不能超过50个中文字符必选关键词用逗号分词
</div>
<div>
(2)可选关键词词语中至少有一个匹配可选词与必选词是或的关系最大字符不能超过250个中文字符可选关键词用逗号分词
</div>
<div>
(3)排除关键词排除相关内容
主要是去除信息中的冗余垃圾信息最大字符不能超过250个中文字符排除关键词用逗号分词
</div>
<div>2.示例解释</div>
<div>必选词宝马大众同时包含宝马和大众的数据</div>
<div>可选词别克吉利包含别克或吉利的数据</div>
<div>
可选词别克吉利+
排除词促销广告包含别克或吉利同时不包含促销和广告的数据
</div>
<div>
必要词宝马吉利+可选词别克吉利+排除词促销包含宝马和吉利同时包含别克或吉利且不包含促销的数据
</div>
<h4 class="text-item">高级模式注释</h4>
<div>高级模式由关键词及 + - | () 4种符号组成</div>
<div>1.符号含义</div>
<div>(1)+和的关系同时包含</div>
<div>(2)-排除的关系不包含</div>
<div>(3)|或的关系</div>
<div>2.示例解释</div>
<div>(1)宝马 + 大众同时包含宝马及大众的数据</div>
<div>(2)宝马- 大众包含宝马但不包含大众的数据</div>
<div>(3)宝马| 大众包含宝马或大众的数据</div>
<div>
(4)(宝马+ 大众)|(别克+吉利)同时包含宝马及大众 或者
同时包含别克及吉利的数据
</div>
<div>
(5)(宝马| 大众)+(别克|吉利)-(促销|广告)包含'宝马''大众'
同时包含'别克''吉利' 且不包含'促销''广告'的数据
</div>
</div>
</template>
<script>
export default {
name: "helpContent",
};
</script>
<style lang="less">
.text-container {
color: white;
width: 768px;
padding: 12px;
.text-item {
color: rgb(111, 175, 203);
margin-top: 6px;
}
}
</style>

@ -68,6 +68,12 @@
<div class="modal-outter"> <div class="modal-outter">
<div class="modal-top"> <div class="modal-top">
<v-tab-group :btns="['便捷模式', '高级模式']" @change="changeMode"></v-tab-group> <v-tab-group :btns="['便捷模式', '高级模式']" @change="changeMode"></v-tab-group>
<a-popover title="提示" placement="bottomLeft">
<template slot="content">
<helpContent></helpContent>
</template>
<a-icon type="question-circle" style="margin-left: 12px" />
</a-popover>
</div> </div>
<div v-if="isHigh==0"> <div v-if="isHigh==0">
<div class="modal-container" > <div class="modal-container" >
@ -89,9 +95,9 @@
<a-form-model-item label="排除词"><a-input placeholder="请输入排除词多个词用隔开最多支持5个" v-model="addForm.DetailsData[0].PaiChu"></a-input></a-form-model-item> <a-form-model-item label="排除词"><a-input placeholder="请输入排除词多个词用隔开最多支持5个" v-model="addForm.DetailsData[0].PaiChu"></a-input></a-form-model-item>
</div> </div>
<div v-if="mode == 1"> <div v-if="mode == 1">
<a-form-model-item label="主体词"><a-input placeholder="请输入主体词多个词用隔开最多支持5个" @change="doCombo" v-model="addForm.DetailsData[0].AnalyzeWord"></a-input></a-form-model-item> <a-form-model-item label="主体词"><a-input placeholder="请输入主体词多个词用隔开最多支持5个" @change="doCombo2" v-model="addForm.DetailsData[0].AnalyzeWord"></a-input></a-form-model-item>
<a-form-model-item label="关键词组一"><a-input placeholder="请输入关键词多个词用隔开最多支持5个" @change="doCombo"></a-input></a-form-model-item> <a-form-model-item label="关键词组一"><a-input placeholder="请输入关键词多个词用隔开最多支持5个" @change="doCombo2" v-model="addForm.DetailsData[0].HuoWord"></a-input></a-form-model-item>
<a-form-model-item label="关键词组二"><a-input placeholder="请输入关键词多个词用隔开最多支持5个" @change="doCombo"></a-input></a-form-model-item> <a-form-model-item label="关键词组二"><a-input placeholder="请输入关键词多个词用隔开最多支持5个" @change="doCombo2" v-model="addForm.DetailsData[0].HuoWord1"></a-input></a-form-model-item>
<a-form-model-item label="排除词"><a-input placeholder="请输入排除词多个词用隔开最多支持5个" v-model="addForm.DetailsData[0].PaiChu"></a-input></a-form-model-item> <a-form-model-item label="排除词"><a-input placeholder="请输入排除词多个词用隔开最多支持5个" v-model="addForm.DetailsData[0].PaiChu"></a-input></a-form-model-item>
</div> </div>
<v-label-div title="定向监测"></v-label-div> <v-label-div title="定向监测"></v-label-div>
@ -100,13 +106,20 @@
</a-form-model> </a-form-model>
</div> </div>
<div class="modal-display"> <div class="modal-display">
<a-descriptions layout="vertical" bordered> <a-descriptions v-if="mode == 0" layout="vertical" bordered>
<a-descriptions-item :label="'配置示例组合共' + combo.number + '组'"> <a-descriptions-item :label="'配置示例组合共' + combo.number + '组'">
<div v-for="(item, index) in combo.display" :key="index"> <div v-for="(item, index) in combo.display" :key="index">
{{index+1}}.{{item}} {{index+1}}.{{item}}
</div> </div>
</a-descriptions-item> </a-descriptions-item>
</a-descriptions> </a-descriptions>
<a-descriptions v-if="mode == 1" layout="vertical" bordered>
<a-descriptions-item :label="'配置示例组合共' + combo2.number + '组'">
<div v-for="(item, index) in combo2.display" :key="index">
{{index+1}}.{{item}}
</div>
</a-descriptions-item>
</a-descriptions>
</div> </div>
</div> </div>
<div align="center"> <div align="center">
@ -127,7 +140,7 @@
</a-form-model-item> </a-form-model-item>
</a-tab-pane></a-tabs> </a-tab-pane></a-tabs>
<a-tabs type="card"><a-tab-pane key="22" tab="分析词设置"> <a-tabs type="card"><a-tab-pane key="22" tab="分析词设置">
<a-form-model-item label="主题词"><a-textarea placeholder="请输入分析词" @change="doComboHigh" v-model="addForm.DetailsData[0].AnalyzeWord"></a-textarea></a-form-model-item> <a-form-model-item label="主题词"><a-textarea placeholder="请输入分析词" v-model="addForm.DetailsData[0].AnalyzeWord"></a-textarea></a-form-model-item>
</a-tab-pane></a-tabs> </a-tab-pane></a-tabs>
<a-tabs type="card"><a-tab-pane key="23" tab="定向监测"> <a-tabs type="card"><a-tab-pane key="23" tab="定向监测">
<a-form-model-item label="媒体"><a-textarea placeholder="请输入媒体名称多个词用隔开最多支持5个"></a-textarea></a-form-model-item> <a-form-model-item label="媒体"><a-textarea placeholder="请输入媒体名称多个词用隔开最多支持5个"></a-textarea></a-form-model-item>
@ -136,13 +149,6 @@
</a-form-model> </a-form-model>
</div> </div>
<div class="modal-display"> <div class="modal-display">
<a-descriptions layout="vertical" bordered>
<a-descriptions-item label='配置示例组合'>
<div>
{{comboHigh}}
</div>
</a-descriptions-item>
</a-descriptions>
</div> </div>
</div> </div>
<div align="center"> <div align="center">
@ -159,9 +165,13 @@
</template> </template>
<script> <script>
import tbEvent from './tbEvent' import tbEvent from './tbEvent';
import helpContent from './helpContent'
export default { export default {
name: "themeAnalize", name: "themeAnalize",
components: {
helpContent
},
data() { data() {
return { return {
myThemeArr: [], myThemeArr: [],
@ -185,10 +195,11 @@ export default {
DetailsData: [ DetailsData: [
{AnalyzeWord: "", {AnalyzeWord: "",
HuoWord: "", HuoWord: "",
HuoWord1: "",
PaiChu: "", PaiChu: "",
Source: "", Source: "",
UserAuthor: "", UserAuthor: "",
IsAdvancedQuery: 0 //0 1 IsAdvancedQuery: 0 //0 1 2
} }
] ]
}, },
@ -208,7 +219,10 @@ export default {
number: 0, number: 0,
display: [] display: []
}, },
comboHigh: '', combo2:{
number: 0,
display: []
},
// //
selTime: [], selTime: [],
// //
@ -225,7 +239,7 @@ export default {
this.getNowData(); this.getNowData();
}, },
methods: { methods: {
...tbEvent ...tbEvent,
} }
} }
</script> </script>
@ -253,7 +267,7 @@ export default {
} }
.card-items { .card-items {
width: 446px; width: 446px;
// height: 240px; height: 240px;
background: linear-gradient(180deg, #0088c9 0%, #001c43 100%); background: linear-gradient(180deg, #0088c9 0%, #001c43 100%);
border-radius: 4px; border-radius: 4px;
margin-top: 24px; margin-top: 24px;

@ -2,7 +2,6 @@ import {getSchemeDataToTheme} from "@/api/ThemeAnalize"
import {setSchemeData} from "@/api/ThemeAnalize" import {setSchemeData} from "@/api/ThemeAnalize"
import {delCarBigDataByGuid} from "@/api/ThemeAnalize" import {delCarBigDataByGuid} from "@/api/ThemeAnalize"
import {getSchemeDataByGuid} from "@/api/ThemeAnalize" import {getSchemeDataByGuid} from "@/api/ThemeAnalize"
import moment from "moment";
export default { export default {
getNowData() { getNowData() {
let obj = Object.assign({}, this.form); let obj = Object.assign({}, this.form);
@ -39,7 +38,10 @@ export default {
number: 0, number: 0,
display: [] display: []
}; };
this.comboHigh = ''; this.combo2 = {
number: 0,
display: []
};
this.modalObj.visible = true this.modalObj.visible = true
}, },
//编辑修改 //编辑修改
@ -52,7 +54,7 @@ export default {
let data = res.data; let data = res.data;
this.addForm = data; this.addForm = data;
this.doCombo(); this.doCombo();
this.doComboHigh(); this.doCombo2();
this.modalObj.visible = true; this.modalObj.visible = true;
}) })
}, },
@ -106,13 +108,12 @@ export default {
}, },
//配置示例 //配置示例
doCombo() { doCombo() {
let bWord = this.addForm.DetailsData[0].AnalyzeWord.split('') let bArr = this.addForm.DetailsData[0].AnalyzeWord.replace(/,/g,'');
let hWord = this.addForm.DetailsData[0].HuoWord.split('') let bWord = bArr.split('');
let hArr = this.addForm.DetailsData[0].HuoWord.replace(/,/g,'');
let hWord = hArr.split('');
let arr = []; let arr = [];
let bString = ''; let bString = '';
// bWord.forEach(ele => {
// bString = bString + ele.trim()
// });
for(let i=0;i<bWord.length;i++) { for(let i=0;i<bWord.length;i++) {
if(i < bWord.length - 1) { if(i < bWord.length - 1) {
bString = bString + bWord[i].trim() + '+' bString = bString + bWord[i].trim() + '+'
@ -132,12 +133,36 @@ export default {
this.combo.display = arr; this.combo.display = arr;
this.combo.number = arr.length; this.combo.number = arr.length;
}, },
doComboHigh() { doCombo2() {
this.comboHigh = this.addForm.DetailsData[0].AnalyzeWord let bArr = this.addForm.DetailsData[0].AnalyzeWord.replace(/,/g,'');
let bWord = bArr.split('');
let hArr = this.addForm.DetailsData[0].HuoWord.replace(/,/g,'');
let hWord = hArr.split('');
let hArr1 = this.addForm.DetailsData[0].HuoWord1.replace(/,/g,'');
let hWord1 = hArr1.split('');
let arr = [];
for(let i = 0; i<bWord.length; i++) {
for(let j = 0; j<hWord.length; j++) {
for(let k = 0; k<hWord1.length; k++) {
let str = bWord[i] + '+' + hWord[j] + '+' + hWord1[k]
arr.push(str)
}
}
};
this.combo2.display = arr;
this.combo2.number = arr.length;
}, },
//切换模式 //切换模式
handlerHH(activeTab) { handlerHH(activeTab) {
this.mode = activeTab; this.mode = activeTab;
if(this.isHigh != 1 && activeTab == 0) {
this.addForm.DetailsData[0].IsAdvancedQuery = 0;
this.doCombo();
}
if(this.isHigh != 1 && activeTab == 1) {
this.addForm.DetailsData[0].IsAdvancedQuery = 2;
this.doCombo2();
};
}, },
changeMode(activeTab) { changeMode(activeTab) {
this.addForm.DetailsData[0].IsAdvancedQuery = activeTab; this.addForm.DetailsData[0].IsAdvancedQuery = activeTab;
@ -164,10 +189,11 @@ export default {
DetailsData: [ DetailsData: [
{AnalyzeWord: "", {AnalyzeWord: "",
HuoWord: "", HuoWord: "",
HuoWord1: "",
PaiChu: "", PaiChu: "",
Source: "", Source: "",
UserAuthor: "", UserAuthor: "",
IsAdvancedQuery: 0 //0普通 1高级 IsAdvancedQuery: this.addForm.DetailsData[0].IsAdvancedQuery //0普通 1高级
} }
] ]
} }
@ -188,7 +214,7 @@ export default {
{ {
path: '/ThemeData', path: '/ThemeData',
query: { query: {
action: "getList", // action: "getList",
// sTimeType, // sTimeType,
// sQuDao, // sQuDao,
// sQingGan, // sQingGan,
@ -196,8 +222,8 @@ export default {
// iPageSize, // iPageSize,
startTime: sTime, startTime: sTime,
endTime: eTime, endTime: eTime,
token: this.getToken, // token: this.getToken,
sType: "ZhuTiFenXiBl", // sType: "ZhuTiFenXiBl",
sGuid: guids, sGuid: guids,
// iGroupBy, // iGroupBy,
// isSourcetype, // isSourcetype,

@ -1,15 +1,14 @@
<template> <template>
<div class="ut-outter" v-loading="load"> <div class="ut-outter" v-loading="load">
<v-label-div title="用户热议话题"></v-label-div> <v-label-div title="热点资讯"></v-label-div>
<div class="ut-inner"> <div class="ut-inner">
<v-echarts :opt="opt"></v-echarts> <dv-scroll-board :config="config" :style="{ width: '100%', height: '100%' }" @click="handlerSs" />
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import {getHottalk} from "@/api/ThemeAnalizeDec" import {getSsimData} from "@/api/ThemeAnalizeDec"
import createWordCloud from "@/utils/gol/bubbleWord";
export default { export default {
name: "UserTopic", name: "UserTopic",
data() { data() {
@ -18,7 +17,9 @@ export default {
form: { form: {
token: '' token: ''
}, },
opt: {} opt: {},
list: [],
config: {},
} }
}, },
created() { created() {
@ -28,12 +29,38 @@ export default {
methods: { methods: {
getData() { getData() {
let obj = Object.assign({}, this.form); let obj = Object.assign({}, this.form);
this.load = true; getSsimData(obj).then(res => {
getHottalk(obj).then(res => { let data = res.data || [];
let data = res.data; this.list = data;
this.opt = createWordCloud(data); let arr = [];
this.load = false data.forEach((ele) => {
let o = [
`<span style="cursor: pointer;">${ele.title}</span>`,
ele.count,
ele.sourcetime,
ele.source,
];
arr.push(o);
});
if(arr[0] == null) {
;
} else {
this.config = {
headerBGC: "#0c203b",
oddRowBGC: "#173b6d",
evenRowBGC: "rgba(69, 149, 244, 0)",
columnWidth: [470,90,200,80],
rowNum: 7,
header: ["事件标题", "影响力", "发布时间", "来源"],
data: arr,
};
}
}) })
},
handlerSs(obj) {
// let rowIndex = obj.rowIndex;
// let row = this.list[rowIndex];
// this.$router.push({path: '/eventDEC', query: {events_id: row.events_id}})
} }
} }
} }

@ -10,7 +10,7 @@
{{themeObj.title}} {{themeObj.title}}
</div> </div>
<div class="s2"> <div class="s2">
{{themeObj.content}} <span v-html="msg"></span>
</div> </div>
</div> </div>
<totalVolume></totalVolume> <totalVolume></totalVolume>
@ -25,10 +25,6 @@
<themeSource></themeSource> <themeSource></themeSource>
<wordCloud></wordCloud> <wordCloud></wordCloud>
</div> </div>
<div class="d7">
<volumeArea></volumeArea>
<userArea></userArea>
</div>
<!-- <div class="d8"> <!-- <div class="d8">
<peopleGender></peopleGender> <peopleGender></peopleGender>
<peopleAuthen></peopleAuthen> <peopleAuthen></peopleAuthen>
@ -50,14 +46,10 @@ import sourceDivide from "./SourceDivide" //渠道分布占比
import userTopic from "./UserTopic" // import userTopic from "./UserTopic" //
import themeSource from "./ThemeSource" // import themeSource from "./ThemeSource" //
import wordCloud from "./WordCloud" // import wordCloud from "./WordCloud" //
import volumeArea from "./VolumeArea" //
import userArea from "./UserArea" //
import peopleGender from "./PeopleGender" // import peopleGender from "./PeopleGender" //
import peopleAuthen from "./PeopleAuthen" // import peopleAuthen from "./PeopleAuthen" //
import weiboAnalize from "./WeiboAnalize" // import weiboAnalize from "./WeiboAnalize" //
import {getVolumeTime,getList,getCoreDiffuse,getCoreWebsite,getSourcetypeTime,getHotWord, import {getToPptTask} from "@/api/ThemeAnalizeDec" //ppt
getHottalk,getPositive,getNegative,getRegion,getSexMerge,getVAnalyze,getDiffuseZhuTi,
getRegionWeiBo,ToWord} from "@/api/ThemeAnalizeDec"
export default { export default {
name: "ThemeBoard", name: "ThemeBoard",
components: { components: {
@ -69,8 +61,6 @@ export default {
totalSource, totalSource,
themeSource, themeSource,
wordCloud, wordCloud,
volumeArea,
userArea,
peopleGender, peopleGender,
peopleAuthen, peopleAuthen,
weiboAnalize weiboAnalize
@ -84,30 +74,13 @@ export default {
form: { form: {
token: '' token: ''
}, },
msg: '',
downloadForm: { downloadForm: {
sType: 'ZhuTiFenXiBl', sType: 'ZhuTiFenXiBl',
sGuid: '', sGuid: '',
sData: { sData: {
getSummarize: '', getSummarize: '',
getVolumeTime: {Msg: '',sBase64: ''},
getList: [],
getCoreDiffuse: [],
getCoreWebsite: {Data: {}},
getSourcetypeTime: {Msg: '',sBase64: ''},
getHotWord: {Msg: '',sBase64: ''},
getHottalk: {Msg: '',sBase64: ''},
getAffections: {Msg: '',sBase64: ''}, getAffections: {Msg: '',sBase64: ''},
getPositive: {Msg: '',sBase64: ''},
getNegative: {Msg: '',sBase64: ''},
getVolume: {Data:{},sBase64: ''},
getSex: {Msg: '',sBase64: ''}, //getSexMerge
getAttestation: {Msg: '',sBase64: ''}, //getSexMerge
getRegion: {Data:{},sBase64: ''},
getVAnalyze: {Msg: '',Data:{},sBase64: ''},
getCoreDiffuseWeiBo: [],
getDiffuse: {Data:{},sBase64: ''},
getAffectionsWeiBo: {sBase64: ''},
getRegionWeiBo: {Data:{},sBase64: ''},
} }
} }
} }
@ -131,89 +104,21 @@ export default {
title: data.Summarize, title: data.Summarize,
content: data.AffectionsMsg content: data.AffectionsMsg
}; };
this.themeObj = o this.themeObj = o;
this.msg = data.AffectionsMsg;
}) })
}, },
goDownload() { goDownload() {
Promise.all([this.doData()]).then(() => { let obj = Object.assign({}, this.form);
let str = JSON.stringify(this.downloadForm); obj.sType = 'ToZhuTiPptV6';
let obj = { getToPptTask(obj).then(() => {
token: this.getToken,
sType: 'ZhuTiFenXiBl',
sJson: str
}
ToWord(obj).then(res => {
let url = res.data;
this.$notification.open({ this.$notification.open({
message: `数据生成中`, message: `数据生成中`,
description: '请前往个人中心查看下载进度', description: '请前往个人中心查看下载进度',
placement: 'bottomRight', placement: 'bottomRight',
}); });
window.location.href=url;
}) })
});
}, },
doData() {
getVolumeTime(this.form).then(res => {
this.downloadForm.sData.getVolumeTime.Msg = res.msg;
});
let o = {
iPageIndex: 1,
iPageSize: 20,
iTimeType: 0
};
let obj = Object.assign({},o,this.form);
getList(obj).then(res => {
this.downloadForm.sData.getList = res.data
});
getCoreDiffuse(this.form).then(res => {
this.downloadForm.sData.getCoreDiffuse = res.data;
});
getCoreWebsite(this.form).then(res => {
this.downloadForm.sData.getCoreWebsite.Data = res.data;
});
getSourcetypeTime(this.form).then(res => {
this.downloadForm.sData.getSourcetypeTime.Msg = res.msg;
});
getHotWord(this.form).then(res => {
this.downloadForm.sData.getHotWord.Msg = res.msg;
});
getHottalk(this.form).then(res => {
this.downloadForm.sData.getHottalk.Msg = res.msg;
});
getPositive(this.form).then(res => {
this.downloadForm.sData.getPositive.Msg = res.msg;
});
getNegative(this.form).then(res => {
this.downloadForm.sData.getNegative.Msg = res.msg;
});
getRegion(this.form).then(res => {
this.downloadForm.sData.getVolume.Data = res.data;
});
getSexMerge(this.form).then(res => {
this.downloadForm.sData.getSex.Msg = res.data.sexMsg;
this.downloadForm.sData.getAttestation.Msg = res.data.attestationMsg;
});
getRegion(this.form).then(res => {
this.downloadForm.sData.getRegion.Data = res.data;
});
getVAnalyze(this.form).then(res => {
this.downloadForm.sData.getVAnalyze.Msg = res.data.getVAnalyzeMsg;
this.downloadForm.sData.getVAnalyze.Data = res.data.getVAnalyze;
});
getDiffuseZhuTi(this.form).then(res => {
let dt = {
total: res.data.total,
sum: res.data.sum,
volume: res.data.volume,
};
this.downloadForm.sData.getCoreDiffuseWeiBo = res.data.getCoreDiffuseWeiBo;
this.downloadForm.sData.getDiffuse.Data = dt;
});
getRegionWeiBo(this.form).then(res => {
this.downloadForm.sData.getRegionWeiBo.Data = res.data;
});
}
} }
} }
</script> </script>

Loading…
Cancel
Save