operatingCostAnalysisOption.vue 6.99 KB
<template>
    <div class="analysis-option-wrapper basicPassengerFlow">
        <div class="panels-content">
            <div class="panels-main-bottom">
                <ul class="condition-box">
                    <li class="condition-item">
                        <span class="condition-item-text spe-item-text">{{$t('asisTab.date')}}</span>
                        <div class="condition-item-option">
                            <div class="time-wrapper newTime">
                                <el-radio-group v-model="ReportVal" size="small">
                                    <el-radio-button v-for="item in analyasisTime" :key="item.value" :label="item.value">{{i18nFormatter(item.label)}}</el-radio-button>
                                </el-radio-group>
                            </div>
                        </div>
                    </li>
                    <li class="condition-item analysis-date-condition">
                        <div class="condition-item-option">
                            <el-date-picker class="date-input analysis-date-input" v-show="ReportVal === 'day'" v-model="dayTime" value-format="yyyy-MM-dd" align="right" type="date" size="mini" :placeholder="$t('pholder.date')" :picker-options="pickerOptions1">
                            </el-date-picker>
                            <el-date-picker class="date-input analysis-date-input date-week-box" v-show="ReportVal === 'week'" v-model="weekTime" align="right" type="week" :format="datePickerFormatter('week')" size="mini" :placeholder="$t('pholder.week')"
                                :picker-options="weekPickerOpt">
                            </el-date-picker>
                            <el-date-picker class="date-input analysis-date-input date-month-box" v-show="ReportVal === 'month'" v-model="monthTime" align="right" type="month" :format="datePickerFormatter('month')" size="mini" :placeholder="$t('pholder.month')"
                                :picker-options="pickerOptions1">
                            </el-date-picker>
                            <el-date-picker class="date-input analysis-date-input" v-show="ReportVal === 'year'" v-model="yearTime" align="right" type="year" :format="datePickerFormatter('year')" size="mini" :placeholder="$t('pholder.year')" :picker-options="pickerOptions1">
                            </el-date-picker>
                            <el-date-picker class="date-input analysis-date-input times-box" v-model="customTime" value-format="yyyy-MM-dd" align="right" type="daterange" size="mini" :picker-options="pickerOptions1" range-separator="-" v-show="ReportVal === 'custom'"
                                :start-placeholder="$t('table.startTime')" :end-placeholder="$t('table.endTime')">
                            </el-date-picker>
                        </div>
          
         </li>
                    <li class="condition-item btn-condition-item">
                        <el-button type="primary" class="primary-btn analysis-collapse-btn" size="samll" :disabled="(ReportVal === 'day' && !dayTime) || (ReportVal === 'week' && !weekTime) || (ReportVal === 'month' && !monthTime)
              || (ReportVal === 'year' && !yearTime) || (ReportVal === 'custom' && !customTime)" @click="confirmCondition">{{$t('button.confirm')}}</el-button>
                        <!-- <el-button class="reset-btn analysis-collapse-btn" size="samll" @click="resetRefresh">{{$t('button.reset')}}</el-button> -->
                    </li>
                </ul>
            </div>
        </div>
    </div>
</template>

<script>
    const analyasisTime = ['day', 'week', 'month', 'year', 'custom'].map(item => ({
        label: item,
        value: item
    }))
    export default {
        data() {
            return {
                pickerOptions1: {
                    disabledDate(time) {
                        return time.getTime() > Date.now();
                    }
                },
                weekPickerOpt: {
                    firstDayOfWeek: window._vionConfig.firstDayOfWeek ? window._vionConfig.firstDayOfWeek : 1
                },
                analyasisTime,
                ReportVal: 'day',
                dayTime: '',
                weekTime: '',
                monthTime: '',
                yearTime: '',
                customTime: ''
            }
        },
        mounted() {
            let {
                dayDate,
                weekDate,
                monthDate,
                yearDate,
                customDate
            } = this.createDate();
            this.dayTime = dayDate;
            this.weekTime = weekDate;
            this.monthTime = monthDate;
            this.yearTime = yearDate;
            this.customTime = customDate;
        },
        watch: {
            dayTime(val) {
                this.sessionDate('dayDate', val);
            },
            weekTime(val) {
                this.sessionDate('weekDate', val);
            },
            monthTime(val) {
                this.sessionDate('monthDate', val);
            },
            yearTime(val) {
                this.sessionDate('yearDate', val);
            },
            customTime(val) {
                this.sessionDate('customDate', val);
            }
        },
        methods: {
            i18nFormatter(label) {
                let langeLabel = 'asisTab.' + label;
                return this.$t(langeLabel)
            },
            initAsis() {
                let data = {
                    asis_time: this.dayTime,
                }
                let timeObj = this.newDateFormat(
                    this.ReportVal,
                    new Date(data.asis_time)
                );
                data.startDate = timeObj.startTime;
                data.endDate = timeObj.endTime;
                this.$emit('initData', data);
            },
            confirmCondition() {
                let emitObj = {};
                emitObj.asis_time = this[this.ReportVal + 'Time'];
                if (this.ReportVal == "custom") {
                    emitObj.startDate = this.customTime[0];
                    emitObj.endDate = this.customTime[1];
                } else {
                    let timeObj = this.newDateFormat(
                        this.ReportVal,
                        new Date(emitObj.asis_time)
                    );
                    emitObj.startDate = timeObj.startTime;
                    emitObj.endDate = timeObj.endTime;
                }
                this.$emit('reportTime', emitObj);
            },
            resetRefresh() {
                this.ReportVal = 'day'
                this.dayTime = dateUnit.dateFormat(new Date(), 'yyyy-MM-dd')
                this.weekTime = new Date(); // 周时间
                this.monthTime = new Date(); // 月时间
                this.yearTime = new Date(); // 年时间
                this.customTime = [this.dayReduce(new Date(), 15), dateUnit.dateFormat(new Date(), 'yyyy-MM-dd')];
            }
        },

    }
</script>

<style scoped>
    .times-box {
        height: 30px;
        line-height: 30px;
    }

    .newTime {
        width: auto;
    }
</style>