uni-app 小项目开发 仿小米商城 后端提供数据3

页面

详情页
在这里插入图片描述
购物车页
在这里插入图片描述

实现功能

详情页

1.数据的获取,详情页的轮播图,商品的参数,商品的配置等。
这里的数据获取仍然是采用后台的数据

request.request({
				url: `/goods?id=` + option.id
			}).then(response => {
				this.data.swiperImages = response.data[0].goods_header;
				this.data.describe.title = response.data[0].goods_describe_title;
				this.data.describe.smallTitle = response.data[0].goods_describe_smallTitle;
				this.data.describe.date = response.data[0].goods_describe_date;
				this.data.icons = response.data[0].goods_collocation;
			}).catch(error => {
				console.log(error)
			})

2.产生订单,将的商品型号,配置,颜色,数量和服务等信息生成订单。
在这里插入图片描述
这里的商品参数,不仅仅是简单的数据获取,它还涉及到一些数据的初始化,例如已选区域在进入详情页的默认数据,送至区域的默认地址等

request.request({
				url: `/goodsCollocation?id=` + option.id
			}).then(response => {
				console.log(response)
				this.response = response;

				this.goodMessage = response.data[0].goodsCollocation_product[0].product + ' ' +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].version + ' ' +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].color;

				this.showGoodMessage = this.goodMessage + ' x' + this.num;

				this.tempGoodMessage = this.goodMessage;

				this.sall = response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].price -
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].discounts +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].price -
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].discounts;

				this.totalPrice = this.sall;

				if (response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].discounts != 0 &&
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].discounts != 0) {
					this.price = response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].price +
						response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
						.goodsCollocation_color[0].price;
				} else {
					this.price = 0;
				}


				this.pruduct = response.data[0].goodsCollocation_product;

				for (var i = 0; i < this.pruduct.length; i++) {
					var tempProduction = {
						value: i,
						text: this.pruduct[i].product
					}

					this.production.push(tempProduction);
				}
				// uni-app 的数据选择插件的数据具有严格的数据格式,将后台获取的数据格式化
				for (var i = 0; i < this.pruduct[0].goodsCollocation_version.length; i++) {
					var temp = {
						value: i,
						text: this.pruduct[0].goodsCollocation_version[i].version
					}
					this.version.push(temp);
				}

				for (var i = 0; i < this.pruduct[0].goodsCollocation_version[0].goodsCollocation_color
					.length; i++) {
					var temp = {
						value: i,
						text: this.pruduct[0].goodsCollocation_version[0].goodsCollocation_color[i].color
					}
					this.color.push(temp);
				}

				for (var i = 0; i < response.data[0].goodsCollocation_server.length; i++) {
					var temp = {
						value: i,
						text: response.data[0].goodsCollocation_server[i].server
					}
					this.server.push(temp);
				}
			}).catch(error => {
				console.log(error)
			})

这个选择的页面可以分为三个区域,上方的信息展示,中间选择商品属性,下方的按钮。
上方的信息展示在数据的获取时就做了信息的初始化。

this.goodMessage = response.data[0].goodsCollocation_product[0].product + ' ' +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].version + ' ' +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].color;

				this.showGoodMessage = this.goodMessage + ' x' + this.num;

				this.tempGoodMessage = this.goodMessage;

				this.sall = response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].price -
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0].discounts +
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].price -
					response.data[0].goodsCollocation_product[0].goodsCollocation_version[0]
					.goodsCollocation_color[0].discounts;

				this.totalPrice = this.sall;

中间选择商品属性区域的数据采用的是嵌套数组,这里为 3 层。
第 1 层:商品的型号 Redmi Note 11 Pro 和 Redmi Note 11 Pro +
第 2 层:商品的配置 以 Redmi Note 11 Pro + 为例 6+128G 8+128G 8+256G
第 2 层:商品的颜色 以 Redmi Note 11 Pro + 为例 6+128G 颜色有 迷雾森林 神秘黑镜
8+128G 时光之紫 迷雾森林 神秘黑镜
第 2 层 和 第 3 层 的数据还附带 价格 和 折扣 这两种属性。

const goodsCollocationSchema = new Schema(
    {
        goodsCollocation_id: {
            type: Schema.Types.ObjectId
        },
        // 第 1 层
        goodsCollocation_product: [
            {
                product: {
                    type: String
                },
                image: {
                    type: String,
                    default: ''
                },
                // 第 2 层
                goodsCollocation_version: [
                    {
                        version: String,
                        price: Number,
                        discounts: Number,
                        // 第 3 层
                        goodsCollocation_color: [
                            {
                                color: String,
                                price: Number,
                                discounts: Number
                            }
                        ],
                    }
                ],
            }
        ],
        goodsCollocation_server: [
            {
                server: String,
                price: Number
            }
        ]
    },
    {
        timestamps: {
            createdAt: "create_time",
            updatedAt: "update_time",
        },
    }
);

在选择商品的不同属性时,商品的价格,商品的总价格,商品的数量,商品的展示信息,商品的订单信息都会发生变化。
在这里插入图片描述
在这里插入图片描述
这里主要就是修改价格和订单信息,分为两个函数。

