1162 lines
45 KiB
Vue
1162 lines
45 KiB
Vue
![]() |
<!-- 预警服务-异常检测 -->
|
|||
|
<template>
|
|||
|
<div>
|
|||
|
<!-- 卡片化的标签页 -->
|
|||
|
<el-tabs type="border-card">
|
|||
|
<!-- 【1】股市 -->
|
|||
|
<el-tab-pane label="股市">
|
|||
|
<el-card style='height: 1050px;margin-bottom: 10px;' :body-style={padding:0}>
|
|||
|
<!-- height:400px -->
|
|||
|
<!-- 1、上标 -->
|
|||
|
<span class="superscript" style="width: 20px; height: 40px;">股票异常检测</span>
|
|||
|
<!-- 2、产品搜索栏 -->
|
|||
|
|
|||
|
<div class="form">
|
|||
|
<!-- inline="true"表单域在一行 -->
|
|||
|
<el-form :inline="true" class="demo-form-inline" :model="formInline1" ref="formInline2">
|
|||
|
|
|||
|
<!-- <el-form-item label="行业" prop="行业">-->
|
|||
|
<!-- <el-select size="mini" v-model="formInline1.industry">-->
|
|||
|
<!-- <el-option label="行业1" value="行业1"></el-option>-->
|
|||
|
<!-- <el-option label="行业2" value="行业2"></el-option>-->
|
|||
|
<!-- </el-select>-->
|
|||
|
<!-- </el-form-item>-->
|
|||
|
<el-form-item label="开始时间" prop="开始时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline1.start_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
<el-form-item label="结束时间" prop="结束时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline1.end_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
<el-form-item>
|
|||
|
<el-button class="grayish_btn" @click="onSubmit1" size="mini">查询</el-button>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
|
|||
|
</el-form>
|
|||
|
</div>
|
|||
|
<!-- 添加半圆饼图 -->
|
|||
|
<half-doughnut :key='1' :myHalfData="myHalfData1"></half-doughnut>
|
|||
|
<!-- <half-doughnut/ :prop=""> -->
|
|||
|
<!-- 表格 -->
|
|||
|
<div class="table">
|
|||
|
<el-table :data="tableData1.slice((currentPage-1)*pageSize,currentPage*pageSize)" :header-cell-style="{background: 'rgba(242, 242, 242, 0.654901960784314)'}"
|
|||
|
border
|
|||
|
height="500"
|
|||
|
:row-style="{height:'30px'}"
|
|||
|
:cell-style="{padding:'5px'}"
|
|||
|
header-row-class-name="active_header"
|
|||
|
header-cell-class-name="active_header"
|
|||
|
cell-class-name="content_center"
|
|||
|
style="width: 100px"> <!-- style="width: 40%" height="215" -->
|
|||
|
<template v-for="(val,key) in tableLabel1">
|
|||
|
<!-- You should not mix 'v-for' with 'v-if'-->
|
|||
|
<!-- 条件渲染-->
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
:filters=filterText
|
|||
|
:filter-method="filterTag"
|
|||
|
v-if=' val.special'
|
|||
|
/>
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
|
|||
|
v-if=' !val.special'
|
|||
|
/>
|
|||
|
</template>
|
|||
|
<!--插槽里面没有东西就可以用单标签 -->
|
|||
|
<el-table-column
|
|||
|
prop="scale"
|
|||
|
label="操作">
|
|||
|
<template slot-scope="scope">
|
|||
|
<!-- <span class="text" v-on:click="detail(scope.row,this.formInline1.start_date)">查看详情</span>-->
|
|||
|
<span class="text" v-on:click="testDeatil(scope.row)">查看详情</span>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
</el-table>
|
|||
|
</div>
|
|||
|
|
|||
|
<!-- 分页-->
|
|||
|
<div class="block" style="margin-top:15px;">
|
|||
|
<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|||
|
:current-page="currentPage"
|
|||
|
|
|||
|
:page-size="10"
|
|||
|
layout="total, prev, pager, next, jumper"
|
|||
|
:total="tableData1.length">
|
|||
|
</el-pagination>
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-tab-pane>
|
|||
|
<!-- 【2】债市 -->
|
|||
|
<el-tab-pane label="债市">
|
|||
|
<el-card style='height: 1050px;margin-bottom: 10px;' :body-style={padding:0}>
|
|||
|
<!-- height:400px -->
|
|||
|
<!-- 1、上标 -->
|
|||
|
<span class="superscript" style="width: 20px; height: 40px;">债市异常检测</span>
|
|||
|
<!-- 2、产品搜索栏 -->
|
|||
|
|
|||
|
<div class="form">
|
|||
|
<!-- inline="true"表单域在一行 -->
|
|||
|
<el-form :inline="true" class="demo-form-inline" :model="formInline2" ref="formInline2">
|
|||
|
<!-- <el-form-item label="行业" prop="行业">-->
|
|||
|
<!-- <el-select size="mini" v-model="formInline2.industry">-->
|
|||
|
<!-- <el-option label="行业1" value="行业1"></el-option>-->
|
|||
|
<!-- <el-option label="行业2" value="行业2"></el-option>-->
|
|||
|
<!-- </el-select>-->
|
|||
|
<!-- </el-form-item>-->
|
|||
|
<el-form-item label="开始时间" prop="开始时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline2.start_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
<el-form-item label="结束时间" prop="结束时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline2.end_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
<el-form-item>
|
|||
|
<el-button class="grayish_btn" @click="onSubmit2" size="mini">查询</el-button>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
|
|||
|
</el-form>
|
|||
|
</div>
|
|||
|
<!-- 添加半圆饼图 -->
|
|||
|
<half-doughnut :key='2' :myHalfData="myHalfData3"></half-doughnut>
|
|||
|
<!-- 表格 -->
|
|||
|
<div class="table">
|
|||
|
<el-table :data="tableData2.slice((currentPage-1)*pageSize,currentPage*pageSize)" :header-cell-style="{background: 'rgba(242, 242, 242, 0.654901960784314)'}"
|
|||
|
border
|
|||
|
height="500"
|
|||
|
:row-style="{height:'30px'}"
|
|||
|
:cell-style="{padding:'5px'}"
|
|||
|
header-row-class-name="active_header"
|
|||
|
header-cell-class-name="active_header"
|
|||
|
cell-class-name="content_center"
|
|||
|
style="width: 100px"> <!-- style="width: 40%" height="215" -->
|
|||
|
<template v-for="(val,key) in tableLabel2">
|
|||
|
<!-- You should not mix 'v-for' with 'v-if'-->
|
|||
|
<!-- 条件渲染-->
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
:filters=filterText
|
|||
|
:filter-method="filterTag"
|
|||
|
v-if=' val.special'
|
|||
|
/>
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
|
|||
|
v-if=' !val.special'
|
|||
|
/>
|
|||
|
</template>
|
|||
|
<el-table-column
|
|||
|
prop="scale"
|
|||
|
label="操作">
|
|||
|
<template slot-scope="scope">
|
|||
|
<span class="text" v-on:click="detail(scope.row,formInline2.start_date)">查看详情</span>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
</el-table>
|
|||
|
</div>
|
|||
|
<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|||
|
:current-page="currentPage"
|
|||
|
|
|||
|
:page-size="10"
|
|||
|
layout="total, prev, pager, next, jumper"
|
|||
|
:total="tableData2.length">
|
|||
|
</el-pagination>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-tab-pane>
|
|||
|
<!-- 【3】期货 -->
|
|||
|
<el-tab-pane label="期货">
|
|||
|
<el-card style='height: 1050px;margin-bottom: 10px;' :body-style={padding:0}>
|
|||
|
<!-- height:400px -->
|
|||
|
<!-- 1、上标 -->
|
|||
|
<span class="superscript" style="width: 20px; height: 40px;">合约交易异常</span>
|
|||
|
<!-- 2、产品搜索栏 -->
|
|||
|
|
|||
|
<div class="form">
|
|||
|
<!-- inline="true"表单域在一行 -->
|
|||
|
<el-form :inline="true" class="demo-form-inline" :model="formInline3" ref="formInline3">
|
|||
|
<!-- <el-form-item label="商品种类" prop="商品种类">-->
|
|||
|
|
|||
|
<!-- <el-select v-model="formInline3.industry" placeholder="选择商品" size="mini">-->
|
|||
|
<!-- <el-option v-for="item in futureOption" :key="item.value" :label="item.label" :value="item.value"></el-option>-->
|
|||
|
<!-- </el-select>-->
|
|||
|
|
|||
|
<!-- </el-form-item>-->
|
|||
|
<el-form-item label="开始时间" prop="开始时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline3.start_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
<el-form-item label="结束时间" prop="结束时间">
|
|||
|
<el-date-picker
|
|||
|
v-model="formInline3.end_date"
|
|||
|
type="date"
|
|||
|
placeholder="年/月/日"
|
|||
|
size="mini">
|
|||
|
</el-date-picker>
|
|||
|
</el-form-item>
|
|||
|
<el-form-item>
|
|||
|
<el-button class="grayish_btn" @click="onSubmit3" size="mini">查询</el-button>
|
|||
|
</el-form-item>
|
|||
|
|
|||
|
|
|||
|
</el-form>
|
|||
|
</div>
|
|||
|
<!-- 添加半圆饼图 -->
|
|||
|
<half-doughnut :key='3' :myHalfData="myHalfData2"></half-doughnut>
|
|||
|
<!-- 表格 -->
|
|||
|
<div class="table">
|
|||
|
<el-table :data="tableData3.slice((currentPage-1)*pageSize,currentPage*pageSize)" :header-cell-style="{background: 'rgba(242, 242, 242, 0.654901960784314)'}"
|
|||
|
border
|
|||
|
height="500"
|
|||
|
:row-style="{height:'30px'}"
|
|||
|
:cell-style="{padding:'5px'}"
|
|||
|
header-row-class-name="active_header"
|
|||
|
header-cell-class-name="active_header"
|
|||
|
cell-class-name="content_center"
|
|||
|
style="width: 100px"> <!-- style="width: 40%" height="215" -->
|
|||
|
<template v-for="(val,key) in tableLabel3 ">
|
|||
|
<!-- You should not mix 'v-for' with 'v-if'-->
|
|||
|
<!-- 条件渲染-->
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
:filters=filterText
|
|||
|
:filter-method="filterTag"
|
|||
|
v-if=' val.special'
|
|||
|
/>
|
|||
|
<el-table-column :prop="key" :key='key'
|
|||
|
:label='typeof val === "object" ? val.label : val'
|
|||
|
|
|||
|
v-if=' !val.special'
|
|||
|
/>
|
|||
|
</template>
|
|||
|
<!--插槽里面没有东西就可以用单标签 -->
|
|||
|
<el-table-column
|
|||
|
prop="scale"
|
|||
|
label="操作">
|
|||
|
<template slot-scope="scope">
|
|||
|
<span class="text" v-on:click="detail(scope.row,formInline3.start_date)">查看详情</span>
|
|||
|
</template>
|
|||
|
</el-table-column>
|
|||
|
</el-table>
|
|||
|
</div>
|
|||
|
|
|||
|
<el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|||
|
:current-page="currentPage"
|
|||
|
|
|||
|
:page-size="10"
|
|||
|
layout="total, prev, pager, next, jumper"
|
|||
|
:total="tableData3.length">
|
|||
|
</el-pagination>
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-tab-pane>
|
|||
|
</el-tabs>
|
|||
|
<!-- #1弹窗:股价波动异常、高频交易 -->
|
|||
|
<el-dialog :visible.sync="detailsdialog1" width="100%" @open="open()" >
|
|||
|
<!-- 详细信息 -->
|
|||
|
<el-card style=" height:100%;margin-bottom:10px ; " :body-style={padding:0} >
|
|||
|
<div style="display:flex;">
|
|||
|
<el-divider direction="vertical" class="sublabel"></el-divider>
|
|||
|
<span class='title'>异常统计</span>
|
|||
|
</div>
|
|||
|
|
|||
|
<Histogram :x-data="xData" :y-data="yData" :legend="legend" :title="titleText"/>
|
|||
|
<!-- <span style="display:block;text-indent:2em;line-height: 25px;margin: 10px;">-->
|
|||
|
<!-- 股票1在2021-01-01至2021-02-01时间段内,在2021-1-8内达到股价峰值,为26元/每股,比该公司该段时间内平均股价(9元/每股),上涨15元,涨幅188.8%。在股价过高的情况下可能会导致风险增加、股票泡沫、不良收购等多种导致经济不稳定的风险因素的增加,在2021-01-09达到交易量峰值,为231支,比该公司该段时间内平均交易量(121股),上涨110股,涨幅为90.9%。在交易量过高的情况下可能会在一定程度上可能对市场稳定性、公平竞争和投资者信心造成负面影响。-->
|
|||
|
|
|||
|
<!-- </span>-->
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-dialog>
|
|||
|
<!-- #2弹窗:资产泡沫 -->
|
|||
|
<el-dialog :visible.sync="detailsdialog2" width="100%" @open="open()" >
|
|||
|
<!-- 详细信息 -->
|
|||
|
<el-card style=" height:100%;margin-bottom:10px ; " :body-style={padding:0} >
|
|||
|
<div style="display:flex;">
|
|||
|
<el-divider direction="vertical" class="sublabel"></el-divider>
|
|||
|
<span class='title'>异常统计</span>
|
|||
|
</div>
|
|||
|
<div style="height:100px;margin-left: 20px;">图谱</div>
|
|||
|
<el-table class='detail_table'
|
|||
|
:data="tableData_detail_1_2"
|
|||
|
style="width: 100%"
|
|||
|
:header-cell-style="{background: 'rgba(242, 242, 242, 0.654901960784314)'}"
|
|||
|
border
|
|||
|
:row-style="{height:'28px'}"
|
|||
|
:cell-style="{padding:'0px'}"
|
|||
|
header-row-class-name="active_header"
|
|||
|
header-cell-class-name="active_header"
|
|||
|
cell-class-name="content_center"
|
|||
|
height="215" >
|
|||
|
<el-table-column v-for='(val,key) in tableLabel_detail_1_2' :prop="key" :label="val" show-overflow-tooltip :min-width="calculateColumnWidth(key,tableData_detail_1_2)">
|
|||
|
|
|||
|
</el-table-column><!--插槽里面没有东西就可以用单标签 -->
|
|||
|
|
|||
|
|
|||
|
</el-table>
|
|||
|
<DifferentialChart/>
|
|||
|
<!-- <span style="display:block;text-indent:2em;line-height: 25px;margin: 10px;">-->
|
|||
|
<!-- 股票1在2021-01-01至2021-02-01时间段内,在2021-1-8内达到股价峰值,为26元/每股,比该公司该段时间内平均股价(9元/每股),上涨15元,涨幅188.8%。在股价过高的情况下可能会导致风险增加、股票泡沫、不良收购等多种导致经济不稳定的风险因素的增加,在2021-01-09达到交易量峰值,为231支,比该公司该段时间内平均交易量(121股),上涨110股,涨幅为90.9%。在交易量过高的情况下可能会在一定程度上可能对市场稳定性、公平竞争和投资者信心造成负面影响。-->
|
|||
|
|
|||
|
<!-- </span>-->
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-dialog>
|
|||
|
|
|||
|
<!-- #3弹窗:事件风险波及、风险事件时长、事件热度异常 -->
|
|||
|
<el-dialog :visible.sync="detailsdialog3" width="100%" @open="open()" >
|
|||
|
<!-- 详细信息 -->
|
|||
|
<el-card style=" height:100%;margin-bottom:10px ; " :body-style={padding:0} >
|
|||
|
<div style="display:flex;">
|
|||
|
<el-divider direction="vertical" class="sublabel"></el-divider>
|
|||
|
<span class='title'>异常统计</span>
|
|||
|
</div>
|
|||
|
<div style="height:100px;margin-left: 20px;">图谱</div>
|
|||
|
<el-table class='detail_table'
|
|||
|
:data="tableData_detail_1_3"
|
|||
|
style="width: 100%"
|
|||
|
:header-cell-style="{background: 'rgba(242, 242, 242, 0.654901960784314)'}"
|
|||
|
border
|
|||
|
|
|||
|
|
|||
|
:row-style="{height:'28px'}"
|
|||
|
:cell-style="{padding:'0px'}"
|
|||
|
header-row-class-name="active_header"
|
|||
|
header-cell-class-name="active_header"
|
|||
|
cell-class-name="content_center"
|
|||
|
height="215" >
|
|||
|
<el-table-column v-for='(val,key) in tableLabel_detail_1_3' :prop="key" :label="val" show-overflow-tooltip :min-width="calculateColumnWidth(key,tableData_detail_1_3)">
|
|||
|
|
|||
|
</el-table-column><!--插槽里面没有东西就可以用单标签 -->
|
|||
|
</el-table>
|
|||
|
|
|||
|
<AreaChart :key='1' :myAreaChart="myAreaChart1"></AreaChart>
|
|||
|
|
|||
|
|
|||
|
<!-- <span style="display:block;text-indent:2em;line-height: 25px;margin: 10px;">-->
|
|||
|
<!-- 股票1在2021-01-01至2021-02-01时间段内,在2021-1-8内达到股价峰值,为26元/每股,比该公司该段时间内平均股价(9元/每股),上涨15元,涨幅188.8%。在股价过高的情况下可能会导致风险增加、股票泡沫、不良收购等多种导致经济不稳定的风险因素的增加,在2021-01-09达到交易量峰值,为231支,比该公司该段时间内平均交易量(121股),上涨110股,涨幅为90.9%。在交易量过高的情况下可能会在一定程度上可能对市场稳定性、公平竞争和投资者信心造成负面影响。-->
|
|||
|
|
|||
|
<!-- </span>-->
|
|||
|
|
|||
|
</el-card>
|
|||
|
</el-dialog>
|
|||
|
</div>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import HalfDoughnut from "../components/echarts/HalfDoughnut.vue";
|
|||
|
import DifferentialChart from "@/components/echarts/DifferentialChart.vue";
|
|||
|
import Histogram from "@/components/echarts/Histogram.vue";
|
|||
|
import AreaChart from "@/components/echarts/AreaChart.vue";
|
|||
|
import http from "@/utils/request";
|
|||
|
import {Loading} from "element-ui";
|
|||
|
|
|||
|
|
|||
|
export default {
|
|||
|
|
|||
|
components:{
|
|||
|
HalfDoughnut,
|
|||
|
DifferentialChart,
|
|||
|
Histogram,
|
|||
|
AreaChart,
|
|||
|
|
|||
|
},
|
|||
|
data () {
|
|||
|
return {
|
|||
|
currentPage: 1, // 当前页码
|
|||
|
total: 20, // 总条数
|
|||
|
pageSize: 10, // 每页的数据条数
|
|||
|
filterText:[],
|
|||
|
titleText:'',
|
|||
|
legend:'',
|
|||
|
xData:[],
|
|||
|
yData:[],
|
|||
|
//记录当前所选的市场
|
|||
|
selectedIndustry:'',
|
|||
|
// 期货
|
|||
|
futureOption:[{'value': 'NIZL.SHF', 'label': '沪镍'}, {'value': 'RRZL.DCE', 'label': '粳米'}, {'value': 'LHZL.DCE', 'label': '生猪'}, {'value': 'CSZL.DCE', 'label': '玉米淀粉'}, {'value': 'RBZL.SHF', 'label': '螺纹钢'}, {'value': 'APZL.CZC', 'label': '苹果'}, {'value': 'CFZL.CZC', 'label': '棉花'}, {'value': 'BZL.DCE', 'label': '豆二'}, {'value': 'URZL.CZC', 'label': '尿素'}, {'value': 'AUZL.SHF', 'label': '沪金'}, {'value': 'BCZL.SHF', 'label': '国际铜'}, {'value': 'PBZL.SHF', 'label': '沪铅'}, {'value': 'AZL.DCE', 'label': '豆一'}, {'value': 'SPZL.SHF', 'label': '纸浆'}, {'value': 'LZL.DCE', 'label': '塑料'}, {'value': 'SFZL.CZC', 'label': '硅铁'}, {'value': 'BUZL.SHF', 'label': '沥青'}, {'value': 'TAZL.CZC', 'label': 'PTA'}, {'value': 'HCZL.SHF', 'label': '热卷'}, {'value': 'SRZL.CZC', 'label': '白糖'}, {'value': 'CJZL.CZC', 'label': '红枣'}, {'value': 'SAZL.CZC', 'label': '纯碱'}, {'value': 'WRZL.SHF', 'label': '线材'}, {'value': 'CZL.DCE', 'label': '玉米'}, {'value': 'ZNZL.SHF', 'label': '沪锌'}, {'value': 'EBZL.DCE', 'label': '苯乙烯'}, {'value': 'RSZL.CZC', 'label': '菜籽'}, {'value': 'FBZL.DCE', 'label': '纤维板'}, {'value': 'MAZL.CZC', 'label': '甲醇'}, {'value': 'PPZL.DCE', 'label': '聚丙烯'}, {'value': 'IZL.DCE', 'label': '铁矿石'}, {'value': 'PZL.DCE', 'label': '棕榈油'}, {'value': 'FGZL.CZC', 'label': '玻璃'}, {'value': 'RUZL.SHF', 'label': '橡胶'}, {'value': 'AGZL.SHF', 'label': '沪银'}, {'value': 'SNZL.SHF', 'label': '沪锡'}, {'value': 'FUZL.SHF', 'label': '燃油'}, {'value': 'PGZL.DCE', 'label': 'LPG'}, {'value': 'PFZL.CZC', 'label': '短纤'}, {'value': 'SCZL.SHF', 'label': '原油'}, {'value': 'EGZL.DCE', 'label': '乙二醇'}, {'value': 'JMZL.DCE', 'label': '焦煤'}, {'value': 'MZL.DCE', 'label': '豆粕'}, {'value': 'NRZL.SHF', 'label': '20号胶'}, {'value': 'VZL.DCE', 'label': 'PVC'}, {'value': 'YZL.DCE', 'label': '豆油'}, {'value': 'JDZL.DCE', 'label': '鸡蛋'}, {'value': 'AOZL.SHF', 'label': '氧化铝'}, {'value': 'SSZL.SHF', 'label': '不锈钢'}, {'value': 'RMZL.CZC', 'label': '菜粕'}, {'value': 'CYZL.CZC', 'label': '棉纱'}, {'value': 'LUZL.SHF', 'label': '低硫燃油'}, {'value': 'OIZL.CZC', 'label': '菜油'}, {'value': 'JZL.DCE', 'label': '焦炭'}, {'value': 'ALZL.SHF', 'label': '沪铝'}, {'value': 'CUZL.SHF', 'label': '沪铜'}, {'value': 'SMZL.CZC', 'label': '锰硅'}, {'value': 'PKZL.CZC', 'label': '花生'}],
|
|||
|
// 判断是否弹窗打开
|
|||
|
// 判断是否弹窗打开
|
|||
|
detailsdialog1:false,
|
|||
|
detailsdialog2:false,
|
|||
|
detailsdialog3:false,
|
|||
|
// detailsdialog4:false,
|
|||
|
|
|||
|
// 【图表数据】
|
|||
|
//半圆图
|
|||
|
myHalfData1: [
|
|||
|
// { value: 300, name: "股价波动异常" },
|
|||
|
// { value: 350, name: "高频交易" },
|
|||
|
// { value: 200, name: "资产泡沫" },
|
|||
|
// { value: 120, name: "事件风险波及" },
|
|||
|
// { value: 110, name: "风险事件时长" },
|
|||
|
// { value: 280, name: "事件热度异常" },
|
|||
|
// {
|
|||
|
// // make an record to fill the bottom 50%
|
|||
|
// value: 300+350+200+120+110+280,
|
|||
|
// itemStyle: {
|
|||
|
// color: "none",
|
|||
|
// },
|
|||
|
// },
|
|||
|
],
|
|||
|
myHalfData3:[],
|
|||
|
myHalfData2:[
|
|||
|
// { value: 300, name: "股价波动异常" },
|
|||
|
// { value: 350, name: "高频交易" },
|
|||
|
// { value: 200, name: "资产泡沫" },
|
|||
|
// {
|
|||
|
// // make an record to fill the bottom 50%
|
|||
|
// value: 300+350+200,
|
|||
|
// itemStyle: {
|
|||
|
// // stop the chart from rendering this piece
|
|||
|
// color: "none",
|
|||
|
// },
|
|||
|
// },
|
|||
|
],
|
|||
|
// 面积图
|
|||
|
myAreaChart1:[],
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// 【整合接收数据】
|
|||
|
formInline1: {
|
|||
|
industry:'',
|
|||
|
start_date:'',
|
|||
|
end_date:'',
|
|||
|
},
|
|||
|
formInline2: {
|
|||
|
industry:'',
|
|||
|
start_date:'',
|
|||
|
end_date:'',
|
|||
|
},
|
|||
|
formInline3: {
|
|||
|
industry:'',
|
|||
|
start_date:'',
|
|||
|
end_date:'',
|
|||
|
},
|
|||
|
// 【表格】
|
|||
|
tableData1: [
|
|||
|
{
|
|||
|
异常关联类型: '股价波动异常',
|
|||
|
涉及股票: '股票1',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '高频交易',
|
|||
|
涉及股票: '股票1',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '资产泡沫',
|
|||
|
涉及股票: '股票1',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
tableData2: [
|
|||
|
{
|
|||
|
异常关联类型: '股价波动异常',
|
|||
|
涉及股票: '债券1',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '高频交易',
|
|||
|
涉及股票: '债券2',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '资产泡沫',
|
|||
|
涉及股票: '债券3',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
tableData3: [
|
|||
|
{
|
|||
|
异常关联类型: '股价波动异常',
|
|||
|
涉及商品: '玉米',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '高频交易',
|
|||
|
涉及商品: '大豆',
|
|||
|
},
|
|||
|
{
|
|||
|
异常关联类型: '资产泡沫',
|
|||
|
涉及商品: '棕榈油',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
tableLabel1: {
|
|||
|
编码: '编号',
|
|||
|
异常关联类型: {label:'异常关联类型' ,
|
|||
|
special:true
|
|||
|
},
|
|||
|
名称: '涉及股票',
|
|||
|
监测时间: '监测时间',
|
|||
|
股票价格: '股票价格',
|
|||
|
交易数量: '交易数量',
|
|||
|
风险等级: '风险等级',
|
|||
|
|
|||
|
},
|
|||
|
tableLabel2: {
|
|||
|
编码: '编号',
|
|||
|
异常关联类型: {label:'异常关联类型' ,
|
|||
|
special:true
|
|||
|
},
|
|||
|
名称: '涉及主体',
|
|||
|
监测时间: '监测时间',
|
|||
|
股票价格: '债券价格',
|
|||
|
交易数量: '交易数量',
|
|||
|
风险等级: '风险等级',
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
tableLabel3: {
|
|||
|
编码: '编号',
|
|||
|
异常关联类型: {label:'异常关联类型' ,
|
|||
|
special:true
|
|||
|
},
|
|||
|
涉及商品: '涉及商品',
|
|||
|
合约名称: '合约名称',
|
|||
|
监测时间: '监测时间',
|
|||
|
股票价格: '股票价格',
|
|||
|
交易数量: '交易数量',
|
|||
|
风险等级: '风险等级',
|
|||
|
|
|||
|
},
|
|||
|
tableLabel_detail_1_1:
|
|||
|
{
|
|||
|
编号: '编号',
|
|||
|
异常主体:'异常主体',
|
|||
|
关联对象:'关联对象',
|
|||
|
异常关联类型:'异常关联类型',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'涉及事件详情',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'风险等级',
|
|||
|
},
|
|||
|
tableData_detail_1_1:[
|
|||
|
{
|
|||
|
编号: '',
|
|||
|
异常主体:'股票1',
|
|||
|
关联对象:'股票2',
|
|||
|
异常关联类型:'高频交易',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'事件分析',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
tableLabel_detail_1_2:
|
|||
|
{
|
|||
|
编号: '编号',
|
|||
|
异常主体:'异常主体',
|
|||
|
关联对象:'关联对象',
|
|||
|
异常关联类型:'异常关联类型',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'涉及事件详情',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'风险等级',
|
|||
|
},
|
|||
|
tableData_detail_1_2:[
|
|||
|
{
|
|||
|
编号: '',
|
|||
|
异常主体:'股票1',
|
|||
|
关联对象:'股票2',
|
|||
|
异常关联类型:'高频交易',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'事件分析',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
tableLabel_detail_1_3:
|
|||
|
{
|
|||
|
编号: '编号',
|
|||
|
异常主体:'异常主体',
|
|||
|
关联对象:'关联对象',
|
|||
|
异常关联类型:'异常关联类型',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'涉及事件详情',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'风险等级',
|
|||
|
},
|
|||
|
tableData_detail_1_3:[
|
|||
|
{
|
|||
|
编号: '',
|
|||
|
异常主体:'股票1',
|
|||
|
关联对象:'股票2',
|
|||
|
异常关联类型:'高频交易',
|
|||
|
关联相似度:'关联相似度',
|
|||
|
涉及事件详情:'事件分析',
|
|||
|
高影响力主体分析:'高影响力主体分析',
|
|||
|
风险等级:'',
|
|||
|
},
|
|||
|
|
|||
|
],
|
|||
|
}
|
|||
|
},
|
|||
|
mounted(){
|
|||
|
},
|
|||
|
methods:{
|
|||
|
|
|||
|
handleSizeChange(val) {
|
|||
|
console.log(`每页 ${val} 条`);
|
|||
|
this.currentPage = 1;
|
|||
|
this.pageSize = val;
|
|||
|
},
|
|||
|
//当前页改变时触发 跳转其他页
|
|||
|
handleCurrentChange(val) {
|
|||
|
console.log(`当前页: ${val}`);
|
|||
|
this.currentPage = val;
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
|
|||
|
filterTag(value, row) {
|
|||
|
return row.异常关联类型 === value;
|
|||
|
},
|
|||
|
|
|||
|
onSubmit1(){
|
|||
|
// console.log(this.formInline1.start_date,this.formInline1.end_date)
|
|||
|
console.log()
|
|||
|
if (String(this.formInline1.start_date)===String(this.formInline1.end_date)){
|
|||
|
this.$message({
|
|||
|
showClose: true,
|
|||
|
message: '请重新选择时间',
|
|||
|
type: 'warning'
|
|||
|
});
|
|||
|
|
|||
|
}
|
|||
|
else {
|
|||
|
let options={
|
|||
|
text:'请稍等'
|
|||
|
}
|
|||
|
let loadingInstance = Loading.service(options);
|
|||
|
this.selectedIndustry = 'stock'
|
|||
|
if (this.myHalfData1.length !== 0)
|
|||
|
this.myHalfData1.length = 0
|
|||
|
this.currentPage=1
|
|||
|
http.get('/anomaly/all_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'stock',
|
|||
|
indus: this.formInline1.industry,
|
|||
|
sdate: this.formInline1.start_date,
|
|||
|
edate: this.formInline1.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
// console.log(res.data.date)
|
|||
|
// this.$notify.info({
|
|||
|
// title: '提示',
|
|||
|
// message: '仅显示部分结果'
|
|||
|
// });
|
|||
|
let total = 0
|
|||
|
for (let i in res.data.date) {
|
|||
|
if (res.data.date[i]!==0){
|
|||
|
total += Number(res.data.date[i])
|
|||
|
|
|||
|
this.myHalfData1.push({value: Number(res.data.date[i]), name: i})
|
|||
|
}
|
|||
|
}
|
|||
|
if (total!==0){
|
|||
|
this.myHalfData1.push({
|
|||
|
value: total,
|
|||
|
itemStyle: {
|
|||
|
color: "none",
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
})
|
|||
|
http.get('/anomaly/item_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'stock',
|
|||
|
indus: this.formInline1.industry,
|
|||
|
sdate: this.formInline1.start_date,
|
|||
|
edate: this.formInline1.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
this.filterText=[]
|
|||
|
this.tableData1 = res.data.data
|
|||
|
const unique = Array.from(new Set(this.tableData1.map(item => item.异常关联类型)));
|
|||
|
console.log(unique)
|
|||
|
for (let i in unique)
|
|||
|
{
|
|||
|
let tmp={ text: unique[i], value: unique[i] }
|
|||
|
if ( !this.filterText.some(item => JSON.stringify(item) === JSON.stringify(tmp)))
|
|||
|
this.filterText.push(tmp)
|
|||
|
}
|
|||
|
console.log(this.filterText)
|
|||
|
|
|||
|
})
|
|||
|
loadingInstance.close()
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
onSubmit2(){
|
|||
|
if (String(this.formInline2.start_date)===String(this.formInline2.end_date)){
|
|||
|
this.$message({
|
|||
|
showClose: true,
|
|||
|
message: '请重新选择时间',
|
|||
|
type: 'warning'
|
|||
|
});
|
|||
|
}
|
|||
|
else {
|
|||
|
let options={
|
|||
|
text:'请稍等'
|
|||
|
}
|
|||
|
this.currentPage=1
|
|||
|
let loadingInstance = Loading.service(options);
|
|||
|
this.selectedIndustry = 'bond'
|
|||
|
if (this.myHalfData3.length !== 0)
|
|||
|
this.myHalfData3.length = 0
|
|||
|
http.get('/anomaly/all_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'bond',
|
|||
|
indus: this.formInline2.industry,
|
|||
|
sdate: this.formInline2.start_date,
|
|||
|
edate: this.formInline2.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
// this.$notify.info({
|
|||
|
// title: '提示',
|
|||
|
// message: '仅显示部分结果'
|
|||
|
// });
|
|||
|
console.log(res.data.date)
|
|||
|
let total = 0
|
|||
|
for (let i in res.data.date) {
|
|||
|
if (res.data.date[i]!==0){
|
|||
|
total += Number(res.data.date[i])
|
|||
|
this.myHalfData3.push({value: Number(res.data.date[i]), name: i})
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (total!==0){
|
|||
|
this.myHalfData3.push({
|
|||
|
value: total,
|
|||
|
itemStyle: {
|
|||
|
color: "none",
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
http.get('/anomaly/item_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'bond',
|
|||
|
indus: this.formInline2.industry,
|
|||
|
sdate: this.formInline2.start_date,
|
|||
|
edate: this.formInline2.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
this.filterText=[]
|
|||
|
this.tableData2 = res.data.data
|
|||
|
const unique = Array.from(new Set(this.tableData2.map(item => item.异常关联类型)));
|
|||
|
console.log(unique)
|
|||
|
for (let i in unique)
|
|||
|
{
|
|||
|
let tmp={ text: unique[i], value: unique[i] }
|
|||
|
if ( !this.filterText.some(item => JSON.stringify(item) === JSON.stringify(tmp)))
|
|||
|
this.filterText.push(tmp)
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
loadingInstance.close()
|
|||
|
}
|
|||
|
},
|
|||
|
onSubmit3(){
|
|||
|
if (String(this.formInline3.start_date)===String(this.formInline3.end_date)){
|
|||
|
this.$message({
|
|||
|
showClose: true,
|
|||
|
message: '请重新选择时间',
|
|||
|
type: 'warning'
|
|||
|
});
|
|||
|
}
|
|||
|
else {
|
|||
|
this.currentPage=1
|
|||
|
let options={
|
|||
|
text:'请稍等'
|
|||
|
}
|
|||
|
let loadingInstance = Loading.service(options);
|
|||
|
this.selectedIndustry = 'future'
|
|||
|
if (this.myHalfData2.length !== 0)
|
|||
|
this.myHalfData2.length = 0
|
|||
|
http.get('/anomaly/all_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'future',
|
|||
|
indus: this.formInline3.industry,
|
|||
|
sdate: this.formInline3.start_date,
|
|||
|
edate: this.formInline3.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
// this.$notify.info({
|
|||
|
// title: '提示',
|
|||
|
// message: '仅显示部分结果'
|
|||
|
// });
|
|||
|
console.log(res.data.date)
|
|||
|
let total = 0
|
|||
|
for (let i in res.data.date) {
|
|||
|
if (res.data.date[i]!==0){
|
|||
|
total += Number(res.data.date[i])
|
|||
|
this.myHalfData2.push({value: Number(res.data.date[i]), name: i})
|
|||
|
}
|
|||
|
}
|
|||
|
if (total!==0){
|
|||
|
|
|||
|
this.myHalfData2.push({
|
|||
|
value: total,
|
|||
|
itemStyle: {
|
|||
|
color: "none",
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
http.get('/anomaly/item_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'future',
|
|||
|
indus: this.formInline3.industry,
|
|||
|
sdate: this.formInline3.start_date,
|
|||
|
edate: this.formInline3.end_date
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
this.filterText=[]
|
|||
|
this.tableData3 = res.data.data
|
|||
|
const unique = Array.from(new Set(this.tableData3.map(item => item.异常关联类型)));
|
|||
|
console.log(unique)
|
|||
|
for (let i in unique)
|
|||
|
{
|
|||
|
let tmp={ text: unique[i], value: unique[i] }
|
|||
|
if ( !this.filterText.some(item => JSON.stringify(item) === JSON.stringify(tmp)))
|
|||
|
this.filterText.push(tmp)
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
loadingInstance.close()
|
|||
|
}
|
|||
|
},
|
|||
|
// 调整表格列宽
|
|||
|
calculateColumnWidth(prop,data) {
|
|||
|
const text = String(data[0][prop]); // 使用第一行的数据作为示例
|
|||
|
const calculatedWidth = text.length;
|
|||
|
// console.log('console.log(calculatedWidth):',calculatedWidth)
|
|||
|
if(calculatedWidth>10 && calculatedWidth<=50){
|
|||
|
const baseWidth= 20 + calculatedWidth * 0.5
|
|||
|
return `${baseWidth}px`;
|
|||
|
}
|
|||
|
if(calculatedWidth<=10){
|
|||
|
const baseWidth= 15
|
|||
|
return `${baseWidth}px`;
|
|||
|
}
|
|||
|
else{
|
|||
|
const baseWidth= 20 + calculatedWidth * 0.5
|
|||
|
return `${baseWidth}px`;
|
|||
|
}
|
|||
|
},
|
|||
|
//股
|
|||
|
testDeatil(row){
|
|||
|
let that=this
|
|||
|
if(row.异常关联类型==='价格波动异常'||row.异常关联类型==='高频交易异常' ||row.异常关联类型==='资产泡沫异常') {
|
|||
|
this.detailsdialog1 = true//打开弹窗
|
|||
|
http.get('/anomaly/sc_anomaly/', {
|
|||
|
params: {
|
|||
|
date: this.formInline1.start_date,
|
|||
|
sc: that.selectedIndustry,
|
|||
|
id: row.名称,
|
|||
|
type: row.异常关联类型
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
let name=res.data.name!==''?res.data.name:row.名称
|
|||
|
let y = []
|
|||
|
let x = []
|
|||
|
if (row.异常关联类型 === '价格波动异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
|
|||
|
y.push(res.data.data[i].价格波动异常值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '价格波动'
|
|||
|
this.titleText = name+'价格波动情况'
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '高频交易异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].高频交易值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '交易量波动'
|
|||
|
this.titleText = name+'交易量变化情况'
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '资产泡沫异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].资产泡沫值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '资产泡沫值'
|
|||
|
this.titleText = name+'资产泡沫'
|
|||
|
}
|
|||
|
|
|||
|
this.xData = x.reverse()
|
|||
|
this.yData = y.reverse()
|
|||
|
// this.lineData['yData']=y
|
|||
|
// console.log(this.lineData)
|
|||
|
})
|
|||
|
http.get('/anomaly/anomaly_event/', {
|
|||
|
params: {
|
|||
|
time: this.formInline1.start_date,
|
|||
|
market: that.selectedIndustry,
|
|||
|
subject: row.名称,
|
|||
|
type: row.异常关联类型
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
console.log(res.data)
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
if (row.异常关联类型==='资产泡沫') {
|
|||
|
this.detailsdialog2 = true//打开弹窗
|
|||
|
}
|
|||
|
if (row.异常关联类型==='事件风险波及'||row.异常关联类型==='风险事件时长'||row.异常关联类型==='事件热度异常') {
|
|||
|
this.detailsdialog3 = true//打开弹窗
|
|||
|
}
|
|||
|
// console.log(row)
|
|||
|
// http.get('/anomaly/anomaly_relevant_analyse/', {
|
|||
|
// params: {
|
|||
|
// subject: row.名称,
|
|||
|
// time: row.监测时间,
|
|||
|
// market: this.selectedIndustry,
|
|||
|
// type: row.异常关联类型
|
|||
|
// }
|
|||
|
// }).then((res) => {
|
|||
|
// console.log(res.data)
|
|||
|
// })
|
|||
|
},
|
|||
|
detail(row,date) {
|
|||
|
|
|||
|
let that = this
|
|||
|
if (this.selectedIndustry !== 'future') {
|
|||
|
if (row.异常关联类型 === '价格波动异常' || row.异常关联类型 === '高频交易异常' || row.异常关联类型 === '资产泡沫异常') {
|
|||
|
this.detailsdialog1 = true//打开弹窗
|
|||
|
http.get('/anomaly/sc_anomaly/', {
|
|||
|
params: {
|
|||
|
date: date,
|
|||
|
sc: that.selectedIndustry,
|
|||
|
id: row.名称,
|
|||
|
type: row.异常关联类型
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
let name=res.data.name!==''?res.data.name:row.名称
|
|||
|
console.log(name)
|
|||
|
let y = []
|
|||
|
let x = []
|
|||
|
if (row.异常关联类型 === '价格波动异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].价格波动异常值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '价格波动'
|
|||
|
this.titleText = name+'价格波动情况'
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '高频交易异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].高频交易值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '交易量波动'
|
|||
|
this.titleText = name+'交易量变化情况'
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '资产泡沫异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].资产泡沫值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
this.legend = '资产泡沫值'
|
|||
|
this.titleText = name+'资产泡沫'
|
|||
|
}
|
|||
|
this.xData = x.reverse()
|
|||
|
this.yData = y.reverse()
|
|||
|
// this.lineData['yData']=y
|
|||
|
// console.log(this.lineData)
|
|||
|
})
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '资产泡沫') {
|
|||
|
this.detailsdialog2 = true//打开弹窗
|
|||
|
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '事件风险波及' || row.异常关联类型 === '风险事件时长' || row.异常关联类型 === '事件热度异常') {
|
|||
|
this.detailsdialog3 = true//打开弹窗
|
|||
|
|
|||
|
}
|
|||
|
} else {
|
|||
|
if (row.异常关联类型 === '价格波动异常' || row.异常关联类型 === '高频交易异常') {
|
|||
|
this.detailsdialog1 = true//打开弹窗
|
|||
|
http.get('/anomaly/sc_anomaly/', {
|
|||
|
params: {
|
|||
|
sc: 'future',
|
|||
|
date: date,
|
|||
|
id: row.合约名称,
|
|||
|
type: row.异常关联类型
|
|||
|
}
|
|||
|
}).then((res) => {
|
|||
|
let y = []
|
|||
|
let x = []
|
|||
|
if (row.异常关联类型 === '价格波动异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].价格波动异常值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
}
|
|||
|
this.legend = '价格波动率'
|
|||
|
if (row.异常关联类型 === '高频交易异常')
|
|||
|
for (let i in res.data.data) {
|
|||
|
y.push(res.data.data[i].高频交易值)
|
|||
|
x.push(res.data.data[i].监测时间)
|
|||
|
}
|
|||
|
this.legend = '交易量波动'
|
|||
|
this.xData = x.reverse()
|
|||
|
this.yData = y.reverse()
|
|||
|
})
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '资产泡沫') {
|
|||
|
this.detailsdialog2 = true//打开弹窗
|
|||
|
|
|||
|
}
|
|||
|
if (row.异常关联类型 === '事件风险波及' || row.异常关联类型 === '风险事件时长' || row.异常关联类型 === '事件热度异常') {
|
|||
|
this.detailsdialog3 = true//打开弹窗
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
//关联实体
|
|||
|
// http.get('/anomaly/anomaly_relevant_analyse/', {
|
|||
|
// params: {
|
|||
|
// subject: row.合约名称,
|
|||
|
// monitoring_time: row.监测时间,
|
|||
|
// market: this.selectedIndustry,
|
|||
|
// type: row.异常关联类型
|
|||
|
// }
|
|||
|
// }).then((res) => {
|
|||
|
// console.log(res.data)
|
|||
|
// })
|
|||
|
},
|
|||
|
|
|||
|
// 打开弹窗图像
|
|||
|
open(){
|
|||
|
// this.$nextTick(() => {
|
|||
|
// // 执行echarts方法
|
|||
|
// this.initEcharts()
|
|||
|
// })
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
},
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang='less' scoped>
|
|||
|
.form{//产品搜索栏
|
|||
|
|
|||
|
display:flex;
|
|||
|
justify-content:space-between;//左右贴边
|
|||
|
margin-top:10px;
|
|||
|
// height: 40px;
|
|||
|
padding-left: 20px;
|
|||
|
|
|||
|
}
|
|||
|
.grayish_btn{//浅灰色按钮
|
|||
|
color: #fff;//文字颜色
|
|||
|
background-color: #aaaaaa;//背景颜色
|
|||
|
}
|
|||
|
// 调整表头间隔、设置表头下方边框颜色
|
|||
|
.table{
|
|||
|
padding: 0px 20px 2px 20px;//返回表格添加间隙 上 右
|
|||
|
// font-size: 12px;
|
|||
|
// color: #606266;
|
|||
|
|
|||
|
// 调整表头间隔、设置表头下方边框颜色
|
|||
|
.text{
|
|||
|
color:rgba(2, 167, 240, 0.729411764705882);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
.detail_table{
|
|||
|
margin-top: 15px;
|
|||
|
margin-left: 10px;
|
|||
|
margin-right: 0px;
|
|||
|
/deep/ .el-table {
|
|||
|
width: 98.5% !important;
|
|||
|
}
|
|||
|
}
|
|||
|
// 右侧空只能这样调整,左侧必须用margin
|
|||
|
/deep/ .el-table {
|
|||
|
width: 97.5% !important;
|
|||
|
// margin-right: 10px;
|
|||
|
}
|
|||
|
|
|||
|
// 调整表头间隔、设置表头下方边框颜色
|
|||
|
/deep/ .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {
|
|||
|
// border-bottom: 1px solid #333333 !important;
|
|||
|
padding: 1px 1px 1px 1px;
|
|||
|
min-width: 0;
|
|||
|
}
|
|||
|
// 去除表格cell间隔
|
|||
|
.el-table .el-table__cell {
|
|||
|
padding: 0px 0;
|
|||
|
min-width: 0;
|
|||
|
// border-color:#333333;
|
|||
|
|
|||
|
}
|
|||
|
/deep/ .active_header{//表头
|
|||
|
color: #333333;
|
|||
|
font-size: 13px;
|
|||
|
text-align: center !important;
|
|||
|
// border-color:#333333;
|
|||
|
|
|||
|
// height: 1px;
|
|||
|
}
|
|||
|
/deep/ .content_center{//表的内容
|
|||
|
text-align: center !important;
|
|||
|
font-size: 13px;
|
|||
|
// border-color:#333333;
|
|||
|
}
|
|||
|
.sublabel{ // 小标签标识
|
|||
|
// font-size: 13px;
|
|||
|
// padding:2px;
|
|||
|
margin-top:10px;
|
|||
|
background-color: rgba(2, 167, 240, 0.5);
|
|||
|
width: 5px;
|
|||
|
height: 35px;
|
|||
|
}
|
|||
|
.title{
|
|||
|
padding-left: 4px;
|
|||
|
margin-top:15px;
|
|||
|
font-weight: bold;//字体加粗
|
|||
|
display:flex;
|
|||
|
justify-content:flex-start
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
</style>
|