weatherasis.vue
4.73 KB
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
<template>
    <div class="weather-analysis">
        <el-header height="70px">
            <span class="asis-title">{{ asisName }} {{$t('asis.WeatherAsis')}}</span>
            <span class="more-option-wrapper" @click="showCollapse">
                <span class="more-option-text">{{$t('asis.moreOp')}}</span>
                <i :class="moreOptVisible ? 'el-icon-arrow-down more-option-arrow' : 'el-icon-arrow-down more-option-arrow more-option-up'"></i>
            </span>
        </el-header>
        <weather-option v-show="moreOptVisible" ref="init" @reportTime="reportHandler" @initData="initTab" @childByValue="childByValue"></weather-option> 
        <div class="element-main weather-main">
            <router-view :propparam="propParams"></router-view>
        </div>
    </div> 
</template>
<script>
import weatherOption from '../common/option/weatherMoreOption'
export default {
    data() {
        return {
            moreOptVisible: false,
            asisName: '',
            propParams: {}
        }
    },
    components: {
        'weather-option': weatherOption,
    },
    created() {
        window.addEventListener('resize', () => {
            try {
                let timeHeatEChartsUtil = {
                    chart1: $('#monthScatterChart')[0],
                    chart2: $('#yearScatterChart')[0],
                }
                for(let k in timeHeatEChartsUtil) {
                    if(timeHeatEChartsUtil.hasOwnProperty(k) && timeHeatEChartsUtil[k] != undefined) {
                        timeHeatEChartsUtil[k] = this.$echarts.init(timeHeatEChartsUtil[k]);
                        var element = timeHeatEChartsUtil[k];
                        element.resize();
                    }
                }
            } catch (err) { }
        })
    },
    mounted() {
        this.getMallOpt();
        this.showCollapse()
    },
    methods: {
        childByValue(childValue) {
            this.animate('.weather-main')
        },
        showCollapse() {
            // 获取上面元素的高度
            let headerH = '', titleH = '', collapseH = '', mt = '';
                headerH = this.getStyleFn('.el-header', 'height');
                titleH = this.getStyleFn('.analysis-wrapper .el-header', 'height');
            if(this.moreOptVisible) {
                this.moreOptVisible = false;
                mt = headerH + titleH + 8 + 'px';
                $('.weather-main').animate({ marginTop: mt });
            } else {
                this.moreOptVisible = true;
                setTimeout(() => {
                    collapseH = this.getStyleFn('.analysis-option-wrapper', 'height');
                    mt = headerH + titleH + collapseH + 8 + 'px';
                    $('.weather-main').animate({ marginTop: mt });
                }, 100);
            }
        },
        getMallOpt() {
            this.getCommonMalls().then(resolveData => {
                let {mallData,localMallId,titleName,multiMallId} = resolveData;
                this.asisName = titleName;
                this.$refs.init.initAsis(localMallId,mallData);
            },(rejectData) => {
            })
        },
        initTab(data) {
            switch (data.asis_date) {
                case 'month':
                    this.$router.push('/analysis/weatherasis/monthly')
                    this.propParams = {
                        dateType: '/weatherasis/monthly',
                        data: data
                    };
                    break;
                case 'year':
                    this.$router.push('/analysis/weatherasis/yearly')
                    this.propParams = {
                        dateType: '/weatherasis/yearly',
                        data: data
                    };
                    break;
                default:
                    break;
            }
        },
        reportHandler(emitData) {
            this.asisName = emitData.asis_tit;
            switch (emitData.asis_date) {
                case 'month':
                    this.$router.push('/analysis/weatherasis/monthly')
                    this.propParams = {
                        dateType: '/weatherasis/monthly',
                        data: emitData
                    };
                    break;
                case 'year':
                    this.$router.push('/analysis/weatherasis/yearly')
                    this.propParams = {
                        dateType: '/weatherasis/yearly',
                        data: emitData
                    };
                    break;
                default:
                    break;
            }
            // setTimeout(() => {
            //     this.$refs.takeTime.refreshHandle(emitData);
            // }, 200);
        }
    }
}
</script>
<style scoped>
    .weather-analysis {
        width: 100%;
    }
</style>