许宏杰 1 year ago
commit 7402254487

@ -4,6 +4,6 @@ ENV = 'development'
# base api
VUE_APP_BASE_API = '/dashboard'
VUE_APP_BASE_API2 = 'http://localhost:9027'
VUE_APP_BASE_API2 = 'http://192.168.0.106:9027'
BASE_API = 'http://10.10.3.35:9070'

@ -3,3 +3,6 @@ src/assets
public
dist
mock.js
src/router
*.vue
*.js

@ -34,6 +34,7 @@ export default {
created() {
if (window.location.search != null && window.location.search !== '') {
var tokenObj = qs.parse(window.location.search.substr(1))
console.log(tokenObj);
if (tokenObj.token != null && tokenObj.token !== '') {
setToken(tokenObj.token)
if (tokenObj.redirect != null) {

@ -0,0 +1,18 @@
import request from '@/utils/request.js'
//网络舆情列表
export function yuqingListA(data) {
return request({
url: '/zongzhi/sentiment/list',
method: 'get',
params:data
})
}
//网络舆情详情
export function getWlyq(id) {
return request({
url: `/zongzhi/sentiment/${id}`,
method: 'get',
})
}

@ -0,0 +1,46 @@
import request from '@/utils/request.js'
//舆情分类
export function yuqingTypes(data) {
return request({
url: '/zongzhi/opinionscreen/sentimenclassification',
method: 'post',
data
})
}
//舆情信息量统计
export function yuqingMsgStats() {
return request({
url: '/zongzhi/opinionscreen/sentimencount',
method: 'get',
})
}
//动态筛选
export function sift() {
return request({
url: '/zongzhi/opinionscreen/sentimenfiltering',
method: 'get',
})
}
// 舆情走势图
export function yuqingChart() {
return request({
url: '/zongzhi/opinionscreen/sentimentype',
method: 'get',
})
}
//词云
export function wordCloud() {
return request({
url: '/zongzhi/opinionscreen/wordcloud',
method: 'get',
})
}
//舆情报告
export function yqbg() {
return request({
url: '/zongzhi/opinionscreen/sentimentreport',
method: 'get',
})
}

@ -17,7 +17,7 @@ const dict = {
getDictType({ commit }) {
return new Promise((resolve, reject) => {
const query = {
list: 'sys_user_sex,tc_net_sx,tc_yq_media,tc_enter_type,tc_inlet_yewu,tc_item_type,tc_net_safety_level,tc_yes_no,tc_unit_type,tc_tmt_type,tc_net_safety_level,tc_db_steam_state,tc_attack_type,tc_yh_level,tc_yh_source'
list: 'sys_user_sex,tc_net_sx,tc_yq_media,tc_enter_type,tc_inlet_yewu,tc_item_type,tc_net_safety_level,tc_yes_no,tc_unit_type,tc_tmt_type,tc_db_steam_state,tc_attack_type,tc_yh_level,tc_yh_source,tc_yq_type,tc_event_type,tc_cy_type,tc_yq_state'
}
getDictList(query)
.then((res) => {

@ -9,135 +9,124 @@
</template>
<script>
const colors = [
'rgba(0,236,255,0.8)',
'#fcd338',
'rgba(0,236,255,0.9)',
'#fcd338',
'#fcd338',
'rgba(255,255,255,0.9)',
'#fff',
'#fff',
'#fff',
'rgba(255,255,255,0.8)'
]
const RADIUS = 166 // 3d
const FALLLENGTH = 420
let CX = null
let CY = null
"rgba(0,236,255,0.8)",
"#fcd338",
"rgba(0,236,255,0.9)",
"#fcd338",
"#fcd338",
"rgba(255,255,255,0.9)",
"#fff",
"#fff",
"#fff",
"rgba(255,255,255,0.8)",
];
const RADIUS = 166; // 3d
const FALLLENGTH = 420;
let CX = null;
let CY = null;
class Tag {
constructor(el, x, y, z) {
this.el = el
this.x = x
this.y = y
this.z = z
this.el = el;
this.x = x;
this.y = y;
this.z = z;
}
move() {
const scale = FALLLENGTH / (FALLLENGTH - this.z)
const alpha = (this.z + RADIUS) / (2 * RADIUS)
const left = this.x + CX - this.el.offsetWidth / 2 + 30 + 'px' //
const top = this.y + CY - this.el.offsetHeight / 2 + 10 + 'px' //
this.el.style.opacity = alpha
this.el.style.zIndex = parseInt(scale * 100)
this.el.style.transform = `translate(${left},${top}) scale(${scale})`
const scale = FALLLENGTH / (FALLLENGTH - this.z);
const alpha = (this.z + RADIUS) / (2 * RADIUS);
const left = this.x + CX - this.el.offsetWidth / 2 + 30 + "px"; //
const top = this.y + CY - this.el.offsetHeight / 2 + 10 + "px"; //
this.el.style.opacity = alpha;
this.el.style.zIndex = parseInt(scale * 100);
this.el.style.transform = `translate(${left},${top}) scale(${scale})`;
}
}
import { keyWords } from '@/api/common'
import { keyWords } from "@/api/common";
import { wordCloud } from "@/api/publicOpinion";
export default {
props: {},
data() {
return {
tagList: [],
data: [
{ name: '太仓市委', count: 200 },
{ name: '“交通先行”抢位长三角', count: 400 },
{ name: '太仓速度', count: 600 },
{ name: '开门红', count: 800 },
{ name: '最具幸福感城市', count: 2000 },
{ name: '振翅高飞', count: 350 },
{ name: '娄城防疫', count: 666 },
{ name: '城市更新', count: 899 },
{ name: '争当猛虎尖兵', count: 899 },
{ name: '家在太仓 情暖娄城', count: 899 },
{ name: '城乡文明融合', count: 899 },
{ name: '国土空间全域整治', count: 899 }
]
}
data: [],
};
},
created() {},
mounted() {
// keyWords().then(res => {
// if (res['T_KEYWORDS[]']) {
// this.data = []
// this.data = res['T_KEYWORDS[]']
// }
// setTimeout(() => {
// this.init()
// this.animate()
// }, 10)
// })
setTimeout(() => {
this.init()
this.animate()
}, 10)
this.getDataList();
},
methods: {
getDataList() {
wordCloud().then((res) => {
res.data.forEach((value) => {
this.data.push({
name: this.$filterDict("tc_cy_type", value.type),
count: 3,
});
});
this.init();
this.animate();
});
},
init() {
const tags = document.querySelectorAll('.tag')
const wrap = document.querySelector('.tag-wrap')
const tags = document.querySelectorAll(".tag");
const wrap = document.querySelector(".tag-wrap");
const len = tags.length
const valueList = Array.from(new Set(this.data.map((i) => i.count)))
const min = Math.min(...valueList)
CX = wrap.offsetWidth / 2
CY = wrap.offsetHeight / 2
const len = tags.length;
const valueList = Array.from(new Set(this.data.map((i) => i.count)));
const min = Math.min(...valueList);
CX = wrap.offsetWidth / 2;
CY = wrap.offsetHeight / 2;
tags.forEach((i, index) => {
const fontScale = (this.data[index].count / min) * 16
i.style.fontSize = fontScale > 35 ? '35px' : fontScale + 'px'
i.style.color = colors[parseInt(Math.random() * 10)]
const fontScale = (this.data[index].count / min) * 16;
i.style.fontSize = fontScale > 35 ? "35px" : fontScale + "px";
i.style.color = colors[parseInt(Math.random() * 10)];
const k = -1 + (2 * (index + 1) - 1) / len
const a = Math.acos(k)
const b = a * Math.sqrt(len * Math.PI)
const x = RADIUS * 1.15 * Math.sin(a) * Math.cos(b)
const y = RADIUS * Math.sin(a) * Math.sin(b)
const z = RADIUS * Math.cos(a)
const tag = new Tag(i, x, y, z)
this.tagList.push(tag)
})
const k = -1 + (2 * (index + 1) - 1) / len;
const a = Math.acos(k);
const b = a * Math.sqrt(len * Math.PI);
const x = RADIUS * 1.15 * Math.sin(a) * Math.cos(b);
const y = RADIUS * Math.sin(a) * Math.sin(b);
const z = RADIUS * Math.cos(a);
const tag = new Tag(i, x, y, z);
this.tagList.push(tag);
});
},
rotateX() {
const angleX = Math.PI / 300
const cos = Math.cos(angleX)
const sin = Math.sin(angleX)
const angleX = Math.PI / 300;
const cos = Math.cos(angleX);
const sin = Math.sin(angleX);
this.tagList.forEach((i) => {
const y1 = i.y * cos - i.z * sin
const z1 = i.z * cos + i.y * sin
i.y = y1
i.z = z1
})
const y1 = i.y * cos - i.z * sin;
const z1 = i.z * cos + i.y * sin;
i.y = y1;
i.z = z1;
});
},
rotateY() {
const angleY = Math.PI / 500
const cos = Math.cos(angleY)
const sin = Math.sin(angleY)
const angleY = Math.PI / 500;
const cos = Math.cos(angleY);
const sin = Math.sin(angleY);
this.tagList.forEach((i) => {
const x1 = i.x * cos - i.z * sin
const z1 = i.z * cos + i.x * sin
i.x = x1
i.z = z1
})
const x1 = i.x * cos - i.z * sin;
const z1 = i.z * cos + i.x * sin;
i.x = x1;
i.z = z1;
});
},
animate() {
this.rotateX()
this.rotateY()
this.rotateX();
this.rotateY();
this.tagList.forEach((i) => {
i.move()
})
requestAnimationFrame(this.animate)
}
}
}
i.move();
});
requestAnimationFrame(this.animate);
},
},
};
</script>
<style lang="scss" scoped>
.tag-wrap {

@ -20,10 +20,14 @@
class="StatisticsInfo"
>
<img :src="item.url" alt="" />
<span style="cursor: pointer" @click="clickDetails(item.name)">
{{ item.name }}</span>
<span
style="cursor: pointer"
@click="clickDetails(item.name, item.type)"
>
{{ item.name }}</span
>
<el-progress
:percentage="item.value"
:percentage="item.value || 0"
:color="item.color"
></el-progress>
<div class="StatisticsText">
@ -39,7 +43,8 @@
@mouseover="mouseOver"
@mouseleave="mouseLeave"
>
<module-title>舆情分类
<module-title
>舆情分类
<div slot="operate" class="btn-wrap">
<div
v-for="(item, idx) in sentimeentList.options"
@ -53,8 +58,8 @@
</div>
</div>
</module-title>
<sentimentPie v-show="currentIndex === 1"></sentimentPie>
<media-pie v-show="currentIndex === 0"></media-pie>
<sentimentPie v-show="currentIndex === 1"></sentimentPie>
</div>
<div class="section section-attackRanking" style="padding-top: 35px">
<module-title>动态筛选</module-title>
@ -92,10 +97,7 @@
</div>
<div class="total_info">
<!-- :value="warningCount" -->
<NumberGrow
value="5437"
:step="oldWarningCount"
></NumberGrow>
<NumberGrow value="5437" :step="oldWarningCount"></NumberGrow>
</div>
<div class="percent">%</div>
</div>
@ -124,11 +126,6 @@
<el-table-column
label="序号"
type="index"
:index="
(index) => {
return index + 1 + (currentPage - 1) * pageSize;
}
"
width="80"
align="center"
/>
@ -146,9 +143,9 @@
</el-table>
<div style="text-align: right">
<el-pagination
:current-page="currentPage"
:current-page="queryData.pageNum"
:page-sizes="[10, 20, 30, 50, 100]"
:page-size="pageSize"
:page-size="queryData.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
popper-class="select_bottom"
@ -177,15 +174,21 @@
<div style="padding: 0 0 0 80px; height: 730px; overflow: auto">
<el-row>
<el-col :span="3" class="detail_title">标题</el-col>
<el-col :span="21" class="detail_text">{{ rowDta.title }}</el-col>
<el-col :span="21" class="detail_text">{{
rowDta.sentimentName
}}</el-col>
</el-row>
<el-row>
<el-col :span="3" class="detail_title">内容</el-col>
<el-col :span="21" class="detail_text">{{ rowDta.content }}</el-col>
<el-col :span="21" class="detail_text">{{
rowDta.sentimentContent || ""
}}</el-col>
</el-row>
<el-row>
<el-col :span="3" class="detail_title">来源</el-col>
<el-col :span="21" class="detail_text">{{ rowDta.source }}</el-col>
<el-col :span="21" class="detail_text">{{
$filterDict("tc_yq_media", rowDta.source)
}}</el-col>
</el-row>
<el-row>
<el-col :span="3" class="detail_title">时间</el-col>
@ -196,10 +199,9 @@
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="dialogDetails = false"
> </el-button>
<el-button class="dialog-btn" @click="dialogDetails = false"
> </el-button
>
</span>
</span>
</el-dialog>
@ -208,24 +210,36 @@
</template>
<script>
import { echartsJump } from '../../../../../public/static/echartsJump'
import ModuleTitle from '../../common/ModuleTitle.vue'
import sentimentPie from './sentimentPie.vue'
import mediaPie from './mediaPie.vue'
import NumberGrow from './NumberGrow.vue'
import { publicOpinionTrendChart, statisticsOfPublicOpinionInformation, allProjects, newsList, opinionWarningDetail, newswarningList, loaclMedia } from '@/api/common'
import { title } from '../../../../settings'
import { echartsJump } from "../../../../../public/static/echartsJump";
import ModuleTitle from "../../common/ModuleTitle.vue";
import sentimentPie from "./sentimentPie.vue";
import mediaPie from "./mediaPie.vue";
import NumberGrow from "./NumberGrow.vue";
import {
publicOpinionTrendChart,
statisticsOfPublicOpinionInformation,
allProjects,
newsList,
opinionWarningDetail,
newswarningList,
loaclMedia,
} from "@/api/common";
import { title } from "../../../../settings";
//=======
import { yuqingChart, yuqingMsgStats, sift } from "@/api/publicOpinion";
import { yuqingListA, getWlyq } from "@/api/consensusList";
export default {
components: {
ModuleTitle,
sentimentPie,
mediaPie,
NumberGrow
NumberGrow,
},
filters: {
commaFilter(target) {
return String(target).replace(/(\d)(?=(\d{3})+$)/g, '$1,')
}
return String(target).replace(/(\d)(?=(\d{3})+$)/g, "$1,");
},
},
data() {
return {
@ -241,61 +255,65 @@ export default {
// },
{
value: 2,
name: '本地相关信息量',
info: '1735',
color: '#4799f8',
url: require('@/assets/sentimeent/舆情icon-2.png')
name: "本地相关信息量",
info: "0",
color: "#4799f8",
url: require("@/assets/sentimeent/舆情icon-2.png"),
type: 3,
},
{
value: 3,
name: '本地敏感信息量',
info: '1716',
color: '#ff5432',
url: require('@/assets/sentimeent/舆情icon-5.png')
name: "本地敏感信息量",
info: "0",
color: "#ff5432",
url: require("@/assets/sentimeent/舆情icon-5.png"),
type: 1,
},
{
value: 4,
name: '推送预警信息量',
info: '1436',
color: '#ffed61',
url: require('@/assets/sentimeent/舆情icon-4.png')
name: "推送预警信息量",
info: "0",
color: "#ffed61",
url: require("@/assets/sentimeent/舆情icon-4.png"),
type: 4,
},
{
value: 5,
name: '聚焦本地媒体量',
info: '985',
color: '#20b028',
url: require('@/assets/sentimeent/舆情icon-3.png')
}
name: "聚焦本地媒体量",
info: "0",
color: "#20b028",
url: require("@/assets/sentimeent/舆情icon-3.png"),
type: 5,
},
],
Warning: [
{
value: 1,
name: '舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情',
time: '2021-12-13 13:30:20',
from: '舆情来源'
name: "舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情",
time: "2021-12-13 13:30:20",
from: "舆情来源",
},
{
value: 2,
name: '舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情',
time: '2021-12-13 13:30:20',
from: '舆情来源'
name: "舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情",
time: "2021-12-13 13:30:20",
from: "舆情来源",
},
{
value: 3,
name: '舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情',
time: '2021-12-13 13:30:20',
from: '舆情来源'
name: "舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情",
time: "2021-12-13 13:30:20",
from: "舆情来源",
},
{
value: 4,
name: '舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情',
time: '2021-12-13 13:30:20',
from: '舆情来源'
}
name: "舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情舆情预警标题舆情预警标题舆情预警标题舆情预警标题舆情",
time: "2021-12-13 13:30:20",
from: "舆情来源",
},
],
sentimeentList: {
options: ['媒体类型', '涉事类型']
options: ["媒体类型", "涉事类型"],
},
dialogStatus: false,
totalPage: 1, // 1
@ -305,38 +323,53 @@ export default {
currentPageData: [], //
tableHeader: [],
tableData: [],
dialogTitle: '',
dialogTitle: "",
dialogDetails: false,
rowDta: {},
opinionTime: [],
positiveOpinion: [225389, 190638, 194116, 175397, 173355, 163703, 196261],
negativeOpinion: [20902, 22124, 21617, 20806, 22561, 21754, 22062],
obj: {
'locNewsTotal': '本地相关信息量',
locNewsTotal: "本地相关信息量",
// '': '',
'locNegTotal': '本地敏感信息量',
'推送预警量': '推送预警信息量',
'本地媒体量': '聚焦本地媒体量'
locNegTotal: "本地敏感信息量",
推送预警量: "推送预警信息量",
本地媒体量: "聚焦本地媒体量",
},
newsCount: 0,
warningCount: 0,
oldNewsCount: 0,
oldWarningCount: 0,
filterTime: ''
}
filterTime: "",
//=================
jcMsgData: {},
queryData: {
pageNum: 1,
pageSize: 10,
sentimentType: "",
},
//
positiveOpinion: [],
negativeOpinion: [],
date: [],
};
},
computed: {},
watch: {
newsCount(newVal, oldVal) {
this.oldNewsCount = oldVal
this.oldNewsCount = oldVal;
},
warningCount(newVal, oldVal) {
this.oldWarningCount = oldVal
}
this.oldWarningCount = oldVal;
},
},
created() {
//
this.getyqData();
//
this.getyqMsgStats();
},
created() { },
destroyed() {
clearInterval(this.attackTime) //
clearInterval(this.attackTime); //
},
mounted() {
// publicOpinionTrendChart().then((res) => {
@ -375,7 +408,6 @@ export default {
// })
// this.lineBox()
// })
this.lineBox()
// statisticsOfPublicOpinionInformation().then(res => {
// res['T_GET_PARAMETER[]']?.forEach(item => {
// this.Statistics.forEach(e => {
@ -408,105 +440,145 @@ export default {
// }
// })
// })
this.changeBtn()
this.getFilterData()
this.changeBtn();
this.getFilterData();
this.getyqData();
},
beforeDestroy() {
clearInterval(this.filterTime)
clearInterval(this.filterTime);
},
methods: {
initTime() {
const timeArr = []
const timeArr = [];
for (let i = 0; i < 7; i++) {
const time = new Date(new Date().setDate(new Date().getDate() + i - 7))
const month = `${time.getMonth() + 1}`.slice(-2)
const strDate = `${time.getDate()}`.slice(-2)
timeArr.push(`${month}.${strDate}`)
const time = new Date(new Date().setDate(new Date().getDate() + i - 7));
const month = `${time.getMonth() + 1}`.slice(-2);
const strDate = `${time.getDate()}`.slice(-2);
timeArr.push(`${month}.${strDate}`);
}
return timeArr
return timeArr;
},
getFilterData() {
this.filterTime = setInterval(() => {
this.getData()
}, 600000)
this.getData();
}, 600000);
},
getData() {
statisticsOfPublicOpinionInformation().then(res => {
res['T_GET_PARAMETER[]'].forEach(item => {
if (item.NAME === 'newsCount') {
this.newsCount = item.CODE
statisticsOfPublicOpinionInformation().then((res) => {
res["T_GET_PARAMETER[]"].forEach((item) => {
if (item.NAME === "newsCount") {
this.newsCount = item.CODE;
}
if (item.NAME === 'warningCount') {
this.warningCount = item.CODE
if (item.NAME === "warningCount") {
this.warningCount = item.CODE;
}
})
})
});
});
},
//
//
mouseOver() {
clearInterval(this.attackTime)
clearInterval(this.attackTime);
},
//
mouseLeave() {
this.changeBtn()
this.changeBtn();
},
//
changeBtn() {
this.attackTime = setInterval(() => {
this.currentIndex === 0
? (this.currentIndex = 1)
: (this.currentIndex = 0)
}, 11000)
: (this.currentIndex = 0);
}, 11000);
},
//
getyqData() {
yuqingChart().then((res) => {
console.log(res);
res.data.forEach((value) => {
if (value.type == 2) {
this.positiveOpinion.push(value.count);
} else if (value.type == 1) {
this.negativeOpinion.push(value.count);
}
//
});
// const res = new Map();
// let arr = res.data.filter(
// (item) => !res.has(item[uniId]) && res.set(item[uniId], 1)
// );
this.lineBox();
console.log(this.negativeOpinion);
console.log(this.positiveOpinion);
});
},
//
getyqMsgStats() {
yuqingMsgStats().then((res) => {
let arr = res.data;
this.Statistics.forEach((value1, index1) => {
arr.forEach((value2, index2) => {
if (value1.type == value2.type) {
this.Statistics[index1].info = value2.count;
this.Statistics[index1].value = value2.pt;
return;
}
});
});
});
sift().then((res) => {
console.log(res);
});
},
// 线
lineBox() {
const myChart = this.$echarts.init(document.getElementById('lineBox'))
const myChart = this.$echarts.init(document.getElementById("lineBox"));
const options = {
grid: {
top: '20%',
bottom: '15%',
left: '17%',
right: '1%'
top: "20%",
bottom: "15%",
left: "17%",
right: "1%",
},
legend: {
data: ['非敏感', '敏感'],
top: '3%',
right: '2%',
data: ["非敏感", "敏感"],
top: "3%",
right: "2%",
itemHeight: 10,
itemWidth: 10,
textStyle: {
padding: [10, 30, 10, 14],
color: 'rgba(250,250,250,1)',
fontSize: 28
}
color: "rgba(250,250,250,1)",
fontSize: 28,
},
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c} ',
trigger: "item",
formatter: "{a} <br/>{b} : {c} ",
axisPointer: {
lineStyle: {
width: 0
}
width: 0,
},
},
backgroundColor: '#fff',
backgroundColor: "#fff",
textStyle: {
color: '#5c6c7c'
}
color: "#5c6c7c",
},
},
xAxis: {
// data: this.opinionTime,
data: ['7.23', '7.24', '7.25', '7.26', '7.27', '7.28', '7.29'],
data: ["7.23", "7.24", "7.25", "7.26", "7.27", "7.28", "7.29"],
axisLine: {
show: true, // X线
lineStyle: {
color: 'rgb(119,123,132,1)',
width: 1
}
color: "rgb(119,123,132,1)",
width: 1,
},
},
axisTick: {
show: true, // X
length: 0.2
length: 0.2,
},
axisLabel: {
show: true,
@ -516,14 +588,14 @@ export default {
// margin: 15,
// position: [100, 100],
textStyle: {
color: '#6ddefb', // X
fontSize: 28
}
color: "#6ddefb", // X
fontSize: 28,
},
},
grid: {
left: '50%',
bottom: '35%'
}
left: "50%",
bottom: "35%",
},
// splitArea: {
// interval: 0,
// show: true,
@ -534,210 +606,148 @@ export default {
},
yAxis: [
{
name: '单位:件',
name: "单位:件",
min: 0,
// max: 3500,
splitNumber: 7,
type: 'value',
type: "value",
nameTextStyle: {
padding: [10, 0, 10, 0],
color: 'rgb(255,255,255,1)',
color: "rgb(255,255,255,1)",
fontSize: 28,
left: 20
left: 20,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: 'rgba(77, 128, 254, 0.4)',
width: 1
}
type: "dashed",
color: "rgba(77, 128, 254, 0.4)",
width: 1,
},
},
axisTick: {
show: true
show: true,
},
axisLine: {
show: false
show: false,
},
axisLabel: {
show: true,
textStyle: {
color: 'rgba(250,250,250,1)',
fontSize: 28
}
}
}
color: "rgba(250,250,250,1)",
fontSize: 28,
},
},
},
],
series: [
{
name: '非敏感',
type: 'bar',
name: "非敏感",
type: "bar",
barWidth: 12,
itemStyle: {
normal: {
color: '#38c5ff'
}
color: "#38c5ff",
},
},
// data: this.positiveOpinion
data: [70, 50, 70, 60, 30, 40, 70]
data: this.positiveOpinion,
},
{
name: '敏感',
type: 'bar',
name: "敏感",
type: "bar",
barWidth: 12,
itemStyle: {
color: '#fc6a31'
color: "#fc6a31",
},
// data: this.negativeOpinion
data: [30, 10, 70, 64, 60, 10, 20]
}
]
}
myChart.setOption(options, true)
echartsJump(myChart, options)
data: this.negativeOpinion,
},
],
};
myChart.setOption(options, true);
echartsJump(myChart, options);
},
clickDetails(val) {
this.currentPage = 1
this.pageSize = 10
let data = {
pageSize: 1000,
//
clickDetails(val, type) {
this.tableHeader = [
{ key: "标题", value: "sentimentName" },
{ key: "来源", width: 120, value: "source" },
{ key: "时间", width: 200, value: "publishTime" },
];
this.queryData = {
pageNum: 1,
orientation: '',
areaId: '80244',
subjectId: this.obj[val]
}
if (val === '本地敏感信息量') {
data = {
pageSize: 1000,
pageNum: 1,
subjectId: this.obj[val],
orientation: '2',
areaId: '80244'
}
}
if (val === '本地相关信息量' || val === '本地敏感信息量') {
// newsList(data).then(res => {
// this.tableData = res.data.list
this.tableData = [
{ title: '相关信息',
source: '抖音',
publishTime: '2023-07-31' }
]
// this.tableData.forEach(item => {
// item.publishTime = item.publishTime.substring(0, 4) + '-' + item.publishTime.substring(4, 6) + '-' + item.publishTime.substring(6, 8) + ' ' + item.publishTime.substring(8, 10) + ':' + item.publishTime.substring(10, 12) + ':' + item.publishTime.substring(12, 14)
// })
this.tableHeader = [
{ key: '标题', value: 'title' }, { key: '来源', width: 120, value: 'source' }, { key: '时间', width: 200, value: 'publishTime' }
]
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
this.dialogTitle = val
this.dialogStatus = true
// })
} else if (val === '推送预警信息量') {
const warningData = {
pageSize: 1000,
pageNum: 1
}
// newswarningList(warningData).then(res => {
// this.tableData = res.data.list
// this.tableData.forEach(item => {
// item.publishTime = this.format(item.publishTime)
// })
this.tableData = [
{ title: '相关信息',
webSite: '今日头条',
publishTime: '2023-07-31' }
]
this.tableHeader = [
{ key: '标题', value: 'title' }, { key: '来源', width: 120, value: 'webSite' }, { key: '时间', width: 200, value: 'publishTime' }
]
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
this.dialogTitle = val
this.dialogStatus = true
// })
} else if (val === '聚焦本地媒体量') {
// loaclMedia().then(res => {
// this.tableData = res['T_LOCAL_MEDIA[]']
// if (process.env.NODE_ENV === 'production') {
// this.tableData.forEach(item => {
// item.publishTime = item.publish_time
// })
// } else {
// this.tableData.forEach(item => {
// item.publishTime = item.publish_time.substring(0, 4) + '-' + item.publish_time.substring(4, 6) + '-' + item.publish_time.substring(6, 8) + ' ' + item.publish_time.substring(8, 10) + ':' + item.publish_time.substring(10, 12) + ':' + item.publish_time.substring(12, 14)
// })
// }
this.tableData = [
{ title: '相关信息',
source: '微博',
publishTime: '2023-07-31' }
]
this.tableHeader = [
{ key: '标题', value: 'title' }, { key: '来源', width: 120, value: 'source' }, { key: '时间', width: 200, value: 'publishTime' }
]
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
this.dialogTitle = val
this.dialogStatus = true
// })
}
pageSize: 10,
sentimentType: type,
};
this.dialogTitle = val;
this.wlyqList();
},
// list
wlyqList() {
yuqingListA(this.queryData).then((res) => {
console.log(res);
this.currentPageData = res.rows;
this.currentPageData.forEach((value, index) => {
this.currentPageData[index].source = this.$filterDict(
"tc_yq_media",
value.source
);
});
this.total = res.total;
this.dialogStatus = true;
});
},
// [0~10],[10~20]...,
setCurrentPageData() {
const begin = (this.currentPage - 1) * this.pageSize
const end = this.currentPage * this.pageSize
this.currentPageData = this.tableData.slice(begin, end)
const begin = (this.currentPage - 1) * this.pageSize;
const end = this.currentPage * this.pageSize;
this.currentPageData = this.tableData.slice(begin, end);
},
handleSizeChange(val) {
this.pageSize = val
this.setCurrentPageData()
this.queryData.pageSize = val;
this.wlyqList();
},
handleCurrentChange(val) {
this.currentPage = val
this.setCurrentPageData()
this.queryData.pageNum = val;
this.wlyqList();
},
rowClick(row) {
if (this.dialogTitle === '聚焦本地媒体量') return
this.dialogDetails = true
Object.assign(this.rowDta, { title: '标题', content: '这是内容', source: '这是来源', publishTime: '2023-08-04' })
// row.publishTime = row.publishTime.substring(0, 10)
// opinionWarningDetail(
// row
// ).then((res) => {
// Object.assign(this.rowDta, res.data)
// this.dialogDetails = true
// })
this.dialogDetails = true;
getWlyq(row.id).then((res) => {
this.rowDta = res.data;
});
},
dialogClose() {
this.dialogStatus = false
this.pageSize = 20
this.currentPage = 1
this.dialogStatus = false;
this.pageSize = 20;
this.currentPage = 1;
},
format(data) {
var time = new Date(data)
var y = time.getFullYear()
var m = time.getMonth() + 1
var d = time.getDate()
var hh = time.getHours()
var mm = time.getMinutes()
var ss = time.getSeconds()
return y + '-' + this.add0(m) + '-' + this.add0(d) + ' ' + this.add0(hh) + ':' + this.add0(mm) + ':' + this.add0(ss)
var time = new Date(data);
var y = time.getFullYear();
var m = time.getMonth() + 1;
var d = time.getDate();
var hh = time.getHours();
var mm = time.getMinutes();
var ss = time.getSeconds();
return (
y +
"-" +
this.add0(m) +
"-" +
this.add0(d) +
" " +
this.add0(hh) +
":" +
this.add0(mm) +
":" +
this.add0(ss)
);
},
add0(m) { return m < 10 ? '0' + m : m }
}
}
add0(m) {
return m < 10 ? "0" + m : m;
},
},
};
</script>
<style lang="scss" scoped>
@ -799,7 +809,7 @@ export default {
.sx {
width: 300px;
height: 400px;
background: url('~@/assets/sentimeent/筛选效果.png') no-repeat center;
background: url("~@/assets/sentimeent/筛选效果.png") no-repeat center;
position: absolute;
top: 0px;
left: 95px;
@ -808,7 +818,7 @@ export default {
.yellow {
width: 400px;
height: 60px;
background: url('~@/assets/sentimeent/黄网.png') no-repeat center;
background: url("~@/assets/sentimeent/黄网.png") no-repeat center;
position: absolute;
left: 50px;
top: 40px;
@ -817,7 +827,7 @@ export default {
.blue {
width: 313px;
height: 47px;
background: url('~@/assets/sentimeent/蓝网.png') no-repeat center;
background: url("~@/assets/sentimeent/蓝网.png") no-repeat center;
position: absolute;
left: 100px;
top: 130px;
@ -827,7 +837,7 @@ export default {
.yellow_box {
width: 243px;
height: 54px;
background: url('~@/assets/sentimeent/黄备注.png') no-repeat left;
background: url("~@/assets/sentimeent/黄备注.png") no-repeat left;
position: absolute;
top: 21px;
right: 40px;
@ -867,7 +877,7 @@ export default {
.blue_box {
width: 223px;
height: 54px;
background: url('~@/assets/sentimeent/蓝备注.png') no-repeat left;
background: url("~@/assets/sentimeent/蓝备注.png") no-repeat left;
position: absolute;
top: 110px;
right: 90px;
@ -905,7 +915,7 @@ export default {
.total {
width: 292px;
height: 141px;
background: url('~@/assets/sentimeent/bg-筛选.png');
background: url("~@/assets/sentimeent/bg-筛选.png");
position: absolute;
right: 64px;
top: 230px;
@ -960,14 +970,14 @@ export default {
height: 833px;
background: #000;
position: absolute;
background: url('~@/assets/sentimeent/右.png');
background: url("~@/assets/sentimeent/右.png");
top: 50px;
left: 0px;
}
#lineBox {
width: 720px;
height: 400px;
background: url('~@/assets/sentimeent/柱状-12月-bg.png') no-repeat;
background: url("~@/assets/sentimeent/柱状-12月-bg.png") no-repeat;
}
.Statistics {
width: 652px;
@ -1016,7 +1026,7 @@ export default {
.lineInfo {
width: 646px;
height: 80px;
background: url('~@/assets/sentimeent/bg-舆情预警.png') no-repeat center;
background: url("~@/assets/sentimeent/bg-舆情预警.png") no-repeat center;
position: relative;
margin-bottom: 20px;
}
@ -1040,7 +1050,7 @@ export default {
width: 22px;
height: 22px;
position: absolute;
background: url('~@/assets/sentimeent/icon-预警.png');
background: url("~@/assets/sentimeent/icon-预警.png");
top: 11px;
left: 20px;
z-index: 9999;
@ -1082,7 +1092,7 @@ export default {
height: 833px;
background: #000;
position: absolute;
background: url('~@/assets/sentimeent/左.png') no-repeat center;
background: url("~@/assets/sentimeent/左.png") no-repeat center;
top: 50px;
right: 0px;
}
@ -1123,7 +1133,7 @@ export default {
}
.screen-dialog {
.dialog-btn {
background: url('~@/assets/dialog/btn-bg.png') no-repeat;
background: url("~@/assets/dialog/btn-bg.png") no-repeat;
background-size: 100% 100%;
width: 160px;
height: 50px;
@ -1140,7 +1150,7 @@ export default {
}
.dialog-footer :hover {
.dialog-btn {
background: url('~@/assets/dialog/btn-bg-act.png') no-repeat;
background: url("~@/assets/dialog/btn-bg-act.png") no-repeat;
background-size: 100% 100%;
}
}
@ -1159,7 +1169,7 @@ export default {
}
}
::v-deep .el-dialog {
background: url('../../../../assets/dialog/弹窗背景-一般.png') no-repeat;
background: url("../../../../assets/dialog/弹窗背景-一般.png") no-repeat;
width: 1820px;
height: 950px;
background-size: 100% 100%;
@ -1280,7 +1290,7 @@ export default {
.dialog-explain {
margin-top: 39px;
height: 125px;
background: url('~@/assets/dialog/信息-bg.png') no-repeat 100% 100%;
background: url("~@/assets/dialog/信息-bg.png") no-repeat 100% 100%;
}
.dialog-content {
width: 1073px;

@ -14,7 +14,8 @@
<word-cloud></word-cloud>
</div>
<div class="section">
<module-title>舆情预警
<module-title
>舆情预警
<div slot="operate" class="btn-warning">
<i @click="previousWarning"></i>
<i @click="nextWarning"></i>
@ -22,14 +23,19 @@
</module-title>
<div class="warningBox" @click="openDetailLog()">
<div class="warningBox-BJ"></div>
<div class="warning-title" :title="currentWarningObj.title">
{{ currentWarningObj.title }}
<div class="warning-title" :title="currentWarningObj.sentimentName">
{{ currentWarningObj.sentimentName }}
</div>
<div class="warning-content" :title="currentWarningObj.content">
{{ currentWarningObj.content }}
<div
class="warning-content"
:title="currentWarningObj.sentimentContent"
>
{{ currentWarningObj.sentimentContent }}
</div>
<div class="warning-time">{{ currentWarningObj.publishTime }}</div>
<div class="warning-source">{{ currentWarningObj.source }}</div>
<div class="warning-source">
{{ $filterDict("tc_yq_media", currentWarningObj.source) }}
</div>
</div>
</div>
<div class="section" style="padding-top: 35px">
@ -63,17 +69,17 @@
<div class="Special-report" @click="reportDetails('专报')">
<div class="Special-icon"></div>
<div class="Special-title">专报</div>
<div class="Special-num">16</div>
<div class="Special-num">{{ filteryqbg(1) }}</div>
</div>
<div class="Monthly-report" @click="reportDetails('月报')">
<div class="Monthly-icon"></div>
<div class="Monthly-title">月报</div>
<div class="Monthly-num">13</div>
<div class="Monthly-num">{{ filteryqbg(2) }}</div>
</div>
<div class="depth-report" @click="reportDetails('深度报告')">
<div class="depth-icon"></div>
<div class="depth-title">深度报告</div>
<div class="depth-num">3</div>
<div class="depth-num">{{ filteryqbg(3) }}</div>
</div>
</div>
</div>
@ -117,9 +123,15 @@
class="monitor-list"
>
<!-- @click="rowClick(item.attUrl,'details')" -->
<span :title="item.attName">{{ item.attName }}</span>
<span :title="item.deptName">{{ item.deptName }}</span>
<span :title="item.opinionStatusName" :style="activation(item.opinionStatusName)">{{ activationName(item.opinionStatusName) }}</span>
<span :title="item.sentimentName">{{
item.sentimentName
}}</span>
<span :title="item.depName">{{ item.depName }}</span>
<span
:title="item.opinionStatusName"
:style="activation(item.sentimentState)"
>{{ $filterDict("tc_yq_state", item.sentimentState) }}</span
>
</div>
</vue-seamless-scroll>
</div>
@ -160,10 +172,10 @@
<el-table-column
v-if="item !== '序号'"
:key="item"
:prop="(dialogTitle==='提示单'|| dialogTitle === '转办单')?item.prop:item"
prop="sentimentName"
align="center"
show-overflow-tooltip
:label="(dialogTitle==='提示单'|| dialogTitle === '转办单')?item.label:item"
label="标题名称"
>
</el-table-column>
</template>
@ -184,7 +196,12 @@
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button style="margin-top:112px" class="dialog-btn" @click="dialogClose"> </el-button>
<el-button
style="margin-top: 112px"
class="dialog-btn"
@click="dialogClose"
> </el-button
>
</span>
</span>
</el-dialog>
@ -224,10 +241,9 @@
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="dialogDetails = false"
> </el-button>
<el-button class="dialog-btn" @click="dialogDetails = false"
> </el-button
>
</span>
</span>
</el-dialog>
@ -245,19 +261,19 @@
<el-row>
<el-col :span="3" class="detail_title">标题</el-col>
<el-col :span="21" class="detail_text">
{{ currentWarningObj.title }}
{{ currentWarningObj.sentimentName }}
</el-col>
</el-row>
<el-row>
<el-col :span="3" class="detail_title">内容</el-col>
<el-col :span="21" class="detail_text">{{
currentWarningObj.content
currentWarningObj.sentimentContent
}}</el-col>
</el-row>
<el-row>
<el-col :span="3" class="detail_title">来源</el-col>
<el-col :span="21" class="detail_text">{{
currentWarningObj.source
$filterDict("tc_yq_media", currentWarningObj.source)
}}</el-col>
</el-row>
<el-row>
@ -269,10 +285,9 @@
</div>
<span slot="footer" class="dialog-footer">
<span>
<el-button
class="dialog-btn"
@click="currentWarningObjShow = false"
> </el-button>
<el-button class="dialog-btn" @click="currentWarningObjShow = false"
> </el-button
>
</span>
</span>
</el-dialog>
@ -280,30 +295,42 @@
</template>
<script>
import qs from 'qs'
const docx = require('docx-preview')
import axios from 'axios'
window.JSZip = require('jszip')
import vueSeamlessScroll from 'vue-seamless-scroll'
import ModuleTitle from '../../common/ModuleTitle.vue'
import TransferVolume from './TransferVolume.vue'
import WordCloud from './WordCloud.vue'
import pdf from 'vue-pdf'
import { warningList } from './warningMock'
import { opinionWarningList, opinionWarningDetail, getTsdNum, getZbdNum, getyqTsd, getyqZbd, getyqZbdDetails } from '@/api/common'
import qs from "qs";
const docx = require("docx-preview");
import axios from "axios";
window.JSZip = require("jszip");
import vueSeamlessScroll from "vue-seamless-scroll";
import ModuleTitle from "../../common/ModuleTitle.vue";
import TransferVolume from "./TransferVolume.vue";
import WordCloud from "./WordCloud.vue";
import pdf from "vue-pdf";
import { warningList } from "./warningMock";
import {
opinionWarningList,
opinionWarningDetail,
getTsdNum,
getZbdNum,
getyqTsd,
getyqZbd,
getyqZbdDetails,
} from "@/api/common";
// import tableObject from '@/views/privateOrder/positiveEnergy/components/data.json'
//================
import { yuqingListA } from "@/api/consensusList";
import { yqbg } from "@/api/publicOpinion";
export default {
components: {
vueSeamlessScroll,
ModuleTitle,
TransferVolume,
WordCloud,
pdf
pdf,
},
filters: {
commaFilter(target) {
return String(target).replace(/(\d)(?=(\d{3})+$)/g, '$1,')
}
return String(target).replace(/(\d)(?=(\d{3})+$)/g, "$1,");
},
},
data() {
return {
@ -313,64 +340,42 @@ export default {
turnTime: null,
tsdNum: 461,
zbdNum: 475,
Transfer: [
{
index: 1,
name: '专报',
value: '13982'
},
{
index: 2,
name: '月报',
value: '4598'
},
{
index: 3,
name: '深度报告',
value: '3347'
}
],
turnDetailsList: [
{ attName: '国情转办单2023105', deptName: '往建局', opinionStatusName: '待处理' },
{ attName: '国情转办单2023105', deptName: '往建局', opinionStatusName: '待处理' },
{ attName: '国情转办单2023105', deptName: '往建局', opinionStatusName: '待处理' }
],
Transfer: {},
turnDetailsList: [],
sentimeentList: {
options: ['转办量', '转办详情']
options: ["转办量", "转办详情"],
},
currentIndex: 0,
dialogStatus: false,
totalPage: 1, // 1
total: 1, // 1
currentPage: 1, // 1
pageSize: 20, //
currentPageData: [], //
tableHeader: [],
tableData: [],
dialogTitle: '',
dialogTitle: "",
dialogDetails: false,
rowDta: {},
//
fileExtension: '',
fileExtension: "",
numPages: 1,
pdfUrl: '',
currentWarningObj: {
author: '用户7726050576',
content: '期待所有在苏州市太仓人民法院诉讼的受害人都可以得到公平公正的对待,而不是因为诉讼反过来让不诚信的人,违反社会正常公德的人,以及社会不良人员,反而获取利益,且没有任何违法成本,那么如果这样,当然我们所有太仓市老百姓和所有在太仓市的外省市老百姓也是只能默默承受的,但我们相信正义只是迟到了而已。',
imageUrlList: [],
isDelete: false,
keyword: '太仓市,太仓,太仓市人民法院,纠纷,违法',
orientation: '负面',
publishTime: this.getData(),
simhash: '5318318812141012974',
source: '新浪微博',
sourceType: 4,
summary: '期待所有在苏州市太仓人民法院诉讼的受害人都可以得到公平公正的对待,而不是因为诉讼反过来让不诚信的人,违反社会正常公德的人,以及社会不良人员,反而获取利益,且没有任何违法成本,那么如果这样,当然我们所有太仓市老百姓和所有在太仓市的外省市老百姓也是只能默默承受的,但我们相信正义只是迟到了而已。',
title: '请大家关注 : 太仓市人民法院( 在中国法院庭审公开网) 农村建房施工合同纠纷:',
url: 'https://weibo.com/7726050576/LDPr27y0e',
videoImageUrl: '',
videoUrl: '' }
}
pdfUrl: "",
currentWarningObj: {},
//===================
formData: {
pageSize: 1,
pageNum: 1,
},
//
yqTotal: 0,
bgForm: {
pageNum: 1,
pageSize: 10,
},
newbgForm: {},
currentPage: 1, // 1
pageSize: 10, //
};
},
computed: {
classOption() {
@ -382,11 +387,18 @@ export default {
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 1000 // (1000ms)
}
waitTime: 1000, // (1000ms)
};
},
activation() {
return (status) => {
if (status === 1) {
return { color: "#ff4c4c" };
} else if (status === 2) {
return { color: "#ff8839" };
} else if (status === 3) {
return { color: "#35ca29" };
}
// if (status === '') {
// return { color: '#ff4c4c' }
// } else if (status === '') {
@ -398,256 +410,213 @@ export default {
// } else if (status === '') {
// return { color: '#35ca29' }
// }
const myMap = new Map([
['待坐席员录入处理结果', { color: '#ffed1f' }],
['待舆情专员核查', { color: '#53edff' }],
['已归档', { color: '#35ca29' }]
])
return myMap.get(status) || { color: '#ff8839' }
}
// const myMap = new Map([
// ["", { color: "#ffed1f" }],
// ["", { color: "#53edff" }],
// ["", { color: "#35ca29" }],
// ]);
// return myMap.get(status) || { color: "#ff8839" };
};
},
activationName() {
return (status) => {
const myMap = new Map([
['待坐席员录入处理结果', '待处理'],
['待舆情专员核查', '待核查']
])
return myMap.get(status) || status
}
}
["待坐席员录入处理结果", "待处理"],
["待舆情专员核查", "待核查"],
]);
return myMap.get(status) || status;
};
},
},
destroyed() {
clearInterval(this.turnTime) //
clearInterval(this.turnTime); //
},
mounted() {
// opinionWarningList().then((res) => {
// this.warningChangeList = []
// res['[]']?.forEach((item) => {
// this.warningChangeList.push(item.T_WARNING_LIST)
// })
// opinionWarningDetail(
// this.warningChangeList[this.currentWarningIndex]
// ).then((res) => {
// Object.assign(this.currentWarningObj, res.data)
// })
// })
this.changeBtn()
//
// getTsdNum().then(res => {
// this.tsdNum = res.data
// })
//
// getZbdNum().then(res => {
// this.zbdNum = res.data
// })
//
// getyqZbdDetails().then(res => {
// this.turnDetailsList = res.data
// })
this.changeBtn();
this.getDataList();
this.getOneList();
},
methods: {
filteryqbg(e) {
let arr = this.Transfer.reportList.filter((value) => {
return value.sentimentReportType == e;
});
return arr[0].count;
},
getDataList() {
yqbg().then((res) => {
this.tsdNum = res.data.reminder;
this.zbdNum = res.data.isturn;
this.Transfer = res.data;
});
//
yuqingListA().then((res) => {
this.turnDetailsList = res.rows;
});
},
//
getOneList() {
yuqingListA(this.formData).then((res) => {
console.log(res);
this.yqTotal = res.total;
this.currentWarningObj = res.rows[0];
});
},
openDetailLog() {
// opinionWarningDetail(
// this.warningChangeList[this.currentWarningIndex]
// ).then((res) => {
// Object.assign(this.currentWarningObj, res.data)
// this.currentWarningObjShow = true
// })
Object.assign(this.currentWarningObj, {})
this.currentWarningObjShow = true
this.currentWarningObjShow = true;
},
//
previousWarning() {
// if (this.currentWarningIndex > 0) {
// this.currentWarningIndex--
// }
// opinionWarningDetail(
// this.warningChangeList[this.currentWarningIndex]
// ).then((res) => {
// Object.assign(this.currentWarningObj, res.data)
// })
if (this.formData.pageNum <= 1) {
this.formData.pageNum = this.yqTotal;
} else if (this.formData.pageNum <= this.yqTotal) {
this.formData.pageNum--;
}
this.getOneList();
},
//
async nextWarning() {
// const length = this.warningChangeList.length
// if (this.currentWarningIndex < length - 1) {
// this.currentWarningIndex++
// }
// const res = await opinionWarningDetail(
// this.warningChangeList[this.currentWarningIndex]
// )
// this.currentWarningObj = res.data
nextWarning() {
if (this.formData.pageNum < this.yqTotal) {
this.formData.pageNum++;
} else if (this.formData.pageNum == this.yqTotal) {
this.formData.pageNum = 1;
}
this.getOneList();
},
//
mouseOver() {
clearInterval(this.turnTime)
clearInterval(this.turnTime);
},
//
mouseLeave() {
this.changeBtn()
this.changeBtn();
},
//
changeBtn() {
this.turnTime = setInterval(() => {
this.currentIndex === 0
? (this.currentIndex = 1)
: (this.currentIndex = 0)
}, 11000)
: (this.currentIndex = 0);
}, 11000);
},
async reportDetails(val) {
this.dialogTitle = val
this.tableHeader = []
this.currentPageData = []
if (val === '提示单') {
// const res = await getyqTsd()
this.tableHeader = [{ label: '标题名称', prop: 'attName' }]
// this.tableData = res.data
this.tableData = [{
attName: '民情提示单202201',
'文件路径': '/网信办大屏内容文档/网络舆情/舆情报告/提示单/民情提示单202201.docx'
}]
} else if (val === '转办单') {
// const res = await getyqZbd()
this.tableHeader = [{ label: '标题名称', prop: 'attName' }]
// this.tableData = res.data
this.tableData = [{
attName: '民情提示单202201',
'文件路径': '/网信办大屏内容文档/网络舆情/舆情报告/提示单/民情提示单202201.docx'
}]
} else {
const tableObject = require('./data.json')
this.tableData = tableObject[val]
for (const item in tableObject[val][0]) {
if (item !== '文件路径') {
this.tableHeader.push(item)
}
}
this.tableHeader = [{ label: "标题名称", prop: "attName" }];
this.dialogTitle = val;
if (val === "提示单") {
this.newbgForm = {
...this.bgForm,
reminder: 1,
};
} else if (val === "转办单") {
this.newbgForm = {
...this.bgForm,
isturn: 1,
};
} else if (val === "专报") {
this.newbgForm = {
...this.bgForm,
sentimentReportType: 1,
};
} else if (val === "月报") {
this.newbgForm = {
...this.bgForm,
sentimentReportType: 2,
};
} else if (val === "深度报告") {
this.newbgForm = {
...this.bgForm,
sentimentReportType: 3,
};
}
this.total = this.tableData.length
this.totalPage = Math.ceil(this.tableData.length / this.pageSize)
this.totalPage = this.totalPage === 0 ? 1 : this.totalPage
this.setCurrentPageData()
this.dialogStatus = true
this.getyqbgType();
},
setCurrentPageData() {
const begin = (this.currentPage - 1) * this.pageSize
const end = this.currentPage * this.pageSize
this.currentPageData = this.tableData.slice(begin, end)
//
getyqbgType() {
yuqingListA(this.newbgForm).then((res) => {
this.currentPageData = res.rows;
this.total = res.total;
this.dialogStatus = true;
});
},
handleSizeChange(val) {
this.pageSize = val
this.setCurrentPageData()
this.newbgForm.pageSize = val;
this.getyqbgType();
},
handleCurrentChange(val) {
this.currentPage = val
this.setCurrentPageData()
this.newbgForm.pageNum = val;
this.getyqbgType();
},
rowClick(row, type) {
this.dialogDetails = true
// let urlAddress
// if (type === 'details') {
// this.fileExtension = row.substring(row.lastIndexOf('.') + 1)
// urlAddress = window._CONFIG['nginxUrl'] + `${row}`
// } else {
// if (this.dialogTitle === '' || this.dialogTitle === '') {
// this.fileExtension = row.attUrl.substring(row.attUrl.lastIndexOf('.') + 1)
// urlAddress = window._CONFIG['nginxUrl'] + `${row.attUrl}`
// } else {
// this.fileExtension = row[''].substring(
// row[''].lastIndexOf('.') + 1
// )
// urlAddress = `${process.env.NODE_ENV === 'production'
// ? window._CONFIG['fileNginxUrl']
// : '/fileApi'
// }${row['']}`
// }
// }
// console.log('this.fileExtension', this.fileExtension)
// if (this.fileExtension === 'docx' || this.fileExtension === 'doc') {
// axios({
// method: 'get',
// responseType: 'blob', //
// url: urlAddress
// }).then(({ data }) => {
// if (data) {
// this.dialogDetails = true
// this.$nextTick(() => {
// docx.renderAsync(data, this.$refs.file) //
// })
// }
// })
// } else if (this.fileExtension === 'pdf') {
// this.getNumPages(urlAddress)
// }
this.dialogDetails = true;
let str = row.fileName.split(".");
this.fileExtension = str[1];
},
getNumPages(url) {
axios({
method: 'GET',
method: "GET",
url: url, //
paramsSerializer: function(params) {
return qs.stringify(params, { arrayFormat: 'brackets' })
paramsSerializer: function (params) {
return qs.stringify(params, { arrayFormat: "brackets" });
},
headers: {
'Content-Type':
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
"Content-Type":
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
},
responseType: 'blob'
responseType: "blob",
})
.then((response) => {
this.pdfUrl = this.getObjectURL(response.data)
const loadingTask = pdf.createLoadingTask(this.pdfUrl)
this.pdfUrl = this.getObjectURL(response.data);
const loadingTask = pdf.createLoadingTask(this.pdfUrl);
loadingTask.promise
.then((pdf) => {
this.numPages = pdf.numPages
this.dialogDetails = true
this.numPages = pdf.numPages;
this.dialogDetails = true;
})
.catch((err) => {
console.error('pdf 加载失败', err)
})
console.error("pdf 加载失败", err);
});
})
.catch((error) => {
this.$message.error('' + error)
})
this.$message.error("" + error);
});
},
// url
getObjectURL(file) {
let url = null
let url = null;
if (window.createObjectURL !== undefined) {
// basic
url = window.createObjectURL(file)
url = window.createObjectURL(file);
} else if (window.webkitURL !== undefined) {
// webkit or chrome
try {
url = window.webkitURL.createObjectURL(file)
url = window.webkitURL.createObjectURL(file);
} catch (error) {
console.log(error)
console.log(error);
}
} else if (window.URL !== undefined) {
// mozilla(firefox)
try {
url = window.URL.createObjectURL(file)
url = window.URL.createObjectURL(file);
} catch (error) {
console.log(error)
console.log(error);
}
}
return url
return url;
},
dialogClose() {
this.dialogStatus = false
this.pageSize = 20
this.currentPage = 1
this.dialogStatus = false;
},
getData() {
const d = new Date()
const d = new Date();
const month =
d.getMonth() + 1 < 10 ? '0' + (d.getMonth() + 1) : d.getMonth() + 1
const day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate()
const times = d.getFullYear() + '-' + month + '-' + day
return times
}
}
}
d.getMonth() + 1 < 10 ? "0" + (d.getMonth() + 1) : d.getMonth() + 1;
const day = d.getDate() < 10 ? "0" + d.getDate() : d.getDate();
const times = d.getFullYear() + "-" + month + "-" + day;
return times;
},
},
};
</script>
<style lang="scss" scoped>
@ -705,21 +674,21 @@ export default {
//border: 1px solid #1fb6e5;
}
:nth-child(1) {
background: url('~@/assets/sentimeent/arrow-lt.png') no-repeat;
background: url("~@/assets/sentimeent/arrow-lt.png") no-repeat;
margin-right: 10px;
cursor: pointer;
}
:nth-child(2) {
background: url('~@/assets/sentimeent/arrow-rt.png') no-repeat;
background: url("~@/assets/sentimeent/arrow-rt.png") no-repeat;
cursor: pointer;
}
:nth-child(1):hover {
background: url('~@/assets/sentimeent/arrow-lt-act.png') no-repeat;
background: url("~@/assets/sentimeent/arrow-lt-act.png") no-repeat;
margin-right: 10px;
cursor: pointer;
}
:nth-child(2):hover {
background: url('~@/assets/sentimeent/arrow-rt-act.png') no-repeat;
background: url("~@/assets/sentimeent/arrow-rt-act.png") no-repeat;
cursor: pointer;
}
}
@ -727,7 +696,7 @@ export default {
width: 712px;
height: 392px;
margin-top: 40px;
background: url('~@/assets/sentimeent/舆情报警-bg.png') no-repeat;
background: url("~@/assets/sentimeent/舆情报警-bg.png") no-repeat;
background-size: 100% 100%;
.warning-title {
text-align: center;
@ -799,13 +768,13 @@ export default {
right: 613px;
width: 100px;
height: 100px;
background: url('~@/assets/sentimeent/warning.png') no-repeat 100% 100%;
background: url("~@/assets/sentimeent/warning.png") no-repeat 100% 100%;
}
.worldClound {
width: 651px;
height: 316px;
margin: 50px 43px 0 26px;
background: url('~@/assets/sentimeent/icon-正面.png') no-repeat center;
background: url("~@/assets/sentimeent/icon-正面.png") no-repeat center;
position: relative;
}
.monitor-box {
@ -844,7 +813,7 @@ export default {
line-height: 100px;
display: grid;
grid-template-columns: 320px 240px 170px;
background: rgb(19, 52, 88, 0.3) url('~@/assets/sentimeent/bg-部门转办.png')
background: rgb(19, 52, 88, 0.3) url("~@/assets/sentimeent/bg-部门转办.png")
no-repeat;
background-size: 100% 100%;
span {
@ -876,7 +845,7 @@ export default {
> div {
width: 344px;
height: 160px;
background: url('~@/assets/sentimeent/舆情报告-bg-top.png') no-repeat 100%
background: url("~@/assets/sentimeent/舆情报告-bg-top.png") no-repeat 100%
100%;
}
:nth-child(1) {
@ -887,7 +856,7 @@ export default {
display: inline-block;
width: 100px;
height: 100px;
background: url('~@/assets/sentimeent/icon-提示单.png') no-repeat;
background: url("~@/assets/sentimeent/icon-提示单.png") no-repeat;
background-size: 100% 100%;
margin-left: 49px;
}
@ -895,7 +864,7 @@ export default {
display: inline-block;
width: 100px;
height: 100px;
background: url('~@/assets/sentimeent/icon-转办单.png') no-repeat;
background: url("~@/assets/sentimeent/icon-转办单.png") no-repeat;
background-size: 100% 100%;
margin-left: 49px;
}
@ -922,7 +891,7 @@ export default {
width: 696px;
height: 214px;
margin-top: 9px;
background: url('~@/assets/sentimeent/舆情报告-bg-btm.png') no-repeat 100%
background: url("~@/assets/sentimeent/舆情报告-bg-btm.png") no-repeat 100%
100%;
display: flex;
align-content: space-between;
@ -936,7 +905,7 @@ export default {
width: 70px;
height: 70px;
background: url('~@/assets/sentimeent/icon-专报.png') no-repeat;
background: url("~@/assets/sentimeent/icon-专报.png") no-repeat;
background-size: 100% 100%;
margin-top: 34px;
}
@ -968,7 +937,7 @@ export default {
width: 70px;
height: 70px;
background: url('~@/assets/sentimeent/icon-月报.png') no-repeat;
background: url("~@/assets/sentimeent/icon-月报.png") no-repeat;
background-size: 100% 100%;
margin-top: 34px;
}
@ -999,7 +968,7 @@ export default {
display: inline-block;
width: 70px;
height: 70px;
background: url('~@/assets/sentimeent/icon-深度报告.png') no-repeat;
background: url("~@/assets/sentimeent/icon-深度报告.png") no-repeat;
background-size: 100% 100%;
margin-top: 34px;
}
@ -1133,7 +1102,7 @@ export default {
.sx {
width: 300px;
height: 400px;
background: url('~@/assets/sentimeent/筛选效果.png') no-repeat center;
background: url("~@/assets/sentimeent/筛选效果.png") no-repeat center;
position: absolute;
top: 0px;
left: 95px;
@ -1142,7 +1111,7 @@ export default {
.yellow {
width: 400px;
height: 60px;
background: url('~@/assets/sentimeent/黄网.png') no-repeat center;
background: url("~@/assets/sentimeent/黄网.png") no-repeat center;
position: absolute;
left: 50px;
top: 40px;
@ -1151,7 +1120,7 @@ export default {
.blue {
width: 313px;
height: 47px;
background: url('~@/assets/sentimeent/蓝网.png') no-repeat center;
background: url("~@/assets/sentimeent/蓝网.png") no-repeat center;
position: absolute;
left: 100px;
top: 130px;
@ -1162,7 +1131,7 @@ export default {
.yellow_box {
width: 243px;
height: 54px;
background: url('~@/assets/sentimeent/黄备注.png') no-repeat left;
background: url("~@/assets/sentimeent/黄备注.png") no-repeat left;
position: absolute;
top: 21px;
right: 40px;
@ -1201,7 +1170,7 @@ export default {
.blue_box {
width: 223px;
height: 54px;
background: url('~@/assets/sentimeent/蓝备注.png') no-repeat left;
background: url("~@/assets/sentimeent/蓝备注.png") no-repeat left;
position: absolute;
top: 110px;
right: 90px;
@ -1239,7 +1208,7 @@ export default {
.total {
width: 292px;
height: 141px;
background: url('~@/assets/sentimeent/bg-筛选.png');
background: url("~@/assets/sentimeent/bg-筛选.png");
position: absolute;
right: 64px;
top: 230px;
@ -1294,7 +1263,7 @@ export default {
height: 833px;
background: #000;
position: absolute;
background: url('~@/assets/sentimeent/右.png');
background: url("~@/assets/sentimeent/右.png");
top: 50px;
left: 0px;
}
@ -1334,7 +1303,7 @@ export default {
}
.screen-dialog {
.dialog-btn {
background: url('~@/assets/dialog/btn-bg.png') no-repeat 100% 100%;
background: url("~@/assets/dialog/btn-bg.png") no-repeat 100% 100%;
//background-size: cover;
width: 160px;
height: 50px;
@ -1352,7 +1321,7 @@ export default {
}
.dialog-footer :hover {
.dialog-btn {
background: url('../../../../assets/dialog/btn-bg-act.png') no-repeat 100%
background: url("../../../../assets/dialog/btn-bg-act.png") no-repeat 100%
100%;
}
}
@ -1371,7 +1340,7 @@ export default {
}
}
::v-deep .el-dialog {
background: url('../../../../assets/dialog/弹窗背景-一般.png') no-repeat;
background: url("../../../../assets/dialog/弹窗背景-一般.png") no-repeat;
width: 800px;
height: 960px;
background-size: 100% 100%;

@ -30,50 +30,53 @@
</div>
</template>
<script>
import { mediaList } from '@/api/common'
import { mediaList } from "@/api/common";
import { echartsJump } from "../../../../../public/static/echartsJump";
import { yuqingTypes } from "@/api/publicOpinion";
import { echartsJump } from '../../../../../public/static/echartsJump'
export default {
data() {
return {
types: [ 1, 2, 3, 4, 5, 6, 7,8,],
piedata: [
{
name: '其他',
value: 0.0
name: "报刊",
value: 0,
},
{
name: '报刊',
value: 0.1
name: "网媒",
value: 0,
},
{
name: '网媒',
value: 28.6
name: "微信",
value: 0,
},
{
name: '微信',
value: 25.2
name: "微博",
value: 0,
},
{
name: '微博',
value: 23.3
name: "APP",
value: 0,
},
{
name: 'APP',
value: 7.2
name: "论坛",
value: 0,
},
{
name: '论坛',
value: 6.6
name: "短视频",
value: 0,
},
{
name: '短视频',
value: 5.5
}
name: "其他",
value: 0,
},
],
lastIndex: 0,
currentIndex: 0
}
currentIndex: 0,
};
},
mounted() {
@ -84,74 +87,88 @@ export default {
// })
// this.pieBox()
// })
this.pieBox()
this.getData();
},
methods: {
getData() {
yuqingTypes({ type: "1" }).then((res) => {
res.data.forEach((value, index) => {
this.types.forEach((value1, index1) => {
if (value.type == value1) {
this.piedata[index1].value = value.pt;
}
});
});
this.pieBox();
});
},
pieBox() {
const myChart = this.$echarts.init(document.getElementById('box1'))
const myChart = this.$echarts.init(document.getElementById("box1"));
const optionFirst = {
color: [
'#316fdc',
'#ffffff',
'#5efe01',
'#ee8605',
'#08fd94',
'#fed600',
'#009fff',
'#15ffe6'
"#316fdc",
"#ffffff",
"#5efe01",
"#ee8605",
"#08fd94",
"#fed600",
"#009fff",
"#15ffe6",
],
tooltip: {
trigger: 'item',
formatter: '{b} : {c} ',
trigger: "item",
formatter: function (params) {
return `${params.name}:${params.value}%`;
},
textStyle: {
fontSize: 26,
fontWight: 'bold'
}
fontWight: "bold",
},
},
series: [
{
name: '数量',
type: 'pie',
radius: ['60%', '80%'],
name: "数量",
type: "pie",
radius: ["60%", "80%"],
avoidLabelOverlap: false,
center: ['50%', '50%'],
center: ["50%", "50%"],
label: {
show: false,
position: 'center',
position: "center",
formatter: (params) => {
return `{a| ${params.name}} \n {b|${params.value}}%`
return `{a| ${params.name}} \n {b|${params.value}}%`;
},
rich: {
a: {
fontFamily: 'SourceHanSansCN-Regular',
color: '#06e1ff',
fontSize: 28
fontFamily: "SourceHanSansCN-Regular",
color: "#06e1ff",
fontSize: 28,
},
b: {
fontFamily: 'DIN-Medium',
color: '#ffffff',
fontFamily: "DIN-Medium",
color: "#ffffff",
fontSize: 32,
lineHeight: 50
}
}
lineHeight: 50,
},
},
},
emphasis: {
label: {
show: true,
fontSize: '28',
fontWeight: 'bold'
}
fontSize: "28",
fontWeight: "bold",
},
},
labelLine: {
show: false
show: false,
},
data: this.piedata
}
]
}
myChart.setOption(optionFirst, true)
echartsJump(myChart, optionFirst)
data: this.piedata,
},
],
};
myChart.setOption(optionFirst, true);
echartsJump(myChart, optionFirst);
// setInterval(() => {
// myChart.dispatchAction({
// type: 'downplay',
@ -174,9 +191,9 @@ export default {
// this.currentIndex = 0
// }
// }, 2000)
}
}
}
},
},
};
</script>
<style lang='scss' scoped>
@ -187,7 +204,7 @@ export default {
width: 343px;
height: 343px;
margin: 82px 0 0 5px;
background: url('~@/assets/sentimeent/bg-饼图.png') no-repeat center;
background: url("~@/assets/sentimeent/bg-饼图.png") no-repeat center;
}
.moduleCount {
width: 329px;

@ -31,75 +31,84 @@
</template>
<script>
import { tagsList } from '@/api/common'
import { echartsJump } from '../../../../../public/static/echartsJump'
import { tagsList } from "@/api/common";
import { echartsJump } from "../../../../../public/static/echartsJump";
import { yuqingTypes } from "@/api/publicOpinion";
export default {
data() {
return {
lastIndex: 0,
currentIndex: 0,
imgList: [{
url: require('@/assets/sentimeent/1.png')
},
{
url: require('@/assets/sentimeent/2.png')
},
{
url: require('@/assets/sentimeent/3.png')
},
{
url: require('@/assets/sentimeent/4.png')
},
{
url: require('@/assets/sentimeent/5.png')
},
{
url: require('@/assets/sentimeent/6.png')
},
{
url: require('@/assets/sentimeent/7.png')
},
{
url: require('@/assets/sentimeent/8.png')
}
imgList: [
{
url: require("@/assets/sentimeent/1.png"),
type: 9,
},
{
url: require("@/assets/sentimeent/2.png"),
type: 10,
},
{
url: require("@/assets/sentimeent/3.png"),
type: 11,
},
{
url: require("@/assets/sentimeent/4.png"),
type: 12,
},
{
url: require("@/assets/sentimeent/5.png"),
type: 13,
},
{
url: require("@/assets/sentimeent/6.png"),
type: 14,
},
{
url: require("@/assets/sentimeent/7.png"),
type: 15,
},
{
url: require("@/assets/sentimeent/8.png"),
type: 16,
},
],
piedata: [
{
name: '治安维稳',
value: 10
name: "治安维护",
value: 0,
},
{
name: '医疗卫生',
value: 10
name: "医疗卫生",
value: 0,
},
{
name: '执政形象',
value: 20
name: "执政形象",
value: 0,
},
{
name: '市场监督',
value: 20
name: "市场监督",
value: 0,
},
{
name: '自然灾害',
value: 10
name: "自然灾害",
value: 0,
},
{
name: '安全事故',
value: 10
name: "安全事故",
value: 0,
},
{
name: '社会保障',
value: 20
name: "社会保障",
value: 0,
},
{
name: '市政管理',
value: 20
}
]
}
name: "市政管理",
value: 0,
},
],
};
},
mounted() {
// tagsList().then(res => {
// this.piedata = []
@ -108,93 +117,110 @@ export default {
// })
// this.pieBox()
// })
this.pieBox()
this.getData();
},
methods: {
filterUrl(e) {
const result = this.imgList.filter((item) => item.type == e);
console.log(result[0]);
return result[0].url;
},
getData() {
yuqingTypes({ type: "2" }).then((res) => {
res.data.forEach((value, index) => {
this.imgList.forEach((value1, index1) => {
if (value.type == value1.type) {
this.piedata[index1].value = value.pt;
}
});
});
this.pieBox();
});
},
pieBox() {
const myChart = this.$echarts.init(document.getElementById('box'))
const myChart = this.$echarts.init(document.getElementById("box"));
const optionFirst = {
color: [
'#316fdc',
'#ffffff',
'#96ff00',
'#ff9314',
'#08ff95',
'#f8d748',
'#4a9ff8',
'#7efbe6'
"#316fdc",
"#ffffff",
"#96ff00",
"#ff9314",
"#08ff95",
"#f8d748",
"#4a9ff8",
"#7efbe6",
],
tooltip: {
trigger: 'item',
formatter: function(params) {
return `${params.name}:${params.data.count}(${params.percent}%)`
trigger: "item",
formatter: function (params) {
return `${params.name}:${params.value}%`;
},
textStyle: {
fontSize: 26,
fontWight: 'bold'
}
fontWight: "bold",
},
},
emphasis: {
show: true,
formatter: '{fz41|{a}\n{az24|{b}个}',
formatter: "{fz41|{a}\n{az24|{b}个}",
textStyle: {
rich: {
fz41: {
fontSize: 41,
padding: [0, 5, 0, 0]
padding: [0, 5, 0, 0],
},
fz24: {
fontSize: 26
}
}
}
fontSize: 26,
},
},
},
},
series: [
{
name: '数量',
type: 'pie',
radius: ['60%', '80%'],
name: "数量",
type: "pie",
radius: ["60%", "80%"],
avoidLabelOverlap: false,
center: ['50%', '50%'],
center: ["50%", "50%"],
label: {
show: false,
position: 'center',
formatter: function(params) {
return `{a| ${params.name}} \n {b|${params.data.count}}`
position: "center",
formatter: function (params) {
return `{a| ${params.name}} \n {b|${params.value}}%`;
},
rich: {
a: {
fontFamily: 'SourceHanSansCN-Regular',
color: '#06e1ff',
fontSize: 28
fontFamily: "SourceHanSansCN-Regular",
color: "#06e1ff",
fontSize: 28,
},
b: {
fontFamily: 'DIN-Medium',
color: '#ffffff',
fontFamily: "DIN-Medium",
color: "#ffffff",
fontSize: 32,
lineHeight: 50
}
}
lineHeight: 50,
},
},
},
emphasis: {
label: {
show: true,
fontSize: '28',
fontWeight: 'bold'
}
fontSize: "28",
fontWeight: "bold",
},
},
labelLine: {
show: false
show: false,
},
data: this.piedata
}
]
}
myChart.setOption(optionFirst, true)
echartsJump(myChart, optionFirst)
}
}
}
data: this.piedata,
},
],
};
myChart.setOption(optionFirst, true);
echartsJump(myChart, optionFirst);
},
},
};
</script>
<style lang='scss' scoped>
@ -205,7 +231,7 @@ export default {
width: 343px;
height: 343px;
margin: 82px 0 0 5px;
background: url('~@/assets/sentimeent/bg-饼图.png') no-repeat center;
background: url("~@/assets/sentimeent/bg-饼图.png") no-repeat center;
}
.moduleCount {
width: 329px;

Loading…
Cancel
Save