后台只返回编号,前端如何解析成对应的文字显示

2020-12-02 14:24:58 浏览数 (1)

页面效果

后台返回的数据类型

代码语言:javascript复制
'type': 'Bi,Ea',

需要做的处理

后台返回的不同的字符串编号,每个编号对应不同的文字描述,比如说 Bi 对应消息推送应用。前端需要对后台返回的字符串做识别判断

代码语言:javascript复制
 // template
 // 模板中不能直接遍历后台返回的type属性,而是绑定和遍历处理过后的 newType 属性
 <el-table-column prop="newType" label="应用类型" show-overflow-tooltip>
    <template slot-scope="scope">
       <span v-for="(item,index) in scope.row.newType" :key="index" class="app-type">{{ item.value }}</span>
    </template>
 </el-table-column>
 
 // ========================================================================
 // script
 data() {
    return {
      searchData: {
        appId: ''
      },
      tableData: [],
      appType: [{
        code: 'Bi',
        value: '消息推送应用'
      },
      {
        code: 'Pa',
        value: '公众号应用'
      },
      {
        code: 'Ga',
        value: '群发应用'
      },
      {
        code: 'Ea',
        value: '移动ehome应用'
      },
      {
        code: 'Ma',
        value: '调用ModuleAuthorityService接口应用'
      },
      {
        code: 'Ot',
        value: 'others其他应用'
      }]
    }
  },
  
    methods: {
    // 获取应用数据
    async getAppInfo() {
      const data = { ...this.searchData, ...this.page }
      const response = await getAppInfo(data || null)
      const { objRes } = response
      this.tableData = objRes.records    //赋值表格数据
      this.tableData.forEach(item1 => {  //遍历表格数据
        item1.newType = []    //给表格每一行添加一个新的数组属性。用于存放解析后的编码和对应文字
        const codeArr = item1.type.split(',') //把每一行的type属性通过split分解成一个数组 得到['Bi','Ea']
        codeArr.forEach(item2 => {         //遍历该数组
          this.appType.forEach(item3 => { //遍历前端定义的appType
            if (item2 === item3.code) {  // 如果 item2 的编号和 item3的code属性相等
              item1.newType.push({     //就把item2 的编号 和 item3的value 赋值给每一行的新增加item1属性
                code: item2,
                value: item3.value
              })
            }
          })
        })
      })
    }
  }

如果还有其他更好的方法,请路过的大佬们指点~

0 人点赞