|
|
|
@ -7,87 +7,192 @@
|
|
|
|
|
* @FilePath: /data-show/src/views/BrandComparison/weiboUserPortrait/index.vue
|
|
|
|
|
-->
|
|
|
|
|
<template>
|
|
|
|
|
<div class="wup-outter">
|
|
|
|
|
<div class="wup-inner">
|
|
|
|
|
<div class="d1">
|
|
|
|
|
<v-label-div title="微博用户画像" :showLine="false" :eStyle="{'border-style': 'none'}">
|
|
|
|
|
<span style="color: #3373CC ">事件一</span>
|
|
|
|
|
</v-label-div>
|
|
|
|
|
<div class="d1x">
|
|
|
|
|
<div class="dd1">
|
|
|
|
|
<v-echarts :opt="opt1"></v-echarts>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dd2">
|
|
|
|
|
<v-label-ctx label="男性" cont="2200" percentage="25%" color="#3373CC" :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
<v-label-ctx label="女性" cont="2200" percentage="25%" color="#63AECC" :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
<v-label-ctx label="未知" cont="2200" percentage="25%" color="#54BF93 " :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="wup-outter" v-loading="load">
|
|
|
|
|
<div class="wup-inner">
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div class="d1">
|
|
|
|
|
<v-label-div title="" :showLine="false" :eStyle="{'border-style': 'none'}">
|
|
|
|
|
<span style="color: #54BF93 ">事件二</span>
|
|
|
|
|
</v-label-div>
|
|
|
|
|
<div class="d1x">
|
|
|
|
|
<div class="dd1">
|
|
|
|
|
<v-echarts :opt="opt2">
|
|
|
|
|
</v-echarts>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dd2" style="margin-right: 16px">
|
|
|
|
|
<v-label-ctx label="男性" cont="2200" percentage="25%" color="#3373CC" :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
<v-label-ctx label="女性" cont="2200" percentage="25%" color="#63AECC" :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
<v-label-ctx label="未知" cont="2200" percentage="25%" color="#54BF93 " :eStyle="{ height: '122px' }"></v-label-ctx>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="d1">
|
|
|
|
|
<v-label-div
|
|
|
|
|
title="微博用户画像"
|
|
|
|
|
:showLine="false"
|
|
|
|
|
:eStyle="{ 'border-style': 'none' }"
|
|
|
|
|
>
|
|
|
|
|
<span style="color: #3373cc">{{eventList[0]}}</span>
|
|
|
|
|
</v-label-div>
|
|
|
|
|
<div class="d1x">
|
|
|
|
|
<div class="dd1">
|
|
|
|
|
<v-echarts :opt="opt1"></v-echarts>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dd2">
|
|
|
|
|
<v-label-ctx
|
|
|
|
|
v-for="(item, index) in showData1"
|
|
|
|
|
:key="index"
|
|
|
|
|
:label="item.name"
|
|
|
|
|
:cont="item.value"
|
|
|
|
|
:percentage="((item.value / totalData1) * 100).toFixed(2) + '%'"
|
|
|
|
|
:color="colors[index]"
|
|
|
|
|
:eStyle="{ height: '96px' }"
|
|
|
|
|
></v-label-ctx>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div class="d1">
|
|
|
|
|
<v-label-div
|
|
|
|
|
title=""
|
|
|
|
|
:showLine="false"
|
|
|
|
|
:eStyle="{ 'border-style': 'none' }"
|
|
|
|
|
>
|
|
|
|
|
<span style="color: #54bf93">{{eventList[1]}}</span>
|
|
|
|
|
</v-label-div>
|
|
|
|
|
<div class="d1x">
|
|
|
|
|
<div class="dd1">
|
|
|
|
|
<v-echarts :opt="opt2"> </v-echarts>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dd2" style="margin-right: 16px">
|
|
|
|
|
<v-label-ctx
|
|
|
|
|
v-for="(item, index) in showData2"
|
|
|
|
|
:key="index"
|
|
|
|
|
:label="item.name"
|
|
|
|
|
:cont="item.value"
|
|
|
|
|
:percentage="((item.value / totalData2) * 100).toFixed(2) + '%'"
|
|
|
|
|
:color="colors[index]"
|
|
|
|
|
:eStyle="{ height: '96px' }"
|
|
|
|
|
></v-label-ctx>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import { getSexMergeWeiBoC } from "@/api/EventComparison/index.js";
|
|
|
|
|
import createOpt1 from "./opt1";
|
|
|
|
|
import createOpt2 from "./opt2";
|
|
|
|
|
export default {
|
|
|
|
|
name: "wupEc",
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
opt1: createOpt1(),
|
|
|
|
|
opt2: createOpt2(),
|
|
|
|
|
name: "wupEc",
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
opt1: {},
|
|
|
|
|
opt2: {},
|
|
|
|
|
form: {
|
|
|
|
|
token: "",
|
|
|
|
|
sRele: "",
|
|
|
|
|
load: false,
|
|
|
|
|
},
|
|
|
|
|
colors: [
|
|
|
|
|
"#54BF93",
|
|
|
|
|
"#3373CC",
|
|
|
|
|
"#CC9D12",
|
|
|
|
|
"#f15c80",
|
|
|
|
|
"#e4d354",
|
|
|
|
|
"#8085e8",
|
|
|
|
|
"#8d4653",
|
|
|
|
|
"#91e8e1",
|
|
|
|
|
"#f7a35c",
|
|
|
|
|
"#90ed7d",
|
|
|
|
|
"#54BF93",
|
|
|
|
|
"#3373CC",
|
|
|
|
|
"#CC9D12",
|
|
|
|
|
"#f15c80",
|
|
|
|
|
"#e4d354",
|
|
|
|
|
"#8085e8",
|
|
|
|
|
"#8d4653",
|
|
|
|
|
"#91e8e1",
|
|
|
|
|
"#f7a35c",
|
|
|
|
|
"#90ed7d",
|
|
|
|
|
],
|
|
|
|
|
showData1: [],
|
|
|
|
|
showData2: [],
|
|
|
|
|
totalData1: 0,
|
|
|
|
|
totalData2: 0,
|
|
|
|
|
eventList: []
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.initData();
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
initData() {
|
|
|
|
|
this.form.token = this.getToken;
|
|
|
|
|
let arr = [];
|
|
|
|
|
this.getEComparison.forEach((ele) => {
|
|
|
|
|
arr.push(ele.events_id);
|
|
|
|
|
});
|
|
|
|
|
this.form.sRele = arr.toString();
|
|
|
|
|
this.getData();
|
|
|
|
|
},
|
|
|
|
|
getData() {
|
|
|
|
|
let obj = Object.assign({}, this.getCtime2, this.form);
|
|
|
|
|
this.load = true;
|
|
|
|
|
getSexMergeWeiBoC(obj).then((res) => {
|
|
|
|
|
let data = res.data || [];
|
|
|
|
|
let eList = [];
|
|
|
|
|
data.forEach(e=> {
|
|
|
|
|
let subStr = e.Name.substr(0,7) + "...";
|
|
|
|
|
eList.push(subStr);
|
|
|
|
|
})
|
|
|
|
|
this.eventList = eList;
|
|
|
|
|
this.showData1 = this.toArr(data[0].Data.sex);
|
|
|
|
|
this.showData2 = this.toArr(data[1].Data.sex);
|
|
|
|
|
this.totalData1 =
|
|
|
|
|
this.showData1[0].value * 1 +
|
|
|
|
|
this.showData1[1].value * 1 +
|
|
|
|
|
this.showData1[2].value * 1;
|
|
|
|
|
this.totalData2 =
|
|
|
|
|
this.showData2[0].value * 1 +
|
|
|
|
|
this.showData2[1].value * 1 +
|
|
|
|
|
this.showData2[2].value * 1;
|
|
|
|
|
this.opt1 = createOpt1(this.showData1, this.colors);
|
|
|
|
|
this.opt2 = createOpt2(this.showData2, this.colors);
|
|
|
|
|
this.load = false;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
//将对象变成数组
|
|
|
|
|
toArr(obj) {
|
|
|
|
|
let arr = [];
|
|
|
|
|
for (let key in obj) {
|
|
|
|
|
let o = {
|
|
|
|
|
name: key,
|
|
|
|
|
value: obj[key] * 1,
|
|
|
|
|
};
|
|
|
|
|
arr.push(o);
|
|
|
|
|
}
|
|
|
|
|
return arr;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
.wup-outter {
|
|
|
|
|
width: 944px;
|
|
|
|
|
height: 412px;
|
|
|
|
|
.wup-inner {
|
|
|
|
|
width: 944px;
|
|
|
|
|
height: 412px;
|
|
|
|
|
.wup-inner {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
.d1 {
|
|
|
|
|
width: 50%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
.d1x {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: calc(100% - 48px);
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
.d1 {
|
|
|
|
|
width: 50%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
.d1x {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: calc(100% - 48px);
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
.dd1 {
|
|
|
|
|
width: 280px;
|
|
|
|
|
height: 280px;
|
|
|
|
|
}
|
|
|
|
|
.dd2 {
|
|
|
|
|
width: 160px;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
.dd1 {
|
|
|
|
|
width: 280px;
|
|
|
|
|
height: 280px;
|
|
|
|
|
}
|
|
|
|
|
.dd2 {
|
|
|
|
|
width: 160px;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|