vue 业务页面状态展示的优化

背景说明

在后台管理项目中,一些业务Table页面需要对状态进行展示。在初学前端时,常使用的方式就是三元表达式或者if-else进行展示,但是对于状态值较多或者全局使用时,三元表达式和if-else的使用就不够简洁和不便维护了。

优化前的写法

三元表达式:

// Table 状态展示
 <el-table>
    ...
 	<template #default="scope">
 	  <span>{{scope.row === 1?'待确认':scope.row === 2?'已确认':'已完成'}}</span>
   </template>
 </el-table>

if-else:不同状态展示不同颜色

// Table 状态展示
 <el-table>
    ...
 	<template #default="scope">
 	  <span v-if="scope.row === 1" class="color-red">待确认</span>
 	  <span v-if="scope.row === 2" class="color-blue">已确认</span>
 	  <span v-else class="color-green"已完成</span>
   </template>
 </el-table>

优化后的写法

对上述的两种方式其实可以进行做一个管理,简化代码并且方便维护。单页面使用的状态就写在当前页面即可,全局需要使用的可以新建一个文件用来管理。

  1. 在你的方法文件夹里新建一个getStatus.js
export function getStatus(val) {
  const map = { 1: ['danger', '待确认'],  2: ['primary', '已确认'], 3: ['success', '已完成'] }
  return map[val]
  // 当val值为负数时,需要加上'',写成字符串的格式,否则会报错!
}
  1. 在main.js全局注册(单页面使用忽略此步骤)
import {getStatus} from '@/utils/getStatus'
Vue.prototype.getStatus= getStatus
  1. 页面使用
// Table 状态展示
 <el-table>
    ...
 	<template #default="scope">
 	  <el-text :type="getStatus(scope.row.status)[0]">{{getStatus(scope.row.status)[1]}}</el-text>
   </template>
 </el-table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值