商城小程序(8.购物车页面)

这篇具有很好参考价值的文章主要介绍了商城小程序(8.购物车页面)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、商品列表区域

本章主要完成pages下的cart购物页面编写
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

1、渲染购物车商品列表的标题区域

定义如下UI结构

<template>
	<view>
		<!-- 商品列表的标题区域 -->
		<view class="cart-title">
			<!-- 左侧的图标 -->
			<uni-icons type="shop" size="18"></uni-icons>
			<!-- 右侧的文本 -->
			<text class="cart-title-text">购物车</text>
		</view>
	</view>
</template>

美化样式

<style lang="scss">
	.cart-title {
		height: 40px;
		display: flex;
		align-items: center;
		padding-left: 5px;
		border-bottom: 1px solid #EFEFEF;
		
		.cart-title-text {
			font-size: 14px;
			margin-left: 10px;
		}
	}
</style>

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

2、渲染商品列表区域的基本结构

通过 mapState 辅助函数,将Store中的cart数组映射到当前页面中使用:

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

在UI结构中,通过v-for渲染自定义组件my-goods

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

3、为my-goods组件封装radio勾选状态

打开my-goods.vue组件,为商品左侧图片区域添加radio足迹

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

并美化UI ,使radio组件和image组件左右布局
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
使用v-if控制radio组件的按需展示

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

修改cart.vue中的商品列表区域,给showRadio赋值true展示勾选框

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
动态绑定勾选框的选择值
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

购物车页面有勾选
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
而商品列表页面就没有了
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

4、为my-goods组件封装radio-change事件

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

5、修改购物车中商品的选择状态

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
导入mapMutations这个辅助函数,从而将需要的mutations方法映射到当前页面中
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

每次点击勾选状态就能随时跟新,并且重新编译,保存上次的状态实现持久化

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

6、为my-goods组件封装NumberBox

修改my-goods.vue组件的源代码,在goods-info-box的view组件内部渲染Numberbox组件的基本内容,并绑定商品数量

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

美化样式

		.goods-item-right{
			display: flex;
			flex: 1;
			flex-direction: column;
			justify-content: space-between;
			.goods-name{
				font-size: 13px;
			}
			.goods-info-box{
				display: flex;
				justify-content: space-between;
				align-items: center;
				.goods-price{
					color: #C00000;
					font-size: 16px;
				}
			}
		}

控制numberbox的按需展示
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
my-goods页面用v-if绑定是否显示 默认为false不显示
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
在cart页面将shownum值赋值true展示num框
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商品列表页面就没有数字选择框
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

7、为my-goods封装num-change事件

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

最后在my-goods.vue组件的methods节点中,定义numChangeHandler事件处理函数:

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

8、修改购物车商品数量

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
现在通过numbox修改商品数量,刷新页面后同样持久化存储
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

9、渲染滑动删除的UI效果

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

10、实现滑动删除的功能

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

我们把没有图片展示的商品都删除(这是之前我自己写的一个小bug,在goods-detail页面中,加入购物车功能持久化保存商品中的goods_small_logo拼写错了,之前写的samll所以添加的商品都没图片)
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
现在展示删除功能
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

二、收货地址区域

右键components,新建我们的收货地址组件

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

1、渲染收货地址组件

定义基本UI结构

<template>
	<view>
		<!-- 选择收货地址的盒子 -->
		<view class="address-choose-box">
			<button type="primary" size="mini" class="btnChooseAddress">请选择收货地址</button>
		</view>
		<!-- 渲染收货信息的盒子 -->
		<view class="address-info-box">
			<view class="row1">
				<view class="row1-left">
					<view class="username">收货人: kirito</view>
				</view>
				<view class="row1-right">
					<view class="phone">电话:1586xxxxxx</view>
					<uni-icons type="arrowright" size="16"></uni-icons>
				</view>
			</view>
			<view class="row2">
				<view class="row2-left">收货地址: </view>
				<view class="row2-right">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</view>
			</view>
		</view>
		<!-- 底部的边框线 -->
		<image src="/static/gouwuchehenjiemian.png" class="address-border"></image>
	</view>
</template>

美化

