uview2.0 【uniapp】购物车样式

这篇具有很好参考价值的文章主要介绍了uview2.0 【uniapp】购物车样式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uview2.0 【uniapp】购物车样式,uni-app文章来源地址https://www.toymoban.com/news/detail-800226.html

<template>
	<view class="">
			<view class="goods-cart">
					<view class="bigbox">
						<u-swipe-action v-for="(item, index) in list" :key="index">
								<u-swipe-action-item :options="options" :show=item.show    @click.stop="dels(item,index)" >
							<view class="u-flex u-row-between u-p-x-28  u-p-y-30 "  >
								<view @click.stop="clickFun(item,index)">
									<image src="@/static/select1.png" mode="" v-if="item.checked" class="u-w-40 u-h-40"></image>
									<image src="@/static/select.png" mode="" v-else  class="u-w-40 u-h-40"></image>
								</view>
								<view class="" @click="goPage('/pagesA/goods/detail?id=' + item.id)">
									<image :src="item.image" mode="aspectFill"></image>
								</view>
								<view class="right ">
									<view class="u-line-1 title-sku">明星同款越野机能鞋子轻便舒适</view>
									<view class="title-sku u-f-s-24 u-color-666 ">黑色, 40</view>
									<view class="u-flex u-row-between ">
										<view class="u-f-s-28 u-color-EA0">{{ item.price | fixed }}</view>
										<view class="">
											<u-number-box
												v-model="item.num"
												:min="1"
												@blur="setCartNum(index,item.num)"
												@minus="setCartNum(index,item.num)"
												@plus="setCartNum(index,item.num)"
											></u-number-box>
										</view>
									</view>
								</view>
							</view>
							</u-swipe-action-item>
							<u-gap height="10" bg-color="#f8f8f8"></u-gap>
						</u-swipe-action>
					</view>
			</view>
	<view
		class="footer-bar u-flex u-row-between"
		v-if="list.length"
	>
		<view class=" u-m-t-10 u-flex">
			<label class="radio" @click="radioVal = !radioVal">
				<radio style="transform:scale(0.7)" color="#FF4B00FF" value="1" :checked="radioVal" />
				<text class="u-color-999">全选 ({{chooseNum}})</text>
			</label>
			<view class=" u-m-l-36 u-flex">
				<view class="u-color-333 u-f-s-26">合计:</view>
				<view class="u-f-s-32 u-m-l-20 u-m-r-7 u-color-EA0 u-fw-500">{{ totalPrice | fixed}}</view> 
			</view>
		</view>
		<view class="u-m-l-20 btn" 	@click="goSettle">立即下单
		</view>
	</view>
	</view>
</template>

<script>
	
	export default {
		components: {},
		data() {
			return {
				radioVal: false,
				cart_ids: [], //选中的
				/*
				checked:是否选中
				show:控制打开或者关闭(移除按钮)
				*/ 
				list: [
					{num:1,price:10,checked:false,image:require('@/static/uplodong.png'),id:1,show:false},
					{num:2,price:20,checked:false,image:require('@/static/uplodong.png'),id:2,show:false},
					{num:3,price:30,checked:false,image:require('@/static/uplodong.png'),id:3,show:false},
					{num:4,price:40,checked:false,image:require('@/static/uplodong.png'),id:4,show:false}
				],
				options: [
					{
						text: '移除',
						style: {
							backgroundColor: '#dd524d'
						}
					}
				],
			}
		},
		filters: {
		   // 过滤器处理价格
		   fixed(val) {
		     if (!val) return '0.00';
		     return Number(val).toFixed(2);
		   }
		},
		computed: {
			// 合计总价:
			totalPrice() {
				let that = this;
				let num = 0;
				let amount = this.list.reduce(function(total, item) {
					if (item.checked) {
						num++;
						return total + parseInt(item.num) * parseFloat(item.price);
					} else {
						return total;
					}
				}, 0);
				return amount.toFixed(2);
			},
			// 已选:
			chooseNum(){
				let that = this;
				let num = 0;
				for (let i = 0; i < this.list.length; i++) {
					if(this.list[i].checked){
						num++;
					}
				}
				return num;
			}
		},
		watch: {
			radioVal(newValue, oldValue) {
				//全选状态,数据未全选
				if (newValue && this.cart_ids.length != this.list.length) {
					let arr = [];
					this.list.forEach((item, index) => {
						arr.push(item.id);
						this.$set(this.list[index],"checked", true);
					});
					this.cart_ids = arr;
				} else if (!newValue && this.cart_ids.length == this.list.length) {
					this.list.forEach((item, index) => {
						this.$set(this.list[index],"checked", false);
					});
					this.cart_ids = [];
				}
			},
		},
		onShow() {
			this.getCartIndex();
		},
		onLoad(option) {},
		methods:{
			// 获取购物车列表
			getCartIndex() {
				
			},
			// 步进器
			setCartNum(i,num) {
					this.$set(this.list[i], 'num', this.list[i].num);
					//未选中默认选中
					if (!this.list[i].checked) {
						this.cart_ids.push(this.list[i].id);
						this.radioVal = this.cart_ids.length == this.list.length;
						this.$set(this.list[i], 'checked', true);
					}
			},
			// 选中切换
			clickFun(item){
				item.checked = !item.checked;
				let num = 0;
				let arr = [];
				this.list.forEach(itemdata => {
						if(itemdata.checked){
							num++;
							arr.push(itemdata);
						}
				});
				this.cart_ids = arr;
				this.radioVal = num == this.list.length;
			},
			//删除购物车 
			dels(item,i) {
				console.log(item,i,'删除购物车');
				item.show = false;
				this.list.splice(i, 1);
			},
			// 立即下单
			goSettle() {
				let setBool = false;
				this.list.forEach(item => {
						if(item.checked){
							setBool = true;
						}
				});
				if(!setBool){
					this.$u.toast('请选择结算商品');
					return;
				}
			}
		},
	}
