prod
parent
43d1446432
commit
9dc4acfbb7
@ -0,0 +1,121 @@
|
||||
<!--
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-09 09:19:06
|
||||
* @LastEditTime: 2021-10-28 13:08:21
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/components/v-label-ctx/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="v-l-c-outter" :style="eStyle">
|
||||
<div class="d1">
|
||||
<span class="s1" :style="{background: color}"></span>
|
||||
<span class="s2">{{label}}</span>
|
||||
</div>
|
||||
<div class="d2">
|
||||
<span class="s1">粉丝数>1千万</span>
|
||||
<span class="s2">{{cont}}</span>
|
||||
</div>
|
||||
<div class="d2">
|
||||
<span class="s1">粉丝数>5百万</span>
|
||||
<span class="s2">{{cont}}</span>
|
||||
</div>
|
||||
<div class="d2">
|
||||
<span class="s1">粉丝数>1百万</span>
|
||||
<span class="s2">{{cont}}</span>
|
||||
</div>
|
||||
<div class="d3">
|
||||
<span class="s1">数量</span>
|
||||
<span class="s2">{{percentage}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "v-label-table",
|
||||
props: {
|
||||
label: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
contLabel: {
|
||||
type: String,
|
||||
default: "数量"
|
||||
},
|
||||
cont: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
},
|
||||
percentage: {
|
||||
type: String,
|
||||
default: "0%"
|
||||
},
|
||||
color: {
|
||||
type: String,
|
||||
default: "#3373CC"
|
||||
},
|
||||
eStyle: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.v-l-c-outter {
|
||||
width: 100%;
|
||||
height: 88px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #0F2A4D;
|
||||
.d1 {
|
||||
display: block;
|
||||
width: 12%;
|
||||
.s1 {
|
||||
display: block;
|
||||
width: 66%;
|
||||
height: 8px;
|
||||
background: red;
|
||||
}
|
||||
.s2 {
|
||||
display: block;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
.d2 {
|
||||
width: 12%;
|
||||
.s1 {
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
color: #7a8289;
|
||||
}
|
||||
.s2 {
|
||||
display: block;
|
||||
font-family: Bebas;
|
||||
font-size: 16px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.d3 {
|
||||
width: 12%;
|
||||
.s1 {
|
||||
display: block;
|
||||
font-size: 16px;
|
||||
color: #7a8289;
|
||||
}
|
||||
.s2 {
|
||||
display: block;
|
||||
font-family: Bebas;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,49 @@
|
||||
<template>
|
||||
<a-modal :visible="visible" :footer="null">
|
||||
<div class="modal-container">
|
||||
<v-label-div title="新建主题"></v-label-div>
|
||||
<a-tabs></a-tabs>
|
||||
<div class="footer">
|
||||
<v-btn @click="handlerSave">保存</v-btn>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "newThemeModal",
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
formData: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handlerSave() {
|
||||
let form = {
|
||||
data: 'test'
|
||||
}
|
||||
this.$emit('onSave',form)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.model-container {
|
||||
width: 1200px;
|
||||
}
|
||||
.footer {
|
||||
align-content: center;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,78 @@
|
||||
<template>
|
||||
<div class="bv-container">
|
||||
<v-label-div title="大V分析" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
|
||||
<div class="bv-inner">
|
||||
<div class="bv-d1">
|
||||
|
||||
</div>
|
||||
<div class="bv-d2">
|
||||
<vue-scroll>
|
||||
<v-label-table v-for="(item,index) in labelData"
|
||||
:key="index" :label="item.key"
|
||||
:cont="item.value"
|
||||
:percentage="(item.value/total*100).toFixed(2) +'%'"
|
||||
:color="colors[index]" contLabel="数量"
|
||||
:eStyle="{ height: '5rem' }">
|
||||
</v-label-table>
|
||||
</vue-scroll>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "BigvAnalize",
|
||||
data() {
|
||||
return {
|
||||
opt: {},
|
||||
labelData: [
|
||||
{key: '微博', value: 1250},
|
||||
{key: '微信', value: 2400}
|
||||
],
|
||||
total: 14000,
|
||||
colors: [
|
||||
"#54BF93",
|
||||
"#3373CC",
|
||||
"#CC9D12",
|
||||
"#f15c80",
|
||||
"#e4d354",
|
||||
"#8085e8",
|
||||
"#8d4653",
|
||||
"#91e8e1",
|
||||
"#f7a35c",
|
||||
"#90ed7d",
|
||||
"#54BF93",
|
||||
"#3373CC",
|
||||
"#CC9D12",
|
||||
"#f15c80",
|
||||
"#e4d354",
|
||||
"#8085e8",
|
||||
"#8d4653",
|
||||
"#91e8e1",
|
||||
"#f7a35c",
|
||||
"#90ed7d",
|
||||
],
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.bv-container {
|
||||
width: 100%;
|
||||
.bv-inner {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
.bv-d1 {
|
||||
width: 430px;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
.bv-d2 {
|
||||
width: 430px;
|
||||
height: auto;
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div class="ba-container">
|
||||
<v-label-div title="博主区域分布" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "BloggerArea"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ba-container {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div class="ctu-container">
|
||||
<v-label-div title="核心传播网民" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "CoreTransformUser"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ctu-container {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div class="container1">
|
||||
<v-label-div title="事件传播历程"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "EventTransform"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.container1 {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div class="pa-outter">
|
||||
<v-label-div title="人群画像认证分析"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "PeopleAuthen"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.pa-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<div class="pg-outter">
|
||||
<v-label-div title="人群画像性别分析"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "PeopleGender"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.pg-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,82 @@
|
||||
<template>
|
||||
<div class="sd-outter">
|
||||
<v-label-div title="渠道分布占比"></v-label-div>
|
||||
<div class="sd-inner">
|
||||
<div class="sd-d1">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
</div>
|
||||
<div class="sd-d2">
|
||||
<vue-scroll>
|
||||
<v-label-ctx v-for="(item,index) in labelData"
|
||||
:key="index" :label="item.key"
|
||||
:cont="item.value"
|
||||
:percentage="(item.value/total*100).toFixed(2) +'%'"
|
||||
:color="colors[index]" contLabel="数量"
|
||||
:eStyle="{ height: '5rem' }">
|
||||
</v-label-ctx>
|
||||
</vue-scroll>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "SourceDivide",
|
||||
data() {
|
||||
return {
|
||||
opt: {},
|
||||
labelData: [
|
||||
{key: '微博', value: 1250},
|
||||
{key: '微信', value: 2400}
|
||||
],
|
||||
total: 14000,
|
||||
colors: [
|
||||
"#54BF93",
|
||||
"#3373CC",
|
||||
"#CC9D12",
|
||||
"#f15c80",
|
||||
"#e4d354",
|
||||
"#8085e8",
|
||||
"#8d4653",
|
||||
"#91e8e1",
|
||||
"#f7a35c",
|
||||
"#90ed7d",
|
||||
"#54BF93",
|
||||
"#3373CC",
|
||||
"#CC9D12",
|
||||
"#f15c80",
|
||||
"#e4d354",
|
||||
"#8085e8",
|
||||
"#8d4653",
|
||||
"#91e8e1",
|
||||
"#f7a35c",
|
||||
"#90ed7d",
|
||||
],
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.sd-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
.sd-inner {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
.sd-d1 {
|
||||
width: 430px;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
.sd-d2 {
|
||||
width: 430px;
|
||||
height: auto;
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<div class="ts-outter">
|
||||
<v-label-div title="主题调性分布"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "ThemeSource"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ts-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<div class="ts-container1">
|
||||
<v-label-div title="渠道分布"></v-label-div>
|
||||
<div class="ts-inner">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TotalSource",
|
||||
data() {
|
||||
return {
|
||||
opt: {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ts-container1 {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
overflow: hidden;
|
||||
.ts-inner {
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<div class="tv-container1">
|
||||
<v-label-div title="总声量趋势"></v-label-div>
|
||||
<div class="tv-inner">
|
||||
<v-echarts :opt="opt"></v-echarts>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TotalVolume",
|
||||
data() {
|
||||
return {
|
||||
opt: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.tv-container1 {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
overflow: hidden;
|
||||
.tv-inner {
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,230 @@
|
||||
<!--
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-08 16:44:08
|
||||
* @LastEditTime: 2021-11-18 11:57:14
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/components/v-ranking/index.vue
|
||||
-->
|
||||
<template>
|
||||
<div class="v-r-container">
|
||||
<div class="v-r-line" v-if="lineShow"></div>
|
||||
<div class="v-r-inner">
|
||||
<div :class="ls">
|
||||
<span class="s1">{{ num|numStr }}</span>
|
||||
</div>
|
||||
<div :class="rs">
|
||||
<span class="v-r-label">{{label}}</span>
|
||||
<div class="v-r-res">
|
||||
<span class="s1">传播量</span>
|
||||
<span class="s2">{{val}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "v-ranking-kmd",
|
||||
props: {
|
||||
num: {
|
||||
type: [String, Number],
|
||||
default: 1,
|
||||
},
|
||||
val: {
|
||||
type: [String, Number],
|
||||
default: 0
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
lineShow: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
|
||||
},
|
||||
watch: {
|
||||
num: {
|
||||
handler(val) {
|
||||
if(val == 1) {
|
||||
this.ls = "v-r-left-1"
|
||||
this.rs = "v-r-right-1"
|
||||
} else if(val == 2) {
|
||||
this.ls = "v-r-left-2"
|
||||
this.rs = "v-r-right-2"
|
||||
} else if(val == 3) {
|
||||
this.ls = "v-r-left-3"
|
||||
this.rs = "v-r-right-3"
|
||||
} else {
|
||||
this.ls = "v-r-left"
|
||||
this.rs = "v-r-right"
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ls: "v-r-left",
|
||||
rs: "v-r-right"
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
numStr(val) {
|
||||
let str = ""
|
||||
if(0<val && val<10) {
|
||||
str = '0' + val
|
||||
} else {
|
||||
str = val + ''
|
||||
}
|
||||
return str
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.v-r-container {
|
||||
width: 446px;
|
||||
height: auto;
|
||||
.v-r-line {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background:#0a1d3b;
|
||||
margin-top: 13px;
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
.v-r-inner {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
margin-top: 6px;
|
||||
color: #fff;
|
||||
background: #0a1d3b;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.v-r-label {
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
margin-left: 40px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.v-r-res {
|
||||
margin-right: 16px;
|
||||
span {
|
||||
display: block;
|
||||
text-align: right;
|
||||
font-size: 12px;
|
||||
}
|
||||
.s1 {
|
||||
color: #9ba4af;
|
||||
}
|
||||
.s2 {
|
||||
color: #fff;
|
||||
font-family: Bebas;
|
||||
}
|
||||
}
|
||||
.v-r-left {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
text-align: center;
|
||||
line-height: 48px;
|
||||
.s1 {
|
||||
color: #9099a6;
|
||||
font-size: 16px;
|
||||
line-height: 48px;
|
||||
font-family: Bebas;
|
||||
}
|
||||
}
|
||||
.v-r-right {
|
||||
position: absolute;
|
||||
width: 420px;
|
||||
height: 48px;
|
||||
border-top: 2px solid transparent;
|
||||
top: 0px;
|
||||
left: 24px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.v-r-left-1 {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
text-align: center;
|
||||
border: 2px solid #cc9d12;
|
||||
border-radius: 48px;
|
||||
.s1 {
|
||||
color: #ffffff;
|
||||
font-size: 16px;
|
||||
line-height: 42px;
|
||||
text-shadow: 0px 0px 8px #cc9d12;
|
||||
font-family: Bebas;
|
||||
}
|
||||
}
|
||||
.v-r-right-1 {
|
||||
position: absolute;
|
||||
width: 420px;
|
||||
height: 48px;
|
||||
border-top: 2px solid #CC9D12;
|
||||
top: 0px;
|
||||
left: 24px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.v-r-left-2 {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
text-align: center;
|
||||
border: 2px solid #3373CC;
|
||||
border-radius: 48px;
|
||||
.s1 {
|
||||
color: #ffffff;
|
||||
font-size: 16px;
|
||||
line-height: 42px;
|
||||
text-shadow: 0px 0px 8px #3373CC;
|
||||
font-family: Bebas;
|
||||
}
|
||||
}
|
||||
.v-r-right-2 {
|
||||
position: absolute;
|
||||
width: 420px;
|
||||
height: 48px;
|
||||
border-top: 2px solid #3373CC;
|
||||
top: 0px;
|
||||
left: 24px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.v-r-left-3 {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
text-align: center;
|
||||
border: 2px solid #54BF93;
|
||||
border-radius: 48px;
|
||||
.s1 {
|
||||
color: #ffffff;
|
||||
font-size: 16px;
|
||||
line-height: 42px;
|
||||
text-shadow: 0px 0px 8px #54BF93;
|
||||
font-family: Bebas;
|
||||
}
|
||||
}
|
||||
.v-r-right-3 {
|
||||
position: absolute;
|
||||
width: 420px;
|
||||
height: 48px;
|
||||
border-top: 2px solid #54BF93;
|
||||
top: 0px;
|
||||
left: 24px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<div class="tf-container">
|
||||
<v-label-div title="传播途径" :showLine="false" :eStyle="{'border-style': 'none'}"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TransformMethod"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.tf-container {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div class="ua-outter">
|
||||
<v-label-div title="用户区域分布"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "UserArea"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ua-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div class="ut-outter">
|
||||
<v-label-div title="用户热议话题"></v-label-div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "UserTopic"
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.ut-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<div class="va-outter">
|
||||
<v-label-div title="声量区域分布"></v-label-div>
|
||||
<div class="va-inner">
|
||||
<div class="va-d1">
|
||||
<v-echarts :opt="opt1"></v-echarts>
|
||||
</div>
|
||||
<div class="va-d2">
|
||||
<v-echars-map :opt="opt2"></v-echars-map>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "VolumeArea",
|
||||
data() {
|
||||
return {
|
||||
opt1: {},
|
||||
opt2: {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.va-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
.va-inner {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
.va-d1 {
|
||||
width: 479px;
|
||||
height: 100%;
|
||||
}
|
||||
.va-d2 {
|
||||
width: 420px;
|
||||
height: 100%;
|
||||
margin-left: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,83 @@
|
||||
|
||||
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-09 12:38:34
|
||||
* @LastEditTime: 2021-10-14 11:48:19
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/views/Index/tailInsight/opt.js
|
||||
*/
|
||||
import * as echarts from "echarts";
|
||||
import { bigNumberTransform } from "@/utils/gol/dataTool"
|
||||
export default function createOptD1(dx=[],ds=[]) {
|
||||
return {
|
||||
grid: {
|
||||
left: 16,
|
||||
right: '5%',
|
||||
bottom: 10,
|
||||
top: "1%",
|
||||
containLabel: true
|
||||
},
|
||||
tooltip: {
|
||||
trigger: "axis",
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;"
|
||||
},
|
||||
xAxis: {
|
||||
type: 'value',
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#fff",
|
||||
},
|
||||
},
|
||||
axisLabel: {
|
||||
formatter: (value) => {
|
||||
let str = bigNumberTransform(value);
|
||||
return str;
|
||||
}
|
||||
},
|
||||
splitLine: {
|
||||
lineStyle: {
|
||||
type: "dashed", // y轴分割线类型
|
||||
color: "#012b4b",
|
||||
},
|
||||
},
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: dx,
|
||||
axisTick: {
|
||||
show: false,
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
lineStyle: {
|
||||
color: "#fff",
|
||||
},
|
||||
},
|
||||
inverse: true
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: '2011',
|
||||
type: 'bar',
|
||||
barWidth: 20,
|
||||
data: ds,
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
|
||||
offset: 0,
|
||||
color: '#010B19'
|
||||
}, {
|
||||
offset: 1,
|
||||
color: '#2f68b4'
|
||||
}]),
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-10-14 11:53:16
|
||||
* @LastEditTime: 2021-11-04 17:17:02
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /data-show/src/views/WeiboDetails/weiboUserActiveArea/opt2.js
|
||||
*/
|
||||
|
||||
export default function createOptD2(dm) {
|
||||
return {
|
||||
tooltip: {
|
||||
trigger: "item",
|
||||
backgroundColor: "#08182F",
|
||||
color: "#fff",
|
||||
borderColor: "#3373CC",
|
||||
textStyle: {
|
||||
color: "#fff", //设置文字颜色
|
||||
},
|
||||
extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;"
|
||||
},
|
||||
// geo: {
|
||||
// show: true,
|
||||
// map: 'china',
|
||||
// roam: false,//地图设置不可拖拽,固定的
|
||||
// itemStyle: {
|
||||
// normal: {
|
||||
// borderWidth: 0,
|
||||
// shadowColor: 'rgba(0,54,255, 1)',
|
||||
// shadowBlur: 100
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
visualMap: {
|
||||
type: 'continuous',
|
||||
show: false,
|
||||
min: 0,
|
||||
max: 2000,
|
||||
text: ['高', '低'],
|
||||
orient: 'horizontal',
|
||||
itemWidth: 15,
|
||||
itemHeight: 200,
|
||||
right: 0,
|
||||
bottom: 30,
|
||||
inRange: {
|
||||
color: ['#0393d2', '#75ddff']
|
||||
},
|
||||
textStyle: {
|
||||
color: 'white'
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: "微博区域",
|
||||
type: "map",
|
||||
mapType: "china",
|
||||
roam: false,
|
||||
zoom: 1,//默认地图在容器中显示zoom:1,可根据需求放大缩小地图
|
||||
left: 16,
|
||||
top: 20,
|
||||
right: 10,
|
||||
bottom: 10,
|
||||
selectedMode:'multiple',
|
||||
colorBy: 'data',
|
||||
itemStyle: {
|
||||
areaColor: '#001f5b',//地图区域背景颜色
|
||||
borderColor: '#005cf9',//地图边界颜色
|
||||
shadowColor: '#005cf9',
|
||||
emphasis: {
|
||||
areaColor: '#3066ba',//鼠标滑过区域颜色
|
||||
label: {
|
||||
color: '#fff'
|
||||
}
|
||||
}
|
||||
},
|
||||
label: {
|
||||
normal: {
|
||||
show: false
|
||||
},
|
||||
},
|
||||
|
||||
// select: {
|
||||
// label: {
|
||||
// show: false
|
||||
// },
|
||||
// itemStyle: {
|
||||
// areaColor: '#3edffe'
|
||||
// }
|
||||
// },
|
||||
data: dm
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<div class="wa-container1">
|
||||
<v-label-div title="微博分析">
|
||||
</v-label-div>
|
||||
<div class="wa-outter">
|
||||
<div class="wa-inner">
|
||||
<div class="wa-dd1">
|
||||
<bigvAnalize></bigvAnalize>
|
||||
</div>
|
||||
<div class="wa-dd1">
|
||||
<coreTransformUser></coreTransformUser>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wa-inner">
|
||||
<div class="wa-dd1">
|
||||
<transformMethod></transformMethod>
|
||||
</div>
|
||||
<div class="wa-dd1">
|
||||
<bloggerArea></bloggerArea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import bigvAnalize from "@/views/ThemeBoard/BigvAnalize" //大V分析
|
||||
import coreTransformUser from "@/views/ThemeBoard/CoreTransformUser" //核心传播网民
|
||||
import transformMethod from "@/views/ThemeBoard/TransformMethod" //传播途径
|
||||
import bloggerArea from "@/views/ThemeBoard/BloggerArea" //博主区域分布
|
||||
export default {
|
||||
name: "WeiboAnalize",
|
||||
components: {
|
||||
bigvAnalize,
|
||||
coreTransformUser,
|
||||
transformMethod,
|
||||
bloggerArea
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.wa-container1 {
|
||||
width: 100%;
|
||||
height: 920px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-top: 16px;
|
||||
overflow: hidden;
|
||||
.wa-inner {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
.wa-dd1 {
|
||||
width: 944px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.wa-inner2 {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
.dd2 {
|
||||
width: 944px;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div class="wc-outter">
|
||||
<v-label-div title="词云">
|
||||
<div>
|
||||
<v-tab-group
|
||||
:btns="['正面', '负面', '热门']"
|
||||
@change="handlerTab"
|
||||
></v-tab-group>
|
||||
</div>
|
||||
</v-label-div>
|
||||
<div class="wc-inner">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "WordCloud",
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handlerTab() {},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.wc-outter {
|
||||
width: 936px;
|
||||
height: 460px;
|
||||
border: 2px solid #0f2a4d;
|
||||
margin-left: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,151 @@
|
||||
<template>
|
||||
<div class="d-container">
|
||||
<div class="d-outter">
|
||||
<div class="d-outter-d1">
|
||||
<v-label-div title="主题概述">
|
||||
<v-btn @click="goBack">返回</v-btn>
|
||||
</v-label-div>
|
||||
<div class="s1">
|
||||
{{themeObj.title}}
|
||||
</div>
|
||||
<div class="s2">
|
||||
{{themeObj.content}}
|
||||
</div>
|
||||
</div>
|
||||
<totalVolume></totalVolume>
|
||||
<eventTransform></eventTransform>
|
||||
<transformAnalize></transformAnalize>
|
||||
<totalSource></totalSource>
|
||||
<div class="d5">
|
||||
<sourceDivide></sourceDivide>
|
||||
<userTopic></userTopic>
|
||||
</div>
|
||||
<div class="d6">
|
||||
<themeSource></themeSource>
|
||||
<wordCloud></wordCloud>
|
||||
</div>
|
||||
<div class="d7">
|
||||
<volumeArea></volumeArea>
|
||||
<userArea></userArea>
|
||||
</div>
|
||||
<div class="d8">
|
||||
<peopleGender></peopleGender>
|
||||
<peopleAuthen></peopleAuthen>
|
||||
</div>
|
||||
<div class="wb-analize">
|
||||
<weiboAnalize></weiboAnalize>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import totalVolume from "./TotalVolume" //总声量趋势
|
||||
import eventTransform from "./EventTransform" //事件传播历程
|
||||
import transformAnalize from "./TransformAnalize" //传播分析
|
||||
import totalSource from "./TotalSource" //渠道分布
|
||||
import sourceDivide from "./SourceDivide" //渠道分布占比
|
||||
import userTopic from "./UserTopic" //用户热议话题
|
||||
import themeSource from "./ThemeSource" //主题调性分布
|
||||
import wordCloud from "./WordCloud" //词云
|
||||
import volumeArea from "./VolumeArea" //声量区域分布
|
||||
import userArea from "./UserArea" //用户区域分布
|
||||
import peopleGender from "./PeopleGender" //人群画像性别分析
|
||||
import peopleAuthen from "./PeopleAuthen" //人群画像认证分析
|
||||
import weiboAnalize from "./WeiboAnalize" //微博分析
|
||||
export default {
|
||||
name: "ThemeBoard",
|
||||
components: {
|
||||
totalVolume,
|
||||
eventTransform,
|
||||
transformAnalize,
|
||||
sourceDivide,
|
||||
userTopic,
|
||||
totalSource,
|
||||
themeSource,
|
||||
wordCloud,
|
||||
volumeArea,
|
||||
userArea,
|
||||
peopleGender,
|
||||
peopleAuthen,
|
||||
weiboAnalize
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
themeObj: {
|
||||
title: '特斯拉续航能力实测',
|
||||
content: '特斯拉续航能力实测'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goBack() {
|
||||
this.$router.go(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.d-outter {
|
||||
padding: 0px 16px 16px 16px;
|
||||
}
|
||||
.d-outter-d1 {
|
||||
width: 100%;
|
||||
height: 195px;
|
||||
border: 2px solid #0f2a4d;
|
||||
overflow: hidden;
|
||||
.s1 {
|
||||
color: rgb(255, 255, 255);
|
||||
font-size: 20px;
|
||||
padding: 16px;
|
||||
}
|
||||
.s2 {
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
font-size: 14px;
|
||||
padding: 0px 16px 16px 16px;
|
||||
}
|
||||
}
|
||||
.d5 {
|
||||
width: 100%;
|
||||
height: 460px;
|
||||
margin-top: 16px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.d6 {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.d7 {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.d8 {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
margin-top: 16px;
|
||||
}
|
||||
.wb-analize {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
border: 2px solid #0f2a4d;
|
||||
justify-content: flex-start;
|
||||
margin-top: 16px;
|
||||
.wb-inner {
|
||||
width: 100%;
|
||||
height: calc(100% - 48px);
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue