elementui checkbox使用 以及结合后台 回显

7 篇文章 1 订阅
7 篇文章 0 订阅

页面:
在这里插入图片描述
前端:

  <el-col :span="24">
            <el-form-item label="办公环境" prop="officeEnvironment">
              <el-checkbox-group v-model="form.officeEnvironment">
                <el-checkbox v-for="(item,index) in officeEnvironmentList " :key="item.dictValue" :label="item.dictValue">
                  {{ item.dictLabel }}
                </el-checkbox>
              </el-checkbox-group>
            </el-form-item>
  </el-col>

数据结构:

  form: {
        officeEnvironment: [],
      }

参数类型:将数组转为字符串,后台用string类型接受

  editSubmit(form) {
      const data = JSON.parse(JSON.stringify(this.form))
    //  将数组转换为string类型的字符串保存到后台,用逗号分割
      data.officeEnvironment = data.officeEnvironment.toString()
      this.$refs[form].validate((valid) => {
        if (valid) {
          updateOrganizationInfo(data).then(resp => {
            if (resp.code === 200) {
              this.msgSuccess('修改成功')
              this.getList()
              this.dialogEditVisible = false
            }
          }).catch(() => {
          })
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }

这里选择的是餐饮和住宿,对用的数字就是1,2
在这里插入图片描述

后台:
控制层:
在这里插入图片描述
vo:该字段使用string类型
在这里插入图片描述
数据库中:
在这里插入图片描述

这样保存到库里面的就是用逗号分割开的字符串,前端回显时指需要用逗号分割就好

前端回显:

 /** 编辑按钮操作 */
    handleEdit(row) {
      this.form.deptName = row.deptName
      this.form.id = row.id
      // 查询
      selectOrganizationInfoInfo(this.form.id).then(resp => {
        if (resp.code === 200) {
          this.form = resp.data
          this.form.isEvection = resp.data.isEvection != null ? resp.data.isEvection.toString() : ''
          this.form.isDifferentRecruitment = resp.data.isDifferentRecruitment != null ? resp.data.isDifferentRecruitment.toString() : ''
          // 判断是否为空 ,不是则用split分割开
          this.form.officeEnvironment = resp.data.officeEnvironment != null ? resp.data.officeEnvironment.split(',') : []
          this.dialogEditVisible = true
        }
      })
    },

回显效果:
在这里插入图片描述
再看table表格的回显:
在这里插入图片描述
因为客户要求显示的时候用逗号分割,所以我写了一个方法

  <el-table-column
                prop="officeEnvironment"
                label="办公环境"
                width="250"
              >
                <template slot-scope="props">
                  <span> {{ props.row.officeEnvironment ==null ?'--': officeEnvironmentTable(props.row) }}</span>
                </template>
              </el-table-column>

在methods中调用这个方法:

methosd:{jofficeEnvironmentTable(row) {
 // 1先分割,将string字符串转换为数组,
 //2 遍历办公环境字典数据
 // 3 判断字典值的value是否与data中的数值相等,若相等则加到value中
 //4遍历完 value中就是所有value对应的中文,然后用substr方法将首位逗号截取
 //5 返回value
      const data = row.officeEnvironment.split(',')
      var value = ''
      for (let i = 0; i < this.officeEnvironmentList.length; i++) {
        debugger
        for (var z = 0; z < data.length; z++) {
          if (this.officeEnvironmentList[i].dictValue === data[z]) {
            value += this.officeEnvironmentList[i].dictLabel + ','
          }
        }
      }
      return value.substr(0, value.length - 1)
    }
  }

描述有误的地方欢迎大家指正,大家有问题可加qq 876942434。一起进步~

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值