elementui实现表格单选功能
【摘要】 大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言需求是这样的:用户单击购买产品的按钮时,会出现一个产品的列表,但是呢只能买一种产品,暂时不可以多选。效果如下所示:原来做的是,单击前面的单选按钮,后面的数量表单放开禁用,可以选择和填写;现在需要改成,直接点击某一行,则改行自动选中,当然数量表单也放开可供用户直接输入和填写。 实现方法框架原来用的是avue写的,这个框架,确实好用,可以提...
大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂
前言
需求是这样的:用户单击购买产品的按钮时,会出现一个产品的列表,但是呢只能买一种产品,暂时不可以多选。效果如下所示:
原来做的是,单击前面的单选按钮,后面的数量表单放开禁用,可以选择和填写;现在需要改成,直接点击某一行,则改行自动选中,当然数量表单也放开可供用户直接输入和填写。
实现方法
框架原来用的是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;
},
以上就是所有的代码……实现起来也不是很难~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)