</script>
<style lang='scss'>
	page{
		background: #f8f8f8;
	}
</style>
<style lang='scss' scoped>
	.u-flex{
		display: flex;
		align-items: center;
	}
	.u-row-between{
		justify-content: space-between;
	}
	.footer-bar {
		position: fixed;
		left: 0;
		bottom: 0;
		width: 100%;
		height: 120rpx;
		background-color: #ffffff;
		padding: 0 20rpx;
		z-index: 9999;
		box-sizing: border-box;
	}

	.bigbox{
		width: 750rpx;
		border-radius: 10rpx;
	}
	.goods-cart {
		padding-bottom: 200rpx;
		image {
			width: 180rpx;
			height: 180rpx;
			border-radius: 10rpx;
		}
		.right {
			box-sizing: border-box;
			padding: 0 15rpx;
			display: flex;
			flex-direction: column;
			justify-content: space-around;
			height: 180rpx;
			.title-sku {
				width: 420rpx;
			}
		}
	}
	.page-box {
		.loading {
			padding-top: 30vh;
		}
	}
	.btn {
		width: 240rpx;
		height: 80rpx;
		border-radius: 40rpx;
		line-height: 80rpx;
		text-align: center;
		color: #FFF;
		background: linear-gradient(270deg, #FF5400FF 0%, #FF8E56FF 100%);

		font-size: 32rpx;
		font-weight: 500;
	}

</style>

到了这里,关于uview2.0 【uniapp】购物车样式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【uniapp 开发小程序】购物车功能,实现全选、反选、单选、计算总价

    uniapp 开发小程序,实现购物车功能,实现全选、反选、单选、计算总价 关键代码: return totalPrice.toFixed(2); // 保留两位小数 否则会出现多位小数现象:

    2024年02月11日
    浏览(25)
  • Vue项目商品购物车前端本地缓存逻辑(适用H5/ipad/PC端)——前端实现购物车删除商品、购物车增减数量,清空购物车功能

    Vue3 + Vite + Ts开源后台管理系统模板 基于ElementUi或AntdUI再次封装基础组件文档 基于Element-plus再次封装基础组件文档(vue3+ts)

    2024年02月12日
    浏览(40)
  • uni-app 使用 Uview2.x 搭建自定义tabbar组件,自定义navbar,还会解决自定义导航栏引起闪烁性能差的问题!!!

    pages.json  上面可以看到tabbar我使用的原生的,但是值配置了pagepath,并且page里三个首页都可以自定义顶部导航栏,当然如果删掉custom那一行代码,就切换成原生顶部导航栏了。 下面拿一个首页作为代码演示:(顶部自定义导航栏组件和底部导航栏组件会放在最后) 下图组件

    2023年04月09日
    浏览(70)
  • Android商城开发----点击加入购物车,购物车商品的增删减

    上一章节:【分类页面】点击左侧类别,实现右侧对应类别商品的展示 本文是在上一章节基础上开发的,点击【分类】页面商品的加入购物车按钮,实现将商品加入购物车的功能。 本文主要实现的功能是: 1.点击加入购物车按钮,将商品加入购物车。 2.点击相同的商品加入

    2024年02月03日
    浏览(51)
  • JavaWeb购物系统(五)购物车模块的实现

    未添加商品效果图 添加商品之后的效果图 添加商品 购物车中商品的数量增加、减少、通过键盘输入改变数量 清空购物车 计算购物车商品的总价格 我们的购物车采用的是在服务端,即:使用session来存储。这样做的 缺点 :无法永久存储,当服务端关闭的时候,会销毁。 优点

    2024年02月07日
    浏览(33)
  • JavaWeb购物系统(六)购物车订单模块的实现

    有订单时的效果图 无订单时的效果图 订单详情页 生成订单 订单页的展示 查看订单详情 和购物车同样的,首先得知道我们的订单对应的哪个实体对象。一个用户可能有多条订单记录,一个订单里边可以包含多个 商品(也可以理解为多个购物项) 。理清这个逻辑之后,我们

    2024年02月05日
    浏览(42)
  • Android -- 购物车

    购物车功能描述         第一次进入购物车页面,购物车里面是空的,同时提示去逛手机商场, 如 首次进入的页面 图所示。接着去商场页面选购手机,随便挑了几部手机加入购物车,再返回购物车页面,即可看 到购物车的商品列表,如 购物车已选列表图 所示,有商品

    2023年04月08日
    浏览(27)
  • Vue项目(购物车)

    目录 购物车效果展示: 购物车代码: 购物车效果展示: 此项目添加、修改、删除数据的地方都写了浏览器都会把它存储起来 下次运行项目时会把浏览器数据拿出来并在页面展示 Video_20230816145047 购物车代码: 复制完代码,需改下script中引入的vue文件地址; 可直接使用

    2024年02月12日
    浏览(29)
  • 14-案例:购物车

    需求说明:         1. 渲染功能                 v-if/v-else v-for :class         2. 删除功能                 点击传参 filter 过滤覆盖原数组         3. 修改个数                 点击传参 find 找对象         4. 全选反选                 计算属性 computed 完整写法 get/

    2024年02月12日
    浏览(38)
  • js实现购物车

    ### 嘎嘎原生,看就完了 ### # # html部分 ### css部分 ### js部分

    2024年01月21日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包