elementui实现表格单选功能

简介: elementui实现表格单选功能


前言

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

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

实现方法

框架原来用的是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;
    },
   //跳转到充值页面
       this.$router.push({
         path: "/capital/invest"
       })
       return;
     }
     this.isPayDialog = true;
    },

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

目录
相关文章
|
7月前
layUI数据表格可编辑扩展下拉框
layUI数据表格可编辑扩展下拉框
|
18天前
|
JavaScript
vue中有关表格中的表格头中添加悬浮提示的ui问题
vue中有关表格中的表格头中添加悬浮提示的ui问题
24 1
|
18天前
|
前端开发 JavaScript 开发者
< elementUi 下拉选择框组件 树状部门选择( 多选/单选 )>
在前端开发中,为解决ElementUI缺少处理树状数据选择的Select组件问题,封装了一个Vue子组件`SelectTree`。组件支持单选和多选,具备搜索功能和懒加载特性。单选示例展示了如何展示树状部门数据,而多选则增加了已选内容的取消功能。此外,还新增了根据等级限制选择的功能。文章提供了详细的代码实现和效果截图,对需要此类组件的开发者具有参考价值。
< elementUi 下拉选择框组件 树状部门选择( 多选/单选 )>
|
18天前
element-ui实现表格单选的功能
element-ui实现表格单选的功能
17 0
|
18天前
|
前端开发
Element常用组件—表格、表单、对话框和分页工具条
Element常用组件—表格、表单、对话框和分页工具条
45 0
|
18天前
|
测试技术
【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)
【sgAutocomplete】自定义组件:基于elementUI的el-autocomplete组件开发的自动补全下拉框组件(带输入建议的自动补全输入框)
|
7月前
|
JavaScript
ElementUI下拉框选择后不显示值
ElementUI下拉框选择后不显示值
|
8月前
|
JavaScript
63EasyUI 表单 - 创建树形下拉框
63EasyUI 表单 - 创建树形下拉框
29 0
|
9月前
|
JavaScript
vue实现点击选择多选标签(整理)
vue实现点击选择多选标签(整理)