agriculture/src/widerscreen/index1.vue

1185 lines
39 KiB
Vue
Raw Normal View History

2025-03-18 13:36:09 +08:00
<template>
<!-- 真实实时数据宽屏 -->
<div class="container bg ScaleBox" ref="ScaleBox"
:style="{
width: width + 'px',
height: height + 'px',
}">
<div class="header" style="padding-top: 20px;">
<div class="header-left" style="padding-left: 180px; display: flex;">
<img class="logo" src="./assets/logo.png" style="width: 331px;height: 60px;padding-left: 60px;">
</div>
<div class="header-title" style="display:flex;justify-self: space-between;margin:10px;">
<div style="flex:0 1 25%">
<dv-decoration-10 style="height:5px;" />
</div>
<div style="flex:0 1 50%">
<div class="d-flex">
<dv-decoration-8 style="height:50px;flex:1;" />
<h2 style="width: 260px;font-size: 17px;" @click="$router.push('/login');">资本市场系统风险监测与预警平台</h2>
<!-- <div style="font-size: large;">大规模泛金融知识图谱系统</div> -->
<dv-decoration-8 :reverse="true" style="height:50px;flex:1;" />
</div>
</div>
<div style="flex:0 1 25%">
<dv-decoration-10 style="height:5px;transform:rotateY(180deg)" />
</div>
</div>
<div class="header-right">
</div>
</div>
<div class="main">
<!-- 第一块 -->
<div class="box">
<div class="box-header" style="">
<span style=""></span>
预警监测
</div>
<div class=" box-body">
<!-- 第一行 -->
<div class="charts-row" style="">
<div style="flex:0 1 33.33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">股票市场</h3>
<div style="display: flex;justify-content: center;align-items: center;margin-top: 50px;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">1100</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">1184</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">1254</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;text-align: center;margin-top: 40px;">
<span style="width:120px;height:120px;margin-right:30px;">低风险</span>
<span style="width:120px;height:120px;margin-right:30px;">中风险</span>
<span style="width:120px;height:120px;margin-right:30px;">高风险</span>
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33.33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">债券市场</h3>
<div style="display: flex;justify-content: center;align-items: center;margin-top: 50px;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">1862</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">441</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">87</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;text-align: center;margin-top: 40px;">
<span style="width:120px;height:120px;margin-right:30px;">低风险</span>
<span style="width:120px;height:120px;margin-right:30px;">中风险</span>
<span style="width:120px;height:120px;margin-right:30px;">高风险</span>
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33.33%">
<!-- 饼图 -->
<!-- <dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">个体风险预警</h3>
<div ref="echarts_1" style="height:80%;width:100%; "></div>
</dv-border-box-13> -->
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">期货市场</h3>
<div style="display: flex;justify-content: center;align-items: center;margin-top: 50px;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">2035</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">766</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-right: 30px;" dur=5><h1 style="color: rgba(255,215,0);">145</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;text-align: center;margin-top: 40px;">
<span style="width:120px;height:120px;margin-right:30px;">低风险</span>
<span style="width:120px;height:120px;margin-right:30px;">中风险</span>
<span style="width:120px;height:120px;margin-right:30px;">高风险</span>
</div>
</dv-border-box-13>
</div>
</div>
<!-- 第二行 -->
<div class="charts-row" style="">
<div style="flex:0 1 33.33%" v-for="item in 3" :key="item">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">宏观经济指标</h3>
<div ref="chartContainer" style="width:100%; height: 100%;margin: 1px"></div>
</dv-border-box-13>
</div>
<!-- <div style="flex:0 1 34%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">宏观经济指标</h3>
<div ref="chartContainer" style="width:100%; height: 90%;margin: 1px"></div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">宏观经济指标</h3>
<div ref="chartContainer" style="width:100%; height: 90%;margin: 1px"></div>
</dv-border-box-13>
</div> -->
</div>
<!-- 第三行 -->
<div class="charts-row" style="">
<div style="flex:0 1 33.33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">预警提示</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-scroll-board :config="config22" style="width:95%;height:220px;" />
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33.33%">
<dv-border-box-13 style="width:100%;height:300px;padding-top: 10px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">健康指数</h3>
<div ref="echarts_3" style="height:80%;width:100%"></div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33.33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">行业预警排行</h3>
<div ref="echarts_2" style="height:90%;width:100%"></div>
</dv-border-box-13>
</div>
</div>
</div>
<!-- <div class="box-footer">
<span style=""></span>
</div> -->
</div>
<!-- 第二块 -->
<div class="box">
<div class="box-header" style="">
<span style=""></span>
市场主体概况
</div>
<div class="box-body">
<!-- 第一行 一列 课程概览 -->
<div class="charts-row">
<div style="flex:0 1 25%">
<dv-border-box-13 style="width:100%;height:200px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">类型统计</h3>
<!-- <Chart /> -->
<div style="display: flex;justify-content: center;align-items: center;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">48</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-left: 30px;" dur=5><h1 style="color: rgba(255,215,0);">38</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;">
<span style="padding-right: 50px;">节点类型总数</span>
<span style="padding-left: 50px;">边类型总数</span>
</div>
</dv-border-box-13>
<RadarChart/>
</div>
<div style="flex:0 1 50%">
<dv-border-box-1 style="width:100%;height:600px;">
<!-- 图谱 -->
<iframe src="/static/3d-force-graph/index1.html" ref="iframe" width="100%" height="600px" scrolling="no"></iframe>
</dv-border-box-1>
</div>
<div style="flex:0 1 25%">
<dv-border-box-13 style="width:100%;height:200px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">图谱统计</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-decoration-9 style="width:123px;height:123px;margin-right:30px;" dur=5><h2 style="color: rgba(255,215,0);">606041</h2></dv-decoration-9>
<dv-decoration-9 style="width:123px;height:123px;margin-left: 30px;" dur=5><h2 style="color: rgba(255,215,0);">1694475</h2></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;">
<span style="padding-right: 60px;">节点总数</span>
<span style="padding-left: 55px;">边总数</span>
</div>
</dv-border-box-13>
<dv-border-box-13 style="width:100%;height:400px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">区域分析</h3>
<Map />
</dv-border-box-13>
</div>
</div>
<!-- 第二行 -->
<div class="charts-row" style="">
<div style="flex:0 1 25%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">舆情预警</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-scroll-board :config="config11" style="width:95%;height:220px;justify-content: center;align-items: center" />
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 50%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">系统性风险指数</h3>
<LineChart />
</dv-border-box-13>
</div>
<div style="flex:0 1 25%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">异常监测结果</h3>
<!-- <CapsuleChart :dataChart="items"/> -->
<div style="display: flex;justify-content: center;align-items: center;">
<dv-scroll-board :config="config22" style="width:95%;height:220px;" />
</div>
</dv-border-box-13>
</div>
</div>
</div>
<!-- <div class="box-footer">
<span style=""></span>
</div> -->
</div>
<!-- 第三块 -->
<div class="box">
<div class="box-header" style="">
<span style=""></span>
系统性风险分析
</div>
<div class=" box-body">
<!-- 第一行 -->
<div class="charts-row" style="">
<div style="flex:0 1 100%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">类型统计</h3>
<!-- 维度时序 -->
<dimension-component :zoom="datazoom" ref="dimension"/>
<!-- 系统性风险指数 -->
<!-- <systemRiskComponent :zoom="datazoom" @datazoom="changeComp" ref="systemRisk"></systemRiskComponent> -->
</dv-border-box-13>
</div>
<!-- <div style="flex:0 1 34%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">类型统计</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">48</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-left: 30px;" dur=5><h1 style="color: rgba(255,215,0);">38</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;">
<span style="padding-right: 50px;">节点类型总数</span>
<span style="padding-left: 50px;">边类型总数</span>
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">类型统计</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-decoration-9 style="width:120px;height:120px;margin-right:30px;" dur=5><h1 style="color: rgba(255,215,0);">48</h1></dv-decoration-9>
<dv-decoration-9 style="width:120px;height:120px;margin-left: 30px;" dur=5><h1 style="color: rgba(255,215,0);">38</h1></dv-decoration-9>
</div>
<div style="display: flex;justify-content: center;align-items: center;">
<span style="padding-right: 50px;">节点类型总数</span>
<span style="padding-left: 50px;">边类型总数</span>
</div>
</dv-border-box-13>
</div> -->
</div>
<!-- 第二行 -->
<div class="charts-row" style="">
<div style="flex:0 1 100%">
<dv-border-box-13 style="width:100%;height:300px;padding-top: 4px">
<!-- <h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">健康指数</h3> -->
<el-tabs type="border-card" style='height: 90%;' @tab-click="handleClick">
<!-- 收益率传染 -->
<el-tab-pane label="个体风险状态" :lazy='true' style="height: 100%;">
<market-risk-component :zoom="datazoom" :title="'个体风险状态'" ref="marketRisk"/>
</el-tab-pane>
<!-- 波动传染 -->
<el-tab-pane label="风险关联与溢出" :lazy='true' style="height: 100%;">
<market-risk-component1 :zoom="datazoom" :title="'风险关联与溢出'" ref="marketRisk"/>
</el-tab-pane>
<el-tab-pane label="市场系统结构" :lazy='true' style="height: 100%;">
<market-risk-component1 :zoom="datazoom" :title="'市场系统结构'" ref="marketRisk"/>
</el-tab-pane>
<el-tab-pane label="市场波动和趋势" :lazy='true' style="height: 100%;">
<market-risk-component1 :zoom="datazoom" :title="'市场波动和趋势'" ref="marketRisk"/>
</el-tab-pane>
</el-tabs>
<!-- <market-risk-component :zoom="datazoom" :title="'个体风险状态'"/> -->
<!-- <dimension-component :zoom="datazoom"/> -->
</dv-border-box-13>
</div>
<!-- <div style="flex:0 1 34%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">健康指数</h3>
<RadarChart/>
</dv-border-box-13>
</div>
<div style="flex:0 1 33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">健康指数</h3>
<RadarChart/>
</dv-border-box-13>
</div> -->
</div>
<!-- 第三行 -->
<div class="charts-row" style="">
<div style="flex:0 1 33.33%" v-for="item in 3" :key="item">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">宏观经济指标</h3>
<div ref="chartContainer" style="width:100%; height: 90%;margin: 1px"></div>
</dv-border-box-13>
</div>
<!-- <div style="flex:0 1 34%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">异常监测结果</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-scroll-board :config="config22" style="width:95%;height:220px;" />
</div>
</dv-border-box-13>
</div>
<div style="flex:0 1 33%">
<dv-border-box-13 style="width:100%;height:300px;">
<h3 style="padding-top: 15px;padding-left: 15px;padding-right: 15px">异常监测结果</h3>
<div style="display: flex;justify-content: center;align-items: center;">
<dv-scroll-board :config="config22" style="width:95%;height:220px;" />
</div>
</dv-border-box-13>
</div> -->
</div>
</div>
<!-- <div class="box-footer">
<span style=""></span>
</div> -->
</div>
</div>
</div>
</template>
<script>
// @ is an alias to /src
import Map from './components/Map.vue'
import RadarChart from './components/RadarChart.vue'
import CapsuleChart from './components/CapsuleChart.vue';
import LineChart from './components/LineChart.vue'
import http from "@/utils/request";
import * as echarts from "echarts";
import { color } from 'd3';
import systemRiskComponent from './components/systemRiskComponent';// 系统风险折线大图
import dimensionComponent from "./components/dimensionComponent";
import marketRiskComponent from "./components/riskIndexComponent";
import marketRiskComponent1 from "./components/riskIndexComponent1";
export default {
name: 'App',
components: {
Map,
RadarChart,
CapsuleChart,
LineChart,
systemRiskComponent,
dimensionComponent,
marketRiskComponent,
marketRiskComponent1
},
data() {
return {
compName:'systemRiskComponent',
datazoom:[],
scale: 0,
width: 5760,
height: 1080,
config:{
data: [
{
name: '南阳',
value: 167
},
{
name: '周口',
value: 67
},
{
name: '漯河',
value: 123
},
{
name: '郑州',
value: 55
},
{
name: '西峡',
value: 98
}
],
colors: ['#e062ae', '#fb7293', '#e690d1', '#32c5e9', '#96bfff'],
unit: '单位',
showValue: true
},
config2:{
data: [66, 45],
shape: 'roundRect'
},
config3:{
data: [
{
name: '周口',
value: 55
},
{
name: '南阳',
value: 120
},
{
name: '西峡',
value: 71
},
{
name: '驻马店',
value: 66
},
{
name: '新乡',
value: 80
},
{
name: '信阳',
value: 35
},
{
name: '漯河',
value: 15
}
],
img: [
require('./assets/1st.png'),
require('./assets/2st.png'),
require('./assets/3st.png'),
require('./assets/4st.png'),
require('./assets/5st.png'),
require('./assets/6st.png'),
require('./assets/7st.png'),
]
},
config4:{
centerPoint: [0.48, 0.35],
points: [
{
position: [0.52, 0.235],
text: '新乡'
},
{
position: [0.43, 0.29],
text: '焦作'
},
{
position: [0.59, 0.35],
text: '开封'
},
{
position: [0.53, 0.47],
text: '许昌'
},
{
position: [0.45, 0.54],
text: '平顶山'
},
{
position: [0.36, 0.38],
text: '洛阳'
},
{
position: [0.62, 0.55],
text: '周口'
},
{
position: [0.56, 0.56],
text: '漯河'
},
{
position: [0.37, 0.66],
text: '南阳'
},
{
position: [0.55, 0.81],
text: '信阳'
},
{
position: [0.55, 0.67],
text: '驻马店'
},
{
position: [0.37, 0.29],
text: '济源'
},
{
position: [0.20, 0.36],
text: '三门峡'
},
{
position: [0.76, 0.41],
text: '商丘'
},
{
position: [0.59, 0.18],
text: '鹤壁'
},
{
position: [0.68, 0.17],
text: '濮阳'
},
{
position: [0.59, 0.10],
text: '安阳'
}
],
bgImgUrl: require('./assets/map.jpg'),
centerPointImg: {
url: require('./assets/mapCenterPoint.png')
},
pointsImg: {
url: require('./assets/mapPoint.png')
}
},
// 表格设置
config11 : {
header: ['主体代码&nbsp', '行业', '&nbsp&nbsp&nbsp预警时刻','&nbsp&nbsp风险水平','风险类型&nbsp'],
data: [
{
主体代码:'688001.SH',
行业:'计算机',
预警时刻:'2023/6/29 16:00',
风险水平:'严重',
风险类型:'流动风险',
},
{
主体代码:'688002.SH',
行业:'计算机',
当前预警时刻:'2023/6/29 16:00',
预警类型:'严重',
风险类型:'市场风险',
},
{
主体代码:'688002.SH',
行业:'计算机',
当前预警时刻:'2023/6/29 16:00',
预警类型:'严重',
风险类型:'市场风险',
},
{
主体代码:'688002.SH',
行业:'计算机',
当前预警时刻:'2023/6/29 16:00',
预警类型:'严重',
风险类型:'市场风险',
},
{
主体代码:'688002.SH',
行业:'计算机',
当前预警时刻:'2023/6/29 16:00',
预警类型:'严重',
风险类型:'市场风险',
},
],
evenRowBGC:'#0A2732',
oddRowBGC:'0A2732',
headerBGC:'rgba(61,89,171,0.5)',
align: ['right'],
},
config22 :
{
data: [
['教育', 7],
['金融业', 1],
['房地产业', 2],
['制造业', 3],
['房地产业', 4],
['批发和零售业', 5],
],
evenRowBGC:'#0A2732',
oddRowBGC:'0A2732',
},
items:[
{
name: '股权质押',
value: 683
},
{
name: '转让股价',
value: 234
},
{
name: '股份增持',
value: 240
},
{
name: '债券发行',
value: 523
},
{
name: '高管变动',
value: 345
},
{
name: '产品发布',
value: 320
},
{
name: '破产',
value: 280
},
{
name: '业绩下滑',
value: 271
},
],
date:[],
rate:[],
macro:[],
montary:[],
income:[],
investment:[],
loan:[],
lever:[],
other:[],
whole:[],
title:['利率','货币','收入和融资','信贷','宏观指标','银行理财','整体杠杆','其他']
}
},
methods: {
getScale() {
// 固定好169的宽高比计算出最合适的缩放比
const { width, height } = this;
const wh = window.innerHeight / height;
const ww = window.innerWidth / width;
console.log(ww < wh ? ww : wh);
return ww < wh ? ww : wh;
},
setScale() {
// 获取到缩放比例,设置它
this.scale = this.getScale();
if (this.$refs.ScaleBox) {
this.$refs.ScaleBox.style.setProperty("--scale", this.scale);
}
},
debounce(fn, delay) {
const delays = delay || 500;
let timer;
return function () {
const th = this;
const args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
timer = null;
fn.apply(th, args);
}, delays);
};
},
changeComp(mesg){
this.datazoom=mesg
console.log(mesg)
},
// handleClick(){
// console.log('jinru');
// this.$refs.marketRisk.getData()
// }
},
created() {
},
mounted() {
// 大屏自适应部分
this.setScale();
window.removeEventListener("resize",this.debounce(this.setScale))
window.addEventListener("resize", this.debounce(this.setScale));
// 自动登录
const params = new URLSearchParams();
params.append('username', 'gongdragon');
params.append('password', 'gwl123');
http.post('/users/login/', params)
.then((res)=>{
if (res.data.message===1){
this.loading = false
let user={token:res.data.data,name:'gongdragon',stats:res.data.stats}
this.$store.commit('login',user)
} else {
this.$message({
showClose: true,
message: res.data.data,
type: 'warning'
});
this.loading = false
}
}).then(()=>{
// 获取股票风险 圆圈类饼图部分
http.get('/warning/get_warning_count/').then((res)=> {
// console.log('get_warning_count',res);
// this.stockLow=res.data["低风险"]
// this.stockMid=res.data["中风险"]
// this.stockHigh=res.data["高风险"]
})
// 宏观分析折线图
http.get('/risk/future_risk/').then((res)=>{
this.date=res.data.date
this.rate=res.data.rate
this.macro=res.data.macro
this.montary=res.data.montary
this.income=res.data.income
this.investment=res.data.investment
this.loan=res.data.loan
this.lever=res.data.lever
this.other=res.data.other
this.whole.push(this.rate)
this.whole.push(this.montary)
this.whole.push(this.income)
// this.whole.push(this.loan)
this.whole.push(this.macro)
this.whole.push(this.investment)
this.whole.push(this.lever)
this.whole.push(this.other)
}).then(()=>{
for(let i = 0; i < 6; i++) {
// let chartContainer = 'chartContainer' + i
let echart = echarts.init(this.$refs.chartContainer[i])
const option = {
title:{
text:this.title[i],
textStyle:{
color:'#fff'
},
left:'center'
},
tooltip: {
trigger: 'axis'
},
legend: {
top:30,
textStyle:{
color:'#fff'
},
},
xAxis: {
type: 'category',
data: this.date,
axisLabel: {//x轴文字的配置
show: true,
textStyle: {
color: "#fff",
}
},
},
yAxis: {
type: 'value',
axisLabel: {//x轴文字的配置
show: true,
textStyle: {
color: "#fff",
}
},
},
grid:{
containLabel:true
},
series: this.whole[i]
};
echart.setOption(option)
}}
)
// 轮播图
http.get('/anomaly/item_anomaly/',{params:{
sc:'stock',
}}).then((res)=>{
// console.log(res.data.data);
const formatData = res.data.data.map(item => {
return [item.监测时间,item.名称,item.异常关联类型]
})
const config22 = {
header: ['监测时间', '名称', '异常关联类型'],
data: formatData,
// headerBGC:'black',
evenRowBGC:'#0A2732',
oddRowBGC:'0A2732',
}
// console.log('formatData',formatData);
this.config22 = config22
})
// 健康指数 雷达图
http.get(
"/health/health_search/",
{params:{
name: '上海纳尔实业股份有限公司',//公司名
date: '2024-01',//时间(年份+季度)
}}).then(response => {
console.log('Response',response);
// let radarDatas// 存放所有数据项
// radarDatas = response.data.data.map(item => {
// // 单个数据项 转化为echarts格式
// let radarData = [item.投资关系,item.操盘模式,item.财务状态,item.运行状态,item.规模扩张,item.声誉风险,item.外部环境]
// return radarData
// })
// console.log('radarDatas',radarDatas)
let radarData = []
for (let i in response.data.data) {
if (i !== '健康指数' && i !== '等级' && typeof response.data.data[i] === 'number') radarData.push(response.data.data[i])
}
const echarts3 = echarts.init(this.$refs.echarts_3)
const option_3 = {
title: {
text: '纳尔实业公司 2024-1季度',
x:'center',//水平安放位置,默认为'left',可选为:'center' | 'left' | 'right' | {number}x坐标单位px
bottom:"-12",
padding:[ 0,10,10,10],
textStyle:{
color:'#fff',
fontSize: 14
},
},
legend: {
data: ['中国银行']
},
radar: {
// shape: 'circle',
indicator: [
{ name: '投资关系', max: 100, color:'#fff'},
{ name: '操盘模式', max: 100, color:'#fff' },
{ name: '财务状态', max: 100, color:'#fff' },
{ name: '运行状态', max: 100, color:'#fff' },
{ name: '规模扩张', max: 100, color:'#fff' },
{ name: '声誉风险', max: 100, color:'#fff' },
{ name: '外部环境', max: 100, color:'#fff' }
]
},
series: [
{
name: 'Budget vs spending',
type: 'radar',
data: [
{
value: radarData,
name: '上海纳尔实业股份有限公司'
},
]
}
]
};
echarts3.setOption(option_3)
})
// 行业预警排行
const echarts2 = echarts.init(this.$refs.echarts_2)
http.get('/warning/indus_rank/', {
params: {
// exchange:this.exchange
exchange: '',
start:'',
end:'',
}
}).then((res) => {
let xData=[],yData=[]
let tmp=res.data
for(let key in tmp)
{
if(key.length < 16){
xData.push(tmp[key])
yData.push(key)
}
}
const option_2 = {
grid: {
left: '34%',//离左边远一点
right: '4%',
bottom: '15%',
top:'5%',//如果不填,会默认一个特别大的值,导致图的上面留白特别大
},
xAxis: {
type: 'value',
axisLine:{
lineStyle:{
color:'#fff'
}
},
},
yAxis: {
type: 'category',
data: yData,
axisLine:{
lineStyle:{
color:'#fff'
}
},
},
series: [
{
// color:'#6d7d87',
type: 'bar',
data: xData
},
]
}
echarts2.setOption(option_2)
})
// // 饼图 个体风险预警
// const echarts1 = echarts.init(this.$refs.echarts_1)
// http.get('/warning/individual_rank/', {
// params: {
// exchange: '',
// start:'',
// end:'',
// }
// }).then((res) => {
// let pieData = []
// // this.critical = res.data['指数']['严重']
// // this.mid = res.data['指数']['中等']
// // this.good = res.data['指数']['轻微']
// let tmp=res.data['环形图']
// for(let key in tmp)
// {
// let arr={}
// arr['name']=key
// arr['value']=tmp[key]
// pieData.push(arr)
// }
// echarts1.clear()
// const option_1={
// tooltip: {
// trigger: 'item'
// },
// legend: {
// top: '2%',
// left: 'center',
// textStyle:{
// color: '#fff'
// }
// },
// series: [
// {
// // name: 'Access From',
// type: 'pie',
// radius: ['30%', '65%'],//调整饼图内圆和外圆大小
// center:['50%','65%'],//调整饼在画布上的距离,此时偏下
// avoidLabelOverlap: false,
// itemStyle: {
// borderRadius: 5,
// borderColor: '#fff',
// borderWidth: 2
// },
// label: {
// show: true
// },
// emphasis: {
// label: {
// show: true,
// fontSize: 40,
// fontWeight: 'bold'
// }
// },
// labelLine: {
// show: true
// },
// data: pieData
// }
// ]
// }
// echarts1.setOption(option_1,true)
// })
// 系统性风险
// this.$refs.systemRisk.getData()
// 第三屏上
this.$refs.dimension.getData()
// 第三屏中间
this.$refs.marketRisk.getData()
}
)
}
}
</script>
<style lang="scss">
* {
margin: 0;
padding: 0;
}
body,
input,
button,
a,
textarea,
select {
margin: 0;
font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
}
div {
box-sizing: border-box;
}
ul li {
list-style: none;
}
// 大屏自适应
.ScaleBox {
position: absolute;
transform: scale(var(--scale)) translate(-50%, -50%);
display: flex;
flex-direction: column;
transform-origin: 0 0;
left: 50%;
top: 50%;
transition: 0.3s;
z-index: 999;
}
.bg {
padding:0;
background:url('./assets/pageBg.png') center center;
/* background-size:cover; */
}
.container {
color: aliceblue;
// width: 5760px;
// height: 1080px;
// background-color: #18478F;
>.header {
display: flex;
justify-content: space-evenly;
width: 100%;
height: 100px; //
.header-left,
.header-right {
flex: 0 1 20%;
.el-button {
border: none;
transform: skewX(45deg);
width: 180px;
height: 50px;
margin-left: 30px;
}
.el-button--primary {
background-color: rgba(0, 102, 172, 0.4);
border-color: #0066AC;
}
.el-button--primary:focus {
background-color: #BDA158;
}
}
.header-title {
flex: 0 1 32%
}
}
.main {
width: 100%;
height: 980px; //
display: flex;
justify-content: space-evenly;
.box {
flex: 0 1 32%;
height: 940px; //
// background-color: #0C2B61;
.box-header {
// background-color: #18478F;
text-align: center;
height: 40px; //
line-height: 40px;
border: 1px solid rgb(40, 110, 216);
span {
float: left;
width: 0;
height: 0;
// border-top: 30px solid #1596ca;
// border-right: 30px solid transparent;
}
}
.box-body {
height: 850px; //
.charts-row {
display: flex;
.chart-container {
width: 50%;
padding-right: 40px;
}
.chart-title {
text-align: left;
height: 10%; //
padding-top: 8px;
.icon {
width: 15px;
height: 15px;
padding-left: 8px;
}
}
.chart {
height: 90%; //
}
}
.el-tabs__content{
height: 100%;
padding: 0;
}
.el-tabs--border-card{
background-color: transparent !important;
border: transparent !important;
}
.el-tabs__header{
background-color: transparent !important;
border-bottom: transparent !important;
}
.el-tabs__item.is-active{
background-color: transparent !important;
border-right-color: transparent !important;
border-left-color: transparent !important;
}
}
.box-footer {
height: 30px;
position: relative;
span {
position: absolute;
right: 0;
bottom: 0;
width: 0;
height: 0;
border-bottom: 25px solid #1596ca;
border-left: 25px solid transparent;
}
}
}
}
}
</style>