uniapp-商城-32-shop 我的订单-订单详情和组件goods-list

上面完成了我的订单,通过点击我的订单中每一条数据,可以跳转到订单详情中。

这里就需要展示订单的状态,支付状态,物流状态,取货状态,用户信息,订单中的货物详情等。

1、创建一个订单详情文件

在31中已经进行了详情页面的创建 在pagesub文件夹下,创建 pageshop文件夹,创建order文件夹,创建detail文件。

2、在我的订单 order中,点击跳转

gotodetail

order中的方法:

特别需要注意:这里的传递参数方法,一种是通过缓存一种是通过字符串,这里需要传递的参数应该是比较多的,用缓存。

目前这里是demo 还没有链接数据库后台,没有写参数。

等后面来细化

3、detail页面代码和样式

html 复制代码
<template>
	<view class="orderDetail">
		<!-- 订单详情 -->
		<view class="payment">
			<icon type="error" color="#EC544F" size="50" v-if="false"></icon>
			<icon type="success" color="#19BE6B" size="50" v-else></icon>
			<view class="text">
				<view class="big">
					实付款¥33.6
					<text v-if="false">应付款¥55.8</text>
				</view>
				<view class="small">请等待商家配送</view>
			</view>
			<view class="complete" v-if="true">已完成</view>
		</view>


		<view class="info" v-if="false">
			<view class="delivery">
				<view class="btn">
					<u-icon name="bag" color="#fff" size="26"></u-icon>
					<text>商家外送</text>
				</view>
			</view>

			<view class="viewOut">
				<view class="title">订单信息</view>
				<view class="body">
					<view class="row">订单编号 123456</view>
					<view class="row">下单时间 2023-06-10 19:22:33</view>
					<view class="row">支付方式 支付宝支付</view>
				</view>
			</view>

			<view class="viewOut">
				<view class="title">收货地址</view>
				<view class="body">
					<view class="row">山东省济南市高新区XXX路XX号</view>
					<view class="row">张三-18566668888</view>
				</view>
			</view>
		</view>


		<view class="info" v-else>
			<view class="delivery other">
				<view class="btn">
					<u-icon name="map" color="#fff" size="22"></u-icon>
					<text>到店自提</text>
				</view>
				<view class="time">
					6月10日
				</view>
			</view>

			<view class="viewOut">
				<view class="title">订单信息</view>
				<view class="body">
					<view class="row">订单编号 123456</view>
					<view class="row">下单时间 2023-06-05 15:30</view>
					<view class="row">支付方式 微信支付</view>
				</view>
			</view>


			<view class="viewOut">
				<view class="title">自提地址</view>
				<view class="body">
					<view class="row">
						山东省济南市历下区XX路XX号
						<view class="like">
							<u-icon name="arrow-right"></u-icon>
						</view>
					</view>
					<view class="row">商家电话 13099998888</view>
				</view>
			</view>
		</view>


		<view class="goodsList">
			<goods-list></goods-list>
		</view>


	</view>
</template>

<script>
	export default {
		data() {
			return {

			};
		}
	}
</script>

<style lang="scss">
	page {
		background: $page-bg-color;
	}

	.orderDetail {
		.payment {
			@include flex-box-set(start);
			padding: 50rpx 30rpx;
			position: relative;

			.text {
				padding-left: 20rpx;
				color: $text-font-color-1;

				.big {
					font-size: 44rpx;
					font-weight: bold;
				}

				.small {
					font-size: 28rpx;
					color: $text-font-color-3;
				}
			}

			.complete {
				font-size: 32rpx;
				color: $text-font-color-3;
				font-weight: bold;
				border: 6rpx solid $text-font-color-3;
				width: 150rpx;
				height: 150rpx;
				border-radius: 50%;
				@include flex-box-set();
				transform: rotate(-20deg);
				position: absolute;
				right: 100rpx;
				top: 80rpx;

				&::after {
					display: block;
					content: "";
					border: 2rpx solid $text-font-color-3;
					position: absolute;
					width: 100%;
					height: 100%;
					border-radius: 50%;
					transform: scale(0.89);
					top: 0;
					left: 0;
					box-sizing: border-box;
				}
			}
		}

		.info {
			background: #fff;
			padding: 30rpx;
			border-radius: 30rpx 30rpx 0 0;

			.delivery {
				@include flex-box();

				.btn {
					@include flex-box-set();
					width: 250rpx;
					height: 60rpx;
					border-radius: 80rpx;
					background: #19BE6B;
					color: #fff;

					text {
						font-size: 34rpx;
					}
				}

				&.other {
					.btn {
						background: #FF9100;
					}

					.time {
						font-size: 32rpx;
						color: $brand-theme-color-aux;
					}
				}
			}

			.viewOut {
				padding: 30rpx 0;

				.title {
					font-size: 40rpx;
					padding-bottom: 15rpx;
				}

				.row {
					font-size: 30rpx;
					padding: 15rpx 0;
					color: $text-font-color-2;
					@include flex-box();
				}
			}
		}

		.goodsList {
			margin-top: 30rpx;
		}


	}
