seqMoreOptionNew.vue 9.04 KB
<template>
  <div class="analysis-option-wrapper basicPassengerFlow">
    <div class="panels-content">
      <div class="panels-main-top panels-main-center">
        <!-- 商场检索选项 多选-->
        <ul class="condition-box">
          <li class="condition-item">
            <span class="condition-item-text">{{$t('asisTab.mallT')}}</span>
            <div class="condition-item-option">
              <el-select v-model="mutiMallVal" filterable :placeholder="$t('pholder.shopSelect')" class="mall-sel-box" collapse-tags
              :reserve-keyword="true" multiple @change="mallChangeHandle">
                  <div :class="isMallSelAll ? 'sel-all-box selected' : 'sel-all-box'" @click="selAllHandle('Mall', mallData)">
                      <span class="custom-checkbox__input">
                          <span class="custom-checkbox__inner"></span>
                      </span>
                      <span style="padding-left: 5px;">{{$t('allPages.all')}}</span>
                  </div>
                  <el-option v-for="item in mallData" :key="item.id" :label="item.name" :value="item.id">
                      <span class="custom-checkbox__input">
                          <span class="custom-checkbox__inner"></span>
                      </span>
                      <span style="padding-left: 5px;">{{ item.name }}</span>
                  </el-option>
              </el-select>
            </div>
          </li>
          <li class="condition-item">
            <span class="condition-item-text">{{$t('asisTab.index')}}</span>
            <div class="condition-item-option">
              <el-select v-model="indicatorVal" filterable :placeholder="$t('pholder.select')" class="mall-sel-box" multiple
              :reserve-keyword="true" collapse-tags >
                <el-option v-for="(item,index) in indicatorData" :key="index" :label="item.value" :value="item.key">
                  <span class="custom-checkbox__input">
                    <span class="custom-checkbox__inner"></span>
                  </span>
                  <span style="padding-left: 5px;">{{ item.value }}</span>
                </el-option>
              </el-select>
            </div>
          </li>
        </ul>
      </div>
      <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 simulateAsyncOperation = fn => {
  setTimeout(fn, 2000);
}
const analyasisTime = ['day', 'week', 'month', 'year'].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: 'month',
      dayTime: '',
      weekTime: '',
      monthTime: '',
      yearTime: '',
      customTime: '',
      mallVal: [],    // 单选商场
      mallId: '', // 组件全局商场ID
      mallData: [],
      mutiMallVal:[],
      isMallSelAll: false,
      indicatorVal:[],
      indicatorData:[]
    }
  },
  components: {
  },
  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);
    }
  },
  mounted() {
    let { dayDate, weekDate, monthDate, yearDate, customDate } = this.createDate();
    this.dayTime = dayDate;
    this.weekTime = weekDate;
    this.monthTime = monthDate;
    this.yearTime = yearDate;
    this.customTime = customDate;
    this.getMallIndex()
  },
  methods: {
      getMallIndex(){
        this.$api.base.dataDic({
          type: 'MallIndex'
        }).then(res => {
          this.indicatorData = this.languageSetting(res.data.data,'value');
        })  
      },
    i18nFormatter(label) {
      let langeLabel = 'asisTab.' + label;
      return this.$t(langeLabel)
    },
    mallChangeHandle() {
        this.isMallSelAll = this.mutiMallVal.length < this.mallData.length ? false: true
    },
    selAllHandle(selType, option) {
        let selectAll = 'is' + selType + 'SelAll';
        let selectVal = 'muti' + selType + 'Val';
        if(this[selectAll]) {
            this[selectAll] = false;
            this[selectVal] = [];
        }else{
            this[selectAll] = true;
            this[selectVal] = [];
            option.forEach(item => {
                this[selectVal].push(item.id);
            })
        }
    },
    initAsis(id, mall_data) {
      this.mallData = mall_data;
      this.ReportVal = 'month'
      let data = {
        option: 'month',
        asis_time: this.monthTime,
      }
      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 {mallData,mutiMallVal,ReportVal,indicatorVal} = this;
      let emitObj = {};
      emitObj.option = ReportVal;
      emitObj.asis_time = this[ReportVal + 'Time'];
      emitObj.orgId = mutiMallVal.toString()
      emitObj.indexes = indicatorVal.toString()
      if(ReportVal == "custom"){
        emitObj.startDate = this.customTime[0];
        emitObj.endDate = this.customTime[1];
      }else{
        let timeObj = this.newDateFormat(
            ReportVal,
            new Date(emitObj.asis_time)
        );
        emitObj.startDate = timeObj.startTime;
        emitObj.endDate = timeObj.endTime;
      }
      this.$emit('reportTime', emitObj);
    },
    resetRefresh() {
      this.ReportVal = 'month'
      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>
/* @import url(../css/fixed_layout.css); */
.newTime{
  width: auto;
}
.times-box{
  height: 30px;
  line-height: 30px;
}
</style>