setPrice: function(a, b, c) {
				this.sall = this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[
						b].price -
					this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[b].discounts +
					this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[b]
					.goodsCollocation_color[c].price -
					this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[b]
					.goodsCollocation_color[c].discounts;

				if (this.response.data[0].goodsCollocation_product[this.productionValue].goodsCollocation_version[this
						.versionValue].discounts != 0 ||
					this.response.data[0].goodsCollocation_product[this.productionValue].goodsCollocation_version[this
						.versionValue]
					.goodsCollocation_color[this.colorValue].discounts != 0) {
					this.price = this.response.data[0].goodsCollocation_product[this.productionValue]
						.goodsCollocation_version[this.versionValue].price +
						this.response.data[0].goodsCollocation_product[this.productionValue].goodsCollocation_version[
							this
							.versionValue]
						.goodsCollocation_color[this.colorValue].price;
				} else {
					this.price = 0;
				}

				this.totalPrice = this.sall;
			},
			setMessage: function(a, b, c, d) {
				this.goodMessage = this.response.data[0].goodsCollocation_product[a].product + ' ' +
					this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[b].version + ' ' +
					this.response.data[0].goodsCollocation_product[a].goodsCollocation_version[b]
					.goodsCollocation_color[c].color;

				this.showGoodMessage = this.goodMessage + ' x' + d
			},

(注:这里的方法必须 函数名:funcation(){} 格式去写,否则报错)

订单页

1.订单数据的获取与展示。
2.购买商品数量与总价的计算与展示。
在这里插入图片描述
在这里插入图片描述

展示时的价格为商品的单价,计算时为商品的实际价值,例如,加了一个168的碎屏险价格为1867元,
总金额=选中的商品的实际价值*商品数量

getNum:function(){
				this.numAll=0;
				this.data.forEach(item=>{
					if(item.checked===true){
						this.numAll+=item.order_num;
					}
				})
			},
			getPrice:function(){
				this.priceAll=0;
				this.data.forEach(item=>{
					if(item.checked===true){
						this.priceAll=this.priceAll+item.order_num*item.order_totalPrice;
					}
				})
			},

Bug解决

1.分类页面bug解决
data 中的数据划分出来,改为 3 个数组,这也需要改变页面的数据渲染格式。
点击左侧竖向导航,获取对应数据和 type ,根据 type 的值,展示右侧的页面(暂未更改)。

源码

Github:Github:https://github.com/hrbust1914010305/uni-app-shop
uniAppShopOver.zip

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 小米商城是一个使用JavaWeb技术开发的电子商务网站,它提供了用户登录和首页功能。 首先,要实现登录功能,需要在前端设计一个登录页面,包括用户名和密码的输入框以及登录按钮。当用户输入完用户名和密码后,点击登录按钮会触发请求发送到后端。 在后端,我们可以使用Java的Servlet技术来处理该登录请求。我们可以创建一个LoginServlet来处理登录逻辑。该Servlet首先获取用户输入的用户名和密码,然后与数据库中的用户信息进行比对。如果用户名和密码匹配成功,则登录成功,可以进行其他操作;如果匹配失败,则登录失败,返回相应的错误信息。 登录成功后,我们可以跳转到首页。在前端,我们可以设计一个首页页面,包括商品展示、购物车、收藏夹等功能。这些功能可以通过使用HTML、CSS和JavaScript来实现。 在后端,可以创建一个IndexServlet来处理首页展示的请求。该Servlet可以获取相关的商品信息、购物车信息、收藏夹信息等,并将这些信息返回给前端页面进行展示。 在整个过程中,我们还需要使用数据库来存储用户信息、商品信息、购物车信息和收藏夹信息等。通过JavaWeb技术我们可以使用JDBC或者ORM框架来连接数据库,进行相应的增删改查操作。 综上所述,实现javaweb小米商城登录加首页的关键是通过前后端的配合,以及与数据库的交互,实现用户登录和首页展示的功能。通过合理的设计和开发,我们可以实现一个功能完善、用户友好的小米商城网站。 ### 回答2: 小米商城的登录和首页开发主要使用JavaWeb技术。首先,我们会创建一个登录页面,页面中包括用户名和密码的输入框以及登录按钮。当用户输入完用户名和密码后,点击登录按钮会触发登录操作。 在后端,我们会创建一个Servlet来处理登录请求。该Servlet会接收用户输入的用户名和密码,并与数据库中的已注册用户进行比对,以确定用户输入的是否正确。如果输入正确,则会在后台生成一个用于用户登录的身份验证令牌,并将其存储在用户的浏览器中的Cookie中。同时,用户的登录状态也会被记录在服务器端,以便在后续的页面访问中进行身份验证。 在登录成功后,用户将会被重定向到商城的首页。首页是一个展示商品和其他相关信息的页面。为了实现首页的开发,我们会使用JSP技术来渲染页面并显示商城的商品信息。我们可以通过后端的Servlet从数据库中获取商品的信息,例如商品的名称、价格、图片等,并将其传递给JSP页面进行展示。 同时,首页中也会包括一些其他的功能,例如搜索框、购物车等。这些功能可以使用JavaWeb中的其他技术和框架来实现,例如使用Ajax技术来实现搜索框的实时搜索功能,使用Servlet和Session来实现购物车的功能,等等。 总之,通过使用JavaWeb技术,我们可以实现小米商城的登录和首页功能。用户可以通过输入正确的用户名和密码来登录,然后被重定向到商城的首页,从而浏览和购买商品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值