</style>

3.1 这里的样式 就上中下三块

3.2 上部分( 还包含一个印章样式)

代码:icon 是标准的uniapp 的icon

https://uniapp.dcloud.net.cn/component/icon.html

html 复制代码
<view class="payment">
			<icon type="warn" color="#EC544F" size="50" v-if="true"></icon>
			<icon type="success" color="#19BE6B" size="50" v-else></icon>
			<view class="text">
				<view class="big">
					实付款¥33.6
					<text v-if="false">应付款¥55.8</text>
				</view>
				<view class="small">请等待商家配送</view>
			</view>
			<view class="complete" v-if="true">已完成</view>
		</view>

已完成,是通过下面的样式来完成的倾斜和圆弧(背景)。

javascript 复制代码
<style lang="scss">
	page {
		background: $page-bg-color;
	}

	.orderDetail {
		.payment {
			@include flex-box-set(start);
			padding: 50rpx 30rpx;
			position: relative;

			.text {
				padding-left: 20rpx;
				color: $text-font-color-1;

				.big {
					font-size: 44rpx;
					font-weight: bold;
				}

				.small {
					font-size: 28rpx;
					color: $text-font-color-3;
				}
			}

			.complete {
				font-size: 32rpx;
				color: $text-font-color-3;
				font-weight: bold;
				border: 6rpx solid $text-font-color-3;
				width: 150rpx;
				height: 150rpx;
				border-radius: 50%;   // 圆圈
				@include flex-box-set();
				transform: rotate(-20deg);   //倾斜
				position: absolute;
				right: 100rpx;
				top: 80rpx;

				&::after {   //子元素  用before 和 after 都可以
					display: block;  //转换为块元素   把自己  也就是上面那个圆 转成块元素
					content: "";   //必填的  内容没有  不填就不能呈现出两个圆圈
					border: 2rpx solid $text-font-color-3;
					position: absolute;
					width: 100%;
					height: 100%;
					border-radius: 50%;   //圆圈
					transform: scale(0.89);   //缩放
					top: 0;
					left: 0;
					box-sizing: border-box;
				}
			}
		}

		.info {
			background: #fff;
			padding: 30rpx;
			border-radius: 30rpx 30rpx 0 0;

			.delivery {
				@include flex-box();

				.btn {
					@include flex-box-set();
					width: 250rpx;
					height: 60rpx;
					border-radius: 80rpx;
					background: #19BE6B;
					color: #fff;

					text {
						font-size: 34rpx;
					}
				}

				&.other {
					.btn {
						background: #FF9100;
					}

					.time {
						font-size: 32rpx;
						color: $brand-theme-color-aux;
					}
				}
			}

			.viewOut {
				padding: 30rpx 0;

				.title {
					font-size: 40rpx;
					padding-bottom: 15rpx;
				}

				.row {
					font-size: 30rpx;
					padding: 15rpx 0;
					color: $text-font-color-2;
					@include flex-box();
				}
			}
		}

		.goodsList {
			margin-top: 30rpx;
		}


	}
</style>

3.3 订单物流信息

自提/配送 时间

订单编号 下单时间 支付方式

自提地址/配送地址

配送代码:

html 复制代码
		<view class="info" v-if="false">
			<view class="delivery">
				<view class="btn">
					<u-icon name="bag" color="#fff" size="26"></u-icon>
					<text>商家外送</text>
				</view>
			</view>

			<view class="viewOut">
				<view class="title">订单信息</view>
				<view class="body">
					<view class="row">订单编号 123456</view>
					<view class="row">下单时间 2023-06-10 19:22:33</view>
					<view class="row">支付方式 支付宝支付</view>
				</view>
			</view>

			<view class="viewOut">
				<view class="title">收货地址</view>
				<view class="body">
					<view class="row">云南省楚雄市高新区XXX路XX号</view>
					<view class="row">张三-18566668888</view>
				</view>
			</view>
		</view>

