vue 根据select的下拉框选中数据,请求时多个分别展示不同的表格结构动态 渲染

需要展示的4种表格结构

 4种表格形态:年度 半年度 季度 月度数据展示

结构:

 <el-table :border="true" key="table1" :data="tableList">
        <el-table-column
          v-if="deptShow"
          prop="deptName"
          align="center"
          label="部门"
          width="140"
        />
        <el-table-column
          v-if="costCentShow"
          prop="costCenterName"
          align="center"
          label="成本中心"
          width="140"
        />
        <el-table-column
          v-if="projecShow"
          prop="projectName"
          align="center"
          label="项目"
          width="140"
        />
        <el-table-column
          align="center"
          :label="handelLabel(index)"
          v-for="(item, index) in cellLen"
          :key="index"
          min-width="200"
        >
          <el-table-column
            align="center"
            label="预算/冻结/消费/可用"
            min-width="200"
          >
            <template #default="scope">
              <span>{{ scope.row.infoList[index].budgetPrice || 0 }}</span
              >/<span style="color:red">{{
                scope.row.infoList[index].freezePrice || 0
              }}</span
              >/<span style="color:blue">{{
                scope.row.infoList[index].executedPrice || 0
              }}</span
              >/<span style="color:green">{{
                scope.row.infoList[index].availablePrice || 0
              }}</span>
            </template>
          </el-table-column>
        </el-table-column>
        <el-table-column align="center" label="合计" width="240">
          <el-table-column
            align="center"
            label="预算/冻结/消费/可用"
            width="240"
          >
            <template #default="scope">
              <span>{{ scope.row.budgetPrice }}</span
              >/<span style="color:red">{{ scope.row.freezePrice }}</span
              >/<span style="color:blue">{{ scope.row.executedPrice }}</span
              >/<span style="color:green">{{ scope.row.availablePrice }}</span>
            </template>
          </el-table-column>
        </el-table-column>
      </el-table>

计算属性里面:

 computed: {
    cellLen() {
      if (this.tableShow === "1") {
        return new Array(1).fill(1);
      } else if (this.tableShow === "2") {
        return new Array(2).fill(1);
      } else if (this.tableShow === "3") {
        return new Array(4).fill(1);
      } else {
        return new Array(12).fill(1);
      }
    }
  },

方法里面:

  handelLabel(index) {
      if (this.tableShow === "1") {
        return `${this.currentYear}年`;
      } else if (this.tableShow === "2") {
        return `${this.currentYear}年${index === 0 ? "上" : "下"}半年`;
      } else if (this.tableShow === "3") {
        return `${this.currentYear}年第${
          index === 0 ? "一" : index === 1 ? "二" : index === 2 ? "三" : "四"
        }季度`;
      } else {
        return `${this.currentYear}-${
          index + 1 > 9 ? index + 1 : "0" + (index + 1)
        }`;
      }
    },

tips:  结构循环的 cellLen 在计算属性中发生变化,那么结构会随之而变化,进而触发方法:handelLabel)

最终效果图:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue,当使用v-model动态渲染select下拉框,可能会遇到下拉框显示为空白的问题。这是因为select标签必须要有一个值才能正常显示,而默认情况下v-model绑定的变量是没有值的。因此,需要给v-model绑定的变量赋一个初始值,例如将select的初始值设置为空字符串。\[2\] 另外,还有两种解决方法可以解决这个问题。第一种方法是使用Vue的$set方法来为动态新增的属性赋值。在change事件,可以使用this.$set来为inquire对象的selectData属性赋值,这样可以实现select下拉框选择后赋值成功并显示选中的值。\[3\] 第二种方法是使用forceUpdate方法来强制刷新render函数。如果下拉框数据是从其他接口获取的,并且数据层次较深,render函数可能无法自动更新,需要手动强制刷新。在select的change事件,可以加上this.$forceUpdate()来强制刷新,这样就可以解决选中值不显示的问题。需要注意的是,forceUpdate只会影响实例本身和插入插槽的组件,而不是所有组件。\[3\] 综上所述,解决Vue隐藏select下拉框的问题可以通过给v-model绑定的变量赋初始值,使用$set方法为动态新增的属性赋值,或者使用forceUpdate方法强制刷新render函数。 #### 引用[.reference_title] - *1* *2* [(详解)Vue设置select下拉框的默认选项(解决select空白的bug)](https://blog.csdn.net/Andye11/article/details/126933085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vueel-select下拉框 选择后赋值成功 但是下拉选框上不显示选中的值的解决办法](https://blog.csdn.net/weixin_44900104/article/details/126348729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值