verce-vue-test 0.0.11 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/App.vue +4 -0
- package/src/assets/executive-management.css +632 -0
- package/src/components/executive/ExecutiveAccountPanel.vue +94 -0
- package/src/components/executive/ExecutiveReliablePanel.vue +71 -0
- package/src/components/executive/ExecutiveWarningOverview.vue +94 -0
- package/src/components/executive/ExecutiveWarningTablePanel.vue +66 -0
- package/src/components/executive/chart.ts +116 -0
- package/src/router/index.ts +6 -0
- package/src/views/ExecutiveManagementView.vue +9 -900
- package/src/views/PositionForecastExecutionView.vue +535 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { onMounted, ref } from 'vue'
|
|
3
|
+
import { ArrowDown, Minus, RefreshRight, Setting } from '@element-plus/icons-vue'
|
|
4
|
+
import { ringOption, useChartRegistry } from './chart'
|
|
5
|
+
|
|
6
|
+
const balanceChart = ref<HTMLElement>()
|
|
7
|
+
const quotaChart = ref<HTMLElement>()
|
|
8
|
+
const { panelChart, mountCharts } = useChartRegistry()
|
|
9
|
+
|
|
10
|
+
onMounted(() => {
|
|
11
|
+
mountCharts(() => {
|
|
12
|
+
panelChart(balanceChart.value, ringOption('55%', [
|
|
13
|
+
{ value: 55, name: '账户余额', itemStyle: { color: '#1267f2' } },
|
|
14
|
+
{ value: 45, name: '其他', itemStyle: { color: '#e7f0ff' } },
|
|
15
|
+
]))
|
|
16
|
+
|
|
17
|
+
panelChart(quotaChart.value, {
|
|
18
|
+
color: ['#1267f2', '#0b55d9', '#57aaf7', '#bfeeff'],
|
|
19
|
+
series: [
|
|
20
|
+
{
|
|
21
|
+
type: 'pie',
|
|
22
|
+
radius: '75%',
|
|
23
|
+
center: ['50%', '51%'],
|
|
24
|
+
label: { show: false },
|
|
25
|
+
labelLine: { show: false },
|
|
26
|
+
itemStyle: { borderColor: '#fff', borderWidth: 2 },
|
|
27
|
+
data: [
|
|
28
|
+
{ value: 36.6, name: '国库集中支付' },
|
|
29
|
+
{ value: 39.8, name: '财政资金专户' },
|
|
30
|
+
{ value: 23.6, name: '预算单位零余额' },
|
|
31
|
+
{ value: 18, name: '其他客户' },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<template>
|
|
41
|
+
<article class="board account-board">
|
|
42
|
+
<div class="board-head">
|
|
43
|
+
<h2><span></span>人行账户情况</h2>
|
|
44
|
+
<div class="actions">
|
|
45
|
+
<button>本月数据<el-icon><ArrowDown /></el-icon></button>
|
|
46
|
+
<el-icon><RefreshRight /></el-icon>
|
|
47
|
+
<el-icon><Setting /></el-icon>
|
|
48
|
+
<el-icon><Minus /></el-icon>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="account-layout">
|
|
52
|
+
<div class="metric-box balance-box">
|
|
53
|
+
<h3>账户余额</h3>
|
|
54
|
+
<div ref="balanceChart" class="ring"></div>
|
|
55
|
+
<div class="balance-copy">
|
|
56
|
+
<p><b class="dot blue"></b>账户余额(亿)</p>
|
|
57
|
+
<strong>2.02.33</strong>
|
|
58
|
+
<p><b class="dot sky"></b>账户数量(个)</p>
|
|
59
|
+
<strong>23</strong>
|
|
60
|
+
<small>较上月 +8%</small>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
<div class="metric-box quota-box">
|
|
64
|
+
<h3>可用额度</h3>
|
|
65
|
+
<div ref="quotaChart" class="pie"></div>
|
|
66
|
+
<ul class="quota-list">
|
|
67
|
+
<li><b></b>国库集中支付</li>
|
|
68
|
+
<li><b></b>财政资金专户</li>
|
|
69
|
+
<li><b></b>预算单位零余额</li>
|
|
70
|
+
<li><b></b>其他客户</li>
|
|
71
|
+
<li><b></b>保证金专户</li>
|
|
72
|
+
<li><b></b>待清算资金</li>
|
|
73
|
+
</ul>
|
|
74
|
+
<div class="pie-foot">
|
|
75
|
+
<span><b></b>16.48亿 36.6%</span>
|
|
76
|
+
<span><b></b>18.63亿 39.8%</span>
|
|
77
|
+
<span><b></b>11.57亿 23.6%</span>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
<div class="progress-box">
|
|
81
|
+
<div>
|
|
82
|
+
<p>账户总数(个)</p>
|
|
83
|
+
<strong>63</strong>
|
|
84
|
+
</div>
|
|
85
|
+
<b>6.29% <em>↑</em></b>
|
|
86
|
+
<div class="progress-line"><i></i><span>63</span></div>
|
|
87
|
+
<div class="scale-row">
|
|
88
|
+
<span>0</span><span>10</span><span>20</span><span>30</span><span>40</span><span>50</span>
|
|
89
|
+
<span>60</span><span>70</span><span>80</span><span>90</span><span>100</span>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</article>
|
|
94
|
+
</template>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { onMounted, ref } from 'vue'
|
|
3
|
+
import { ArrowDown, Minus, RefreshRight, Setting } from '@element-plus/icons-vue'
|
|
4
|
+
import { ringOption, sparkOption, useChartRegistry } from './chart'
|
|
5
|
+
|
|
6
|
+
const reliableChart = ref<HTMLElement>()
|
|
7
|
+
const pressureChart = ref<HTMLElement>()
|
|
8
|
+
const trendChart = ref<HTMLElement>()
|
|
9
|
+
const pressureTrendChart = ref<HTMLElement>()
|
|
10
|
+
const { panelChart, mountCharts } = useChartRegistry()
|
|
11
|
+
|
|
12
|
+
onMounted(() => {
|
|
13
|
+
mountCharts(() => {
|
|
14
|
+
panelChart(reliableChart.value, ringOption('低靠', [
|
|
15
|
+
{ value: 65, name: '巨靠系数', itemStyle: { color: '#1267f2' } },
|
|
16
|
+
{ value: 35, name: '其他', itemStyle: { color: '#e7f0ff' } },
|
|
17
|
+
]))
|
|
18
|
+
|
|
19
|
+
panelChart(pressureChart.value, ringOption('逾期概率', [
|
|
20
|
+
{ value: 34, name: '高压力', itemStyle: { color: '#18c7c0' } },
|
|
21
|
+
{ value: 66, name: '低压力', itemStyle: { color: '#1267f2' } },
|
|
22
|
+
]))
|
|
23
|
+
|
|
24
|
+
panelChart(trendChart.value, sparkOption([15, 34, 18, 8, 27, 55, 36, 48]))
|
|
25
|
+
panelChart(pressureTrendChart.value, sparkOption([12, 24, 18, 49, 62, 30, 52, 72]))
|
|
26
|
+
})
|
|
27
|
+
})
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<article class="board reliable-board">
|
|
32
|
+
<div class="board-head">
|
|
33
|
+
<h2><span></span>头寸巨靠情况</h2>
|
|
34
|
+
<div class="actions">
|
|
35
|
+
<button class="active">本月数据<el-icon><ArrowDown /></el-icon></button>
|
|
36
|
+
<el-icon><RefreshRight /></el-icon>
|
|
37
|
+
<el-icon><Setting /></el-icon>
|
|
38
|
+
<el-icon><Minus /></el-icon>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="reliable-layout">
|
|
42
|
+
<div class="metric-box">
|
|
43
|
+
<h3>巨靠结果</h3>
|
|
44
|
+
<div ref="reliableChart" class="ring"></div>
|
|
45
|
+
<ul class="legend-list">
|
|
46
|
+
<li><b class="blue"></b>极高靠(≥2.0)</li>
|
|
47
|
+
<li><b class="deep"></b>高靠(1.5-2.0)</li>
|
|
48
|
+
<li><b class="sky"></b>中靠(1.0-1.5)</li>
|
|
49
|
+
<li><b class="orange"></b>低靠(<1.0)</li>
|
|
50
|
+
</ul>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="metric-box">
|
|
53
|
+
<h3>流动性压力点</h3>
|
|
54
|
+
<div ref="pressureChart" class="ring"></div>
|
|
55
|
+
<ul class="legend-list pressure">
|
|
56
|
+
<li><b class="green"></b>高压力(≥70%)</li>
|
|
57
|
+
<li><b class="pale"></b>中压力(30%-70%)</li>
|
|
58
|
+
<li><b class="blue"></b>低压力(<30%)</li>
|
|
59
|
+
</ul>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="mini-strip">
|
|
62
|
+
<div><p>巨靠客户数(个)</p><strong>3566</strong></div>
|
|
63
|
+
<div><p>较上月</p><strong class="blue-text">0.1 <em>↓</em></strong></div>
|
|
64
|
+
<div><p>巨靠趋势(近7日)</p><div ref="trendChart" class="spark"></div></div>
|
|
65
|
+
<div><p>流动性缺口(万元)</p><strong>1025596</strong></div>
|
|
66
|
+
<div><p>较上月</p><strong class="blue-text">↑ 1.2%</strong></div>
|
|
67
|
+
<div><p>压力趋势(近7日)</p><div ref="pressureTrendChart" class="spark"></div></div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</article>
|
|
71
|
+
</template>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { onMounted, ref } from 'vue'
|
|
3
|
+
import { ArrowDown, Minus, RefreshRight, Setting } from '@element-plus/icons-vue'
|
|
4
|
+
import { chartGradient, lineOption, useChartRegistry } from './chart'
|
|
5
|
+
|
|
6
|
+
const scaleChart = ref<HTMLElement>()
|
|
7
|
+
const gapChart = ref<HTMLElement>()
|
|
8
|
+
const { panelChart, mountCharts } = useChartRegistry()
|
|
9
|
+
|
|
10
|
+
onMounted(() => {
|
|
11
|
+
mountCharts(() => {
|
|
12
|
+
panelChart(scaleChart.value, lineOption([
|
|
13
|
+
{
|
|
14
|
+
name: '日头寸规模',
|
|
15
|
+
type: 'line',
|
|
16
|
+
smooth: false,
|
|
17
|
+
symbolSize: 8,
|
|
18
|
+
data: [120, 138, 91, 98, 88, 148],
|
|
19
|
+
lineStyle: { color: '#1267f2', width: 2 },
|
|
20
|
+
itemStyle: { color: '#1267f2' },
|
|
21
|
+
areaStyle: {
|
|
22
|
+
color: chartGradient('rgba(18, 103, 242, .28)', 'rgba(18, 103, 242, .02)'),
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: '最优头寸',
|
|
27
|
+
type: 'line',
|
|
28
|
+
symbol: 'none',
|
|
29
|
+
data: [120, 138, 91, 98, 88, 148],
|
|
30
|
+
lineStyle: { color: '#1267f2', width: 1, opacity: 0 },
|
|
31
|
+
},
|
|
32
|
+
]))
|
|
33
|
+
|
|
34
|
+
panelChart(gapChart.value, lineOption([
|
|
35
|
+
{
|
|
36
|
+
name: '资金缺口',
|
|
37
|
+
type: 'line',
|
|
38
|
+
smooth: true,
|
|
39
|
+
symbolSize: 8,
|
|
40
|
+
data: [-18, 18, 62, 165, 122, 130],
|
|
41
|
+
lineStyle: { color: '#16c5aa', width: 2 },
|
|
42
|
+
itemStyle: { color: '#16c5aa' },
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '累计缺口',
|
|
46
|
+
type: 'line',
|
|
47
|
+
smooth: true,
|
|
48
|
+
symbolSize: 8,
|
|
49
|
+
data: [-65, -25, 60, 165, 120, 128],
|
|
50
|
+
lineStyle: { color: '#1267f2', width: 2 },
|
|
51
|
+
itemStyle: { color: '#1267f2' },
|
|
52
|
+
areaStyle: {
|
|
53
|
+
color: chartGradient('rgba(18, 103, 242, .25)', 'rgba(18, 103, 242, .03)'),
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
], -100, 200))
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
</script>
|
|
60
|
+
|
|
61
|
+
<template>
|
|
62
|
+
<article class="board warning-board">
|
|
63
|
+
<div class="board-head">
|
|
64
|
+
<h2><span></span>头寸预警总览</h2>
|
|
65
|
+
<div class="actions">
|
|
66
|
+
<button>本月数据<el-icon><ArrowDown /></el-icon></button>
|
|
67
|
+
<el-icon><RefreshRight /></el-icon>
|
|
68
|
+
<el-icon><Setting /></el-icon>
|
|
69
|
+
<el-icon><Minus /></el-icon>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="warning-layout">
|
|
73
|
+
<div class="chart-box">
|
|
74
|
+
<h3>全行头寸规模</h3>
|
|
75
|
+
<small>(亿元)</small>
|
|
76
|
+
<div ref="scaleChart" class="line-chart"></div>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="chart-box">
|
|
79
|
+
<h3>资金缺口</h3>
|
|
80
|
+
<small>(亿元)</small>
|
|
81
|
+
<div ref="gapChart" class="line-chart"></div>
|
|
82
|
+
</div>
|
|
83
|
+
<div class="stat-strip">
|
|
84
|
+
<div><p>预警客户数(个)</p><strong class="blue-text">83</strong></div>
|
|
85
|
+
<div><b>6.2% <em>↑</em></b></div>
|
|
86
|
+
<div><p>较上月</p><strong>79</strong></div>
|
|
87
|
+
<div><p>正常(个)</p><strong>76</strong></div>
|
|
88
|
+
<div><p>关注(个)</p><strong>-</strong></div>
|
|
89
|
+
<div><p>预警(个)</p><strong>19</strong></div>
|
|
90
|
+
<div><p>严重(个)</p><strong>-</strong><span class="tiny-bar"></span></div>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</article>
|
|
94
|
+
</template>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ArrowDown, Minus, RefreshRight, Setting } from '@element-plus/icons-vue'
|
|
3
|
+
|
|
4
|
+
const rows = [
|
|
5
|
+
['1', '0101', '0101', '2024-05-21', '622', '462', '108', '42', '10', '572', '92.0'],
|
|
6
|
+
['2', '0102', '0102', '2024-05-21', '518', '385', '93', '30', '10', '471', '90.9'],
|
|
7
|
+
['3', '0103', '0103', '2024-05-21', '345', '262', '58', '18', '7', '310', '89.9'],
|
|
8
|
+
['4', '0104', '0104', '2024-05-21', '287', '210', '45', '22', '10', '243', '84.7'],
|
|
9
|
+
['5', '0105', '0105', '2024-05-21', '254', '192', '37', '17', '8', '210', '82.7'],
|
|
10
|
+
['6', '0106', '0105', '2024-05-21', '198', '150', '28', '15', '5', '163', '82.3'],
|
|
11
|
+
['7', '0107', '0103', '2024-05-21', '156', '118', '22', '12', '4', '125', '80.1'],
|
|
12
|
+
]
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<article class="board table-board">
|
|
17
|
+
<div class="board-head">
|
|
18
|
+
<h2><span></span>全行头寸预警信息累计清结表</h2>
|
|
19
|
+
<div class="actions">
|
|
20
|
+
<button class="active">本月数据<el-icon><ArrowDown /></el-icon></button>
|
|
21
|
+
<el-icon><RefreshRight /></el-icon>
|
|
22
|
+
<el-icon><Setting /></el-icon>
|
|
23
|
+
<el-icon><Minus /></el-icon>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<table class="warning-table">
|
|
27
|
+
<thead>
|
|
28
|
+
<tr>
|
|
29
|
+
<th rowspan="2">序号</th>
|
|
30
|
+
<th rowspan="2">机构编码</th>
|
|
31
|
+
<th rowspan="2">机构名称</th>
|
|
32
|
+
<th rowspan="2">预警日期</th>
|
|
33
|
+
<th colspan="5">全行预警信息累计总数</th>
|
|
34
|
+
<th rowspan="2">清结笔数</th>
|
|
35
|
+
<th rowspan="2">清结率(%)</th>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<th>总数</th>
|
|
39
|
+
<th>正常</th>
|
|
40
|
+
<th>关注</th>
|
|
41
|
+
<th>预警</th>
|
|
42
|
+
<th>严重预警</th>
|
|
43
|
+
</tr>
|
|
44
|
+
</thead>
|
|
45
|
+
<tbody>
|
|
46
|
+
<tr v-for="row in rows" :key="row[0]">
|
|
47
|
+
<td v-for="cell in row" :key="cell">{{ cell }}</td>
|
|
48
|
+
</tr>
|
|
49
|
+
</tbody>
|
|
50
|
+
</table>
|
|
51
|
+
<div class="pager">
|
|
52
|
+
<span>共 35 条</span>
|
|
53
|
+
<button>‹</button>
|
|
54
|
+
<button class="selected">1</button>
|
|
55
|
+
<button>2</button>
|
|
56
|
+
<button>3</button>
|
|
57
|
+
<button>4</button>
|
|
58
|
+
<button>5</button>
|
|
59
|
+
<span>...</span>
|
|
60
|
+
<button>→</button>
|
|
61
|
+
<span>前往</span>
|
|
62
|
+
<input value="1" readonly>
|
|
63
|
+
<span>页</span>
|
|
64
|
+
</div>
|
|
65
|
+
</article>
|
|
66
|
+
</template>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { nextTick, onUnmounted } from 'vue'
|
|
2
|
+
import * as echarts from 'echarts'
|
|
3
|
+
import type { ECharts, EChartsOption } from 'echarts'
|
|
4
|
+
|
|
5
|
+
export function useChartRegistry() {
|
|
6
|
+
const charts: ECharts[] = []
|
|
7
|
+
|
|
8
|
+
function panelChart(el: HTMLElement | undefined, option: EChartsOption) {
|
|
9
|
+
if (!el) return
|
|
10
|
+
const chart = echarts.init(el)
|
|
11
|
+
chart.setOption(option)
|
|
12
|
+
charts.push(chart)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function resizeCharts() {
|
|
16
|
+
charts.forEach((chart) => chart.resize())
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function mountCharts(render: () => void) {
|
|
20
|
+
await nextTick()
|
|
21
|
+
render()
|
|
22
|
+
window.addEventListener('resize', resizeCharts)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
onUnmounted(() => {
|
|
26
|
+
window.removeEventListener('resize', resizeCharts)
|
|
27
|
+
charts.forEach((chart) => chart.dispose())
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
return { panelChart, mountCharts }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function ringOption(
|
|
34
|
+
centerText: string,
|
|
35
|
+
data: Array<{ value: number; name: string; itemStyle?: object }>,
|
|
36
|
+
): EChartsOption {
|
|
37
|
+
return {
|
|
38
|
+
color: ['#1267f2', '#e7f0ff'],
|
|
39
|
+
animationDuration: 900,
|
|
40
|
+
title: {
|
|
41
|
+
text: centerText,
|
|
42
|
+
left: 'center',
|
|
43
|
+
top: '42%',
|
|
44
|
+
textStyle: { color: '#05070b', fontSize: 30, fontWeight: 800 },
|
|
45
|
+
},
|
|
46
|
+
series: [
|
|
47
|
+
{
|
|
48
|
+
type: 'pie',
|
|
49
|
+
radius: ['57%', '77%'],
|
|
50
|
+
center: ['50%', '51%'],
|
|
51
|
+
startAngle: 90,
|
|
52
|
+
avoidLabelOverlap: false,
|
|
53
|
+
label: { show: false },
|
|
54
|
+
labelLine: { show: false },
|
|
55
|
+
itemStyle: { borderColor: '#fff', borderWidth: 4 },
|
|
56
|
+
data,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function lineOption(series: echarts.SeriesOption[], yMin = 0, yMax = 200): EChartsOption {
|
|
63
|
+
return {
|
|
64
|
+
grid: { left: 56, right: 28, top: 46, bottom: 42 },
|
|
65
|
+
legend: {
|
|
66
|
+
top: 4,
|
|
67
|
+
right: 8,
|
|
68
|
+
icon: 'path://M0,4 L12,4',
|
|
69
|
+
itemWidth: 16,
|
|
70
|
+
itemHeight: 7,
|
|
71
|
+
textStyle: { color: '#6e7787', fontSize: 11 },
|
|
72
|
+
},
|
|
73
|
+
xAxis: {
|
|
74
|
+
type: 'category',
|
|
75
|
+
boundaryGap: false,
|
|
76
|
+
data: ['05-15', '05-16', '05-17', '05-18', '05-20', '05-21'],
|
|
77
|
+
axisTick: { show: false },
|
|
78
|
+
axisLine: { lineStyle: { color: '#d6dde8' } },
|
|
79
|
+
axisLabel: { color: '#6b7280', fontSize: 12 },
|
|
80
|
+
},
|
|
81
|
+
yAxis: {
|
|
82
|
+
type: 'value',
|
|
83
|
+
min: yMin,
|
|
84
|
+
max: yMax,
|
|
85
|
+
splitNumber: 4,
|
|
86
|
+
axisLabel: { color: '#6b7280', fontSize: 12 },
|
|
87
|
+
splitLine: { lineStyle: { color: '#e7ecf3' } },
|
|
88
|
+
},
|
|
89
|
+
series,
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function sparkOption(values: number[]): EChartsOption {
|
|
94
|
+
return {
|
|
95
|
+
animationDuration: 700,
|
|
96
|
+
grid: { left: 2, right: 2, top: 8, bottom: 7 },
|
|
97
|
+
xAxis: { type: 'category', show: false, data: values.map((_, index) => index) },
|
|
98
|
+
yAxis: { type: 'value', show: false },
|
|
99
|
+
series: [
|
|
100
|
+
{
|
|
101
|
+
type: 'line',
|
|
102
|
+
data: values,
|
|
103
|
+
symbol: 'none',
|
|
104
|
+
smooth: false,
|
|
105
|
+
lineStyle: { color: '#1267f2', width: 2 },
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function chartGradient(start: string, end: string) {
|
|
112
|
+
return new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
113
|
+
{ offset: 0, color: start },
|
|
114
|
+
{ offset: 1, color: end },
|
|
115
|
+
])
|
|
116
|
+
}
|
package/src/router/index.ts
CHANGED
|
@@ -54,6 +54,12 @@ const router = createRouter({
|
|
|
54
54
|
name: 'positionForecast',
|
|
55
55
|
component: () => import('../views/PositionForecastView.vue'),
|
|
56
56
|
},
|
|
57
|
+
{
|
|
58
|
+
path: '/position-forecast-execution',
|
|
59
|
+
name: 'positionForecastExecution',
|
|
60
|
+
meta: { fullscreen: true },
|
|
61
|
+
component: () => import('../views/PositionForecastExecutionView.vue'),
|
|
62
|
+
},
|
|
57
63
|
{
|
|
58
64
|
path: '/executive-management',
|
|
59
65
|
name: 'executiveManagement',
|