businessStatusWarningOption.vue 9.85 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" style="line-height: 28px;vertical-align: top;">{{ $t('table.grouping') }}:</span>
                        <div class="condition-item-option" style="width: 250px;">
                            <treeselect
                              v-model="groupIds"
                              :max-height="300"
                              class="manage-sel group-parent-sel"
                              :placeholder="$t('pholder.grouping')"
                              :load-options="loadOptions"
                              :options="treeData"
                              @select="parentChange"
                              :loadingText="$t('echartsTitle.loading')"
                              :noChildrenText="$t('echartsTitle.noData')"
                            />
                        </div>
                    </li>
                    <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: '',
                groupIds:-1,
                treeData:[],
            }
        },
        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: {
            loadOptions({ action, callback, parentNode, instanceId }) {
              if (action == "LOAD_CHILDREN_OPTIONS") {
                if (!parentNode.children) {
                  simulateAsyncOperation(() => {
                    callback(null);
                  });
                }
              }
            },
            parentChange(node) {
              this.groupIds = node.id;
            },
            getGroup() {
              this.$api.management.groupList({accountId: this.$cookie.get("accountId") }).then(res => {
                var result = res.data.data;
                this.treeData = this.creatRoot(result);
              });
            },
            creatRoot(result) {
              let rootNode = [
                {
                  label: this.$cookie.get("accountName"),
                  name: this.$cookie.get("accountName"),
                  nameEn: "",
                  id: -1,
                  accountId: this.$cookie.get("accountId")
                }
              ];
              this.creatTreeData(rootNode, result);
              return rootNode;
            },
            creatTreeData(treeData, datas) {
              treeData.forEach(item => {
                var flag = false;
                item.children = [];
                datas.forEach(item2 => {
                  if (item2.pid == item.id) {
                    var objs = {
                      label: item2.name,
                      id: item2.id
                    };
                    flag = true;
                    item.children.push(objs);
                  }
                });
                if (flag) {
                  this.creatTreeData(item.children, datas);
                } else {
                  item.children = null;
                }
              });
            },
            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.getGroup()
                this.$emit('initData', data);
            },
            confirmCondition() {
                let emitObj = {};
                emitObj.asis_time = this[this.ReportVal + 'Time'];
                emitObj.groupId = this.groupIds;
                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>