<style lang="scss">
	.address-border {
		display: block;
		width: 100%;
		height: 5px;
	}

	.address-choose-box {
		height: 90px;
		display: flex;
		justify-content: center;
		align-items: center;
	}
	
	.address-info-box {
		font-size: 12px;
		height: 90px;
		display: flex;
		flex-direction: column;
		justify-content: center;
		padding: 0 5px;
		.row1 {
			display: flex;
			justify-content: space-between;
			
			.row1-left {
				.username {
					
				}
			}
			
			.row1-right {
				display: flex;
				justify-content: space-between;
				
				.phone {
					
				}
			}
		}
		
		.row2 {
			display: flex;
			justify-content: space-between;
			align-items: center;
			margin-top: 10px;
			
			.row2-left {
				white-space: nowrap;
			}
			.row2-right {
				
			}
		}
	}
</style>

在cart购物车页面,引用收货地址组件
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

2、实现收货地址区域的按需展示

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
address为空时,只展示一个选择收货地址
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

3、实现选择收货地址的功能

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
在manifest.json中赋予权限,才能调用chooseaddress的api接口
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

因为新版接口不用解构的问题,我们可以把上面的chooseAddress方法改一下
商城小程序(8.购物车页面),小程序,前端,学习,vue.js
数据在UI结构中回显
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

页面调试:选择收货地址

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

确定之后成功展示回显数据
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

4、将address信息存储到vuex中

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

export default {
	// 开启命名空间
	namespaced: true,
	
	//数据
	state: () => ({
		address: {}
	}),
	
	//方法
	mutation: {
		// 更新收货地址
		updateAddress(state, address) {
			state.address = address
		}
	},
	
	getters: {
		
	}
}

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
选择完地址后,我们重新编译程序,也能看到地址信息。
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

5、将store中的address持久化存储到本地

修改store/user.js:

export default {
	// 开启命名空间
	namespaced: true,
	
	//数据
	state: () => ({
		address: JSON.parse(uni.getStorageSync('address') || '{}')
	}),
	
	//方法
	mutations: {
		// 更新收货地址
		updateAddress(state, address) {
			state.address = address
			this.commit('m_user/saveAddressToStorage')
		},
		// 持久化存储address
		saveAddressToStorage(state) {
			uni.setStorageSync('address', JSON.stringify(state.address))
		}
	},
	
	getters: {
		
	}
}

重新编译 一样有效果
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

6、将addstr抽离为getters

为了提高代码的复用性,可以把收货地址的详细地址抽离为getters,方便在多个页面和组件之间实现复用

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

7、重新选择收货地址

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

三、结算区域

创建结算组件

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

在cart页面调用结算组件
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

1、渲染结算组件

结算组件的UI结构:

<template>
	<view class="my-settle-container">
		<!-- 全选 -->
		<label class="radio">
			<radio color="#C00000" :checked="true" /><text>全选</text>
		</label>
		<!-- 合计 -->
		<view class="amount-box">
			合计:<text class="amount"></text>
		</view>
		<!-- 结算按钮 -->
		<view class="btn-settle">结算(0)</view>
	</view>
</template>

美化样式:

<style lang="scss">
	.my-settle-container {
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		height: 50px;
		background-color: white;
		display: flex;
		justify-content: space-between;
		align-items: center;
		font-size: 14px;
		padding-left: 5px;
		
		.radio {
			display: flex;
			align-items: center;
		}
		
		.amount-box {
			.amount {
				color: #C00000;
				font-weight: bold;
			}
		}
		
		.btn-settle {
			background-color: #C00000;
			height: 50px;
			color: white;
			line-height: 50px;
			padding:0 10px;
			text-align: center;
		}
	}
</style>

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

2、动态渲染已勾选商品的总数量

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

3、动态渲染全选按钮的选中状态

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

为不全选时,下面全选按钮没有选中

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

4、实现商品的全选/反选功能

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

点灭全选按钮,上面全部的选择都取消了,点击单个选择,下面也会选中
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

5、动态渲染已勾选商品的总价格

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

6、动态计算购物车徽标的数值

商城小程序(8.购物车页面),小程序,前端,学习,vue.js
商城小程序(8.购物车页面),小程序,前端,学习,vue.js

加两件商品时,徽标成功增加

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

7、渲染购物车为空的页面

商城小程序(8.购物车页面),小程序,前端,学习,vue.js

