py 1 rok pred
rodič
commit
fed7b1606f

+ 2 - 2
.env.js

@@ -3,8 +3,8 @@ let ENV_CONFIG = null;
 
 if (nodeEnv === 'development') {
     //开发环境
-    ENV_CONFIG = require('.env.prod.js');
-	// ENV_CONFIG = require('.env.dev.js');
+    // ENV_CONFIG = require('.env.prod.js');
+	ENV_CONFIG = require('.env.dev.js');
 } else {
     //生产环境
     ENV_CONFIG = require('.env.prod.js');

+ 3 - 1
api/common.js

@@ -34,4 +34,6 @@ export const commonApplet = (data) => request(commonUrl + 'applet', 'post', { ..
 // 获取弹窗通知公告
 export const commonPopNotice = (data) => request(commonUrl + 'pop_notice', 'post', { ...data })
 // 获取退款原因
-export const commonRefundReason = (data) => request(commonUrl + 'refund_reason', 'post', { ...data })
+export const commonRefundReason = (data) => request(commonUrl + 'refund_reason', 'post', { ...data })
+// 发送登录注册验证码
+export const commonRegisterSms = (data) => request(commonUrl + 'register_sms', 'post', { ...data })

+ 3 - 1
api/member.js

@@ -27,4 +27,6 @@ export const getAddressSchool = (data) => request(newsUrl + 'school', 'post', {
 // 新增&编辑地址时获取学校宿舍楼
 export const getAddressDorm = (data) => request(newsUrl + 'dorm', 'post', { ...data },false)
 // 获取用户是否有未读消息
-export const membeRmessage = (data) => request(newsUrl + 'message', 'post', { ...data },false)
+export const membeRmessage = (data) => request(newsUrl + 'message', 'post', { ...data },false)
+// 用户手机号注册
+export const membeRphoneLogin = (data) => request(newsUrl + 'phoneLogin', 'post', { ...data },false)

+ 7 - 1
api/shop.js

@@ -23,4 +23,10 @@ export const shopGoodsSpec = (data) => request(newsUrl + 'goodsSpec', 'post', {
 export const shopOrderCoupon = (data) => request(newsUrl + 'orderCoupon', 'post', { ...data },false)
 
 // 获取评论列表
-export const shopComment = (data) => request(newsUrl + 'comment', 'post', { ...data },false)
+export const shopComment = (data) => request(newsUrl + 'comment', 'post', { ...data },false)
+
+// 获取推荐店铺
+export const shopHome = (data) => request(newsUrl + 'home', 'post', { ...data },false)
+
+// 获取所有店铺用户今天吃啥
+export const shopAll = (data) => request(newsUrl + 'all', 'post', { ...data },false)

+ 27 - 8
common/css/common.css

@@ -193,6 +193,9 @@ image {
 }
 
 /* 字体大小 */
+.fs-18 {
+	font-size: 18rpx;
+}
 .fs-20 {
 	font-size: 20rpx;
 }
@@ -329,7 +332,9 @@ image {
 .fc-F93435 {
 	color: #F93435;
 }
-
+.fc-F43D04{
+	color: #F43D04;
+}
 .fc-F75820 {
 	color: #F75820;
 }
@@ -436,8 +441,14 @@ image {
 	background-color: #F6F6F6;
 }
 
-.bgc-FB3D03 {
-	background-color: #FB3D03;
+.bgc-F75C2B {
+	background-color: #F75C2B;
+}
+.bgc-FC8E17 {
+	background-color: #FC8E17;
+}
+.bgc-47B0F0 {
+	background-color: #47B0F0;
 }
 
 .bgc-F5F4F9 {
@@ -526,7 +537,9 @@ image {
 .p-t-20 {
 	padding-top: 20rpx;
 }
-
+.pt-33 {
+	padding-top: 33rpx;
+}
 .p-t-80 {
 	padding-top: 80rpx;
 }
@@ -558,7 +571,9 @@ image {
 .p-12-30 {
 	padding: 12rpx 30rpx;
 }
-
+.plr-30 {
+	padding: 0 30rpx;
+}
 .plr-32 {
 	padding: 0 32rpx;
 }
@@ -606,7 +621,9 @@ image {
 .mt-5 {
 	margin-top: 5rpx;
 }
-
+.mt-20 {
+	margin-top: 20rpx;
+}
 .mt-24 {
 	margin-top: 24rpx;
 }
@@ -646,7 +663,9 @@ image {
 .mr-12 {
 	margin-right: 12rpx;
 }
-
+.mr-14 {
+	margin-right: 14rpx;
+}
 .mr-16 {
 	margin-right: 16rpx;
 }
@@ -656,7 +675,7 @@ image {
 }
 
 .mr-20 {
-	margin-right: 20px;
+	margin-right: 20rpx;
 }
 
 .mr-24 {

+ 2 - 2
manifest.json

@@ -102,8 +102,8 @@
             "https" : false,
             "proxy" : {
                 "/api" : {
-                    // "target" : "https://test-userapi.sjzkeji.com",
-                    "target" : "https://userapi.sjzkeji.com",
+                    "target" : "https://test-userapi.sjzkeji.com",
+                    // "target" : "https://userapi.sjzkeji.com",
                     "changeOrigin" : true,
                     "secure" : false,
                     "pathRewrite" : {

+ 1 - 1
package-lock.json

@@ -1,5 +1,5 @@
 {
-  "name": "school_webUser",
+  "name": "school_webUserV2",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {

+ 5 - 6
pages.json

@@ -33,6 +33,11 @@
 				"navigationBarTitleText": "首页",
 				"enablePullDownRefresh": true
 			}
+		}, {
+			"path": "pages/login/index",
+			"style": {
+				"navigationBarTitleText": "登陆"
+			}
 		},
 		{
 			"path": "pages/order/index",
@@ -46,12 +51,6 @@
 				"navigationBarTitleText": "我的"
 			}
 		},
-		{
-			"path": "pages/login/index",
-			"style": {
-				"navigationBarTitleText": "登陆"
-			}
-		},
 		{
 			"path": "pages/index/search-record",
 			"style": {

+ 279 - 169
pages/index/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="index-box">
-		<image class="bg-img" src="@/static/img/index/index-bg.png" mode="scaleToFill"></image>
+		<!-- <image class="bg-img" src="@/static/img/index/index-bg.png" mode="scaleToFill"></image> -->
 		<view class="nav-z">
 			<Nav class="" :leftShow='false' :customNav='true' :bgckgroundBox='bgckgroundBox'>
 				<template>
@@ -16,14 +16,15 @@
 			</Nav>
 		</view>
 		<!-- 搜索 -->
-		<view class="index-search box-border-box mt-4" @click="toUrl(1)" :style="[{'top': BarH + 'px','background':bgckgroundSearch}]">
-			<view class="index-search-box box-border-box align-items-center">
-				<image class="wh32" src="@/static/img/index/ss.png" mode=""></image>
-				<view class="fs-28 fc-9 ml-10">搜索店铺名称或者商品名称</view>
+		<view class="index-search box-border-box mt-20" @click="toUrl(1)"
+			:style="[{'top': BarH + 'px','background':bgckgroundSearch}]">
+			<view class="index-search-box box-border-box align-items-center bgc-f">
+				<image class="wh27" src="@/static/img/index/ss.png" mode=""></image>
+				<view class="fs-24 fc-a ml-10">搜索店铺名称或商品名称</view>
 				<view class="fs-28 fc-f index-search-box-buttom">搜索</view>
 			</view>
 		</view>
-		<view class="index-box-1 ">
+		<view class="index-box-1">
 			<!-- 轮播 -->
 			<view class="box-border-box plr-24 mb-32">
 				<uni-swiper-dot :info="bannerList" mode="dot" :dotsStyles="dotStyle" :current="current">
@@ -36,13 +37,13 @@
 				</uni-swiper-dot>
 			</view>
 			<!-- 导航 -->
-			<view class="box-border-box plr-24">
-				<view class="nav-list flex-wrap-wrap box-border-box mb-22">
+			<view class="box-border-box mb-22 plr-24">
+				<view class="nav-list align-items-flex-end flex-wrap-wrap box-border-box pt-33 bgc-f b-rad-20">
 					<view class="nav-list-item" v-for="(item,i) in navList" :key="i" @click="toUrl(item.type)"
 						v-show="item.appletAudit == 0">
-						<view class="">
-							<image :src="item.img" mode="scaleToFill"></image>
-							<view class="fs-26 fc-3 text-align-center">{{item.name}}</view>
+						<view class="flex-direction align-items-center title-img-box">
+							<image class="title-img mb-16" :src="item.img" mode="scaleToFill"></image>
+							<view class="fs-24 fc-0 text-align-center">{{item.name}}</view>
 						</view>
 					</view>
 				</view>
@@ -50,38 +51,92 @@
 			<!-- 通知 -->
 			<view class="box-border-box plrb-24">
 				<view class="msg-box align-items-center box-border-box">
-					<view class="rebang-box align-items-center flex-justify-center" @click="goSchool()">
-						<view class="rebang fs-32 fc-f">
-							校园热榜
+					<image class="rb-bg" src="@/static/img/index/rb-bg.png" mode=""></image>
+					<image class="xyrb-img mr-30 z-2" src="@/static/img/index/xyrb.png" mode=""></image>
+					<view class="flex-direction flex-justify-space z-2 h-100">
+						<view class="align-items-center" v-for="(item,i) in noticeList" :key="i"
+							@click="toNoticeDet(item)">
+							<view class="serial-num mr-10 fs-18 fc-f text-align-center"
+								:class="i + 1 === 1?'bgc-F75C2B':i + 1 === 2?'bgc-FC8E17':'bgc-47B0F0'">
+								{{ i + 1}}
+							</view>
+							<view class="fs-24 fc-0 text-overflow-ellipsis-one max-w-358">
+								{{item.content}}
+							</view>
 						</view>
-						<view class="sj-box"></view>
 					</view>
-					<!-- <image class="image-1" src="@/static/img/index/index-tz.png" mode="scaleToFill"></image> -->
-					<!-- <view class="box-1 fs-20 fc-41ABF5">公告</view> -->
-					<swiper class="tz-swiper p-16 box-border-box" :vertical="true" circular :autoplay="true"
-						:interval="3000" :duration="500">
-						<swiper-item v-for="(item,i) in noticeList" :key="i" @click="toNoticeDet(item)"
-							class="align-items-center flex-justify-space">
-							<view class="fs-30 fc-3 text-overflow-ellipsis mr-16">
-								<span
-									class="fc-FE9E11 fs-30">{{i+1 >= 10?'':'0'}}{{i+1}}</span>{{'&nbsp;' + '&nbsp;' + item.content}}
+				</view>
+			</view>
+			<!-- 明星店铺 -->
+			<view class="plr-30 box-border-box mb-20 align-items-center flex-justify-space">
+				<view class="flex-1 mr-20 b-rad-20 mxdq-box box-border-box">
+					<image class="tj-bg" src="@/static/img/index/tj-bg.png" mode=""></image>
+					<image class="mxdp mb-24 z-2" src="@/static/img/index/mxdp.png" mode=""></image>
+					<view class="align-items-center flex-wrap-wrap z-2">
+						<image v-for="(item,index) in shopHomeData" class="tj-item mr-12 mb-12 b-rad-12"
+							:src="item.shop_logo" mode="" @click="toShop(item)"></image>
+					</view>
+				</view>
+				<image class="xzkn-img" src="@/static/img/index/xzkn.png" mode=""></image>
+			</view>
+			<!-- 限时秒杀 -->
+			<view class="spike-box box-border-box" v-if="seckillGoodsList.length > 0">
+				<view class="xsms-box box-border-box">
+					<image class="tj-bg" src="@/static/img/index/tj-bg.png" mode=""></image>
+					<image class="xsms-img mb-26 z-2" src="@/static/img/index/xsms.png" mode=""></image>
+					<swiper class="ms-swiper" circular :indicator-dots="false" :autoplay="true">
+						<swiper-item>
+							<view class="flex-wrap-wrap">
+								<view class="w-31" v-for="(item,index) in seckillGoodsList" :key="index"
+									@click="toShop(item)">
+									<view class="mr-14 mb-32" v-if="index + 1 < 7">
+										<image class="xsms-item-img mb-18 b-rad-12" :src="item.goods_image"
+											mode="aspectFill"></image>
+										<view class="max-w-200 fs-24 fc-0 text-overflow-ellipsis-one">
+											{{item.goods_name}}
+										</view>
+										<view class="display-flex flex-justify-space">
+											<view class="align-items-center">
+												<view class="fs-24 fc-F43D04 mr-8">
+													¥ <text class="fs-28 fc-F43D04">{{item.seckill_money}}</text>
+												</view>
+												<view class="fs-20 fc-a text-line-through">
+													¥{{item.line_price}}
+												</view>
+											</view>
+											<image class="b-img" src="@/static/img/index/b.png" mode=""></image>
+										</view>
+									</view>
+								</view>
 							</view>
-							<view class="align-items-center">
-								<image src="@/static/img/my/rd.png" mode="" class="rd-img"></image>
-								<view class="fs-26 fc-96ECFB">
-									+{{item.heat}}
+						</swiper-item>
+						<swiper-item>
+							<view class="flex-wrap-wrap">
+								<view class="w-31" v-for="(item,index) in seckillGoodsList" :key="index"
+									@click="toShop(item)">
+									<view class="mr-14 mb-32" v-if="index + 1 > 6">
+										<image class="xsms-item-img mb-18 b-rad-12" :src="item.goods_image"
+											mode="aspectFill"></image>
+										<view class="max-w-200 fs-24 fc-0 text-overflow-ellipsis-one">
+											{{item.goods_name}}
+										</view>
+										<view class="display-flex flex-justify-space">
+											<view class="align-items-center">
+												<view class="fs-24 fc-F43D04 mr-8">
+													¥ <text class="fs-28 fc-F43D04">{{item.seckill_money}}</text>
+												</view>
+												<view class="fs-20 fc-a text-line-through">
+													¥{{item.line_price}}
+												</view>
+											</view>
+											<image class="b-img" src="@/static/img/index/b.png" mode=""></image>
+										</view>
+									</view>
 								</view>
 							</view>
 						</swiper-item>
 					</swiper>
-					<!-- <image class="image-2" src="@/static/img/toRight.png" mode="scaleToFill"></image> -->
-				</view>
-			</view>
-			<!-- 限时秒杀 -->
-			<view class="spike-box box-border-box" v-if="seckillGoodsList.length > 0">
-				<view class="xsms-box mb-32">
-					<image class="image-title" src="@/static/img/index/index-xsms.png" mode="scaleToFill"></image>
-					<view class="xsms-box-list-f box-border-box plr-12">
+					<!-- 					<view class="xsms-box-list-f box-border-box plr-12">
 						<scroll-view class="xsms-box-list display-flex" scroll-x="true">
 							<view class="xsms-box-list-item box-border-box p-8" v-for="(item,i) in seckillGoodsList"
 								:key="i" @click="toShop(item)">
@@ -92,12 +147,9 @@
 									<span class="fs-20 fw-b fc-FB3D03">¥</span><span
 										class="fs-32 fw-b fc-FB3D03">{{item.seckill_money}}</span>
 								</view>
-								<!-- <view class="fs-20 fc-9 text-line-through">¥{{item.line_price}}</view> -->
-								<image class="xsms-box-list-item-img-2" src="@/static/img/index/index-q.png"
-									mode="scaleToFill"></image>
 							</view>
 						</scroll-view>
-					</view>
+					</view> -->
 				</view>
 			</view>
 			<!-- 类型选择 -->
@@ -235,7 +287,8 @@
 		receiveCoupon
 	} from '@/api/coupon.js'
 	import {
-		shopInfo
+		shopInfo,
+		shopHome
 	} from "@/api/shop.js"
 	import {
 		membeRmessage
@@ -256,7 +309,7 @@
 						type: 2
 					},
 					{
-						name: "代取",
+						name: "快递代取",
 						img: require('@/static/img/index/index-dq.png'),
 						type: 3
 					},
@@ -266,40 +319,30 @@
 						type: 7
 					},
 					{
-						name: "团购",
+						name: "特价团购",
 						img: require('@/static/img/index/index-tg.png'),
 						type: 5
 					},
 					{
-						name: "票务",
-						img: require('@/static/img/index/index-pw.png'),
-						type: 4
-					},
-					{
-						name: "干洗",
-						img: require('@/static/img/index/index-gx.png'),
+						name: "领券中心",
+						img: require('@/static/img/index/index-lqzx.png'),
 						type: 6
 					},
 					{
-						name: "租凭",
-						img: require('@/static/img/index/index-zp.png'),
-						type: 9
-					},
-					{
-						name: "二手市场",
-						img: require('@/static/img/index/index-esss.png'),
-						type: 10
-					},
-					{
-						name: "回收",
-						img: require('@/static/img/index/index-hs.png'),
-						type: 11
+						name: "跑腿代拿",
+						img: require('@/static/img/index/index-ptdn.png'),
+						type: 7
 					},
 					{
 						name: "实习岗位",
 						img: require('@/static/img/index/index-sxgw.png'),
 						type: 8
 					},
+					{
+						name: "平台客服",
+						img: require('@/static/img/index/index-ptkf.png'),
+						type: 9
+					},
 				],
 				schoolData: {
 					school_name: '',
@@ -327,7 +370,8 @@
 				pop_notice: {
 					content: '' // 公告通知
 				},
-				popType: true
+				popType: true,
+				shopHomeData: {}
 			}
 		},
 
@@ -371,15 +415,19 @@
 			let userToken = uni.getStorageSync('token')
 			if (userToken) {
 				this.commonPopNotice()
+				this.membeRmessage()
 				// this.couponHome()
 			}
 			uni.removeStorageSync('orderInfoType')
-			this.membeRmessage()
 		},
-		onLoad() {
+		onLoad(data) {
+			if (data.inviteCode !== undefined) {
+				uni.setStorageSync('inviteCode', data.inviteCode)
+			}
 			this.page = 1;
 			this.goodsList = [];
 			this.getGoodsList();
+			this.shopHome()
 		},
 		mounted() {
 			this.getHeight()
@@ -417,6 +465,13 @@
 			})
 		},
 		methods: {
+			shopHome() {
+				shopHome().then((res) => {
+					if (res.code === 1) {
+						this.shopHomeData = res.data
+					}
+				})
+			},
 			membeRmessage() {
 				membeRmessage().then((res) => {
 					if (res.code === 1) {
@@ -745,6 +800,90 @@
 	}
 </script>
 <style lang="scss" scoped>
+	.b-img{
+		width: 39rpx;
+		height: 41rpx;
+	}
+	.w-31 {
+		width: 31%;
+	}
+
+	.max-w-200 {
+		max-width: 200rpx;
+	}
+
+	.xsms-item-img {
+		width: 200rpx;
+		height: 200rpx;
+	}
+
+	.xsms-box {
+		width: 100%;
+		height: 706rpx;
+		padding: 25rpx 0rpx 1rpx 30rpx;
+		position: relative;
+	}
+
+	.ms-swiper {
+		width: 100%;
+		height: 100%;
+	}
+
+	.xsms-img {
+		width: 139rpx;
+		height: 31rpx;
+	}
+
+	.tj-item {
+		width: 108rpx;
+		height: 108rpx;
+	}
+
+	.mxdp {
+		width: 317rpx;
+		height: 31rpx;
+	}
+
+	.mxdq-box {
+		min-height: 342rpx;
+		position: relative;
+		padding: 25rpx 17rpx 18rpx 30rpx;
+	}
+
+	.tj-bg {
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 100%;
+	}
+
+	.xzkn-img {
+		width: 139rpx;
+		height: 343rpx;
+		border-radius: 20rpx;
+	}
+
+	.h-100 {
+		height: 100%;
+	}
+
+	.max-w-358 {
+		max-width: 358rpx;
+	}
+
+	.serial-num {
+		width: 25rpx;
+		height: 22rpx;
+		line-height: 22rpx;
+		border-radius: 10rpx 2rpx 10rpx 2rpx;
+	}
+
+	.z-2 {
+		position: relative;
+		z-index: 2;
+	}
+
 	.w-10 {
 		width: 10rpx;
 	}
@@ -787,17 +926,18 @@
 	}
 
 	.spike-box {
-		padding: 24rpx 24rpx 0;
+		padding: 0 24rpx;
 	}
 
-	.wh32 {
-		width: 32rpx;
-		height: 32rpx;
+	.wh27 {
+		width: 27rpx;
+		height: 27rpx;
 	}
 
 	.nav-z {
 		position: relative;
 		z-index: 1 !important;
+		background: linear-gradient(-90deg, #3BB5FE, #62C4FF);
 	}
 
 	.wh-40 {
@@ -880,12 +1020,12 @@
 			// height: 3000rpx;
 			.swiper {
 				width: 702rpx;
-				height: 220rpx;
+				height: 280rpx;
 				border-radius: 20rpx;
 
 				.swiper-item {
 					width: 702rpx;
-					height: 220rpx;
+					height: 280rpx;
 					border-radius: 20rpx;
 				}
 			}
@@ -894,120 +1034,91 @@
 				// padding: 0 22rpx;
 
 				.nav-list-item {
-					width: 20%;
-					margin-bottom: 16rpx;
+					width: 25%;
+					margin-bottom: 35rpx;
 
-					image {
-						width: 88rpx;
-						height: 88rpx;
-						margin: 0 auto;
+					.title-img-box {
+						.title-img {
+							width: 80rpx;
+							height: 76rpx;
+						}
 					}
 				}
 
-				// .nav-list-item:nth-child(7) {
-				// 	margin-right: 42rpx !important;
-				// }
-
-				// .nav-list-item:nth-child(8) {
-				// 	margin-right: 46rpx !important;
-				// }
-
-				// .nav-list-item:nth-child(9) {
-				// 	margin-right: 44rpx !important;
-				// }
-
-				// .nav-list-item:nth-child(5),
-				// .nav-list-item:nth-child(10) {
-				// 	margin-right: 0;
-				// }
-			}
-
-			.msg-box {
-				width: 100%;
-				// height: 66rpx;
-				background: #F7F8FC;
-				border-radius: 12rpx;
-				padding: 0 14rpx;
-
-				.image-1 {
-					width: 72rpx;
-					height: 32rpx;
-					margin-right: 10rpx;
+				.nav-list-item:nth-child(3) {
+					.title-img-box {
+						.title-img {
+							width: 92rpx;
+							height: 82rpx;
+						}
+					}
 				}
 
-				.image-2 {
-					width: 40rpx;
-					height: 40rpx;
-					margin-left: auto;
+				.nav-list-item:nth-child(4) {
+					.title-img-box {
+						.title-img {
+							width: 82rpx;
+							height: 73rpx;
+						}
+					}
 				}
 
-				.box-1 {
-					width: 50rpx;
-					height: 26rpx;
-					border-radius: 2rpx;
-					border: 2rpx solid #41ABF5;
-					text-align: center;
-					line-height: 26rpx;
-					margin-right: 10rpx;
+				.nav-list-item:nth-child(5) {
+					.title-img-box {
+						.title-img {
+							width: 79rpx;
+							height: 86rpx;
+						}
+					}
 				}
 
-				.tz-swiper {
-					width: 100%;
-					height: 130rpx;
-					background: #F3F3F3;
-					border-radius: 0 20rpx 20rpx 0;
-
-					.tz-swiper-item {
-						color: #666;
-						font-size: 30rpx;
+				.nav-list-item:nth-child(6) {
+					.title-img-box {
+						.title-img {
+							width: 93rpx;
+							height: 99rpx;
+						}
 					}
 				}
-			}
 
-			.xsms-box {
-				.image-title {
-					width: 100%;
-					height: 92rpx;
+				.nav-list-item:nth-child(7) {
+					.title-img-box {
+						.title-img {
+							width: 106rpx;
+							height: 84rpx;
+						}
+					}
 				}
 
-				.xsms-box-list-f {
-					width: 100%;
-					height: 310rpx;
-					background: linear-gradient(180deg, #ABDEFE 4%, #C9EAFF 30%, #C9EAFF 100%);
-					border-radius: 0rpx 0rpx 20rpx 20rpx;
+				.nav-list-item:nth-child(8) {
+					.title-img-box {
+						.title-img {
+							width: 81rpx;
+							height: 88rpx;
+						}
+					}
 				}
+			}
 
-				.xsms-box-list {
-					white-space: nowrap;
-
-					.xsms-box-list-item:last-child {
-						margin-right: 0;
-					}
+			.msg-box {
+				width: 100%;
+				height: 180rpx;
+				border-radius: 12rpx;
+				padding: 30rpx 40rpx;
+				position: relative;
+			}
 
-					.xsms-box-list-item {
-						width: 180rpx;
-						height: 300rpx;
-						background: #FFFFFF;
-						border-radius: 8rpx;
-						margin-right: 8rpx;
-						position: relative;
-						display: inline-block;
-
-						.xsms-box-list-item-img-1 {
-							width: 164rpx;
-							height: 175rpx;
-							border-radius: 9rpx;
-						}
+			.rb-bg {
+				position: absolute;
+				left: 0;
+				bottom: 0;
+				width: 100%;
+				height: 100%;
+			}
 
-						.xsms-box-list-item-img-2 {
-							position: absolute;
-							width: 62rpx;
-							height: 36rpx;
-							right: 0;
-							bottom: 8rpx;
-						}
-					}
-				}
+			.xyrb-img {
+				width: 108rpx;
+				height: 123rpx;
 			}
 
 			.type-list-box {
@@ -1145,12 +1256,11 @@
 				height: 72rpx;
 				padding: 0 6rpx 0 24rpx;
 				border-radius: 200rpx;
-				border: 2rpx solid #4FB3EF;
 
 				.index-search-box-buttom {
 					width: 120rpx;
 					height: 60rpx;
-					background: linear-gradient(90deg, #57CAFF 0%, #41ABF5 100%);
+					background: linear-gradient(-90deg, #3BB5FE, #62C4FF);
 					border-radius: 200rpx;
 					margin-left: auto;
 					line-height: 60rpx;

+ 121 - 13
pages/login/index.vue

@@ -1,6 +1,12 @@
 <template>
 	<view class="permission">
-		<Nav :leftShow='false' title="君子校园"></Nav>
+		<Nav :leftShow='false' :customNav='true' title="君子校园">
+			<template>
+				<view slot="custom" class="text-align-center fs-36 fw-600">
+					授权登录/注册
+				</view>
+			</template>
+		</Nav>
 		<view class="user-permission">
 			<view class="head">
 				<view class="head-button">
@@ -9,12 +15,27 @@
 				</view>
 			</view>
 
-			<view class="hint-box">
+			<!-- 			<view class="hint-box">
 				<view class="hint-title">该程序将获取以下授权:</view>
 				<view class="hint-info">获取你的公开信息(昵称,头像等)</view>
 				<view class="hint-info">获取你的小程序唯一标示用于账户授权登陆</view>
+			</view> -->
+			<view class="phone-box mb-22">
+				<image class="icons" src="@/static/img/my/yzm-icons.png" mode=""></image>
+				<input v-model="from.phone" type="number" class="uni-input b-rad-200" maxlength="11" focus
+					placeholder="请输入手机号" />
+			</view>
+			<view class="flex-justify-space mb-40">
+				<view class="phone-box mr-24 common-view-css">
+					<image class="icons" src="@/static/img/my/yzm-icons.png" mode=""></image>
+					<input v-model="from.sms_code" type="number" class="uni-input b-rad-200" placeholder="请输入验证码" />
+				</view>
+				<view class="get-code-box" @click="getCode()">
+					<view class="get-but fc-57CAFF fs-32 text-align-center b-rad-200">
+						{{codeNUm == 0?codeText:codeNUm + 's'}}
+					</view>
+				</view>
 			</view>
-
 			<view class="hint">
 				<view class="hint-left-circle" @click.stop="isFlag = !isFlag">
 					<view v-if="!isFlag" class="hint-circle"></view>
@@ -25,14 +46,12 @@
 				<view class="hint-text-2" @click="isPop = true;html = privacy_protocol">《隐私协议》</view>
 			</view>
 
-
 			<view class="button">
-				<view class="common permission-login" @click="login">微信授权登录</view>
+				<view class="common permission-login" @click="login">授权登录/注册</view>
 				<view class="common permission-cancel" @click="noLogin">暂不登录</view>
 			</view>
 		</view>
 
-
 		<view v-if="isPop" class="pop-view">
 			<view class="pop-view-box">
 				<view class="pop-info" v-html="html"></view>
@@ -48,7 +67,10 @@
 <script>
 	import tools from "@/service/tools";
 	import {
-		appletLogin
+		commonRegisterSms
+	} from '@/api/common.js';
+	import {
+		membeRphoneLogin
 	} from "@/api/member";
 	import {
 		getAgreement
@@ -59,23 +81,55 @@
 			return {
 				isFlag: false,
 				isAjax: false,
-
 				from: {
 					code: "",
+					system_type: '',
+					phone: '',
+					sms_code: '',
+					invite_code: ''
 				},
+				isCode: false,
+				codeText: '获取验证码',
+				codeNUm: 0,
 				isPop: false,
 				html: '',
 				member_agreement: '', //用户协议
 				privacy_protocol: '', //隐私协议
 			};
 		},
-		onLoad() {
-
-		},
+		onLoad() {},
 		mounted() {
 			this.getPrivacyInfo()
+			this.getType()
 		},
 		methods: {
+			getCode() {
+				if (!this.from.phone) {
+					return tools.error('请输入手机号')
+				}
+				if (this.isCode) {
+					return
+				}
+				this.isCode = true;
+				commonRegisterSms({
+					phone: this.from.phone,
+				}).then((res) => {
+					if (res.code === 1) {
+						this.codeNUm = 60;
+						let timer = setInterval(() => {
+							this.codeNUm -= 1;
+							if (this.codeNUm <= 0) {
+								clearInterval(timer);
+								this.isCode = false;
+								this.codeText = '获取验证码'
+							}
+						}, 1000);
+					} else {
+						this.isCode = false;
+						tools.error('获取验证码失败,请稍后重试')
+					}
+				})
+			},
 			getPrivacyInfo() {
 				getAgreement().then((res) => {
 					if (res.code === 1) {
@@ -84,7 +138,22 @@
 					}
 				})
 			},
-
+			getType() {
+				let that = this
+				uni.getProvider({
+					service: 'oauth',
+					success: function(res) {
+						if (res.provider[0] === 'weixin') {
+							that.from.system_type = 2
+						} else if (res.provider[0] === 'qq') {
+							that.from.system_type = 3
+						} else {
+							that.from.system_type = 1
+						}
+						uni.setStorageSync('system_type', that.from.system_type)
+					}
+				});
+			},
 			setCheck(type) {
 				if (type === 1) {
 					this.isFlag = false
@@ -101,7 +170,12 @@
 				}
 				this.isAjax = true;
 				uni.login({
+					//#ifdef MP-WEIXIN
 					provider: "weixin",
+					//#endif
+					//#ifdef MP-QQ
+					provider: "qq",
+					//#endif
 					success: (loginRes) => {
 						this.from.code = loginRes.code;
 						this.getUserInfo();
@@ -118,7 +192,8 @@
 				});
 			},
 			async getUserInfo() {
-				const res = await appletLogin(this.from);
+				this.from.invite_code = uni.getStorageSync('inviteCode');
+				const res = await membeRphoneLogin(this.from);
 				if (res.code == 1) {
 					uni.setStorageSync('token', res.data.token)
 					uni.setStorageSync('m_id', res.data.m_id)
@@ -260,6 +335,7 @@
 				display: flex;
 				flex-direction: column;
 				align-items: center;
+				margin-bottom: 40rpx;
 
 				button::after {
 					border-color: #fff !important;
@@ -335,4 +411,36 @@
 			}
 		}
 	}
+
+	.phone-box {
+		position: relative;
+	}
+
+	.uni-input {
+		// width: 100%;
+		background: #F6F6F6;
+		height: 80rpx;
+		line-height: 80rpx;
+		padding: 0 0 0 68rpx;
+	}
+
+	.icons {
+		position: absolute;
+		top: 30rpx;
+		left: 24rpx;
+		width: 32rpx;
+		height: 32rpx;
+	}
+
+	.get-code-box {
+		width: 208rpx;
+	}
+
+	.get-but {
+		width: 100%;
+		height: 80rpx;
+		line-height: 80rpx;
+		border: 2rpx solid #57CAFF;
+		box-sizing: border-box;
+	}
 </style>

+ 6 - 1
service/ajax.js

@@ -11,6 +11,9 @@ export const request = (url, method, data, show = false) => {
   let token=uni.getStorageSync('token')
   data.token = token;
   data.m_id = uni.getStorageSync('m_id')
+  data.school_id = uni.getStorageSync('school_id');
+  data.operate_id = uni.getStorageSync('operate_id');
+  data.system_type = uni.getStorageSync('system_type');
   if (show) {
     tools.showLoading();
   }
@@ -32,7 +35,9 @@ export const request = (url, method, data, show = false) => {
         if (res.statusCode === 200) {
           tools.hideLoading();
           if (res.data.code * 1 === 401) {
-            uni.clearStorageSync()
+            // uni.clearStorageSync()
+			uni.removeStorageSync('token')
+			uni.removeStorageSync('m_id')
 			setTimeout(()=>{
 				uni.reLaunch({
 				  url: '/pages/login/index'

+ 42 - 30
service/router.js

@@ -1,43 +1,55 @@
 // router.js
-import { RouterMount, createRouter, runtimeQuit } from '@/js_sdk/hhyang-uni-simple-router/uni-simple-router';
+import {
+	RouterMount,
+	createRouter,
+	runtimeQuit
+} from '@/js_sdk/hhyang-uni-simple-router/uni-simple-router';
 import tools from "@/service/tools";
 const router = createRouter({
-    platform: process.env.VUE_APP_PLATFORM,
-    routerErrorEach:({type,level,...args})=>{
-        // #ifdef APP-PLUS
-        if(type===3){
-            router.$lockStatus=false;
-           tools.onBackPress()
-        }
-        // #endif
-    },
-    routes: [...ROUTES]
+	platform: process.env.VUE_APP_PLATFORM,
+	routerErrorEach: ({
+		type,
+		level,
+		...args
+	}) => {
+		// #ifdef APP-PLUS
+		if (type === 3) {
+			router.$lockStatus = false;
+			tools.onBackPress()
+		}
+		// #endif
+	},
+	routes: [...ROUTES]
 });
 //全局路由前置守卫
-const whiteList = ['/pages/login/index','/pages/index/index','/pages/order/index','/pages/me/index','/pages-address/select-school']
+const whiteList = ['/pages/login/index', '/pages/index/index', '/pages/order/index', '/pages/me/index',
+	'/pages-address/select-school'
+]
 
 router.beforeEach((to, from, next) => {
-    let userToken = uni.getStorageSync('token')
-    // if (to.query.token ) {
-    //     userToken = to.query.token;
-    //     uni.setStorageSync('token',userToken)
-    // }else {
-    //     userToken = uni.getStorageSync('token')
-    // }
-    
-
-    if(whiteList.indexOf(to.path)<0 && !userToken){
-        next('/pages/login/index')
-    }else {
-		next()
-    }
+	let userToken = uni.getStorageSync('token')
+	let school_id = uni.getStorageSync('school_id');
+	let operate_id = uni.getStorageSync('operate_id');
+	if (whiteList.indexOf(to.path) < 0 && !userToken) {
+		next('/pages/login/index')
+	} else {
+		if (!school_id && !operate_id) {
+			if (whiteList.indexOf(to.path) > 0) {
+				next()
+			} else {
+				next('/pages-address/select-school')
+			}
+		} else {
+			next()
+		}
+	}
 });
 // 全局路由后置守卫
 router.afterEach((to, from) => {
-    // console.log('后置守卫to------', to)
+	// console.log('后置守卫to------', to)
 })
 
 export {
-    router,
-    RouterMount
-}
+	router,
+	RouterMount
+}

BIN
static/img/index/1.png


BIN
static/img/index/2.png


BIN
static/img/index/3.png


BIN
static/img/index/b.png


BIN
static/img/index/index-bg.png


BIN
static/img/index/index-dq.png


BIN
static/img/index/index-esss.png


BIN
static/img/index/index-gx.png


BIN
static/img/index/index-hs.png


BIN
static/img/index/index-lqzx.png


BIN
static/img/index/index-ptdn.png


BIN
static/img/index/index-ptkf.png


BIN
static/img/index/index-pw.png


BIN
static/img/index/index-q.png


BIN
static/img/index/index-sxgw.png


BIN
static/img/index/index-tg.png


BIN
static/img/index/index-tz.png


BIN
static/img/index/index-wm.png


BIN
static/img/index/index-xsms.png


BIN
static/img/index/index-xyq.png


BIN
static/img/index/index-zp.png


BIN
static/img/index/mxdp.png


BIN
static/img/index/pw.png


BIN
static/img/index/qwzd.png


BIN
static/img/index/rb-bg.png


BIN
static/img/index/ss.png


BIN
static/img/index/tj-bg.png


BIN
static/img/index/xsms.png


BIN
static/img/index/xyrb.png


BIN
static/img/index/xzkn.png


+ 110 - 110
yarn.lock

@@ -3,127 +3,127 @@
 
 
 "@babel/parser@^7.18.4":
-  version "7.19.0"
-  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz"
-  integrity sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==
+  "integrity" "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw=="
+  "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz"
+  "version" "7.19.0"
 
 "@types/html5plus@1.0.2":
-  version "1.0.2"
-  resolved "https://registry.npmjs.org/@types/html5plus/-/html5plus-1.0.2.tgz"
-  integrity sha512-OklP5lrmLq8/6TUOLgWc0LndUVvAiTWX5dnyoCFhIUtFW9opWsnCtG/UxPgeuC28Rv2XNbFfft/hEEI39P/4Ag==
+  "integrity" "sha512-OklP5lrmLq8/6TUOLgWc0LndUVvAiTWX5dnyoCFhIUtFW9opWsnCtG/UxPgeuC28Rv2XNbFfft/hEEI39P/4Ag=="
+  "resolved" "https://registry.npmjs.org/@types/html5plus/-/html5plus-1.0.2.tgz"
+  "version" "1.0.2"
 
 "@types/uni-app@1.4.4":
-  version "1.4.4"
-  resolved "https://registry.npmjs.org/@types/uni-app/-/uni-app-1.4.4.tgz"
-  integrity sha512-ZTXnrCTblZyoLIoKbTv1Whz1nxrTcM7vg0qGXzDpXP8m9MqdjKt48N3FffQT1IsJWNkxbvJ1Eg5UHDaq+k+oBQ==
+  "integrity" "sha512-ZTXnrCTblZyoLIoKbTv1Whz1nxrTcM7vg0qGXzDpXP8m9MqdjKt48N3FffQT1IsJWNkxbvJ1Eg5UHDaq+k+oBQ=="
+  "resolved" "https://registry.npmjs.org/@types/uni-app/-/uni-app-1.4.4.tgz"
+  "version" "1.4.4"
   dependencies:
-    vue "^2.6.8"
+    "vue" "^2.6.8"
 
 "@vue/compiler-sfc@2.7.10":
-  version "2.7.10"
-  resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.10.tgz"
-  integrity sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==
+  "integrity" "sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q=="
+  "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.10.tgz"
+  "version" "2.7.10"
   dependencies:
     "@babel/parser" "^7.18.4"
-    postcss "^8.4.14"
-    source-map "^0.6.1"
-
-crypto-js@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz"
-  integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
-
-csstype@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz"
-  integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==
-
-js-base64@^2.6.4:
-  version "2.6.4"
-  resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz"
-  integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
-js-base64@3.7.2:
-  version "3.7.2"
-  resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz"
-  integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==
-
-jweixin-module@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz"
-  integrity sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==
-
-nanoid@^3.3.4:
-  version "3.3.4"
-  resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
-  integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
-
-picocolors@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
-  integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-
-postcss@^8.4.14:
-  version "8.4.16"
-  resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz"
-  integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==
+    "postcss" "^8.4.14"
+    "source-map" "^0.6.1"
+
+"crypto-js@^4.1.1":
+  "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+  "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz"
+  "version" "4.1.1"
+
+"csstype@^3.1.0":
+  "integrity" "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
+  "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz"
+  "version" "3.1.0"
+
+"js-base64@^2.6.4":
+  "integrity" "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+  "resolved" "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz"
+  "version" "2.6.4"
+
+"js-base64@3.7.2":
+  "integrity" "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ=="
+  "resolved" "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz"
+  "version" "3.7.2"
+
+"jweixin-module@^1.6.0":
+  "integrity" "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
+  "resolved" "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz"
+  "version" "1.6.0"
+
+"nanoid@^3.3.4":
+  "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+  "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
+  "version" "3.3.4"
+
+"picocolors@^1.0.0":
+  "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+  "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
+  "version" "1.0.0"
+
+"postcss@^8.4.14":
+  "integrity" "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ=="
+  "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz"
+  "version" "8.4.16"
   dependencies:
-    nanoid "^3.3.4"
-    picocolors "^1.0.0"
-    source-map-js "^1.0.2"
-
-source-map-js@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
-  integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-
-source-map@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-uni-read-pages@1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npmmirror.com/uni-read-pages/-/uni-read-pages-1.0.5.tgz"
-  integrity sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==
-
-uni-simple-router@2.0.7:
-  version "2.0.7"
-  resolved "https://registry.npmmirror.com/uni-simple-router/-/uni-simple-router-2.0.7.tgz"
-  integrity sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA==
-
-uniapp-qrcode@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmjs.org/uniapp-qrcode/-/uniapp-qrcode-1.0.2.tgz"
-  integrity sha512-jcWwWz4yXsO7if/+78MMXj5VUdZTLu2D6L/IKb4mJkIw87oF11pO3WS/jS27SUcPCrX/BKcir5a2R1uvkaoR9g==
-
-uploading-oss@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmjs.org/uploading-oss/-/uploading-oss-1.0.3.tgz"
-  integrity sha512-aqHh5NCOBcrA4d8yCIKR7B9GrKzH88X7gL8BSvIw18pi79AgWnhDkCoyjQmDqzTvjQqYfKwyFTEgnafzMx/GbQ==
+    "nanoid" "^3.3.4"
+    "picocolors" "^1.0.0"
+    "source-map-js" "^1.0.2"
+
+"source-map-js@^1.0.2":
+  "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+  "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
+  "version" "1.0.2"
+
+"source-map@^0.6.1":
+  "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+  "version" "0.6.1"
+
+"uni-read-pages@1.0.5":
+  "integrity" "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA=="
+  "resolved" "https://registry.npmmirror.com/uni-read-pages/-/uni-read-pages-1.0.5.tgz"
+  "version" "1.0.5"
+
+"uni-simple-router@2.0.7":
+  "integrity" "sha512-8FKv5dw7Eoonm0gkO8udprrxzin0fNUI0+AvIphFkFRH5ZmP5ZWJ2pvnWzb2NiiqQSECTSU5VSB7HhvOSwD5eA=="
+  "resolved" "https://registry.npmmirror.com/uni-simple-router/-/uni-simple-router-2.0.7.tgz"
+  "version" "2.0.7"
+
+"uniapp-qrcode@^1.0.2":
+  "integrity" "sha512-jcWwWz4yXsO7if/+78MMXj5VUdZTLu2D6L/IKb4mJkIw87oF11pO3WS/jS27SUcPCrX/BKcir5a2R1uvkaoR9g=="
+  "resolved" "https://registry.npmjs.org/uniapp-qrcode/-/uniapp-qrcode-1.0.2.tgz"
+  "version" "1.0.2"
+
+"uploading-oss@1.0.3":
+  "integrity" "sha512-aqHh5NCOBcrA4d8yCIKR7B9GrKzH88X7gL8BSvIw18pi79AgWnhDkCoyjQmDqzTvjQqYfKwyFTEgnafzMx/GbQ=="
+  "resolved" "https://registry.npmjs.org/uploading-oss/-/uploading-oss-1.0.3.tgz"
+  "version" "1.0.3"
   dependencies:
-    crypto-js "^4.1.1"
-    js-base64 "^2.6.4"
-
-uqrcodejs@^4.0.7:
-  version "4.0.7"
-  resolved "https://registry.npmmirror.com/uqrcodejs/-/uqrcodejs-4.0.7.tgz"
-  integrity sha512-84+aZmD2godCVI+93lxE3YUAPNY8zAJvNA7xRS7R7U+q57KzMDepBSfNCwoRUhWOfR6eHFoAOcHRPwsP6ka1cA==
-
-vue-waterfall-easy@2.4.4:
-  version "2.4.4"
-  resolved "https://registry.npmjs.org/vue-waterfall-easy/-/vue-waterfall-easy-2.4.4.tgz"
-  integrity sha512-5OkpT2FPNC3rHBy858zk/nmJxqdPaGmj/KVbmA6dgcvtsovKMa+zuf/Z7F+S2NnObeavpIBztTWgcH3S42ZD+g==
-
-vue@^2.6.8:
-  version "2.7.10"
-  resolved "https://registry.npmjs.org/vue/-/vue-2.7.10.tgz"
-  integrity sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==
+    "crypto-js" "^4.1.1"
+    "js-base64" "^2.6.4"
+
+"uqrcodejs@^4.0.7":
+  "integrity" "sha512-84+aZmD2godCVI+93lxE3YUAPNY8zAJvNA7xRS7R7U+q57KzMDepBSfNCwoRUhWOfR6eHFoAOcHRPwsP6ka1cA=="
+  "resolved" "https://registry.npmmirror.com/uqrcodejs/-/uqrcodejs-4.0.7.tgz"
+  "version" "4.0.7"
+
+"vue-waterfall-easy@2.4.4":
+  "integrity" "sha512-5OkpT2FPNC3rHBy858zk/nmJxqdPaGmj/KVbmA6dgcvtsovKMa+zuf/Z7F+S2NnObeavpIBztTWgcH3S42ZD+g=="
+  "resolved" "https://registry.npmjs.org/vue-waterfall-easy/-/vue-waterfall-easy-2.4.4.tgz"
+  "version" "2.4.4"
+
+"vue@^2.6.8":
+  "integrity" "sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg=="
+  "resolved" "https://registry.npmjs.org/vue/-/vue-2.7.10.tgz"
+  "version" "2.7.10"
   dependencies:
     "@vue/compiler-sfc" "2.7.10"
-    csstype "^3.1.0"
+    "csstype" "^3.1.0"
 
-wecomjsdk@1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/wecomjsdk/-/wecomjsdk-1.0.2.tgz"
-  integrity sha512-nPbrTcA5P8IOY/gQJJ3/AtXE2zSqJIQB156RUAQ2+RvwvJmcR66p7hpZtCjbtKefvyDO0LJBdEFqfjRR72zjIw==
+"wecomjsdk@1.0.2":
+  "integrity" "sha512-nPbrTcA5P8IOY/gQJJ3/AtXE2zSqJIQB156RUAQ2+RvwvJmcR66p7hpZtCjbtKefvyDO0LJBdEFqfjRR72zjIw=="
+  "resolved" "https://registry.npmmirror.com/wecomjsdk/-/wecomjsdk-1.0.2.tgz"
+  "version" "1.0.2"