2021-03-25

<template>
  <div>
    <template v-for="(seriesValue, seriesKey) in queryParam">
      <a-row class="row-class">
        <!--领域-businessArea-->
        <a-col :span="2" class="left-msg">业务领域:</a-col>
        <a-col :span="2">
          <a-select v-model="seriesValue['businessArea']" class="select-width">
            <a-select-option :value="businessAreaItem.value"
                             v-for="(businessAreaItem, businessAreaIndex) in queryParamModule" :key="businessAreaIndex">
              {{ businessAreaItem.name }}
            </a-select-option>
          </a-select>
        </a-col>
        <!--主题-topic-->
        <template v-if="seriesValue['businessArea']">
          <a-col :span="1" class="left-msg">主题:</a-col>
          <a-col :span="2">
            <a-select v-model="seriesValue['topic']" class="select-width">
              <a-select-option :value="topicItem.value"
                               v-for="(topicItem, topicIndex) in forTopic(seriesKey)"
                               :key="topicIndex">
                {{ topicItem.name }}
              </a-select-option>
            </a-select>
          </a-col>
        </template>
        <!-- 维度-xType -->
        <template v-if="seriesValue['topic']">
          <a-col :span="1" class="left-msg">维度:</a-col>
          <a-col :span="2">
            <a-select v-model="seriesValue['xType']" class="select-width">
              <a-select-option :value="xTypeItem.value"
                               v-for="(xTypeItem, xTypeIndex) in forXType(seriesKey)"
                               :key="xTypeIndex">
                {{ xTypeItem.name }}
              </a-select-option>
            </a-select>
          </a-col>
        </template>
        <!-- 指标-target -->
        <template v-if="seriesValue['topic']">
          <a-col :span="1" class="left-msg">指标:</a-col>
          <a-col :span="2">
            <a-select v-model="seriesValue['target']" class="select-width">
              <a-select-option :value="targetItem.value"
                               v-for="(targetItem, targetIndex) in forTarget(seriesKey)"
                               :key="targetIndex">
                {{ targetItem.name }}
              </a-select-option>
            </a-select>
          </a-col>
        </template>
      </a-row>
    </template>

    <a-row class="row-class">
      <a-col :span="2" class="left-msg">图表:</a-col>
      <a-col :span="22">
        <a-radio-group v-model="chart">
          <a-radio :value="index" v-for="(item, index) in { 'a' : '线性图', 'b' : '柱状图','c':'条形图','d':'饼图'}" :key="index">
            {{ item }}
          </a-radio>
        </a-radio-group>
      </a-col>
    </a-row>

    <a-row>
      <a-col :span="22">
      </a-col>
      <a-col :span="2">
        <a-button type="primary" @click="onSubmit">统计</a-button>
      </a-col>
    </a-row>

  </div>
</template>

<script>
export default {
  name: 'headTab',
  watch: {},
  created () {

    Object.keys(this.queryParam).forEach(item => {

      this.watchCallBack.push(this.$watch(`queryParam.${item}.businessArea`, function (v) {
        if (v) {
          this.$set(this.queryParam[item], 'topic', undefined)
          this.$set(this.queryParam[item], 'xType', undefined)
          this.$set(this.queryParam[item], 'target', undefined)
        }
      }, { deep: true, immediate: true }));
      this.watchCallBack.push(this.$watch(`queryParam.${item}.topic`, function (v) {
        if (v) {
          this.$set(this.queryParam[item], 'xType', undefined)
          this.$set(this.queryParam[item], 'target', undefined)
        }
      }, { deep: true, immediate: true }));

    })

  },
  computed: {
    forTopic () {
      return (series) => {
        return this.queryParamModule[this.queryParam[series]['businessArea'] - 1]['topic']
      }
    },
    forXType () {
      return (series) => {
        return this.queryParamModule[this.queryParam[series]['businessArea'] - 1]['topic'][this.queryParam[series]['topic'] - 1]['xType']
      }
    },
    forTarget () {
      return (series) => {
        return this.queryParamModule[this.queryParam[series]['businessArea'] - 1]['topic'][this.queryParam[series]['topic'] - 1]['target']
      }
    }
  },
  data () {
    return {
      watchCallBack: [],
      queryParamModule: [
        /*
          用户领域-businessArea-1
          主题-topic    维度-xType    指标-target
          平台访问-1      日期-1        访问人数-1
                      月份-2        注册人数-2
                      溯源人数-3
                      抽奖人数-4
                      阅读人数-5

          会员分布-2      省份-1        会员人数-1
                      产品-2
                      农作物-3
         */
        {
          'name': '用户领域',
          'value': '1',
          'topic': [
            {
              'name': '平台访问',
              'value': '1',
              'xType': [
                { 'name': '日期', 'value': '1' },
                { 'name': '月份', 'value': '2' },
                { 'name': '溯源人数', 'value': '3' },
                { 'name': '抽奖人数', 'value': '4' },
                { 'name': '阅读人数', 'value': '5' }
              ],
              'target': [
                { 'name': '访问人数', 'value': '1' },
                { 'name': '注册人数', 'value': '2' }
              ]
            },
            {
              'name': '会员分布',
              'value': '2',
              'xType': [
                { 'name': '省份', 'value': '1' },
                { 'name': '产品', 'value': '2' },
                { 'name': '农作物', 'value': '3' }
              ],
              'target': [
                { 'name': '会员人数', 'value': '1' }
              ]
            }
          ]
        }
        /*
        渠道领域-businessArea-2
        主题-topic    维度-xType    指标-target
        渠道分析-1  省份-1    门店数量-1


        溯源分析-2  日期-1    溯源次数-1
          月份-2
          产品-3
          经销商-4
          产品分类-5
         */
      ],
      chart: '',
      queryParam: {
        data1Request: {
          businessArea: undefined,
          topic: undefined,
          xType: undefined,
          target: undefined
        },
        data2Request: {
          businessArea: undefined,
          topic: undefined,
          xType: undefined,
          target: undefined
        }
      }
    }
  },
  methods: {

    onSubmit () {
      let series = ['businessArea', 'topic', 'xType', 'target']
      let pass1 = series.every(value => {
        return this.queryParam.data1Request[value] != undefined
      })
      if (!pass1) {
        this.$message.info('请选择完整')
        return false
      }
      this.$emit('onSubmit', this.queryParam)
    }
  },
  beforeDestroy () {
    this.watchCallBack.forEach(item => item());
  }
}
</script>

<style scoped>
.left-msg {
  color: #000;
  text-align: right;
  padding-right: 10px;
}

.row-class {
  min-height: 32px;
  margin: 8px 0;
  display: flex;
  align-items: center;
}

.select-width {
  width: 140px;
}
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351