app开发定制公司Uniapp商城项目【详细笔记文档】

文章目录


前言

Uniapp商城项目【app开发定制公司详细笔记文档】
app开发定制公司持续更新中…

🥇个人主页:
🥈来自专栏: 🔰 🔰

❗❗


一、app开发定制公司创建项目和引入文件

1.1 通过hbuilderxapp开发定制公司编辑器创建一个默认的uni-app项目(如图1——图2)



1.2 app开发定制公司创建目录结构(如图:3)

1.2.1 在commonapp开发定制公司app开发定制公司app开发定制公司目录中创建文件:common.css
注:common.css为全局css样式文件,app开发定制公司其内容目前有:

代码:

/*全局css文件*//*app开发定制公司默认字体颜色*/.f-color{	color:#636263;}/*app开发定制公司选中字体颜色*/.f-active-color{	color:#49BDFB;}/*背景颜色*/.bg-color{	background-color: #42B7FB;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

1.2.2 在common目录中创建文件:uni.css。
注:uni.css为uni-appapp开发定制公司演示站文件,app开发定制公司可理解为官方定义好的css默认样式。
1.2.3 在common目录中创建文件:iconfont.css。
注:iconfont.cssapp开发定制公司是引入了阿里巴巴字体app开发定制公司图标库的文件。

这里要注意针对iconfont修改了的内容,完整版代码如下:

@font-face {font-family: "iconfont";  src: url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAWIAAsAAAAACswAAAU7AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDVgqIEIZcATYCJAMcCxAABCAFhG0HcRs9CciemjwpkVoTIpDgvdL+gvJjERRrZc/yA4MMSECwUcwSuHzKR0gunwiV8uzY5f4eN300E5qa0U7IzCriE5E0/REsXAhlc9gcNq8rdK5+7giS7qJLz9qypIhfanlyIm2JNA8scMIBBQQBpUlAfLHv4Fjqp/+D5fmHS1fgZqMEGlBFCpbgRHEGo7NrUuJ71ukE6g3rTbI2fcAIkMowcSDvBMeQIM00shZ8qORFza6ZeAq5Krln9xHAE/v78QOCQ0oiT7Ez7Tyelg2Jn92eXezO/8LR1Ah39mfCcC9SLAIZcavWcgXmI4sw9fOrtLAVaFRJZJ/dn/Ez90yelf0H7Lk5E7BYaNTM/8EjlUkUQk4UIGnsYQ9GCz6TVEnnUguVDFKGSgKpA2ddqUAlIL2okINS79KMLhBrAOIFMMWSYx2hEEIib5rtwZ2aJjN7pLR3uMhaXd1TnLYUSI6Y8s25cPBO3mS8vmfxufArIdfT7F28y7xDVrtHhtc//d04VrY3zGn7fvlkk+RuflZBQUnD9jovr7ytDg8abNuPNnkVeTmWcIWNnR3rrX6TXNg9onNEJsIT9GHEoaQZ+Xjr/nzFokwadGjYNzFPL9byoMCUjzfvV5sk/g/4jC8YoxnnIm65YLxouWy6NCLfarJZmoyNVMll9h6VP3N5jRxdMHd5jsjVUaZ2ma0mH3yy18i8osJcw7WlI67MHXn1YRuZMOr6rb7hSuYJc79T19ImU8jm6/1PW/qevBo3Gilz+AjJtWv1+vV29Wq5cmUIUXauEaO3OhSZlapZdzDWTie2jXbLzOmJW/GRGlo9zaPp5i1NXfx73fAb+sOG5QdoHXMift+iX0fjZP8KZ/59yv5AI7F/OJ4Q1L96K1/zNmUQkSFTrXdpa7F26mn82v35nR0fjh8xrkbXjKBu1u6ec/Yt0WdpVw7eLD2Q9pS7uQnE/yy3o8foep9ToMHvet3Fce3XZ4HsE/TPTh7RPICyA3UfZOPn+y3WjpUk7Hg1PjgQMvmXOl19kCJPlYfKQ1ZMKxM/hIyEEkvD7wZd+c8iXzffxS/ZqsdX4nv5P4vhv2vjMknWQbbk/xvhYrXI/qApL+HtNwgRAicYIqgFdQ+pAdlsHTdBBmmPdfIKknx5fR//SQkVMxfMKif8PL7rLw9bPmsB1KjptHXcxtTAwRbYk+Y+PPIwztQalRtNC3LtCqvfggE7Zqf0AN2F9MJeAyZn6kjqr8CX3THJYfBLwy2AmhVbiY2yKxdg/9IFQNofT8hZRpKBALUraTO2CEifYqN/59VsGp35e7JL7B+p+YlP+yQz21FPraCF/UQrCWtz/7zcNYeyBZ9py2zWWXLWJJfOaPWFBPXq8ad1tLu3P1nX2rmESleERGkIUpVJZIZdhFyDJVCorIB6CzL2btBBgImsDvMWEAit1kOi2XtItTqLzLB3IdftLRRaA4N6+8PjkA2mg8NTBESKKJvImkZwFK+hhV7EXf4wxOhVpJDyLWEUEnScnwjyDyzGM5AGCfvYQpfDBIsiTdACrybSydmQSsUTWoFXIEr0Z0VRGx0QQNe9kD/FqwG3hgAhiZBshCzTEDgUngatpxbhpZ8fBmHoqZCElrZzxlEQgQ63cEIQf4FrIDMkmrXansvSOjkYwUQiurcWTcBTI6TDhKh4hEfQ1q+kgFBE/tgtQlrRAug4el2J//Fl6td5HtRj25eRRBpZ5FFEGZWGu384HRIDg4NCpAyvN+gpFuFTOVIh1tCIvN5Rx5IaJlnKXk0yGo7mkNCqVchLNQAA') format('woff2');}.iconfont {  font-family: "iconfont" !important;  font-size: 16px;  font-style: normal;  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;}.icon-iconset0213:before {  content: "\e670";}.icon-gouwuche:before {  content: "\e61b";}.icon-xiajiantou:before {  content: "\e611";}.icon-shangjiantou:before {  content: "\e612";}.icon-magnifier:before {  content: "\e69d";}.icon-xiaoxi:before {  content: "\e622";}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

1.2.4 在static目录中引入文件有:uni.ttf文件
注:此文件是官方图标库文件,不引入会报错(因为引入了uni.css)
1.2.5 最后在static文件中下载了项目底部的所有选中以及未选中图片。

二、【底部】导航开发

1.1完成效果图:

1.2 在项目目录中pages.json中进行配置,代码如下:

{	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages		{			"path": "pages/index/index",			"style": {				"navigationBarTitleText": "uni-app"			}		}	    ,{            "path" : "pages/list/list",            "style" : {}        }        ,{            "path" : "pages/shopcart/shopcart",            "style" : {}        }        ,{            "path" : "pages/my/my",            "style" : {}        }    ],	"globalStyle": {		"navigationBarTextStyle": "black",		"navigationBarTitleText": "uni-app",		"navigationBarBackgroundColor": "#F8F8F8",		"backgroundColor": "#F8F8F8"	},	"tabBar": {		"color":"#636263",		"selectedColor":"#636263",		"spacing":"8px",	    "list": [			{				"pagePath": "pages/index/index",				"iconPath":"static/tabbar/index.png",				"selectedIconPath":"static/tabbar/indexSelected.png",				"text": "首页"			}, 			{				"pagePath": "pages/list/list",				"iconPath":"static/tabbar/list.png",				"selectedIconPath":"static/tabbar/listSelected.png",				"text": "分类"			},			{				"pagePath": "pages/shopcart/shopcart",				"iconPath":"static/tabbar/shop.png",				"selectedIconPath":"static/tabbar/shopSelected.png",				"text": "购物车"			},			{				"pagePath": "pages/my/my",				"iconPath":"static/tabbar/my.png",				"selectedIconPath":"static/tabbar/mySelected.png",				"text": "我的"			}		]	}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

三、【首页】顶部开发

1.1 完成效果图

1.2 首页顶部需要在pages.json中配置,代码如下:

{	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages		{			"path": "pages/index/index",			"style": {				"navigationBarTitleText": "百年奥莱",				"navigationBarBackgroundColor":"#FFFFFF",				"navigationStyle":"custom",				"app-plus":{					"titleNView":{						"buttons":[							{								"float":"left",								"fontSrc":"./static/iconfont.ttf",								"text":""							},							{								"float":"right",								"fontSrc":"./static/iconfont.ttf",								"text":""							}						]					}				}			}		}	    ,{            "path" : "pages/list/list",            "style" : {}        }        ,{            "path" : "pages/shopcart/shopcart",            "style" : {}        }        ,{            "path" : "pages/my/my",            "style" : {}        }    ],	"globalStyle": {		"navigationBarTextStyle": "black",		"navigationBarTitleText": "uni-app",		"navigationBarBackgroundColor": "#F8F8F8",		"backgroundColor": "#F8F8F8"	},	"tabBar": {		"color":"#636263",		"selectedColor":"#636263",		"spacing":"8px",	    "list": [			{				"pagePath": "pages/index/index",				"iconPath":"static/tabbar/index.png",				"selectedIconPath":"static/tabbar/indexSelected.png",				"text": "首页"			}, 			{				"pagePath": "pages/list/list",				"iconPath":"static/tabbar/list.png",				"selectedIconPath":"static/tabbar/listSelected.png",				"text": "分类"			},			{				"pagePath": "pages/shopcart/shopcart",				"iconPath":"static/tabbar/shop.png",				"selectedIconPath":"static/tabbar/shopSelected.png",				"text": "购物车"			},			{				"pagePath": "pages/my/my",				"iconPath":"static/tabbar/my.png",				"selectedIconPath":"static/tabbar/mySelected.png",				"text": "我的"			}		]	}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

注:app-plus在app中和H5生效,各种小程序不生效,如需定制小程序的头部需要这样做:

1.2.1  pages.json中加入: "navigationStyle":"custom"1.2.1  page/index/index.vue中写入:<!-- #ifdef MP-WEIXIN -->			<view>				....你的小程序头部...			</view>		<!-- #endif -->
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四、【首页】部分

1.1 完成效果图:

1.2 新建IndexSwiper.vue文件,目录结构如图:

1.3 新建IndexSwiper.vue代码如下:

<template>	<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000">		<swiper-item>			<view class="swiper-item">				<image class='swiper-img' src="../../static/img/swiper1.jpg" mode=""></image>			</view>		</swiper-item>		<swiper-item>			<view class="swiper-item">				<image class='swiper-img' src="../../static/img/swiper2.jpg" mode=""></image>			</view>		</swiper-item>		<swiper-item>			<view class="swiper-item">				<image class='swiper-img' src="../../static/img/swiper3.jpg" mode=""></image>			</view>		</swiper-item>	</swiper></template><script></script><style scoped>swiper{	width:100%;	height: 400rpx;}.swiper-img{	width:100%;	height: 400rpx;}	</style>1.4 pages/index/index.vue代码如下:<template>	<view class='index'>				<IndexSwiper></IndexSwiper>			</view></template><script>	import IndexSwiper from '@/components/index/IndexSwiper.vue'	export default {		data() {			return {						}		},		components:{			IndexSwiper		},		onLoad() {		},		methods: {		}	}</script><style scoped></style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

1.5 swiper的坑总结:
1.5.1 组件名称swiper.vue 或者 Swiper.vue , 在传递数据的时候有可能图片就不见了。
1.5.2 改变图片的大小咱们要用rpx的单位。
1.5.3 本身swiper是有150px的默认高度,app中需要改变默认高度需要加入:

		swiper{			width:100%;			height:400rpx;		}
  • 1
  • 2
  • 3
  • 4

五、【首页】推荐部分开发

1.1 完成效果图:

1.2 在components中新建组件Recommend.vue,代码如下:

<template>	<view class='recommend bg-color'>				<view class='recommend-item'>			<image class='item-big' src="../../static/img/Children.jpg" mode=""></image>			<view class='item-small'>				<image class='item-img' src="../../static/img/Children1.jpg" mode=""></image>				<image class='item-img' src="../../static/img/Children2.jpg" mode=""></image>				<image class='item-img' src="../../static/img/Children3.jpg" mode=""></image>			</view>		</view>				<view class='recommend-item'>			<image class='item-big' src="../../static/img/Furnishing.jpg" mode=""></image>			<view class='item-small'>				<image class='item-img' src="../../static/img/Furnishing1.jpg" mode=""></image>				<image class='item-img' src="../../static/img/Furnishing2.jpg" mode=""></image>				<image class='item-img' src="../../static/img/Furnishing3.jpg" mode=""></image>			</view>		</view>			</view></template><script></script><style scoped>.recommend{	padding:20rpx;}.recommend-item{	display: flex;	flex-direction: column;	border-radius: 20rpx;	border: 2rpx solid #CCCCCC;	overflow: hidden;	margin:20rpx 0;}.item-big{	width:100%;	height: 300rpx;}.item-small{	width:100%;	height: 240rpx;}.item-img{	width:33.3333%;	height: 240rpx;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

1.3 在pages/index/index.vue中引入Recommend组件。

1.3.1

import Recommend from '@/components/index/Recommend.vue'
  • 1

1.3.2

components:{		IndexSwiper,		Recommend}
  • 1
  • 2
  • 3
  • 4

1.3.3 在template部分中使用

六、【首页】文字封装开发

1.1 在components/common目录中创建了Card.vue组件文件
1.2 在pages/index/index.vue中引入Card组件
1.3 Card组件是卡片完成效果为复用的文字
1.4 完成效果为:

1.5 Card组件完成代码为:

<template>	<view class='card'>		<view>-</view>		<slot>			<view class='card-name'>{{cardTitle}}</view>		</slot>		<view>-</view>	</view></template><script>export default {	props:{		cardTitle:String	}}</script><style scoped>.card{	padding:20rpx 0;	display: flex;	justify-content: center;	font-weight: bold;}.card-name{	padding:0 20rpx;	font-size:32rpx;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

七、【首页】商品列表和单个商品

1.1 完成效果为:

1.2 组件再次说明
CommodityList.vue组件为:商品列表组件
Commodity.vue 组件为:单个商品组件
1.3 创建文件:在components/common中创建CommodityList.vue和Commodity.vue
1.4 CommodityList.vue组件传入数据给Commodity.vue作为展示。

1.5 CommodityList.vue代码为:

<template>	<view class='commodity-list'>				<!-- 商品列表组件 -->		<Commodity :dataList='commodityList'></Commodity>			</view></template><script>import Commodity from './Commodity.vue'export default {	data () {		return {			commodityList:[				{					id:1,					imgUrl:"../../static/img/commodity1.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:2,					imgUrl:"../../static/img/commodity2.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:3,					imgUrl:"../../static/img/commodity3.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:4,					imgUrl:"../../static/img/commodity4.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				}			]		}	},	components:{		Commodity	}}</script><style></style>1.5 Commodity.vue代码为:<template>	<view class='commodity'>		<!-- 单个商品组件 -->				<view class='commodity-item' 			v-for="(item,index) in dataList"			:key='index'		>			<image class='commodity-img' :src="item.imgUrl" mode=""></image>			<view class='commodity-content'>				<text class='commodity-name'>{{item.name}}</text>				<view>					<text class='pprice'>¥{{item.pprice}}</text>					<text class='oprice'>¥{{item.oprice}}</text>				</view>				<text class='discount'>{{item.discount}}</text>			</view>		</view>		</view></template><script>export default {	props:{		dataList:Array	}}</script><style scoped>.commodity{	display: flex;	flex-wrap: wrap;}.commodity-item{	width: 375rpx;	padding-bottom:20rpx;}.commodity-img{	width:100%;	height: 375rpx;}.commodity-content{	text-align: center;}.commodity-name{	overflow: hidden;	text-overflow: ellipsis;	display: -webkit-box;	-webkit-line-clamp:2;	-webkit-box-orient:vertical;	color:#333333;	word-break: break-all;	padding:6rpx 20rpx;}.oprice{	text-decoration: line-through;	font-size:24rpx;	color:#999999;}.discount{	border-radius: 4rpx;	border:1px solid #FF3333;	padding:2rpx 10rpx;	font-size:20rpx;	color:#FF3333;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128

八、【首页】运动户外头部开发

1.1 完成后的效果图:

1.2 在components/index目录中创建了Banner.vue和Icons.vue组件
1.3 组件说明Banner.vue就是头图的展示。Icons.vue就是大家看到的宫格

1.4 Banner.vue代码如下:

<template>	<view class='banner'>		<image class='banner-img' src="../../static/img/banner1.jpg" mode=""></image>	</view></template><script></script><style scoped>.banner{	width:100%;	height: 300rpx;}.banner-img{	width:100%;	height: 300rpx;}</style>1.5 Icos.vue代码如下:<template>	<view class='icons'>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons1.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons2.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons3.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons4.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons5.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons6.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons7.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>		<view class='icons-item'>			<image class='icons-img' src="../../static/img/icons8.png" mode=""></image>			<text class='f-color'>运动户外</text>		</view>	</view></template><script></script><style scoped>.icons{	display: flex;	flex-wrap: wrap;}.icons-item{	width:25%;	display: flex;	flex-direction: column;	align-items: center;	justify-content: center;	padding-top:20rpx;}.icons-img{	width:110rpx;	height: 110rpx;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79

九、【首页】热销爆品开发修改商品值
1.1 完成后的效果图:

1.2 component/index下创建Hot.vue组件
1.3 pages/index/index.vue引入Hot.vue组件
1.4 Hot组件内容为单个商品模块,所有引入了Commodity.vue组件。传递参数调整图片宽度和高度,

Hot组件代码如下:

<template>	<view class='hot'>				<Commodity :dataList='hotList' itemW='250rpx' bigH='220rpx'></Commodity>			</view></template><script>import Commodity from '../common/Commodity.vue'export default{	data () {		return {			hotList:[				{					id:1,					imgUrl:"../../static/img/hot1.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:2,					imgUrl:"../../static/img/hot2.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:3,					imgUrl:"../../static/img/hot3.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				}			]		}	},	components:{		Commodity	}}</script><style></style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

十、【首页】推荐店铺模块开发和处理

1.1 完成后的效果图:

1.2 components/index目录下新建Shop.vue组件
1.3 pages/index/index.vue引入Shop.vue组件
1.4 Shop.vue组件分为:上大图,下滑块的内容布局,滑块采用uni-app提供组件scroll-view。
1.4.1 scroll-view需要给父元素加入width:100%;white-space: nowrap;其内容需要加入样式display: inline-block;
1.5 滑块内容调用了单个商品组件,其中改变了是否换行以及文字大小,

Shop.vue具体代码如下:

<template>	<view class='shop'>		<view class='shop-item'>			<view class='shop-big'>				<image class='shop-big' src="../../static/img/shop.jpg" mode=""></image>			</view>			<scroll-view scroll-x="true" class='scroll-content'>				<view class='scroll-item'>					<Commodity 						:dataList='shopList'						wrap='no-wrap'						itemW='200rpx'						bigH='200rpx'						nameSize='20rpx'					></Commodity>				</view>			</scroll-view>		</view>	</view></template><script>import Commodity from '../common/Commodity.vue'export default {	data () {		return {			shopList:[				{					id:1,					imgUrl:"../../static/img/shop1.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:2,					imgUrl:"../../static/img/shop2.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:3,					imgUrl:"../../static/img/shop3.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:4,					imgUrl:"../../static/img/shop4.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:1,					imgUrl:"../../static/img/shop1.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:2,					imgUrl:"../../static/img/shop2.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:3,					imgUrl:"../../static/img/shop3.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				},				{					id:4,					imgUrl:"../../static/img/shop4.jpg",					name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",					pprice:"299",					oprice:"659",					discount:"5.2"				}			]		}	},	components:{		Commodity	}}</script><style scoped>.shop-big{	width:100%;	height: 350rpx;}.scroll-content{	width: 100%;	white-space: nowrap;}.scroll-item{	display: inline-block;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113

十一、【首页】隐藏滚动条和底部

1.1 隐藏全局滚动条,需要在pages.json的"app-plus"下设置一个属性:“scrollIndicator”:“none”
1.2 隐藏scroll-view滚动条需要在App.vue中添加样式:

::-webkit-scrollbar {      display: none;      width: 0 !important;      height: 0 !important;      -webkit-appearance: none;      background: transparent;  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

十二、【首页】顶栏滑块功能开发

1.1 完成效果

1.2 顶部滑块数据:

topBar:[					{name:'推荐'},					{name:'运动户外'},					{name:'服饰内衣'},					{name:'鞋靴箱包'},					{name:'美妆个护'},					{name:'家居数码'},					{name:'食品母婴'}				]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.3 顶部滑块样式布局:

<scroll-view scroll-x="true" class='scroll-content'>			<view				class='scroll-item'				v-for='(item,index) in topBar'				:key='index'				@tap='changeTab(index)'			>				<text :class='topBarIndex===index? "f-active-color":"f-color"'>{{item.name}}</text>			</view>		</scroll-view>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.4 内容滑动部分:

<swiper  @change='onChangeTab' :current="topBarIndex">			<swiper-item 				v-for='(item,index) in topBar'				:key='index'			>				<view>{{item.name}}</view>			</swiper-item>		</swiper>1.5 方法定义点击滑动跳转:changeTab(index){				if(this.topBarIndex === index){					return ;				}				this.topBarIndex = index;			},			onChangeTab(e){				this.changeTab(e.detail.current);			}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

十三、【首页】顶栏滑动跟随

1.1 顶部滑动跟随需要在scroll-view中添加scroll-into-view属性,其中代表滚动到哪个块中,匹配为子元素的id,也就是子元素需要加入id值,但是id值不可以为数字开头,那么代码如下:

<scroll-view :scroll-into-view='scrollIntoIndex'><view  :id="'top'+index" > </view></scroll-view>
  • 1
  • 2
  • 3

1.2 在changeTab方法中写入

this.scrollIntoIndex = 'top'+index;
  • 1

十四、【首页】改变内容块高度

1.1 获取可视区域高度可以使用uni.getSystemInfo(),但是在iso中是有bug的,所以的高度值不对。
1.2 我们修正bug思想是:获取组件元素的高度值的合,然后赋值到内容块中(style=’height’)。
1.3 具体代码如下:特别注意需要在onReady中写入

let view = uni.createSelectorQuery().select(".home-data");			view.boundingClientRect(data => {			    this.clentHeight = data.height;			}).exec();
  • 1
  • 2
  • 3
  • 4

十五、搭建nodejs后端环境

1.1 搭建后端目录
1.1.1 全局命令:

npm install express-generator -g
  • 1

1.1.2 进入项目目录:

express --view=ejs server
  • 1

1.2 前端请求后端接口【本地测试】
1.2.1 手机和电脑是一个wifi
1.2.2 不可以使用localhost,必须要使用ip地址
查ip地址:
mac :

ifconfig
  • 1

window:

ipconfig
  • 1

十六、请求接口渲染首页数据

1.1 添加请求接口方法

__init()__init(){				uni.request({					url:"http://192.168.8.6:3000/api/index_list/data",					success: (res) => {						let data = res.data.data;						this.topBar = data.topBar;						this.newTopBar = this.initData(data);					}				})			},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.2 添加存储数据方法

initData()initData(res){				let arr = [];				for(let i =0;i<this.topBar.length;i++){					let obj = {						data:[]					}					//获取首次数据					if(i==0){						obj.data = res.data;					}					arr.push(obj)				}				return arr;			},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

1.3 渲染首页数据

<block v-for='(k,i) in item.data' :key='i'>												<IndexSwiper v-if='k.type==="swiperList"' :dataList='k.data'></IndexSwiper>						<template v-if='k.type==="recommendList"' >							<Recommend :dataList='k.data'></Recommend>							<Card cardTitle='猜你喜欢'></Card>						</template>						<CommodityList v-if='k.type==="commodityList"' :dataList='k.data'></CommodityList>						</block>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

十七、修正可视区域高度问题

1.1 使用getSystemInfo获取可视区域高度,这里要注意ios、安卓、各种小程序表现形式不一样。
1.2 onready代码如下:

uni.getSystemInfo({				success: (res) => {					this.clentHeight = res.windowHeight - uni.upx2px(80)-this.getClientHeight();				}			})
  • 1
  • 2
  • 3
  • 4
  • 5

1.3 封装兼容方法

getClientHeight(){				const res = uni.getSystemInfoSync();				const system = res.platform;				if( system ==='ios' ){					return 44+res.statusBarHeight;				}else if( system==='android' ){					return 48+res.statusBarHeight;				}else{					return 0;				}							}				
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

十八、滑动不同板块展示不同数据

1.1 完成效果切换到不同页面展示不同数据

1.2 请求数据为:

addData(){				//拿到索引				let index = this.topBarIndex;				//拿到id				let id = this.topBar[index].id;				//请求不同的数据				uni.request({					url:'http://192.168.8.6:3000/api/index_list/'+id+'/data/1',					success: (res) => {						let data = res.data.data;						this.newTopBar[index].data= [...this.newTopBar[index].data,...data];					}				})			}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

十九、修正重复请求数据

1.1 原有问题:只要滑动或者点击都会请求一次数据。
1.2 修正逻辑:默认一个first值,滑动到某一个板块把当前的值修改成last,然后每次滑动都判断,如果值为first就加载数据,那么其实值为last了已经,所以就不重复请求数据了。
1.3 具体解决方法代码如下:

changeTab(index){				//每一次滑动==》赋值first				if( this.newTopBar[this.topBarIndex].load  ==='first'){					this.addData();				}			},addData(callback){//当请求结束后,重新赋值				this.newTopBar[index].load='last';},initData(res){let obj = {	data:[],load:"first"}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

二十、上拉加载更多数据

1.1 给scroll-view添加触底事件

<scroll-view @scrolltolower='loadMore(index)'>
  • 1

1.2 template中添加滑动显示文字的容器

<view class='load-text f-color'>	{{item.loadText}}</view>
  • 1
  • 2
  • 3

1.3 触底方法定义代码:

loadMore(index){								this.newTopBar[index].loadText = '加载中...';				//请求完数据 ,文字提示信息又换成【上拉加载更多...】				this.addData(()=>{					this.newTopBar[index].loadText = '上拉加载更多...';				})			}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.4 加载不同数据的page算法代码:

let page = Math.ceil(this.newTopBar[index].data.length / 5) + 1;
  • 1

二十一、request封装

1.1 对于uni.request封装有利于后期的维护。
1.2 在common目录中新建api目录,在api目录中新建request.js文件
1.3 request.js代码如下:

export default{	common:{		baseUrl:"http://192.168.8.6:3000/api",		data:{},		header:{			"Content-Type":"application/json",			"Content-Type":"application/x-www-form-urlencoded"		},		method:"GET",		dataType:"json"	},	request( options={} ){				uni.showLoading({		    title: '加载中'		});				options.url = this.common.baseUrl + options.url;		options.data = 	options.data || this.common.data;		options.header = options.header || this.common.header;		options.method = options.method || this.common.method;		options.dataType = 	options.dataType || this.common.dataType;		return new Promise((res,rej)=>{			uni.request({				...options,				success: (result) => {					if(result.statusCode != 200){						return rej();					}					setTimeout(function () {					    uni.hideLoading();					}, 2000);					let data = result.data.data;					res(data);				}			})		})	}}1.4 调用方式:$http.request({	url:'/index_list/'+id+'/data/'+page+''}).then((res)=>{	this.newTopBar[index].data = [...this.newTopBar[index].data,...res];}).catch(()=>{	uni.showToast({		title:'请求失败',		icon:'none'	})})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

二十二、进入搜索页面

1.1 在pages下创建搜索页面为:search
1.2 在index.vue中点击进入搜素页面

onNavigationBarButtonTap(e){			if(e.float=='left'){				uni.navigateTo({					url:'../search/search'				})			}		},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.3 在pages.jso中配置搜索页面头部

{            "path" : "pages/search/search",            "style" : {				"navigationBarBackgroundColor":"#FFFFFF",				"app-plus":{					"scrollIndicator":"none",					"titleNView":{						"searchInput":{							"placeholder":"nike",							"disabled":false,							"align":"left",							"autoFocus":true,							"borderRadius":"15px",							"backgroundColor":"#F7F7F7",							"placeholderColor":"#B3B3B3"						},						"buttons":[							{								"float":"right",								"color":"#636263",								"text":"搜索",								"fontSize":"16px",								"width":"60px"							}						]					}				}			}        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

二十三、搜索页面内容布局

1.1 页面布局代码:

<template>	<view class='search'>		<Lines />				<view class='search-item'>			<view class='search-title'>				<view class='f-color'>最近搜索</view>				<view class='iconfont icon-iconset0213'></view>			</view>			<view>				<view class='search-name f-color'>四件套</view>				<view class='search-name f-color'>面膜</view>			</view>		</view>				<view class='search-item'>			<view class='search-title'>				<view class='f-color'>热门搜索</view>			</view>			<view>				<view class='search-name f-color'>四件套</view>				<view class='search-name f-color'>面膜</view>			</view>		</view>			</view></template><script>	import Lines from '@/components/common/Lines.vue'	export default {		data() {			return {							}		},		components:{			Lines		},		methods: {					}	}</script><style scoped>.search-item{	padding:20rpx;}.search-title{	display: flex;	justify-content: space-between;}.search-name{	padding:4rpx 24rpx;	background-color: #E1E1E1;	display: inline-block;	border-radius: 26rpx;	margin:10rpx;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

二十四、进入搜索结果页

1.1 在pages中创建search-list页面
1.2 在search.vue中加入:跳转到search-list页面

onNavigationBarButtonTap(e){			if(e.float === 'right'){				uni.navigateTo({					url:"../search-list/search-list"				})			}		},1.3 在pages.json中配置搜索结果页面的头部{            "path" : "pages/search-list/search-list",            "style" : {           	"navigationBarBackgroundColor":"#FFFFFF",           	"app-plus":{           		"scrollIndicator":"none",           		"titleNView":{           			"searchInput":{           				"placeholder":"nike",           				"disabled":false,           				"align":"left",           				"borderRadius":"15px",           				"backgroundColor":"#F7F7F7",           				"placeholderColor":"#B3B3B3"           			},           			"buttons":[           				{           					"float":"right",           					"color":"#636263",           					"text":"筛选",           					"fontSize":"16px",           					"width":"60px"           				}           			]           		}           	}           }        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

二十五、搜索结果页布局和封装

1.1 在components下的common目录中新建ShopList.vue组件
1.2 上半部分布局,下半部分调用之前引入创建的商品列表组件

1.3 布局代码如下:

<template>	<view class='shop-list'>				<view class='shop-title f-color'>			<view class='shop-item'>				<view>价格</view>				<view class='shop-icon'>					<view class='iconfont icon-shangjiantou up'></view>					<view class='iconfont icon-xiajiantou down'></view>				</view>			</view>			<view class='shop-item'>				<view>折扣</view>				<view class='shop-icon'>					<view class='iconfont icon-shangjiantou up'></view>					<view class='iconfont icon-xiajiantou down'></view>				</view>			</view>			<view class='shop-item'>				<view>品牌</view>				<view class='shop-icon'>					<view class='iconfont icon-shangjiantou up'></view>					<view class='iconfont icon-xiajiantou down'></view>				</view>			</view>		</view>		<Lines />		<CommodityList :dataList='dataList'></CommodityList>	</view></template><script>import Lines from '@/components/common/Lines.vue'import CommodityList from './CommodityList.vue'export default {		data() {			return {				dataList:[					{						id:1,						imgUrl:"../../static/img/commodity1.jpg",						name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",						pprice:"299",						oprice:"659",						discount:"5.2"					},					{						id:2,						imgUrl:"../../static/img/commodity2.jpg",						name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",						pprice:"299",						oprice:"659",						discount:"5.2"					},					{						id:3,						imgUrl:"../../static/img/commodity3.jpg",						name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",						pprice:"299",						oprice:"659",						discount:"5.2"					},					{						id:4,						imgUrl:"../../static/img/commodity4.jpg",						name:"大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008大姨绒毛大款2020年必须买,不买你就不行了,爆款疯狂GG008",						pprice:"299",						oprice:"659",						discount:"5.2"					}				]			}		},		components:{			Lines,			CommodityList		},		methods: {					}	}</script><style scoped>.shop-title{	display: flex;}.shop-item{	flex:1;	display: flex;	justify-content: center;	align-items: center;	height: 80rpx;}.shop-icon{	position: relative;	margin-lef:10rpx;}.iconfont{	width:16rpx;	height: 8rpx;	position: absolute;	left:0;}.up{	top:-34rpx;}.down{	top:-24rpx;}</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111

总结

未完待续,更新中. . .

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发