Admin
2022-09-02 0d69019484ae3654579577d06871075b8a389159
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<template>
    <div class="charts-cont">
        <div class="spi" :id="spi">
 
        </div>
    </div>
</template>
 
<script lang="ts">
    import {toRefs, reactive, defineComponent, ref, defineAsyncComponent, onMounted} from 'vue';
    import { storeToRefs } from 'pinia';
    import { initBackEndControlRoutes } from '/@/router/backEnd';
    import {useUserInfo} from "/@/stores/userInfo";
    import { Session } from '/@/utils/storage';
    import { Search } from '@element-plus/icons-vue'
    import { ElMessage } from 'element-plus'
    import type { FormInstance, FormRules } from 'element-plus'
    import { workApplyApi } from '/@/api/specialWorkSystem/workApply';
    import * as echarts from 'echarts';
    import '/@/theme/bigScreen.css'
 
    interface stateType {
    }
    export default defineComponent({
        name: 'accident',
        components: {},
        props:{
            size: Number,
            dep: Number
        },
        setup(props) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
            const spi = ref("eChartSpi" + Date.now() + Math.random())
            const state = reactive<stateType>({
 
            })
            type EChartsOption = echarts.EChartsOption
            // 隐患整改情况
            const initSpi =()=>{
                let dom = document.getElementById(spi.value);
                let myChart = echarts.init(dom);
 
                let option: EChartsOption;
 
                option = {
                    legend: {
                        data: ['注意线', '警告线', '危险线', 'SPI预警指数值'],
                        top: '0',
                        left: 'center',
                        textStyle:{
                            color: '#fff',
                            fontSize: fontSize(12)
                        }
                    },
                    grid: {
                        left: '4%',
                        right: '4%',
                        bottom: '5%',
                    },
                    xAxis: [
                        {
                            type: 'category',
                            boundaryGap: false,
                            data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
                            axisLine:{
                                show: true,
                                lineStyle:{
                                    color: '#fff'
                                }
                            },
                            splitLine:{
                                show: true,
                                lineStyle:{
                                    type: 'dashed',
                                    color: 'rgba(255,255,255,.4)'
                                }
                            },
                            axisLabel:{
                                color: '#fff'
                            }
                        }
                    ],
                    yAxis: [
                        {
                            type: 'value',
                            axisLine:{
                                show: true,
                                lineStyle:{
                                    type: 'dotted'
                                }
                            },
                            axisLabel:{
                                color: '#ccc'
                            },
                            splitLine:{
                                show: true,
                                lineStyle:{
                                    type: 'dashed',
                                    color: 'rgba(255,255,255,.4)'
                                }
                            }
                        }
                    ],
                    series: [
                        {
                            name: '注意线',
                            data: [500, 500, 500, 500, 500, 500, 500,500, 500, 500, 500, 500],
                            type: 'line',
                            lineStyle:{
                                width: 0
                            },
                            areaStyle: {
                                color: {
                                    x: 0,
                                    y: 0,
                                    x2: 0,
                                    y2: 1,
                                    colorStops: [
                                        {
                                            offset: 0.1,
                                            color: "rgba(147,208,81)", // 线处的颜色
                                        },
                                        {
                                            offset: 0.9,
                                            color: "rgba(147,208,81,.2)", // 坐标轴处的颜色
                                        },
                                    ]
                                },
                            },
                            showSymbol: false,
                            stack: 'Total',
                            smooth: true
                        },
                        {
                            name: '警告线',
                            data: [250, 250, 250, 250, 250, 250, 250,250, 250, 250, 250, 250],
                            type: 'line',
                            lineStyle:{
                                width: 0
                            },
                            areaStyle: {
                                color: {
                                    x: 0,
                                    y: 0,
                                    x2: 0,
                                    y2: 1,
                                    colorStops: [
                                        {
                                            offset: 0.1,
                                            color: "rgba(235,194,80)", // 线处的颜色
                                        },
                                        {
                                            offset: 0.9,
                                            color: "rgba(235,194,80,.6)", // 坐标轴处的颜色
                                        },
                                    ],
                                }
                            },
                            showSymbol: false,
                            stack: 'Total',
                            smooth: true
                        },
                        {
                            name: '危险线',
                            data: [250, 250, 250, 250, 250, 250, 250,250, 250, 250, 250, 250],
                            type: 'line',
                            lineStyle:{
                                width: 0
                            },
                            areaStyle: {
                                color: {
                                    x: 0,
                                    y: 0,
                                    x2: 0,
                                    y2: 1,
                                    colorStops: [
                                        {
                                            offset: 0.1,
                                            color: "rgba(216,55,55)", // 线处的颜色
                                        },
                                        {
                                            offset: 0.9,
                                            color: "rgba(216,55,55,.6)", // 坐标轴处的颜色
                                        },
                                    ],
                                }
                            },
                            showSymbol: false,
                            stack: 'Total',
                            smooth: true
                        },
                        {
                            name: 'SPI预警指数值',
                            data: [450, 632, 501, 434, 390, 530, 520,750, 632, 401, 634, 590],
                            type: 'line',
                            label:{
                                show: true,
                                color: '#fff',
                                fontSize: fontSize(12)
                            },
                            lineStyle:{
                                width: 2,
                                color: '#23E5E5'
                            },
                            itemStyle:{
                                color: '#23E5E5',
                                borderColor: '#fff',
                                borderWidth: 4
                            },
                            smooth: true
                        }
                    ]
                };
 
                option && myChart.setOption(option);
                window.addEventListener("resize",function (){
                    myChart.resize();
                });
            }
            function fontSize(val){
                let nowClientWidth = document.documentElement.clientWidth;
                return val * (nowClientWidth/1920) * Number(props.size);
            }
 
            // 页面载入时执行方法
            onMounted(() => {
                initSpi();
            });
 
            return {
                spi,
                Search,
                fontSize,
                ...toRefs(state)
            };
        },
    });
</script>
 
<style scoped lang="scss">
    .charts-cont{
        width: 100%;
        height: 100%;
        padding: 5%;
        position: relative;
 
        .spi{
            width: 100%;
            height: 100%;
        }
    }
    .home-container {
        height: 100%;
        overflow: hidden;
        position: relative;
        .el-row{
            margin-bottom: 20px;
        }
        .el-row:last-child {
            margin-bottom: 0;
        }
        .el-input{
            width: 100% !important;
        }
        .el-date-editor::v-deep{
            width: 100%;
        }
        .el-select{
            width: 100%;
        }
        .el-cascader{
            width: 100% !important;
        }
    }
</style>