自提代码:

html 复制代码
		<view class="info" v-else>
			<view class="delivery other">
				<view class="btn">
					<u-icon name="map" color="#fff" size="22"></u-icon>
					<text>到店自提</text>
				</view>
				<view class="time">
					6月10日
				</view>
			</view>

			<view class="viewOut">
				<view class="title">订单信息</view>
				<view class="body">
					<view class="row">订单编号 123456</view>
					<view class="row">下单时间 2023-06-05 15:30</view>
					<view class="row">支付方式 微信支付</view>
				</view>
			</view>


			<view class="viewOut">
				<view class="title">自提地址</view>
				<view class="body">
					<view class="row">
						上海闸北区XX路XX号
						<view class="like">
							<u-icon name="arrow-right"></u-icon>
						</view>
					</view>
					<view class="row">商家电话 13099998888</view>
				</view>
			</view>
		</view>

3.4 商品信息代码,使用组件来实现

<view class="goodsList">

<goods-list></goods-list>

</view>

组件代码goods-list:

html 复制代码
<template>
	<view class="goodsLayout">
		<!-- 购物车列表 -->
		<view class="wrapper">
			<view class="title">共3件商品</view>		
		
			<view class="list">
				<view class="row" v-for="item,index in 3" :key="index">
					<view class="left">
						<image src="@/static/番茄.png" mode="aspectFill" class="img"></image>
						<view class="name">卫龙小面筋</view>
					</view>
					<view class="center">×3</view>
					<view class="right">
						<view class="big">¥15.5</view>
						<view class="small">¥22.3</view>
					</view>
				</view>
			</view>
			
			<view class="total">
				<text>
					已优惠¥10.2,
				</text> 合计 <text class="big">¥45.8</text>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name:"goods-list",
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">
.goodsLayout{	
	.wrapper{
		background: #fff;
		padding:30rpx;
		margin-bottom:25rpx;
		border-radius: 15rpx;
		.title{
			font-size: 38rpx;
		}
		.list{			
			.row{
				@include flex-box();
				padding:25rpx 0;
				.left{
					@include flex-box();
					width: 400rpx;
					.img{
						width: 64rpx;
						height: 64rpx;
						border-radius: 10rpx;
					}
					.name{
						padding-left:15rpx;
						flex:1;
						font-size: 30rpx;
					}
				}
				.center{
					width: 100rpx;
					text-align: center;					
				}
				.right{
					flex:1;
					text-align: right;
					font-weight: bold;
					.big{
						font-size: 34rpx;						
					}
					.small{
						font-size: 22rpx;
						color:$text-font-color-3;
						text-decoration: line-through;
					}
				}
			}
		}
		.total{
			padding:30rpx 0;
			text-align: right;
			font-size: 30rpx;
			color:$text-font-color-3;
			.big{
				font-size: 36rpx;
				font-weight: bold;
				color:#000;
			}
		}
	}
}
</style>
相关推荐
样子20188 小时前
Uniapp 之renderjs解决swiper+多个video卡顿问题
前端·javascript·css·uni-app·html
fakaifa10 小时前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单
Bug改不动了13 小时前
React Native 与 UniApp 对比
react native·react.js·uni-app
anyup15 小时前
🔥🔥 10 天 Star 破百!uView Pro 文档也开源啦:完全免费、无广告、高效上手
前端·vue.js·uni-app
fakaifa1 天前
【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
人工智能·小程序·uni-app·php·crmeb·源码下载·crmebpro
2501_915918411 天前
iOS 应用上架全流程实践,从开发内测到正式发布的多工具组合方案
android·ios·小程序·https·uni-app·iphone·webview
梦里寻码2 天前
自行食用 uniapp 多端 手写签名组件
前端·uni-app
不如摸鱼去2 天前
Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
微信小程序·小程序·uni-app·aigc·ai编程
小白_ysf3 天前
uniapp 开发微信小程序,获取经纬度并且转化详细地址(单独封装版本)
微信小程序·uni-app
iOS阿玮3 天前
三年期已满,你的产品不再更新将于90天后下架。
uni-app·app·apple