element el-transfer自定义穿梭框的数据项

自定义穿梭框数据项最终样式如下:

 前端代码:

        通过判断该选项是否在被选数据中来决定是否在数据后显示授权类型,显示是在v-if="formate(option)"决定。两种授权类型点击切换是直接因为transferValue只是存储选中的数据key组成的数组,所以在提交的时候需要循环遍历一下transferData,获取每个用户的信息、授权类型等。

          <el-transfer
            v-model="transferValue"
            :data="transferData"
            :titles="['用户信息', '授权用户']"
            :filterable="true"
          >
            <div slot-scope="{ option }">
              <span class="label-style">
                {{ option.authName }}
              </span>
              <div style="float: right" v-if="formate(option)">
                <el-radio
                  v-model="option.authType"
                  @click="authChange(option, '1')"
                  label="1"
                >
                  仅查看
                </el-radio>
                <el-radio
                  v-model="option.authType"
                  @click="authChange(option, '2')"
                  label="2"
                >
                  可编辑
                </el-radio>
              </div>
            </div>
          </el-transfer>
    /** 格式化 */
    private formate(data) {
        let dataFlag = false
        //如果被选择 则显示两种授权类型
        this.transferValue.filter(function (row) {
            if (row == data.key) {
                dataFlag = true
            }
        })
        return dataFlag;
    }

    //打印当前操作
    private authChange(data, value) {
        console.log(data, value)
    }

数据获取:

        let dataList = []
        if (this.transferValue.length > 0) {
            for (let i = 0; i < this.transferValue.length; i++) {
                let data = this.transferValue[i]
                let res = (this.transferData as any).filter(item => item.authCode === data);
                console.log(res)
                if (!!res && res.length > 0) {
                    dataList.push({
                        authCode: data,
                        authType: res[0].authType
                    })
                }
            }
        }

数据格式:

随便造点数据 index = 0;i++;
                    {
                        'key': i,
                        'label': '选项' + i,
                        'authCode': i,
                        'authName': '选项' + i,
                        'authType': '1',
                    }

css样式:

.label-style {
  width: calc(100% - 149px);
  float: left;
  //文字超出部分显示省略号
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
/deep/.el-radio {
  margin-right: 8px;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值