prod
lily.zhang 3 years ago
parent 4637aae19f
commit 63d6f7f329

@ -205,3 +205,16 @@ export function getNegative1(params) {
})
}
// 微博人物画像-男女比例 - 认证与非认证
export function getSexMergeWeiBo(params) {
let obj = Object.assign({action: 'getSexMergeWeiBo', sType: 'BrandWeiBo'}, params)
return httpService({
url: `/api/v6.ashx`,
method: 'post',
data: obj,
headers: {
'content-type': 'application/x-www-form-urlencoded'
}
})
}

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-19 19:45:01
* @LastEditTime: 2021-11-17 10:17:53
* @LastEditTime: 2021-11-17 11:02:04
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/esprocess/index.vue
@ -11,89 +11,28 @@
<v-label-div title="事件传播历程">
</v-label-div>
<div class="coe-ts">
<div class="coe-ts-d1"><img src="../../../assets/images/EventInsight/img_zuo.png" /></div>
<div class="coe-ts-d1" @click="goL"><img src="../../../assets/images/EventInsight/img_zuo.png" /></div>
<div class="coe-ts-d2">
<vue-scroll>
<vue-scroll ref="vs">
<div class="dd1-label">
<div class="d1x">新车上市</div>
<div class="d2">状态事件发生</div>
<div class="d3">2021-06-01 11:26</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m1" style="transform:rotate(180deg);margin-top: 140px" />
<div class="dd1-fen"></div>
<div class="dt-d1" style="margin-top: 158px">
<div class="d1" style="color: #CC7733">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">今日头条</div>
<div class="d3">2021-06-01 11:26</div>
<template v-for="(item,index) in list">
<div class="dd1-item" :key="index">
<img class="m1" :src="index % 2 === 0 ? m2 : m1" :style="index % 2 === 0 ? 'margin-top: 8.2rem' : ''" />
<div class="dd1-fen"></div>
<div class="dt-d1" :style="index % 2 === 0 ? 'margin-top: 8.6rem' : ''">
<div class="d1" :style="index % 2 === 0 ? 'color: #3373CC' : 'color:#CC7733'" @click="openUrl(item._source.url)">{{item._source.title|doStr(30)}}</div>
<div class="d2">{{item._source.source}}</div>
<div class="d3">{{item._source.sourcetime}}</div>
</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m1" />
<div class="dd1-fen"></div>
<div class="dt-d1">
<div class="d1" style="color: #CC7733">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">易车</div>
<div class="d3">2021-06-01 11:28</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m2" style="margin-top: 140px" />
<div class="dd1-fen"></div>
<div class="dt-d1" style="margin-top: 158px">
<div class="d1" style="color: #3373CC">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">今日头条</div>
<div class="d3">2021-06-01 11:26</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m2" style="transform:rotate(180deg);" />
<div class="dd1-fen"></div>
<div class="dt-d1">
<div class="d1" style="color: #3373CC">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">海报新闻</div>
<div class="d3">2021-06-01 11:28</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m1" style="transform:rotate(180deg); margin-top: 140px" />
<div class="dd1-fen"></div>
<div class="dt-d1" style="margin-top: 158px">
<div class="d1" style="color: #CC7733">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">今日头条</div>
<div class="d3">2021-06-01 11:26</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m2" style="transform:rotate(180deg);" />
<div class="dd1-fen"></div>
<div class="dt-d1">
<div class="d1" style="color: #3373CC">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">海报新闻</div>
<div class="d3">2021-06-01 11:28</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m1" style="transform:rotate(180deg);margin-top: 140px" />
<div class="dd1-fen"></div>
<div class="dt-d1" style="margin-top: 158px">
<div class="d1" style="color: #CC7733">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">今日头条</div>
<div class="d3">2021-06-01 11:26</div>
</div>
</div>
<div class="dd1-item">
<img class="m1" :src="m2" style="transform:rotate(180deg);" />
<div class="dd1-fen"></div>
<div class="dt-d1">
<div class="d1" style="color: #3373CC">东莞奥迪Q5L可以试乘降价达</div>
<div class="d2">海报新闻</div>
<div class="d3">2021-06-01 11:28</div>
</div>
</div>
</template>
</vue-scroll>
</div>
<div class="coe-ts-d1"><img src="../../../assets/images/EventInsight/img_xan.png" /></div>
<div class="coe-ts-d1" @click="goR"><img src="../../../assets/images/EventInsight/img_xan.png" /></div>
</div>
</div>
</template>
@ -105,8 +44,8 @@ export default {
props: {
id: {
type: String,
default: ""
}
default: "",
},
},
data() {
return {
@ -116,6 +55,7 @@ export default {
sTimeType: "",
},
list: [],
x: 0,
m1: require("../../../assets/images/EventInsight/img_ct.png"),
m2: require("../../../assets/images/EventInsight/img_lt.png"),
};
@ -130,7 +70,7 @@ export default {
let obj = Object.assign({}, this.form);
this.load = true;
getEventSpreadProcess0528(obj).then((res) => {
let data = res.data;
let data = res.data || [];
this.list = data;
this.load = false;
});
@ -138,6 +78,35 @@ export default {
goback() {
this.$router.go(-1);
},
openUrl(url) {
window.open(url);
},
goL() {
const {h} = this.$refs.vs.getScrollProcess();
if(h === 0) return;
const { scrollLeft } = this.$refs.vs.getPosition();
this.x = scrollLeft;
this.x -= 150;
this.$refs.vs.scrollTo(
{
x: this.x,
},
300
);
},
goR() {
const {h} = this.$refs.vs.getScrollProcess();
if(h === 1) return;
const { scrollLeft } = this.$refs.vs.getPosition();
this.x = scrollLeft;
this.x += 150;
this.$refs.vs.scrollTo(
{
x: this.x,
},
300
);
}
},
};
</script>
@ -217,7 +186,7 @@ export default {
}
.dd1-item {
position: relative;
width: 214px;
width: 260px;
height: 320px;
display: flex;
flex-shrink: 0;
@ -233,6 +202,7 @@ export default {
padding-top: 16px;
height: 88px;
font-size: 16px;
cursor: pointer;
}
.d2 {
font-size: 14px;

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-20 09:39:28
* @LastEditTime: 2021-10-20 10:45:58
* @LastEditTime: 2021-11-17 11:54:43
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/mediaInterpretationED/index.vue
@ -23,21 +23,21 @@
<img class="m1" src="../../../assets/images/EventInsight/ic_cbl.png" />
<div class="d1">
<span class="ss1">最大层级</span>
<span class="ss2">{{ countObj.maxcount }}</span>
<span class="ss2">{{ countObj.volume|formatMoney(0,'',',') }}</span>
</div>
</div>
<div class="d-r-item">
<img class="m1" src="../../../assets/images/EventInsight/ic_wbfg.png" />
<div class="d1">
<span class="ss1">微博覆盖人数</span>
<span class="ss2">{{ countObj.vCount }}</span>
<span class="ss2">{{ countObj.total }}</span>
</div>
</div>
<div class="d-r-item">
<img class="m1" src="../../../assets/images/EventInsight/img_ljgj.png" />
<div class="d1">
<span class="ss1">总转发人数</span>
<span class="ss2">{{ countObj.Count }}</span>
<span class="ss2">{{ countObj.sum }}</span>
</div>
</div>
</div>
@ -48,10 +48,12 @@
</v-label-div>
<div class="d1-inner">
<div class="pv-item" v-for="(item,index) in list" :key="index">
<div class="dm"></div>
<div class="dm">
<img class="mm1" :src="item._source.profileimgurl" width="100%" height="100%">
</div>
<div class="d-f">
<div class="d1">{{item.title}}</div>
<div class="d2">粉丝数<span class="d2-s1">{{item.fans}}</span></div>
<div class="d1">{{item._source.user_author}}</div>
<div class="d2">粉丝数<span class="d2-s1">{{bigNumberTransform(item._source.weibofans)}}</span></div>
</div>
</div>
</div>
@ -63,29 +65,29 @@
<script>
import { getDiffuseZhuTi } from "@/api/EventdEC";
import createOpt from "./opt";
import {bigNumberTransform} from "@/utils/gol/dataTool"
export default {
name: "mediaInterpretationED",
props: {
id: {
type: String,
default: "",
},
},
data() {
return {
bigNumberTransform: bigNumberTransform,
opt: {},
load: false,
sum: "",
form: {
token: "",
sRele: "",
},
countObj: {
carseriesCount: 0,
count: 0,
maxcount: 0,
vCount: 0,
},
props: {
id: {
type: String,
default: "",
},
volume: 0,
total: 0,
sum: 0,
},
colors: [
"#FFB600",
@ -98,44 +100,7 @@ export default {
"#FC754C",
"#5F5EEC",
],
list: [
{
title: "新浪汽车",
fans: "1106w",
},
{
title: "易车",
fans: "1326w",
},
{
title: "主编说车",
fans: "1326w",
},
{
title: "我是评车人",
fans: "1326w",
},
{
title: "汽车老手",
fans: "1326w",
},
{
title: "艾兰汽车",
fans: "1326w",
},
{
title: "我是评车人",
fans: "1326w",
},
{
title: "汽车老手",
fans: "1326w",
},
{
title: "艾兰汽车",
fans: "1326w",
},
],
list: [],
};
},
created() {
@ -148,7 +113,11 @@ export default {
let obj = Object.assign({}, this.form);
getDiffuseZhuTi(obj).then((res) => {
let data = res.data;
this.countObj.sum = data.sum;
this.countObj.volume = data.volume;
this.countObj.total = data.total;
let getCoreDiffuseWeiBo = data.getCoreDiffuseWeiBo || [];
this.list = getCoreDiffuseWeiBo;
let listIdName = data.listIdName || [];
let listPid = data.listPid || [];
let nodes = listIdName;
@ -211,14 +180,19 @@ export default {
margin-top: 16px;
.dm {
position: absolute;
width: 72px;
height: 72px;
border-radius: 72px;
width: 74px;
height: 74px;
border-radius: 74px;
border: 1px solid #ccc;
left: 0px;
top: 0px;
background-color: #fff;
z-index: 10;
.mm1 {
width: 100%;
height: 100%;
border-radius: 74px;
}
}
.d-f {
position: absolute;

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-19 20:00:49
* @LastEditTime: 2021-11-04 16:07:49
* @LastEditTime: 2021-11-17 11:21:46
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/mediaInterpretationEc/index.vue
@ -13,7 +13,7 @@
<div class="mec-inner">
<div class="dd1">
<v-label-div title="媒体解读" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
<dv-scroll-board :config="config" :style="{ width: '100%', height: '358px' }" />
<dv-scroll-board :config="config" :style="{ width: '100%', height: '23rem' }" />
</div>
<div class="dd1">
<v-label-div title="词云" :showLine="false" :eStyle="{'border-style': 'none'}">
@ -33,7 +33,12 @@ import { getSource } from "@/api/EventdEC";
import { getHotWord, getPositive, getNegative } from "@/api/EventdEC";
export default {
name: "mediaInterpretationEc",
props: ["brand", "model"],
props: {
id: {
type: String,
default: ""
}
},
data() {
return {
load: false,
@ -56,7 +61,7 @@ export default {
created() {
this.form.token = this.getToken;
this.form.sRele = this.id;
this.getDdta();
this.getSource();
this.getData1();
},
methods: {
@ -66,27 +71,23 @@ export default {
},
//
getData1() {
this.load = true;
switch (this.type) {
case 0:
getHotWord(this.form).then((res) => {
let data = res.data;
this.opt = createWordCloud(data);
this.load = false;
});
break;
case 1:
getPositive(this.form).then((res) => {
let data = res.data;
this.opt = createWordCloud(data);
this.load = false;
});
break;
case 2:
getNegative(this.form).then((res) => {
let data = res.data;
this.opt = createWordCloud(data);
this.load = false;
});
break;
default:
@ -94,33 +95,26 @@ export default {
}
},
//
getDdta() {
getSource() {
let obj = Object.assign({}, this.form);
getSource(obj).then((res) => {
let data = res.data || [];
this.list = data;
let arr = [];
data.forEach((ele) => {
let a = [ele.events_title, ele.events_number];
let a = [ele.title, ele.count+'家媒体报道'];
arr.push(a);
});
this.config = {
headerBGC: "#0c203b",
oddRowBGC: "#173b6d",
evenRowBGC: "rgba(69, 149, 244, 0)",
rowNum: 10,
columnWidth: [170, 160],
rowNum: 8,
columnWidth: [500],
header: ["标题", "媒体报道数量"],
data: arr,
};
this.load = false;
});
},
//
handlerPagnation(page) {
this.form.iPageIndex = page;
this.getDdta();
},
},
};
</script>

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-10-20 10:56:06
* @LastEditTime: 2021-10-20 11:15:26
* @LastEditTime: 2021-11-17 13:34:01
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /data-show/src/views/EventDEC/wbUserEDE/index.vue
@ -10,16 +10,16 @@
<div class="wue-outter" v-loading="load">
<div class="d1">
<v-label-div title="微博用户画像">
<v-tab-group :btns="['性别', '认证', '地区']"></v-tab-group>
<v-tab-group :btns="['性别', '认证', '地区']" @change="handlerTab"></v-tab-group>
</v-label-div>
<div class="d1-inner">
<div class="dd1">
<v-echarts :opt="opt"></v-echarts>
<v-echarts :opt="opt1"></v-echarts>
</div>
<div class="dd2">
<v-label-ctx label="男性" cont="2200" percentage="25%" color="#3373CC" :eStyle="{ height: '137px' }"></v-label-ctx>
<v-label-ctx label="女性" cont="2200" percentage="25%" color="#a58115" :eStyle="{ height: '137px' }"></v-label-ctx>
<v-label-ctx label="未知" cont="2200" percentage="25%" color="#54BF93 " :eStyle="{ height: '137px' }"></v-label-ctx>
<vue-scroll>
<v-label-ctx v-for="(item,index) in lArr" :key="index" :label="item.key" :cont="item.value" :percentage="(item.value/tot*100).toFixed(2)+'%'" :color="colors[index]" :eStyle="{ height: '8.6rem' }"></v-label-ctx>
</vue-scroll>
</div>
</div>
</div>
@ -30,9 +30,11 @@
<div class="dd1">
<v-echarts :opt="opt"></v-echarts>
</div>
<vue-scroll>
<v-label-ctx v-for="(item, index) in labelArr" :key="index" :label="item.key" :cont="item.value" :percentage="((item.value / total) * 100).toFixed(2) + '%'" :color="colors[index]" :eStyle="{ height: '8.54rem' }"></v-label-ctx>
</vue-scroll>
<div class="dd2">
<vue-scroll>
<v-label-ctx v-for="(item, index) in labelArr" :key="index" :label="item.key" :cont="item.value|formatMoney(0,'',',')" :percentage="((item.value / total) * 100).toFixed(2) + '%'" :color="colors[index]" :eStyle="{ height: '8.54rem' }"></v-label-ctx>
</vue-scroll>
</div>
</div>
</div>
</div>
@ -40,37 +42,66 @@
<script>
import createOpt from "./opt";
import { getAffections } from "@/api/EventdEC";
import { getAffections, getSexMergeWeiBo } from "@/api/EventdEC";
export default {
name: "wbUserEDE",
props: {
id: {
type: String,
default: "",
},
},
data() {
return {
load: false,
opt: createOpt(),
opt: {},
opt1: {},
form: {
token: "",
sRele: "",
},
props: {
id: {
type: String,
default: "",
},
},
RegionWeiBo: [],
attestation: [],
sex: [],
rTotal: 0,
aTotal: 0,
sTotal: 0,
tot: 0,
lArr: [],
labelArr: [],
total: 0,
colors: ["#3373CC", "#54BF93", "#CC9D12"],
colors: [
"#3373CC",
"#54BF93",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
"#54BF93",
"#3373CC",
"#CC9D12",
"#f15c80",
"#e4d354",
"#8085e8",
"#8d4653",
"#91e8e1",
"#f7a35c",
"#90ed7d",
],
};
},
created() {
this.form.token = this.getToken;
this.form.sRele = this.id;
this.getDdta();
this.getSexMergeWeiBo();
},
methods: {
getDdta() {
this.load = true;
let obj = Object.assign({}, this.form);
getAffections(obj).then((res) => {
let data = res.data || {};
@ -87,9 +118,61 @@ export default {
this.labelArr = arr;
this.total = total;
this.opt = createOpt(arr, this.colors);
this.load = false;
});
},
getSexMergeWeiBo() {
let obj = Object.assign({}, this.form);
getSexMergeWeiBo(obj).then((res) => {
let data = res.data;
let RegionWeiBo = data.RegionWeiBo || {};
let attestation = data.attestation || {};
let sex = data.sex || {};
let obj1 = this.doObjToArr(RegionWeiBo);
this.RegionWeiBo = obj1.arr;
this.rTotal = obj1.total;
let obj2 = this.doObjToArr(attestation);
this.attestation = obj2.arr;
this.aTotal = obj2.total;
let obj3 = this.doObjToArr(sex);
this.sex = obj3.arr;
this.sTotal = obj3.total;
this.handlerTab(0);
});
},
doObjToArr(obj) {
let arr = [];
let total = 0;
for (let key in obj) {
let o = {
key: key,
value: obj[key] * 1,
};
total += obj[key] * 1;
arr.push(o);
}
return { arr, total };
},
handlerTab(n) {
switch (n) {
case 0:
this.lArr = this.sex;
this.tot = this.sTotal;
this.opt1 = createOpt(this.lArr, this.colors);
break;
case 1:
this.lArr = this.attestation;
this.tot = this.aTotal;
this.opt1 = createOpt(this.lArr, this.colors);
break;
case 2:
this.lArr = this.RegionWeiBo;
this.tot = this.rTotal;
this.opt1 = createOpt(this.lArr, this.colors);
break;
default:
break;
}
},
},
};
</script>

Loading…
Cancel
Save