美化页面

	.cart-container {
		padding-bottom: 50px;
	}
	.cart-title {
		height: 40px;
		display: flex;
		align-items: center;
		padding-left: 5px;
		border-bottom: 1px solid #EFEFEF;
		
		.cart-title-text {
			font-size: 14px;
			margin-left: 10px;
		}
	}
	.empty-cart {
		display: flex;
		flex-direction: column;
		align-items: center;
		padding-top: 150px;
		.empty-img {
			width: 90px;
			height: 90px;
		}
		.tip-text {
			font-size: 12px;
			color: gray;
			margin-top: 15px;
		}
	}

删除所有商品后,页面返回
商城小程序(8.购物车页面),小程序,前端,学习,vue.js文章来源地址https://www.toymoban.com/news/detail-816614.html

到了这里,关于商城小程序(8.购物车页面)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序购物车页面实现

    目录 32.商品加入购物车逻辑实现(前端) 33.购物车页面收货地址实现 34.购物车商品列表显示实现 37.购物车商品复选框选中业务处理 38.购物车全选复选框选中业务处理 39.购物车商品数量编辑实现 40.购物车商品数量为0判定是否删除 42.商品详情立即购买逻辑实现 1.先在produc

    2024年02月11日
    浏览(40)
  • 使用Vue.js框架的指令和事件绑定实现一个购物车的页面布局

    使用了v-model指令来实现全选/全不选的功能,当全选框被点击时,isAllChecked的值会被改变。 使用了v-if指令来判断购物车中是否有商品,如果有商品则渲染商品列表,否则显示购物车为空的提示。 使用了v-for指令来遍历datalist数组,渲染每个商品项。 使用了@change事件来监听商

    2024年02月12日
    浏览(53)
  • Android商城开发----点击加入购物车,购物车商品的增删减

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

    2024年02月03日
    浏览(60)
  • SpringBoot项目--电脑商城【加入购物车】

    1.使用use命令先选中store数据库 2.在store数据库中创建t_cart用户数据表 在entity包下创建购物车的Cart实体类并使其继承BaseEntity 1.向购物车表中插入商品数据的SQL语句 2.如果当前商品已经在购物车存在,则直接更新商品即可 3.在插入或者更新具体执行哪个语句,取决于数据库中是否

    2024年02月09日
    浏览(60)
  • 实现蛋糕商城购物车功能代码实现实验报告

    一、实验目的 1、熟悉HttpSession接口中常用方法 2、熟悉Session 对象的生命周期 3、熟悉两种方法返回与当前请求相关的HttpSession对象。 4、学会如何使用Session 技术模拟用户登录的功能 二、实验内容 实现购物车 1、在chapler05 项目下新建一个名称为 cn.itcast.session.entity 的包,在该

    2024年02月09日
    浏览(45)
  • 前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容

    前端Vue仿京东加入购物车弹框立即购买弹框shopDialog自定义弹框内容, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13183 效果图如下: 使用方法 使用注意: 该插件需引用cc-radioBtnBox插件和cc-numbox插件两个插件库 cc-radioBtnBox插件地址:https://ext.dcloud.net

    2024年02月10日
    浏览(46)
  • HTML淘宝购物车页面的实现

    一、实验目的和要求 本实验任务用HTML基本标签制作一个简单的淘宝购物车页面,具体要求如下: 以纯文本格式保存为*.html文件 使用表格标签、div标签、span标签、图像标签等实现效果设计 启用浏览器,打开该文件或在地址栏中直接输入存放该文件的地址 二、 实验原理 首先

    2024年02月11日
    浏览(46)
  • 谷粒商城篇章8 ---- P236-P247 ---- 购物车【分布式高级篇五】

    目录 1 环境搭建 1.1 新建购物车服务模块gulimall-cart 1.2 购物车服务相关配置 1.2.1 pom.xml  1.2.2 yml配置 1.2.2.1 application.yml配置 1.2.2.2 bootstrap.yml配置 1.2.3 主类 1.3 SwitchHosts增加配置 1.4 网关配置 1.5 整合SpringSession 1.5.1 session数据存储在redis 1.5.2 开启SpringSession 1.6 购物车页面搭建 2 购

    2024年02月01日
    浏览(70)
  • ECSHOP购物车页面显示商品简单描述的实现方法

    最近看到有朋友有这方面的需求,就整理了一下,写出来供有同样需求的朋友备用,这里说的商品简单描述,不是商品的详细信息,而是后台编辑商品时在“其他信息”标签栏填写的那个“商品简单描述”,即goods_brief字段,修改前请注意备份相关的系统文件。 修改lib_order

    2023年04月16日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包