element-ui实现表格单选的功能

简介: element-ui实现表格单选的功能


前言

现在是:2022年4月20日13:33:23

需求是这样的:用户单击购买产品的按钮时,会出现一个产品的列表,但是呢只能买一种产品,暂时不可以多选。效果如下所示:

原来做的是,单击前面的单选按钮,后面的数量表单放开禁用,可以选择和填写;现在需要改成,直接点击某一行,则改行自动选中,当然数量表单也放开可供用户直接输入和填写。

实现方法

框架原来用的是avue写的,这个框架,确实好用,可以提高开发效率,很少的代码实现很多的功能,但这也是个缺点,代码是少了,实现的功能也确实多,不过你要单个实现某个子功能?那可真的是太难为了……

avue也有表格的单选功能,还有例子呢,只是我加上之后没有效果。。。不知道是我代码的问题还是官方已经不支持了,不想在去研究了,直接换成了element ui去实现了。

html代码:

<div style="margin:-20px 20px 20px 0;line-height: 40px;float: right">
        <span style="font-size: 18px;color:#303133">当前余额:</span>
        <span style="font-size: 18px;color:#F56C6C">¥{{currentBalance}}</span>
      </div>
  <el-table
        ref="cruds"
        :query="query"
        :data="cardData"
        highlight-current-row
        @row-click="cardRowClick"
        @current-change="handleCurrentChange"
      >
          <el-table-column label="选择" width="80">
            <template slot-scope="{ row }">
              <el-radio :label="row.code" v-model="cardForm.code" @change="cardRadionChange(row)"><span></span></el-radio>
            </template>
          </el-table-column>
          <el-table-column label="类型" align="center" prop="typeName" />
          <el-table-column label="名称" align="center" prop="name" />
          <el-table-column label="单价(元)" align="center" prop="price" />
          <el-table-column label="数量" align="center">
                <template slot-scope="{ row }">
                  <el-input-number
                    :disabled="checked != row.code"
                    size="small"
                    v-model="row.num"
                    :value="0"
                    :min="0"
                    @change="cardNumberChange(row)"
                  ></el-input-number>
                </template>
              </el-table-column>
          <el-table-column label="总价" align="center">
              <template slot-scope="{ row }">
                {{ row.num * row.price }}
              </template>
            </el-table-column>
      </el-table>
      <span slot="footer" class="dialog-footer avue-dialog__footer">
        <el-button @click="sailCardDialog = false">取 消</el-button>
        <el-button type="primary" @click="getSailCards" v-loading="buyLoading">
          申 购
        </el-button>
      </span>

data中的变量:

/*当前用户的余额*/
      currentBalance:0.00,
      cardData: [],
       //单选是否选中
      checked: null,
      /*服务卡的表单*/
      cardForm:{
        cardid:0,
        typeName:'',
        name:'',
        price:'',
        num:1,
        totalPrice:0,
        code:'',
        days:'',
      },

methods中的方法:

/*商品列表,行的单击事件*/
    cardRowClick(row){
      this.cardForm.code = row.code;
      this.checked = row.code;
    },
     /*数量的改变事件*/
    cardNumberChange(row){
      this.cardForm.code = row.code;
      this.cardForm.name = row.name;
      this.cardForm.price = row.price;
      this.cardForm.days = row.days;
      this.cardForm.typeName = row.typeName;
      this.cardForm.totalPrice = row.price * row.num;
      this.cardForm.num = row.num;
    },
    /*单选按钮的改变事件*/
    cardRadionChange(row) {
      this.checked = row.code;
    },
    //申请购买的按钮(点击之后验出来商品的列表框)
    getSailCard(row) {
      this.cardForm = {};
      this.checked = null;
      this.payorderList = row;
      this.loadCardList(this.page);
      this.sailCardDialog = true;
      //获取当前用户余额
      getMyBalance().then((res) => {
        this.currentBalance = res.data.balance;
      });
    },
    //去购买的操作
    getSailCards() {
     if (this.cardForm.num == undefined || this.cardForm.num == 0) {
        this.$message({
          message: "请填写购买数量",
          type: "warning",
        });
        return;
      }
     //如果余额不足
     if(this.currentBalance<this.cardForm.totalPrice){
       this.$message({
         message: "当前余额不足,请及时重制~",
         type: "warning",
       });
       //跳转到充值页面
       this.$router.push({
         path: "/capital/invest"
       })
       return;
     }
     this.isPayDialog = true;
    },

以上就是所有的代码……实现起来也不是很难~

目录
打赏
0
0
0
0
57
分享
相关文章
element-ui table表格多选后再打开默认选中
element-ui table表格多选后再打开默认选中
推荐7款美观且功能强大的WPF UI库
推荐7款美观且功能强大的WPF UI库
350 2
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
108 1
|
7月前
|
H-ui JQuery 给单选按纽赋值不生效
H-ui JQuery 给单选按纽赋值不生效
52 0
H-ui JQuery 给单选按纽赋值不生效
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
206 1
Element UI & Element Plus之改变表格单元格颜色
这篇文章展示了如何在Element UI和Element Plus框架中使用`:cell-style`属性来根据条件改变表格单元格的颜色。
587 0
Element UI & Element Plus之改变表格单元格颜色
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!
小功能⭐️不用传参,Unity获得鼠标悬浮处的物体、UI!

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    12
  • 2
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    11
  • 3
    Magma:微软放大招!新型多模态AI能看懂视频+浏览网页+UI交互+控制机器人,数字世界到物理现实无缝衔接
    41
  • 4
    移动端UI名词 - AxureMost
    3
  • 5
    unity判断鼠标在不在UI上
    18
  • 6
    【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    9
  • 7
    Vue Amazing UI 组件库(Vue3+TypeScript+Vite 等最新技术栈开发)
    10
  • 8
    FirstUI:Deepseek能帮我们做很多事情,而这款开源框架专为开发者设计的开源UI框架,让你的项目加速起飞
    32
  • 9
    WEB CAD插件通过上下文对象MxPluginContext修改UI界面的方法
    18
  • 10
    合理使用CSS框架,加速UI设计进程
    716
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等