Admin
2022-09-05 421d5510fa769b99aa41dadfc7dfa59a5939a642
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
<template>
    <div class="charts-cont">
        <div class="educate" :id="educate">
 
        </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: 'educate',
        components: {},
        props:{
            size: Number
        },
        setup(props) {
            const userInfo = useUserInfo()
            const { userInfos } = storeToRefs(userInfo);
            const educate = ref("eChartEdu" + Date.now() + Math.random())
            const state = reactive<stateType>({
 
            })
            type EChartsOption = echarts.EChartsOption
            // 隐患整改情况
            const initEducate =()=>{
                let dom = document.getElementById(educate.value);
                let myChart = echarts.init(dom);
 
                let option: EChartsOption;
 
                option = {
                    color: ['#67F9D8', '#FFE434', '#56A3F1', '#FF917C'],
                    legend: {
                        top: '8%',
                        left: 'center',
                        itemWidth: fontSize(10),
                        itemHeight: fontSize(8),
                        textStyle:{
                            color: 'auto',
                            fontSize: fontSize(11)
                        }
                    },
                    radar: [
                        {
                            indicator: [
                                { name: '设计培训次数' },
                                { name: '培训时间(小时)' },
                                { name: '完成比例(%)' }
                            ],
                            center: ['50%', '60%'],
                            radius: fontSize(65),
                            startAngle: 90,
                            splitNumber: 4,
                            shape: 'circle',
                            axisName: {
                                formatter: '{value}',
                                color: '#428BD4',
                                fontSize: fontSize(10),
                                width: 20,
                                overflow: 'break'
                            },
                            splitArea: {
                                areaStyle: {
                                    color: ['#77EADF', '#26C3BE', '#64AFE9', '#428BD4'],
                                    shadowColor: 'rgba(0, 0, 0, 0.1)',
                                    shadowBlur: 10
                                }
                            },
                            axisLine: {
                                lineStyle: {
                                    color: 'rgba(211, 253, 250, 0.8)'
                                }
                            },
                            splitLine: {
                                lineStyle: {
                                    color: 'rgba(211, 253, 250, 0.8)'
                                }
                            }
                        }
                    ],
                    series: [
                        {
                            type: 'radar',
                            emphasis: {
                                lineStyle: {
                                    width: 4
                                }
                            },
                            data: [
                                {
                                    value: [100, 8, 0.4, -80, 2000],
                                    name: '企业汇总'
                                },
                                {
                                    value: [60, 5, 0.3, -100, 1500],
                                    name: '事业部A',
                                    areaStyle: {
                                        color: 'rgba(255, 228, 52, 0.6)'
                                    }
                                }
                            ]
                        },
                    ]
                };
 
                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(() => {
                initEducate();
            });
 
            return {
                educate,
                Search,
                fontSize,
                ...toRefs(state)
            };
        },
    });
</script>
 
<style scoped lang="scss">
    .charts-cont{
        width: 100%;
        height: 100%;
        position: relative;
 
        .educate{
            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>