wj 1 year ago
commit
4b56708374
100 changed files with 8831 additions and 0 deletions
  1. 1 0
      .gitignore
  2. 24 0
      .hbuilderx/launch.json
  3. 22 0
      App.vue
  4. 114 0
      api/common.js
  5. 207 0
      combo/combo/combo.vue
  6. 393 0
      components/city-select/city-select.vue
  7. 2 0
      components/city-select/citySelect.js
  8. 205 0
      components/zs-banner/index.vue
  9. 55 0
      components/zs-img/index.vue
  10. 43 0
      components/zs-lazy-load/index.vue
  11. 54 0
      components/zs-list/index.vue
  12. 104 0
      components/zs-load-more/index.vue
  13. 364 0
      components/zs-login/index.vue
  14. 73 0
      components/zs-search/index.vue
  15. 1151 0
      components/zs-skeleton/index.vue
  16. 916 0
      detail/discountsDetail/index.vue
  17. 81 0
      detail/qrcode/index.vue
  18. 534 0
      detail/shopDetail/shopDetail.vue
  19. 20 0
      index.html
  20. 218 0
      integral/logs.vue
  21. 211 0
      integral/shop.vue
  22. 306 0
      integral/store.vue
  23. 0 0
      libs/qqmap-wx-jssdk.min.js
  24. 193 0
      login/login/login.vue
  25. 125 0
      login/login/otherLogin.vue
  26. 55 0
      login/login/veriFace.vue
  27. 29 0
      main.js
  28. 98 0
      manifest.json
  29. 82 0
      my/card/index.vue
  30. 74 0
      my/coupon/index.vue
  31. 94 0
      my/edit/edit.vue
  32. 66 0
      my/edit/editName.vue
  33. 183 0
      my/favorite/index.vue
  34. 133 0
      my/order/detail.vue
  35. 143 0
      my/order/index.vue
  36. 277 0
      pages.json
  37. 1041 0
      pages/index/index.vue
  38. 154 0
      pages/index/position.vue
  39. 443 0
      pages/index/visitorIndex.vue
  40. 333 0
      pages/my/index.vue
  41. 154 0
      pages/service/chatRoom.vue
  42. 53 0
      pages/service/index.vue
  43. BIN
      static/active.png
  44. BIN
      static/add.png
  45. BIN
      static/add_gas.png
  46. BIN
      static/banner.png
  47. BIN
      static/border1.png
  48. BIN
      static/border2.png
  49. BIN
      static/border3.png
  50. BIN
      static/camera.png
  51. BIN
      static/card-bg.png
  52. BIN
      static/card-bg1.png
  53. BIN
      static/card.png
  54. BIN
      static/combo.png
  55. BIN
      static/diamon.png
  56. BIN
      static/emoji.png
  57. BIN
      static/equity1.png
  58. BIN
      static/equity2.png
  59. BIN
      static/equity3.png
  60. BIN
      static/equity4.png
  61. BIN
      static/equity5.png
  62. BIN
      static/font/DOUYUFont.ttf
  63. BIN
      static/font/DOUYUFont.woff
  64. 1 0
      static/font/WX-static
  65. BIN
      static/font/douyu.ttf
  66. 2 0
      static/font/stylesheet.css
  67. BIN
      static/hand.png
  68. BIN
      static/home_banner.png
  69. BIN
      static/home_off.png
  70. BIN
      static/home_on.png
  71. BIN
      static/hot-white.png
  72. BIN
      static/hot.png
  73. BIN
      static/hot1.png
  74. BIN
      static/icon.png
  75. BIN
      static/icon1.png
  76. BIN
      static/icon2.png
  77. BIN
      static/icon3.png
  78. BIN
      static/icon4.png
  79. BIN
      static/img-loading.png
  80. BIN
      static/logo.png
  81. BIN
      static/my_off.png
  82. BIN
      static/my_on.png
  83. BIN
      static/picture.png
  84. BIN
      static/pinglun.png
  85. BIN
      static/play.png
  86. BIN
      static/position-white.png
  87. BIN
      static/position.png
  88. BIN
      static/search.png
  89. BIN
      static/send.png
  90. BIN
      static/service.png
  91. BIN
      static/service_off.png
  92. BIN
      static/service_on.png
  93. BIN
      static/step1.png
  94. BIN
      static/step2.png
  95. BIN
      static/step3.png
  96. BIN
      static/step4.png
  97. BIN
      static/step5.png
  98. BIN
      static/store.png
  99. BIN
      static/tag.png
  100. BIN
      static/take_photo.png

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+unpackage/

+ 24 - 0
.hbuilderx/launch.json

@@ -0,0 +1,24 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"h5" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-toutiao" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 22 - 0
App.vue

@@ -0,0 +1,22 @@
+<script>
+	export default {
+		
+		onLaunch: function() {
+			console.log('App Launch')
+			
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		},
+		
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	@import "@/uni_modules/uview-ui/index.scss";
+
+</style>

+ 114 - 0
api/common.js

@@ -0,0 +1,114 @@
+import {request} from '@/utils/request.js'
+
+// 注册
+export function register(data) {
+	return request({
+		url: '/user/addUser',
+		method:'post',
+		data
+	})
+}
+
+// 获取短信验证码
+export function sendVerifyCode(data) {
+	return request({
+		url: '/smsTemplate/sendVerifyCode',
+		method:'post',
+		data
+	})
+}
+
+
+
+// 刷新token
+export function refreshToken(data) {
+	return request({
+		url: '/user/refreshToken',
+		data
+	})
+}
+
+// 获取登录token
+export function getLoginToken(data) {
+	return request({
+		url: '/user/getLoginToken',
+		data
+	})
+}
+
+// 微信登录
+export function wechatLogin(data) {
+	return request({
+		url: '/user/wechatLogin',
+		method:'post',
+		data
+	})
+}
+
+// 验证码登录
+export function validLogin(data) {
+	return request({
+		url: '/user/validLogin',
+		method:'post',
+		data
+	})
+}
+
+// 获取手机号
+export function getPhoneNum(data) {
+	return request({
+		url: '/user/getPhoneNum',
+		data
+	})
+}
+
+// 用户详情
+export function getUserDetail(data) {
+	return request({
+		url: '/user/detail',
+		data
+	})
+}
+
+// 通知列表
+export function getNotification(data) {
+	return request({
+		url: '/user/search',
+		data
+	})
+}
+
+// 更改套餐
+export function updateLevel(data) {
+	return request({
+		url: '/user/updateLevel',
+		method:'post',
+		data
+	})
+}
+
+// 修改昵称
+export function updateNickname(data) {
+	return request({
+		url: '/user/updateNickname',
+		method:'post',
+		data
+	})
+}
+
+// 上传头像
+export function uploadImg(data) {
+	return request({
+		url: '/user/uploadImg',
+		method:'post',
+		data
+	})
+}
+
+// 获取打开小程序url
+export function getScheme(data) {
+	return request({
+		url: '/user/generateScheme',
+		data
+	})
+}

+ 207 - 0
combo/combo/combo.vue

@@ -0,0 +1,207 @@
+<template>
+	<view class="combo">
+		
+		<!-- 登录弹窗 -->
+		<zs-login v-model="show"></zs-login>
+		
+		<view class="combo-box">
+			<radio-group 
+				@change="change"
+				:value="value"
+				>
+				<view class="item">
+					<view class="title">
+						套餐一 10元/月
+					</view>
+					<radio color="#3c9cff" value="1"></radio>
+				</view>
+				<view class="item">
+					<view class="title">
+						套餐二 20元/月
+					</view>
+					<radio color="#3c9cff" value="2"></radio>
+				</view>
+				<view class="item">
+					<view class="title">
+						套餐三 30元/月
+					</view>
+					<radio color="#3c9cff" value="3"></radio>
+				</view>
+			</radio-group>
+		</view>
+		
+		<view class="step-title">在线激活流程</view>
+		<u-steps current="1" >
+				<u-steps-item title="用户注册"></u-steps-item>
+				<u-steps-item title="受理开户"></u-steps-item>
+				<u-steps-item title="注册核验"></u-steps-item>
+				<u-steps-item title="激活套餐"></u-steps-item>
+			</u-steps>
+		
+	</view>
+</template>
+
+<script>
+	import {updateLevel} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				value: '1',
+				isLogin:0,
+				show: false,
+				userId:''
+			}
+		},
+		methods: {
+			
+			change(val) {
+				if(!uni.getStorageSync('token')){
+					uni.showModal({
+						title:'请先登录',
+						success:(r) =>{
+							if(r.confirm){
+								this.show = true
+							}
+						}
+					})
+				}
+				// if(uni.getStorageSync('token')){
+				// 	updateLevel({level:val,userId:this.userId}).then(res=>{
+						
+				// 		uni.showModal({
+				// 			title:'更改套餐下月生效,请注意查收',
+				// 			success:(r) =>{
+				// 				if(r.confirm){
+				// 					uni.switchTab({
+				// 						url:'../../pages/index/index'
+				// 					})
+				// 				}
+				// 			}
+				// 		})
+				// 	})
+				// }else{
+				// 	if(uni.getStorageSync('register') == 1){//已经注册
+				// 		uni.showModal({
+				// 			title:'短信已发送至您的手机,请注意查收',
+				// 			success:(r) =>{
+				// 				if(r.confirm){
+				// 					uni.navigateTo({
+				// 						url:'../../login/login/login'
+				// 					})
+				// 				}
+				// 			}
+				// 		})
+				// 	}else{
+				// 		uni.showModal({
+				// 			title:'请先注册',
+				// 			success:(r) =>{
+				// 				if(r.confirm){
+				// 					this.show = true
+				// 				}
+				// 			}
+				// 		})
+				// 		// uni.navigateTo({
+				// 		// 	url:'../../login/login/login'
+				// 		// })
+				// 	}
+				// }
+				
+			}
+		},
+		onLoad() {
+			this.isLogin = uni.getStorageSync('token')
+			this.userId = JSON.parse(uni.getStorageSync('userInfo')).userId 
+			console.log(this.userId);
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.combo{
+	.combo-box{
+		.item{
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			padding: 85rpx 50rpx 85rpx 80rpx;
+			background: #f1f1f1;
+			margin-bottom: 80rpx;
+			.title{
+				font-size: 40rpx;
+				vertical-align: bottom;
+			}
+		}
+	}
+	.step-title{
+		font-size: 30rpx;
+		font-weight: bold;
+		text-align: center;
+		margin-bottom: 45rpx;
+	}
+	
+	.modal {
+		width: 680rpx;
+		padding: 50rpx 0;
+		box-sizing: border-box;
+		padding: 30rpx;
+	
+		.title {
+			text-align: center;
+			font-size: 38rpx;
+			font-weight: bold;
+		}
+		.code{
+			position: relative;
+		}
+			.code-btn{
+				// position: absolute;
+				// top: 50%;
+				// right: 20rpx;
+				padding: 10rpx 25rpx;
+				background: rgb(222, 134, 143);
+				color: #fff;
+				border-radius: 4px;
+			}
+			.save-btn{
+				width: 80%;
+				line-height: 100rpx;
+				background-color: rgb(222, 134, 143);
+				color: #fff;
+				font-size: 30rpx;
+			}
+			.jump-btn{
+				text-align: center;
+				color: royalblue;
+				text-decoration: underline;
+				font-size: 30rpx;
+				margin-top: 10rpx;
+			}
+	}
+	
+	.protocol{
+		margin: 30rpx;
+		padding: 10rpx;
+		border: 1px solid #ccc;
+		height: 750rpx;
+		overflow: auto;
+		border-radius: 4px;
+		color: #666;
+	}
+	.btn-group{
+		display: flex;
+		align-items: center;
+		.btn{
+			border-radius: 4px;
+			width: 250rpx;
+			color: #fff;
+		}
+		.refuse{
+			background-color: rgb(191, 191, 191);
+		}
+		.agree{
+			background-color: rgb(222, 134, 143);
+		}
+		 
+	}
+}
+</style>

+ 393 - 0
components/city-select/city-select.vue

@@ -0,0 +1,393 @@
+<template>
+	<!-- 城市选择-->
+	<view class="city-select">
+		<scroll-view :scroll-top="scrollTop" scroll-y="true" class="city-select-main" id="city-select-main" :scroll-into-view="toView">
+			<!-- 预留搜索-->
+			<view class="city-serach" v-if="isSearch"><input @input="keyInput" :placeholder="placeholder" class="city-serach-input" /></view>
+			<!-- 当前定位城市 -->
+			<view class="hot-title" v-if="activeCity && !serachCity">当前定位城市</view>
+			<view class="hot-city" v-if="activeCity && !serachCity">
+				<view class="hot-item" @click="cityTrigger(activeCity)">{{ activeCity[formatName] }}</view>
+			</view>
+			<!-- 热门城市 -->
+			<view class="hot-title" v-if="hotCity.length > 0 && !serachCity">热门城市</view>
+			<view class="hot-city" v-if="hotCity.length > 0 && !serachCity">
+				<template v-for="(item, index) in hotCity">
+					<view :key="index" @click="cityTrigger(item, 'hot')" class="hot-item">{{ item[formatName] }}</view>
+				</template>
+			</view>
+			<!-- 城市列表(搜索前) -->
+			<view class="citys" v-if="!serachCity">
+				<view v-for="(city, index) in sortItems" :key="index" v-show="city.isCity" class="citys-row">
+					<view class="citys-item-letter" :id="'city-letter-' + (city.name === '#' ? '0' : city.name)">{{ city.name }}</view>
+					<view class="citys-item" v-for="(item, inx) in city.citys" :key="inx" @click="cityTrigger(item)">{{ item.cityName }}</view>
+				</view>
+			</view>
+			<!-- 城市列表(搜索后)  -->
+			<view class="citys" v-if="serachCity">
+				<view v-for="(item, index) in searchDatas" :key="index" class="citys-row">
+					<view class="citys-item" :key="inx" @click="cityTrigger(item)">{{ item.name }}</view>
+				</view>
+			</view>
+		</scroll-view>
+		<!-- 城市选择索引-->
+		<view class="city-indexs-view" v-if="!serachCity">
+			<view class="city-indexs">
+				<view v-for="(cityIns, index) in handleCity" class="city-indexs-text" v-show="cityIns.isCity" :key="index" @click="cityindex(cityIns.forName)">
+					{{ cityIns.name }}
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import citySelect from './citySelect.js';
+export default {
+	props: {
+		//查询提示文字
+		placeholder: {
+			type: String,
+			default: '请输入城市名称'
+		},
+		//传入要排序的名称
+		formatName: {
+			type: String,
+			default: 'cityName'
+		},
+		//当前定位城市
+		activeCity: {
+			type: Object,
+			default: () => null
+		},
+		//热门城市
+		hotCity: {
+			type: Array,
+			default: () => []
+		},
+		//城市数据
+		obtainCitys: {
+			type: Array,
+			default: () => []
+		},
+		//是否有搜索
+		isSearch: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {
+			toView: 'city-letter-Find', //锚链接 初始值
+			scrollTop: 0, //scroll-view 滑动的距离
+			cityindexs: [], // 城市索引
+			activeCityIndex: '', // 当前所在的城市索引
+			handleCity: [], // 处理后的城市数据
+			serachCity: '', // 搜索的城市
+			cityData: []
+		};
+	},
+	computed: {
+		/**
+		 * @desc 城市列表排序
+		 * @return  Array
+		 */
+		sortItems() {
+			for (let index = 0; index < this.handleCity.length; index++) {
+				if (this.handleCity[index].isCity) {
+					let cityArr = this.handleCity[index].citys;
+					cityArr = cityArr.sort(function(a, b) {
+						var value1 = a.unicode;
+						var value2 = b.unicode;
+						return value1 - value2;
+					});
+				}
+			}
+			return this.handleCity;
+		},
+		/**
+		 * @desc 搜索后的城市列表
+		 * @return Array
+		 */
+		searchDatas() {
+			var searchData = [];
+			for (let i = 0; i < this.cityData.length; i++) {
+				if (this.cityData[i][this.formatName].indexOf(this.serachCity) !== -1) {
+					searchData.push({
+						oldData: this.cityData[i],
+						name: this.cityData[i][this.formatName]
+					});
+				}
+			}
+			return searchData;
+		}
+	},
+	created() {
+		// 初始化城市数据
+		this.cityData = this.obtainCitys;
+		this.initializationCity();
+		this.buildCityindexs();
+	},
+	watch: {
+		obtainCitys(newData) {
+			this.updateCitys(newData);
+		}
+	},
+	methods: {
+		/**
+		 * @desc 初始化
+		 */
+		updateCitys(data) {
+			if (data && data.length) {
+				this.cityData = data;
+				this.initializationCity();
+				this.buildCityindexs();
+			}
+		},
+		/**
+		 * @desc 监听输入框的值
+		 */
+		keyInput(event) {
+			this.serachCity = event.detail.value;
+		},
+		/**
+		 * @desc 初始化城市数据
+		 * @return undefind
+		 */
+		initializationCity() {
+			this.handleCity = [];
+			const cityLetterArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '#'];
+			for (let index = 0; index < cityLetterArr.length; index++) {
+				this.handleCity.push({
+					name: cityLetterArr[index],
+					isCity: false, // 用于区分是否含有当前字母开头的城市
+					citys: [], // 存放城市首字母含是此字母的数组
+					forName: 'city-letter-' + (cityLetterArr[index] == '#' ? '0' : cityLetterArr[index]) //label的绑定
+				});
+			}
+		},
+		/**
+		 * @desc 得到城市的首字母
+		 * @param str String
+		 */
+		getLetter(str) {
+			return citySelect.getFirstLetter(str[0]);
+		},
+		/**
+		 * @desc 构建城市索引
+		 * @return undefind
+		 */
+		buildCityindexs() {
+			this.cityindexs = [];
+			for (let i = 0; i < this.cityData.length; i++) {
+				// 获取首字母
+				const cityLetter = this.getLetter(this.cityData[i][this.formatName]).firstletter;
+				// 获取当前城市首字母的unicode,用作后续排序
+				const unicode = this.getLetter(this.cityData[i][this.formatName]).unicode;
+
+				const index = this.cityIndexPosition(cityLetter);
+				if (this.cityindexs.indexOf(cityLetter) === -1) {
+					this.handleCity[index].isCity = true;
+					this.cityindexs.push(cityLetter);
+				}
+
+				this.handleCity[index].citys.push({
+					cityName: this.cityData[i][this.formatName],
+					unicode: unicode,
+					oldData: this.cityData[i]
+				});
+			}
+		},
+		/**
+		 * @desc 滑动到城市索引所在的地方
+		 * @param id String 城市索引
+		 */
+		cityindex(id) {
+			this.toView = id;
+			// //创建节点查询器
+			// const query = uni.createSelectorQuery().in(this)
+			// var that = this
+			// that.scrollTop = 0
+			// //滑动到指定位置(解决方法:重置到顶部,重新计算,影响:页面会闪一下)
+			// setTimeout(() => {
+			// 	query
+			// 		.select('#city-letter-' + (id === '#' ? '0' : id))
+			// 		.boundingClientRect(data => {
+			// 			// console.log("得到布局位置信息" + JSON.stringify(data));
+			// 			// console.log("节点离页面顶部的距离为" + data.top);
+			// 			data ? (that.scrollTop = data.top) : void 0
+			// 		})
+			// 		.exec()
+			// }, 0)
+		},
+		/**
+		 * @desc 获取城市首字母的unicode
+		 * @param letter String 城市索引
+		 */
+		cityIndexPosition(letter) {
+			if (!letter) {
+				return '';
+			}
+			const ACode = 65;
+			return letter === '#' ? 26 : letter.charCodeAt(0) - ACode;
+		},
+		/** @desc 城市列表点击事件
+		 *  @param Object
+		 */
+		cityTrigger(item) {
+			// 传值到父组件
+			this.$emit('cityClick', item.oldData ? item.oldData : item);
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+//宽度转换vw
+@function vww($number) {
+	@return ($number / 375) * 750 + rpx;
+}
+
+view {
+	box-sizing: border-box;
+}
+
+.city-serach {
+	width: 100%;
+	color: #4a4a4a;
+	padding: 0 vww(10);
+
+	&-input {
+		margin: vww(10) 0;
+		height: vww(40);
+		line-height: vww(40);
+		font-size: vww(14);
+		padding: 0 vww(5);
+		border: 1px solid #4d8cfd;
+		border-radius: 3px;
+	}
+}
+
+.city-select-main {
+	position: relative;
+	// overflow: scroll;
+	// -webkit-overflow-scrolling: touch;
+	width: 100%;
+	height: 100%;
+	background: #f6f5fa;
+	// overflow-y: auto;
+}
+
+.city-select {
+	position: relative;
+	width: 100vw;
+	height: 100vh;
+	background: #f6f5fa;
+
+	// 热门城市
+	.hot-title {
+		padding-left: vww(23);
+		width: 100vw;
+		font-size: 14px;
+		line-height: vww(40);
+		color: #9b9b9b;
+	}
+
+	.hot-city {
+		padding-left: vww(23);
+		padding-right: vww(20);
+		overflow: hidden;
+		width: 100vw;
+
+		.hot-item {
+			float: left;
+			padding: 0 vww(5);
+			margin-right: vww(16);
+			margin-bottom: vww(6);
+			overflow: hidden;
+			width: vww(100);
+			height: vww(31);
+			font-size: 14px;
+			text-align: center;
+
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 1;
+
+			line-height: vww(31);
+			color: #4a4a4a;
+			background: #fff;
+			border: 1px solid #ebebf0;
+
+			&:nth-child(3n) {
+				margin-right: 0;
+			}
+		}
+
+		.hot-hidden {
+			display: none;
+			margin-right: 0;
+		}
+	}
+
+	.citys {
+		.citys-row {
+			padding-left: vww(18);
+			width: 100%;
+			font-size: 14px;
+			background: #fff;
+
+			.citys-item-letter {
+				margin-left: vww(-18);
+				padding-left: vww(18);
+				margin-top: -1px;
+				width: 100vw;
+				line-height: vww(30);
+				color: #9b9b9b;
+				background: #f6f5fa;
+				border-top: none;
+			}
+
+			.citys-item {
+				width: 100%;
+				line-height: vww(50);
+				color: #4a4a4a;
+				border-bottom: 1px solid #ebebf0;
+
+				&:last-child {
+					border: none;
+				}
+			}
+		}
+	}
+
+	.city-indexs-view {
+		position: absolute;
+		right: 0;
+		top: 0;
+		z-index: 999;
+		display: flex;
+		width: vww(20);
+		height: 100%;
+		text-align: center;
+
+		.city-indexs {
+			width: vww(20);
+			text-align: center;
+			vertical-align: middle;
+			align-self: center;
+
+			.city-indexs-text {
+				margin-bottom: vww(10);
+				width: vww(20);
+				font-size: 12px;
+				color: #4d8cfd;
+
+				&:last-child {
+					margin-bottom: 0;
+				}
+			}
+		}
+	}
+}
+</style>

File diff suppressed because it is too large
+ 2 - 0
components/city-select/citySelect.js


+ 205 - 0
components/zs-banner/index.vue

@@ -0,0 +1,205 @@
+<template>
+	<view class="zs-banner">
+		<view class="position-box" v-if="position" @click="jump">
+			<view class="position">
+				<image class="position-icon" src="../../static/position-white.png" mode=""></image>
+				<text class="city">{{city}}</text>
+			</view>
+			<view class="topbar">
+				慧研学惠生活
+			</view>
+		</view>
+		<view class="top-box" :style="{'--bg':theme}">
+				<view class="search-box">
+					<input class="search" type="text" placeholder="搜索" :value="search" />
+					<image class="icon" src="../../static/search.png" mode=""></image>
+					<button class="btn" type="default">搜索</button>
+				</view>
+			<swiper class="swiper" @change="swiperChange" :indicator-dots="true" circular :autoplay="true"
+				:interval="3000" :duration="1000">
+				<swiper-item v-for="(item,index) in bannerList" :key="index">
+					<image class="swiper-item" mode="" :src="item.src">
+					</image>
+				</swiper-item>
+		
+			</swiper>
+		</view>
+		<u-notice-bar bgColor="none" icon="volume-fill" color="#6F4F23" direction="column" :fontSize='26' :text="textList"></u-notice-bar>
+	</view>
+</template>
+
+<script>
+	import {
+		getNotification,
+	} from '@/api/common.js'
+	export default {
+		options:{
+			styleIsolation:'shared'
+		},
+		props: {
+			position: {
+				type: Boolean,
+				default: false
+			},
+			city:{
+				type: String,
+				default: '定位中'
+			}
+		},
+		data() {
+			return {
+				search:'',
+				theme: '#FF4A39', //顶部颜色
+				textList: [], //通知列表
+				bannerList: [
+					{
+						src:require('../../static/home_banner.png'),
+						theme: '#FF4A39'
+					},
+					{
+						src:require('../../static/banner.png'),
+						theme: '#893CF1'
+					},
+					{
+						src: 'https://alipic.lanhuapp.com/XDSlicePNGMAX190c797263732d957a8b1678378cdfed7d1080d44f950646dd434fff84683bdd.png',
+						theme: '#3C66F1'
+					},
+					{
+						src: 'https://alipic.lanhuapp.com/XDSlicePNGMAX611bc009fa733cff73887ee29c1732ae75825ed9e0954b587c74a4c189a3cffb.png',
+						theme: '#00C8CF'
+					}
+				],
+			};
+		},
+		methods: {
+			// swiper变动
+			swiperChange(val) {
+				this.theme = this.bannerList[val.detail.current].theme
+			},
+			// 获取通知列表
+			getNotification() {
+				// this.loading = true
+				getNotification({
+					page: 1,
+					pageSize: 10
+				}).then(res => {
+					// this.loading = false
+					this.textList = []
+					res.content.records.map(item => {
+						this.textList.push(`用户${item.phoneNum}注册成功,本月累计节省${item.economizeTheMoney||0}元`)
+					})
+				})
+			},
+			jump(){
+				uni.navigateTo({
+					url:'../../pages/index/position'
+				})
+			}
+		},
+		created() {
+			this.getNotification()
+		}
+	}
+</script>
+
+<style lang="scss" >
+	// 通知喇叭样式
+	.zs-banner ::v-deep .u-notice .u-icon__icon{
+		font-size: 32rpx!important;
+	}
+	
+
+.zs-banner{
+	position: relative;
+	.position-box{
+		position: absolute;
+		width: 100%;
+		top: 95rpx;
+		left: 0;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		.position{
+			position: absolute;
+			top: 10rpx;
+			left: 30rpx;
+			color: #fff;
+			display: flex;
+			align-items: center;
+			font-size: 24rpx;
+			.position-icon{
+				width: 21.65rpx;
+				height: 24.3rpx;
+			}
+			.city{
+				margin-left: 10rpx;
+			}
+		}
+		.topbar{
+			
+			font-size: 36rpx;
+			color: #FFFFFF;
+			text-align: center;
+			font-weight: bold;
+			font-family: DOUYUFont;
+		}
+	}
+	.top-box {
+		background: linear-gradient(180deg, var(--bg) 0%, #FFF 100%);
+		padding: 100rpx 32rpx 0;
+		height: 536rpx;
+		box-sizing: border-box;
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-end;
+		.search-box {
+			position: relative;
+			height: 80rpx;
+			background: #FFFFFF;
+			border-radius: 40rpx 40rpx 40rpx 40rpx;
+			margin-bottom: 24rpx;
+	
+			.icon {
+				width: 37rpx;
+				height: 37rpx;
+				position: absolute;
+				top: 50%;
+				left: 36rpx;
+				transform: translateY(-50%);
+			}
+	
+			.search {
+				line-height: 80rpx;
+				height: 80rpx;
+				padding-left: 100rpx;
+				padding-right: 130rpx;
+			}
+	
+			.btn {
+				position: absolute;
+				top: 8rpx;
+				right: 10rpx;
+				width: 108rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				background: var(--bg);
+				color: #fff;
+				font-size: 28rpx;
+				border-radius: 32rpx;
+				padding: 0;
+			}
+		}
+	
+		.swiper {
+			height: 244rpx;
+			border-radius: 16rpx;
+			.swiper-item {
+				width: 100%;
+				height: 100%;
+				border-radius: 16rpx;
+				object-fit: cover;
+			}
+		}
+	}
+}
+</style>

File diff suppressed because it is too large
+ 55 - 0
components/zs-img/index.vue


File diff suppressed because it is too large
+ 43 - 0
components/zs-lazy-load/index.vue


+ 54 - 0
components/zs-list/index.vue

@@ -0,0 +1,54 @@
+<!-- 滚动加载的list -->
+<template>
+	<view class="zs-list" :style="{marginTop:mt}">
+			<slot></slot>
+		<zs-load-more class="more" :status="status"  />
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			mt: {
+				type: String,
+				default: '100rpx'
+			},
+			status: {
+				type: String,
+				default: 'more'
+			},
+		},
+		data() {
+			return {
+				Observer: null, //监听相交对象
+			}
+		},
+		methods: {
+	
+		},
+		onReady() {
+			this.Observer = uni.createIntersectionObserver(this)
+			this.Observer.relativeToViewport({
+				bottom: 0
+			}).observe('.more', (res) => {
+				if (this.status == 'loading') return
+					this.$emit('load')
+			})
+		},
+		beforeDestroy() {
+			this.Observer.disconnect()
+		}
+	}
+</script>
+
+<style lang="scss" >
+.zs-list{
+		// height: calc(100vh - 100rpx);
+		// overflow: auto;
+		// margin-top: 100rpx;
+	
+		.more{
+			width: 100%;
+		}
+}
+</style>

File diff suppressed because it is too large
+ 104 - 0
components/zs-load-more/index.vue


+ 364 - 0
components/zs-login/index.vue

@@ -0,0 +1,364 @@
+<template>
+	<view class="zs-login" @touchmove.stop.prevent="clear">
+
+		<!-- 注册认证 -->
+		<u-popup :show="value" v-show="value" closeable :closeOnClickOverlay="false" mode="center" round="24"
+			@close="close">
+			<view class="modal">
+				<view class="title">
+					身份认证
+				</view>
+				<u--form id="uForm" labelPosition="left" :model="userInfo" :rules="rules" ref="uForm">
+					<u-form-item label="姓名" prop="name"  ref="item1" labelWidth="100">
+						<u--input placeholder="请输入姓名" v-model="userInfo.name" border="none"></u--input>
+					</u-form-item>
+					<u-form-item label="身份证" prop="idCardNum"  ref="item1" labelWidth="100">
+						<u--input type="idcard" placeholder="请输入身份证号" maxlength="18" v-model="userInfo.idCardNum"
+							border="none"></u--input>
+					</u-form-item>
+					<u-form-item label="手机号" class="code" prop="phoneNum"  ref="item1" labelWidth="100">
+						<u--input type="digit" placeholder="请输入手机号" maxlength="11" v-model="userInfo.phoneNum"
+							border="none"></u--input>
+						<button size="mini" :loading="loading" plain open-type="getPhoneNumber" @getphonenumber="getPhoneNumber"
+							class="phone-btn" slot="right">一键填入</button>
+					</u-form-item>
+					<u-form-item label="验证码" prop="code"  ref="item1" labelWidth="100">
+						<u--input type="idcard" placeholder="请输入验证码" v-model="userInfo.code" border="none"></u--input>
+						<view class="code-btn" slot="right" @click="sendCode">
+							{{codeText}}
+						</view>
+					</u-form-item>
+					<u-form-item class="none" prop="check" ref="item1" labelWidth="0">
+						<u-checkbox-group v-model="userInfo.check">
+							<u-checkbox size="32" shape="circle">
+							</u-checkbox>
+							<view @click="handleProtocol">已阅读并同意用户协议</view>
+						</u-checkbox-group>
+					</u-form-item>
+				</u--form>
+				<button class="save-btn" type="default" @click="submit">进行验证</button>
+				<view class="jump-btn" @click="goLogin">已有账号?去登录</view>
+			</view>
+		</u-popup>
+
+		<u-popup :show="show1" closeable :closeOnClickOverlay="false" mode="center" round="8" @close="close1">
+			<view class="modal">
+				<view class="title">
+					相关协议
+				</view>
+				<view class="protocol">
+					协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议协议
+				</view>
+				<view class="btn-group">
+					<button class="btn refuse" type="default" @click="handleRefuse">拒绝</button>
+					<button class="btn agree" type="default" @click="handleAgree">同意</button>
+				</view>
+			</view>
+		</u-popup>
+
+	</view>
+</template>
+
+<script>
+	import {
+		register,
+		getPhoneNum,
+		sendVerifyCode
+	} from '@/api/common.js'
+	export default {
+		options: { styleIsolation: 'shared' },
+		props: {
+			value: {
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				// show: false,
+				show1: false,
+				userInfo: {
+					name: '',
+					idCardNum: '',
+					code: '',
+					phoneNum: '',
+					check: []
+				},
+				rules: {
+					'name': {
+						type: 'string',
+						required: true,
+						message: '请填写姓名',
+						trigger: ['blur', 'change']
+					},
+					'phoneNum': {
+						type: 'number',
+						required: true,
+						message: '请填写手机号',
+						trigger: ['blur', 'change']
+					},
+					'code': {
+						type: 'number',
+						required: true,
+						message: '请填写验证码',
+						trigger: ['blur', 'change']
+					},
+					'idCardNum': {
+						type: 'string',
+						max: 18,
+						required: true,
+						message: '请输入身份证号',
+						trigger: ['blur', 'change']
+					},
+					'check': {
+						type: 'array',
+						min: 1,
+						required: true,
+						message: '请勾选协议',
+						trigger: ['change']
+					},
+				},
+				isSend: false,
+				seconds: 60,
+				codeText: '获取验证码', //按钮文字
+				isLogin: 0,
+				loading:false,
+			}
+		},
+		watch: {
+			show(val) {
+				console.log(val);
+			}
+		},
+		onShow() {
+
+		},
+		onLoad() {
+			this.$nextTick(() => {
+				this.$refs.uForm.setRules(this.rules)
+			})
+		},
+		methods: {
+			clear(e) {
+			},
+			// 关闭登录窗口
+			close() {
+				this.$emit('input', false)
+			},
+			close1() {
+				this.show1 = false
+			},
+			submit() {
+				this.$refs.uForm.validate().then(r => {
+					let {
+						name,
+						idCardNum,
+						code,
+						phoneNum
+					} = this.userInfo
+					let obj = {name,
+						idCardNum,
+						code,
+						phoneNum}
+					uni.showLoading({
+						title:'登录中'
+					})
+					register(obj).then(res => {
+						uni.hideLoading()
+						if(res.msg == '成功'){
+							uni.setStorageSync('register', 1)
+							uni.navigateTo({
+								url: '../../verify/index'
+							})
+							// uni.showModal({
+							// 	title: '短信已发送至您的手机,请注意查收',
+							// 	success: (r) => {
+							// 		if (r.confirm) {
+							// 			uni.navigateTo({
+							// 				url: '../../login/login/login'
+							// 			})
+							// 		}
+							// 	}
+							// })
+						}
+					})
+				}).catch(e => {
+
+				})
+				// uni.navigateTo({
+				// 	url:'../../login/login/veriFace'
+				// })
+				
+
+
+
+			},
+			goLogin() {
+				uni.navigateTo({
+					url: '../../login/login/login'
+				})
+			},
+			//获取微信绑定手机号
+			getPhoneNumber(val) {
+				if(!val.detail.hasOwnProperty('encryptedData')) return
+				this.loading = true
+				getPhoneNum({code:val.detail.code}).then(res=>{
+					this.loading = false
+					this.userInfo.phoneNum = res.content
+				})
+			},
+			// 获取验证码
+			sendCode() {
+				if(this.userInfo.phoneNum === ''){
+					return uni.showToast({
+						icon:'error',
+						title:'手机号为空'
+					})
+				}
+				if (this.isSend) return
+				this.isSend = true
+				sendVerifyCode({phoneNum:this.userInfo.phoneNum,appName:'user',templateId:1}).then(res=>{
+				})
+				this.timer = setInterval(() => {
+					if (this.seconds <= 0) {
+						this.codeText = '获取验证码'
+						this.seconds = 60
+						this.isSend = false
+						clearInterval(this.timer)
+					} else {
+						this.codeText = this.seconds + 's后获取'
+					}
+					this.seconds--
+				}, 1000)
+			},
+			// 点击协议
+			handleProtocol() {
+				this.show1 = true
+			},
+			handleRefuse(){
+				this.show1 = false;
+				this.userInfo.check = []
+			},
+			handleAgree() {
+				this.show1 = false;
+				this.userInfo.check = ['']
+			},
+		},
+	}
+</script>
+
+<style lang="scss" >
+		
+	.zs-login{
+		// 弹出框关闭按钮
+		.u-popup__content__close--top-right{
+			top: 46rpx!important;
+			.u-icon__icon{
+				font-size: 30rpx!important;
+			}
+		}
+		.u-form-item{
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 24rpx;
+			background: #F5F7F9;
+			margin-top: 28rpx;
+			.u-form-item__body{
+				padding: 0 30rpx;
+			}
+			// 错误提示
+				.u-form-item__body__right__message{
+					margin-left: 130rpx!important;
+				}
+		}
+		.u-form .u-form-item:last-child{
+			background: none !important;
+			height: 60rpx;
+			line-height: 60rpx;
+			margin-top: 10rpx;
+			.u-form-item__body__right__message{
+				margin-left: 70rpx!important;
+			}
+		}
+		
+		
+		.modal {
+			width: 680rpx;
+			box-sizing: border-box;
+			padding: 30rpx;
+
+			.title {
+				text-align: center;
+				font-size: 38rpx;
+				font-weight: bold;
+				margin-top: 30rpx;
+				margin-bottom: 50rpx;
+			}
+
+			.code {
+				position: relative;
+			}
+
+			.phone-btn {
+				color: $uni-text-primary;
+				border: none;
+				font-size: 28rpx;
+				padding: 0;
+			}
+
+			.code-btn {
+				color: $uni-text-primary;
+				font-size: 28rpx;
+			}
+
+			.save-btn {
+				width: 432rpx;
+				height: 92rpx;
+				line-height: 92rpx;
+				border-radius: 46rpx;
+				font-size: 32rpx;
+				font-weight: bold;
+				background: $uni-color-primary;
+				color: #fff;
+				margin-top: 52rpx;
+			}
+
+			.jump-btn {
+				text-align: center;
+				color: royalblue;
+				font-size: 30rpx;
+				margin-top: 30rpx;
+			}
+		}
+
+		.protocol {
+			margin: 30rpx;
+			padding: 10rpx;
+			border: 1px solid #ccc;
+			height: 750rpx;
+			overflow: auto;
+			border-radius: 4px;
+			color: #666;
+		}
+
+		.btn-group {
+			display: flex;
+			align-items: center;
+
+			.btn {
+				border-radius: 4px;
+				width: 250rpx;
+				color: #fff;
+			}
+
+			.refuse {
+				background-color: rgb(191, 191, 191);
+			}
+
+			.agree {
+				background: $uni-color-primary;
+			}
+
+		}
+	}
+</style>

+ 73 - 0
components/zs-search/index.vue

@@ -0,0 +1,73 @@
+<template>
+	<view class="zs-search" :class="[fixed?'fixed':'']">
+		<input class="input" :style="{lineHeight:height+'rpx',height:height+'rpx',borderRadius:height / 2+'px',color:color,background:bgColor}" :type="type" :value="value1" @input="input" />
+		<!-- <u-icon class="search" name="search" color="#rgb(16, 16, 16)" size="88"></u-icon> -->
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			type: {
+				type: String,
+				default: 'text'
+			},
+			height: {
+				type: String,
+				default: '90'
+			},
+			color: {
+				type: String,
+				default: '#606266'
+			},
+			bgColor:{
+				type: String,
+				default: '#efefef'
+			},
+			fixed:{
+				type: Boolean,
+				default: false
+			},
+			value:{
+			}
+		},
+		data() {
+			return {
+			}
+		},
+		onReady(res) {
+		},
+		onLoad(){
+		},
+		computed: {
+			value1() {
+				return this.value 
+			}
+		},
+		methods: {
+			input(val){
+				this.$emit('input',val.detail.value )
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.zs-search{
+		background: #fff;
+		padding: 20rpx;
+		box-sizing: border-box;
+		top: 0%;
+		left: 0;
+		width: 100%;
+		position: relative;
+		.input{
+			box-sizing: border-box;
+			padding-left: 35rpx;
+		}
+
+	}
+	.fixed{
+		position: fixed !important;
+	}
+</style>

+ 1151 - 0
components/zs-skeleton/index.vue

@@ -0,0 +1,1151 @@
+<template>
+	<view class="zs-skeleton" v-if="loading" @touchmove.stop.prevent="clear">
+
+		<template v-if="type == 'home'" class="home" name="skeleton">
+			<view class="sk-container">
+				<view class="home">
+					<swiper autoplay="false" circular="true" class="swiper" duration="1000" indicator-dots="true"
+						interval="3000" current="0">
+						<swiper-item
+							style="position: absolute; width: 100%; height: 100%; transform: translate(0%, 0px) translateZ(0px);">
+							<image mode="true" class="swiper-item sk-image"></image>
+						</swiper-item>
+					</swiper>
+					<view class="u-notice-bar notice-bar--u-notice-bar data-v-24c07869 notice-bar--data-v-24c07869"
+						style="background-color:#fdf6ec">
+						<view class="u-notice column-notice--u-notice data-v-3bda0f19 column-notice--data-v-3bda0f19"
+							data-event-opts="tap,clickHandler,$event">
+							<view
+								class="u-notice__left-icon column-notice--u-notice__left-icon data-v-3bda0f19 column-notice--data-v-3bda0f19">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-volume icon--uicon-volume sk-transparent sk-opacity"
+										style="font-size:10px;line-height:10px;font-weight:normal;top:0px;color:#f9ae3d"></text>
+								</view>
+							</view>
+							<swiper autoplay="false" circular="true"
+								class="u-notice__swiper column-notice--u-notice__swiper data-v-3bda0f19 column-notice--data-v-3bda0f19"
+								data-event-opts="change,noticeChange,$event" interval="2000" vertical="true"
+								current="0">
+								<swiper-item
+									class="u-notice__swiper__item column-notice--u-notice__swiper__item data-v-3bda0f19 column-notice--data-v-3bda0f19"
+									style="position: absolute; width: 100%; height: 100%; transform: translate(0px, 0%) translateZ(0px);">
+									<text
+										class="u-notice__swiper__item__text column-notice--u-notice__swiper__item__text u-line-1 column-notice--u-line-1 data-v-3bda0f19 column-notice--data-v-3bda0f19 sk-transparent sk-text-14-2857-15 sk-text"
+										style="color:#f9ae3d;font-size:11px">用户15912345671注册成功,本月累计节省0元</text>
+								</swiper-item>
+								<swiper-item
+									class="u-notice__swiper__item column-notice--u-notice__swiper__item data-v-3bda0f19 column-notice--data-v-3bda0f19"
+									style="position: absolute; width: 100%; height: 100%; transform: translate(0px, 100%) translateZ(0px);">
+									<text
+										class="u-notice__swiper__item__text column-notice--u-notice__swiper__item__text u-line-1 column-notice--u-line-1 data-v-3bda0f19 column-notice--data-v-3bda0f19 sk-transparent sk-text-14-2857-530 sk-text"
+										style="color:#f9ae3d;font-size:11px">用户13187061605注册成功,本月累计节省0元</text>
+								</swiper-item>
+							</swiper>
+						</view>
+					</view>
+					<view class="list box">
+						<view class="card-title">
+							<view class="title sk-transparent sk-text-14-2857-425 sk-text">推荐套餐</view>
+							<view class="more sk-transparent">更多套餐
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-arrow-right icon--uicon-arrow-right sk-transparent sk-text-0-0000-55 sk-text"
+										style="font-size:16px;line-height:16px;font-weight:normal;top:0px;color:#000000"></text>
+								</view>
+							</view>
+						</view>
+						<view class="combo">
+							<view class="card" data-event-opts="tap,handleCard,0">
+								<view class="title sk-transparent sk-text-14-2857-392 sk-text"
+									style="background-position-x: 50%;">¥10.00</view>
+								<view class="sub-title sk-transparent sk-text-14-2857-806 sk-text"
+									style="text-decoration-color: transparent; background-position-x: 50%;">¥19.00
+								</view>
+							</view>
+							<view class="card active" data-event-opts="tap,handleCard,1">
+								<view class="title sk-transparent sk-text-14-2857-211 sk-text"
+									style="background-position-x: 50%;">¥20.00</view>
+								<view class="sub-title sk-transparent sk-text-14-2857-862 sk-text"
+									style="text-decoration-color: transparent; background-position-x: 50%;">¥29.00
+								</view>
+							</view>
+							<view class="card" data-event-opts="tap,handleCard,2">
+								<view class="title sk-transparent sk-text-14-2857-338 sk-text"
+									style="background-position-x: 50%;">¥30.00</view>
+								<view class="sub-title sk-transparent sk-text-14-2857-961 sk-text"
+									style="text-decoration-color: transparent; background-position-x: 50%;">¥39.00
+								</view>
+							</view>
+						</view>
+						<view class="equity">
+							<view class="item">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-chrome-circle-fill icon--uicon-chrome-circle-fill sk-transparent sk-text-0-0000-541 sk-text"
+										style="font-size: 49px; line-height: 49px; font-weight: normal; top: 0px; color: rgb(0, 0, 0); background-position-x: 50%;"></text>
+								</view>
+								<view class="desc sk-transparent sk-text-14-2857-885 sk-text"
+									style="background-position-x: 50%;">权益一</view>
+							</view>
+							<view class="item">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-chrome-circle-fill icon--uicon-chrome-circle-fill sk-transparent sk-text-0-0000-931 sk-text"
+										style="font-size: 49px; line-height: 49px; font-weight: normal; top: 0px; color: rgb(0, 0, 0); background-position-x: 50%;"></text>
+								</view>
+								<view class="desc sk-transparent sk-text-14-2857-212 sk-text"
+									style="background-position-x: 50%;">权益一</view>
+							</view>
+							<view class="item">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-chrome-circle-fill icon--uicon-chrome-circle-fill sk-transparent sk-text-0-0000-367 sk-text"
+										style="font-size: 49px; line-height: 49px; font-weight: normal; top: 0px; color: rgb(0, 0, 0); background-position-x: 50%;"></text>
+								</view>
+								<view class="desc sk-transparent sk-text-14-2857-645 sk-text"
+									style="background-position-x: 50%;">权益一</view>
+							</view>
+							<view class="item">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-chrome-circle-fill icon--uicon-chrome-circle-fill sk-transparent sk-text-0-0000-828 sk-text"
+										style="font-size: 49px; line-height: 49px; font-weight: normal; top: 0px; color: rgb(0, 0, 0); background-position-x: 50%;"></text>
+								</view>
+								<view class="desc sk-transparent sk-text-14-2857-972 sk-text"
+									style="background-position-x: 50%;">权益一</view>
+							</view>
+							<view class="item">
+								<view
+									class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+									data-event-opts="tap,clickHandler,$event">
+									<text
+										class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-chrome-circle-fill icon--uicon-chrome-circle-fill sk-transparent sk-text-0-0000-475 sk-text"
+										style="font-size: 49px; line-height: 49px; font-weight: normal; top: 0px; color: rgb(0, 0, 0); background-position-x: 50%;"></text>
+								</view>
+								<view class="desc sk-transparent sk-text-14-2857-764 sk-text"
+									style="background-position-x: 50%;">权益一</view>
+							</view>
+						</view>
+						<view class="choose-btn sk-transparent sk-text-31-8182-696 sk-text"
+							data-event-opts="tap,handleBtn,$event" style="background-position-x: 50%;">立即办理</view>
+					</view>
+					<view class="table-box box">
+						<view class="table-title sk-transparent sk-text-25-7576-434 sk-text"
+							style="background-position-x: 50%;">资费详情</view>
+						<view class="_table">
+							<view class="_tr">
+								<view class="label _td sk-transparent sk-text-20-3704-630 sk-text">名称</view>
+								<view class="value _td sk-transparent sk-text-20-3704-439 sk-text">移动生活本地宝</view>
+							</view>
+							<view class="_tr">
+								<view class="label _td sk-transparent sk-text-20-3704-221 sk-text">月费</view>
+								<view class="value _td sk-transparent sk-text-20-3704-3 sk-text">20元</view>
+							</view>
+							<view class="_tr">
+								<view class="label _td sk-transparent sk-text-20-3704-218 sk-text">尊享权益</view>
+								<view class="value _td sk-transparent">加油充电8折起;
+									<view class="_br"></view>景区门票6折起;
+									<view class="_br"></view>千家酒店随心住
+									<view class="_br"></view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="step-box box">
+						<view class="step-title sk-transparent sk-text-14-2857-771 sk-text"
+							style="background-position-x: 50%;">在线激活流程</view>
+						<view
+							class="u-steps steps--u-steps data-v-387c9f09 steps--data-v-387c9f09 u-steps--row steps--u-steps--row">
+							<view
+								class="u-steps-item steps-item--u-steps-item data-v-3ae6176e steps-item--data-v-3ae6176e vue-ref steps-item--vue-ref u-steps-item--row steps-item--u-steps-item--row"
+								data-ref="u-steps-item">
+								<view
+									class="u-steps-item__line steps-item--u-steps-item__line data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__line--row steps-item--u-steps-item__line--row"
+									style="width:90px;left:45px;background-color:#3c9cff"></view>
+								<view
+									class="u-steps-item__wrapper steps-item--u-steps-item__wrapper data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__wrapper--row steps-item--u-steps-item__wrapper--row false steps-item--false">
+									<view
+										class="u-steps-item__wrapper__circle steps-item--u-steps-item__wrapper__circle data-v-3ae6176e steps-item--data-v-3ae6176e"
+										style="background-color:transparent;border-color:#3c9cff;">
+										<view
+											class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+											data-event-opts="tap,clickHandler,$event">
+											<text
+												class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-checkmark icon--uicon-checkmark sk-transparent sk-opacity"
+												style="font-size:6px;line-height:6px;font-weight:normal;top:0px;color:#3c9cff"></text>
+										</view>
+									</view>
+								</view>
+								<view
+									class="u-steps-item__content steps-item--u-steps-item__content data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__content--row steps-item--u-steps-item__content--row"
+									style="margin-top:6px;margin-left:6px">
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--content text--u-text__value--content sk-transparent sk-text-32-5000-151 sk-text"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:7px;line-height:20px">用户注册</text>
+									</view>
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--tips text--u-text__value--tips"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:6px"></text>
+									</view>
+								</view>
+							</view>
+							<view
+								class="u-steps-item steps-item--u-steps-item data-v-3ae6176e steps-item--data-v-3ae6176e vue-ref steps-item--vue-ref u-steps-item--row steps-item--u-steps-item--row"
+								data-ref="u-steps-item">
+								<view
+									class="u-steps-item__line steps-item--u-steps-item__line data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__line--row steps-item--u-steps-item__line--row"
+									style="width:90px;left:45px;background-color:#969799"></view>
+								<view
+									class="u-steps-item__wrapper steps-item--u-steps-item__wrapper data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__wrapper--row steps-item--u-steps-item__wrapper--row false steps-item--false">
+									<view
+										class="u-steps-item__wrapper__circle steps-item--u-steps-item__wrapper__circle data-v-3ae6176e steps-item--data-v-3ae6176e"
+										style="background-color:#3c9cff;border-color:transparent;">
+										<text
+											class="u-steps-item__wrapper__circle__text steps-item--u-steps-item__wrapper__circle__text data-v-3ae6176e steps-item--data-v-3ae6176e sk-transparent sk-opacity"
+											style="color:#ffffff;">2</text>
+									</view>
+								</view>
+								<view
+									class="u-steps-item__content steps-item--u-steps-item__content data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__content--row steps-item--u-steps-item__content--row"
+									style="margin-top:6px;margin-left:6px">
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--main text--u-text__value--main sk-transparent sk-text-32-5000-770 sk-text"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:7px;line-height:20px">受理开户</text>
+									</view>
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--tips text--u-text__value--tips"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:6px"></text>
+									</view>
+								</view>
+							</view>
+							<view
+								class="u-steps-item steps-item--u-steps-item data-v-3ae6176e steps-item--data-v-3ae6176e vue-ref steps-item--vue-ref u-steps-item--row steps-item--u-steps-item--row"
+								data-ref="u-steps-item">
+								<view
+									class="u-steps-item__line steps-item--u-steps-item__line data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__line--row steps-item--u-steps-item__line--row"
+									style="width:90px;left:45px;background-color:#969799"></view>
+								<view
+									class="u-steps-item__wrapper steps-item--u-steps-item__wrapper data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__wrapper--row steps-item--u-steps-item__wrapper--row false steps-item--false">
+									<view
+										class="u-steps-item__wrapper__circle steps-item--u-steps-item__wrapper__circle data-v-3ae6176e steps-item--data-v-3ae6176e"
+										style="background-color:transparent;border-color:#969799;">
+										<text
+											class="u-steps-item__wrapper__circle__text steps-item--u-steps-item__wrapper__circle__text data-v-3ae6176e steps-item--data-v-3ae6176e sk-transparent sk-opacity"
+											style="color:#969799;">3</text>
+									</view>
+								</view>
+								<view
+									class="u-steps-item__content steps-item--u-steps-item__content data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__content--row steps-item--u-steps-item__content--row"
+									style="margin-top:6px;margin-left:6px">
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--content text--u-text__value--content sk-transparent sk-text-32-5000-72 sk-text"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:7px;line-height:20px">注册核验</text>
+									</view>
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--tips text--u-text__value--tips"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:6px"></text>
+									</view>
+								</view>
+							</view>
+							<view
+								class="u-steps-item steps-item--u-steps-item data-v-3ae6176e steps-item--data-v-3ae6176e vue-ref steps-item--vue-ref u-steps-item--row steps-item--u-steps-item--row"
+								data-ref="u-steps-item">
+								<view
+									class="u-steps-item__wrapper steps-item--u-steps-item__wrapper data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__wrapper--row steps-item--u-steps-item__wrapper--row false steps-item--false">
+									<view
+										class="u-steps-item__wrapper__circle steps-item--u-steps-item__wrapper__circle data-v-3ae6176e steps-item--data-v-3ae6176e"
+										style="background-color:transparent;border-color:#969799;">
+										<text
+											class="u-steps-item__wrapper__circle__text steps-item--u-steps-item__wrapper__circle__text data-v-3ae6176e steps-item--data-v-3ae6176e sk-transparent sk-opacity"
+											style="color:#969799;">4</text>
+									</view>
+								</view>
+								<view
+									class="u-steps-item__content steps-item--u-steps-item__content data-v-3ae6176e steps-item--data-v-3ae6176e u-steps-item__content--row steps-item--u-steps-item__content--row"
+									style="margin-top:6px;margin-left:6px">
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--content text--u-text__value--content sk-transparent sk-text-32-5000-614 sk-text"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:7px;line-height:20px">激活套餐</text>
+									</view>
+									<view class="u-text text--u-text data-v-50004b49 text--data-v-50004b49"
+										data-event-opts="tap,clickHandler,$event"
+										style="margin:0;justify-content:flex-start;">
+										<text
+											class="u-text__value text--u-text__value data-v-50004b49 text--data-v-50004b49 u-text__value--tips text--u-text__value--tips"
+											style="text-decoration:none;font-weight:normal;word-wrap:normal;font-size:6px"></text>
+									</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					
+					
+				</view>
+			</view>
+		</template>
+
+
+		<view name="skeleton" class="integral" v-else-if="type == 'integral'">
+			<view class="sk-container">
+				<view class="store">
+					<view class="bg">
+						<view class="info">
+							<view class="num sk-transparent sk-text-14-2857-550 sk-text"
+								style="background-position-x: 50%;">3399</view>
+							<view class="label sk-transparent sk-text-14-2857-921 sk-text"
+								style="background-position-x: 50%;">账户积分</view>
+						</view>
+						<view class="rule sk-transparent sk-text-14-2857-848 sk-text">积分规则</view>
+					</view>
+					<view class="tab-group">
+						<view class="tab" data-event-opts="tap,jump,./shop">
+							<view
+								class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+								data-event-opts="tap,clickHandler,$event">
+								<text
+									class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-gift-fill icon--uicon-gift-fill sk-transparent sk-text-0-0000-104 sk-text"
+									style="font-size:38px;line-height:38px;font-weight:normal;top:0px;color:#3884ea"></text>
+							</view>
+							<view class="tab-name sk-transparent sk-text-14-2857-69 sk-text"
+								style="background-position-x: 50%;">积分商城</view>
+						</view>
+						<view class="tab" data-event-opts="tap,jump,./logs">
+							<view
+								class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+								data-event-opts="tap,clickHandler,$event">
+								<text
+									class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-file-text-fill icon--uicon-file-text-fill sk-transparent sk-text-0-0000-333 sk-text"
+									style="font-size:38px;line-height:38px;font-weight:normal;top:0px;color:#ea5404"></text>
+							</view>
+							<view class="tab-name sk-transparent sk-text-14-2857-460 sk-text"
+								style="background-position-x: 50%;">积分明细</view>
+						</view>
+					</view>
+					<view class="title sk-transparent sk-text-14-2857-698 sk-text" style="background-position-x: 50%;">
+						虚拟兑换</view>
+					<view class="sub-title sk-transparent sk-text-14-2857-683 sk-text sk-pseudo sk-pseudo-circle"
+						style="background-position-x: 50%;">热门虚拟权益服务</view>
+					<view class="goods-box">
+						<view class="store-title sk-transparent sk-pseudo sk-pseudo-circle">人气兑换
+							<view
+								class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+								data-event-opts="tap,clickHandler,$event">
+								<text
+									class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-arrow-right icon--uicon-arrow-right sk-transparent sk-text-0-0000-71 sk-text"
+									style="font-size:20px;line-height:20px;font-weight:normal;top:0px;color:#000000"></text>
+							</view>
+						</view>
+						<view class="box">
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-603 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-518 sk-text">6000分</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-685 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-899 sk-text">6000分</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-708 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-854 sk-text">6000分</view>
+							</view>
+						</view>
+						<view class="store-title sk-transparent sk-pseudo sk-pseudo-circle">生活出行
+							<view
+								class="u-icon icon--u-icon data-v-2ee87dc9 icon--data-v-2ee87dc9 u-icon--right icon--u-icon--right"
+								data-event-opts="tap,clickHandler,$event">
+								<text
+									class="u-icon__icon icon--u-icon__icon data-v-2ee87dc9 icon--data-v-2ee87dc9 uicon-arrow-right icon--uicon-arrow-right sk-transparent sk-text-0-0000-480 sk-text"
+									style="font-size:20px;line-height:20px;font-weight:normal;top:0px;color:#000000"></text>
+							</view>
+						</view>
+						<view class="box">
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-83 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-764 sk-text">6000分</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-542 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-891 sk-text">6000分</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="item-title sk-transparent sk-text-14-2857-529 sk-text">
+									肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+								<view class="price sk-transparent sk-text-14-2857-230 sk-text">6000分</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+
+
+		<view name="skeleton" class="integralShop" v-else-if="type == 'integralShop'">
+			<view class="sk-container">
+				<view class="integral-shop">
+					<view class="list" data-event-opts="^load,loadMore">
+						<view class="zs-list list-index--zs-list" style="margin-top:55px;">
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info">
+									<view class="title sk-transparent sk-text-14-2857-765 sk-text">
+										肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+									<view class="desc sk-transparent sk-text-14-2857-100 sk-text">可全额兑换香辣鸡腿堡一个。换香辣鸡腿堡一个。
+									</view>
+									<view class="sale-box">
+										<view class="price sk-transparent sk-text-14-2857-512 sk-text">6000分</view>
+										<view class="sale-num sk-transparent sk-text-14-2857-523 sk-text">已售12156件
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info">
+									<view class="title sk-transparent sk-text-14-2857-213 sk-text">
+										肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+									<view class="desc sk-transparent sk-text-14-2857-967 sk-text">可全额兑换香辣鸡腿堡一个。</view>
+									<view class="sale-box">
+										<view class="price sk-transparent sk-text-14-2857-352 sk-text">6000分</view>
+										<view class="sale-num sk-transparent sk-text-14-2857-923 sk-text">已售12156件
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info">
+									<view class="title sk-transparent sk-text-14-2857-629 sk-text">
+										肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+									<view class="desc sk-transparent sk-text-14-2857-869 sk-text">可全额兑换香辣鸡腿堡一个。</view>
+									<view class="sale-box">
+										<view class="price sk-transparent sk-text-14-2857-607 sk-text">6000分</view>
+										<view class="sale-num sk-transparent sk-text-14-2857-396 sk-text">已售12156件
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info">
+									<view class="title sk-transparent sk-text-14-2857-849 sk-text">
+										肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+									<view class="desc sk-transparent sk-text-14-2857-23 sk-text">可全额兑换香辣鸡腿堡一个。</view>
+									<view class="sale-box">
+										<view class="price sk-transparent sk-text-14-2857-721 sk-text">6000分</view>
+										<view class="sale-num sk-transparent sk-text-14-2857-633 sk-text">已售12156件
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info">
+									<view class="title sk-transparent sk-text-14-2857-670 sk-text">
+										肯德基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基基</view>
+									<view class="desc sk-transparent sk-text-14-2857-688 sk-text">可全额兑换香辣鸡腿堡一个。</view>
+									<view class="sale-box">
+										<view class="price sk-transparent sk-text-14-2857-877 sk-text">6000分</view>
+										<view class="sale-num sk-transparent sk-text-14-2857-361 sk-text">已售12156件
+										</view>
+									</view>
+								</view>
+							</view>
+							<view class="item">
+								<image class="icon sk-image" mode="aspectFill"></image>
+								<view class="info"></view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "zs-skeleton",
+		props: {
+			type: {
+				type: String,
+				default: 'home'
+			},
+			loading: {
+				type: Boolean,
+				default: true
+			},
+		},
+		data() {
+			return {
+
+			};
+		},
+		methods: {
+			clear(e) {},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.zs-skeleton {
+		position: fixed;
+		top: 0;
+		left: 0;
+		width: 100vw;
+		height: 100vh;
+		z-index: 9999999;
+		background: #fff;
+	}
+		.home {
+
+			.sk-transparent {
+				color: transparent !important;
+			}
+
+			.sk-opacity {
+				opacity: 0 !important;
+			}
+
+			.sk-text-14-2857-15 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 27.8986rpx;
+				position: relative !important;
+			}
+
+			.sk-text {
+				background-origin: content-box !important;
+				background-clip: content-box !important;
+				background-color: transparent !important;
+				color: transparent !important;
+				background-repeat: repeat-y !important;
+			}
+
+			.sk-text-14-2857-530 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 27.8986rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-425 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 45.6522rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-55 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 28.9855rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-392 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-806 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-211 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-862 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-338 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-961 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-541 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 88.7681rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-885 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-931 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 88.7681rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-212 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-367 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 88.7681rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-645 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-828 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 88.7681rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-972 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-475 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 88.7681rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-764 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-31-8182-696 {
+				background-image: linear-gradient(transparent 31.8182%, #EEEEEE 0%, #EEEEEE 68.1818%, transparent 0%) !important;
+				background-size: 100% 79.7101rpx;
+				position: relative !important;
+			}
+
+			.sk-text-25-7576-434 {
+				background-image: linear-gradient(transparent 25.7576%, #EEEEEE 0%, #EEEEEE 74.2424%, transparent 0%) !important;
+				background-size: 100% 59.7826rpx;
+				position: relative !important;
+			}
+
+			.sk-text-20-3704-630 {
+				background-image: linear-gradient(transparent 20.3704%, #EEEEEE 0%, #EEEEEE 79.6296%, transparent 0%) !important;
+				background-size: 100% 48.9130rpx;
+				position: relative !important;
+			}
+
+			.sk-text-20-3704-439 {
+				background-image: linear-gradient(transparent 20.3704%, #EEEEEE 0%, #EEEEEE 79.6296%, transparent 0%) !important;
+				background-size: 100% 48.9130rpx;
+				position: relative !important;
+			}
+
+			.sk-text-20-3704-221 {
+				background-image: linear-gradient(transparent 20.3704%, #EEEEEE 0%, #EEEEEE 79.6296%, transparent 0%) !important;
+				background-size: 100% 48.9130rpx;
+				position: relative !important;
+			}
+
+			.sk-text-20-3704-3 {
+				background-image: linear-gradient(transparent 20.3704%, #EEEEEE 0%, #EEEEEE 79.6296%, transparent 0%) !important;
+				background-size: 100% 48.9130rpx;
+				position: relative !important;
+			}
+
+			.sk-text-20-3704-218 {
+				background-image: linear-gradient(transparent 20.3704%, #EEEEEE 0%, #EEEEEE 79.6296%, transparent 0%) !important;
+				background-size: 100% 48.9130rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-771 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-32-5000-151 {
+				background-image: linear-gradient(transparent 32.5000%, #EEEEEE 0%, #EEEEEE 67.5000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-32-5000-770 {
+				background-image: linear-gradient(transparent 32.5000%, #EEEEEE 0%, #EEEEEE 67.5000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-32-5000-72 {
+				background-image: linear-gradient(transparent 32.5000%, #EEEEEE 0%, #EEEEEE 67.5000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-32-5000-614 {
+				background-image: linear-gradient(transparent 32.5000%, #EEEEEE 0%, #EEEEEE 67.5000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-25-7576-825 {
+				background-image: linear-gradient(transparent 25.7576%, #EEEEEE 0%, #EEEEEE 74.2424%, transparent 0%) !important;
+				background-size: 100% 59.7826rpx;
+				position: relative !important;
+			}
+
+			.sk-text-25-7576-153 {
+				background-image: linear-gradient(transparent 25.7576%, #EEEEEE 0%, #EEEEEE 74.2424%, transparent 0%) !important;
+				background-size: 100% 59.7826rpx;
+				position: relative !important;
+			}
+
+			.sk-image {
+				background: #EFEFEF !important;
+			}
+
+			.sk-container {
+				position: absolute;
+				left: 0;
+				top: 0;
+				width: 100%;
+				height: 100%;
+				overflow: hidden;
+				background-color: transparent;
+			}
+
+		}
+
+
+
+		.integral {
+			.sk-transparent {
+				color: transparent !important;
+			}
+
+			.sk-text-14-2857-550 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 65.9420rpx;
+				position: relative !important;
+			}
+
+			.sk-text {
+				background-origin: content-box !important;
+				background-clip: content-box !important;
+				background-color: transparent !important;
+				color: transparent !important;
+				background-repeat: repeat-y !important;
+			}
+
+			.sk-text-14-2857-921 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 38.0435rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-848 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 38.0435rpx;
+				position: absolute !important;
+			}
+
+			.sk-text-0-0000-104 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 68.8406rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-69 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 38.0435rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-333 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 68.8406rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-460 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 38.0435rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-698 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 40.5797rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-683 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-71 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-603 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-518 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-685 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-899 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-708 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-854 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-0-0000-480 {
+				background-image: linear-gradient(transparent 0.0000%, #EEEEEE 0%, #EEEEEE 100.0000%, transparent 0%) !important;
+				background-size: 100% 36.2319rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-83 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-764 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-542 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-891 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-529 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-230 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-image {
+				background: #EFEFEF !important;
+			}
+
+			.sk-pseudo::before,
+			.sk-pseudo::after {
+				background: #EFEFEF !important;
+				background-image: none !important;
+				color: transparent !important;
+				border-color: transparent !important;
+			}
+
+			.sk-pseudo-rect::before,
+			.sk-pseudo-rect::after {
+				border-radius: 0 !important;
+			}
+
+			.sk-pseudo-circle::before,
+			.sk-pseudo-circle::after {
+				border-radius: 50% !important;
+			}
+
+			.sk-container {
+				position: absolute;
+				left: 0;
+				top: 0;
+				width: 100%;
+				height: 100%;
+				overflow: hidden;
+				background-color: transparent;
+			}
+		}
+
+
+
+		.integralShop {
+			.sk-transparent {
+				color: transparent !important;
+			}
+
+			.sk-text-14-2857-150 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text {
+				background-origin: content-box !important;
+				background-clip: content-box !important;
+				background-color: transparent !important;
+				color: transparent !important;
+				background-repeat: repeat-y !important;
+			}
+
+			.sk-text-14-2857-352 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-379 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-765 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-100 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-512 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-523 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-213 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-967 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-923 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-629 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-869 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-607 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-396 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-849 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-23 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-721 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-633 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-670 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 35.5072rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-688 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-877 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 50.7246rpx;
+				position: relative !important;
+			}
+
+			.sk-text-14-2857-361 {
+				background-image: linear-gradient(transparent 14.2857%, #EEEEEE 0%, #EEEEEE 85.7143%, transparent 0%) !important;
+				background-size: 100% 32.9710rpx;
+				position: relative !important;
+			}
+
+			.sk-image {
+				background: #EFEFEF !important;
+			}
+
+			.sk-pseudo::before,
+			.sk-pseudo::after {
+				background: #EFEFEF !important;
+				background-image: none !important;
+				color: transparent !important;
+				border-color: transparent !important;
+			}
+
+			.sk-pseudo-rect::before,
+			.sk-pseudo-rect::after {
+				border-radius: 0 !important;
+			}
+
+			.sk-pseudo-circle::before,
+			.sk-pseudo-circle::after {
+				border-radius: 50% !important;
+			}
+
+			.sk-container {
+				position: absolute;
+				left: 0;
+				top: 0;
+				width: 100%;
+				height: 100%;
+				overflow: hidden;
+				background-color: transparent;
+			}
+
+		}
+</style>

+ 916 - 0
detail/discountsDetail/index.vue

@@ -0,0 +1,916 @@
+<template>
+	<view class="discountsDetail">
+		<!-- <image class="banner" :src="bgList[active]" mode=""></image> -->
+		<zs-img width="100%" height="310rpx" :src="bgList[active]"></zs-img>
+		<!-- 推荐两个内容 -->
+		<view class="recommend">
+			<view class="recommend-item">
+				<view class="top-box">
+					<view class="title">
+						天天低价
+					</view>
+					<view class="type-box">
+						<image class="hot" src="../../static/hot-white.png" mode=""></image>
+						<view class="type">
+							今日超低价
+						</view>
+					</view>
+				</view>
+				<view class="image-box">
+					<image class="image" src="https://img2.baidu.com/it/u=2852595632,3564235706&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500" mode=""></image>
+					<view class="btn-box">
+						<view class="btn">
+							折
+						</view>
+						<view class="desc">
+							满200享7折
+						</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="recommend-item color">
+				<view class="top-box">
+					<view class="title">
+						精选折扣
+					</view>
+					<view class="type-box">
+						<image class="hot" src="../../static/hot-white.png" mode=""></image>
+						<view class="type">
+							千万补贴
+						</view>
+					</view>
+				</view>
+				<view class="image-box">
+					<image class="image" src="https://img0.baidu.com/it/u=2490196579,2804013959&fm=253&fmt=auto&app=138&f=JPEG?w=743&h=500" mode=""></image>
+					<view class="btn-box">
+						<view class="btn">
+							折
+						</view>
+						<view class="desc">
+							满200享7折
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- titleArr: 选择项数组 dropArr: 下拉项数组 二维数组 @finishDropClick: 下拉筛选完成事件-->
+		<cc-dropDownMenu :titleArr="titleArr" :dropArr="dropArr" @finishDropClick="finishClick"></cc-dropDownMenu>
+
+		<!-- 内容 -->
+			<zs-list  class="store-box" mt="0" @load="loadMore" :status="status">
+			<view class="item" v-for="(item,index) in list" :key="index">
+				<!-- <image :src="item.src" mode="" class="icon" @click="goDetail(item)"></image> -->
+				<zs-img :src="item.src" width="200rpx" height="180rpx" radius="full" @click.native="goDetail(item)"></zs-img>
+				<view class="info">
+					<view class="title">
+						{{item.title}}
+					</view>
+					<view class="address"  @click="handleAdress(item)">
+						<u-icon name="tags" size="38"></u-icon>
+						{{item.address}}·距你{{item.distance}}km
+					</view>
+					<view class="handle-box">
+						<view class="tags">
+							<view class="tag-item">
+								<view class="label">
+									折
+								</view>	
+								<view class="value">
+									满200享8折
+								</view>
+							</view>
+						</view>
+						<view class="btn" @click="goDetail(item)">
+							{{btnText}}
+							<image class="addGas" v-if="active == 0" src="../../static/add_gas.png" mode=""></image>
+							<image class="hand" v-else src="../../static/hand.png" mode=""></image>
+						</view>
+					</view>
+					<view class="like" @click="handleLike(item)">
+						<u-icon :name="item.isLike?'heart-fill':'heart'" color="red" size="48"></u-icon>
+					</view>
+				</view>
+			</view>
+			</zs-list>
+		
+
+		<!-- 地图 -->
+		<map v-show="false" id="map"></map>
+	</view>
+</template>
+
+<script>
+	export default {
+		options: { styleIsolation: 'shared' },
+		data() {
+			return {
+				longitude: '',
+				latitude: '',
+				destination: '',
+				_mapContext: null,
+				active:0,
+				status:'more',
+				list: [],
+				btnText:'去使用',
+				titleArr: ['全部', '价格最低', '距离最远'],
+				dropArr: [
+					// 距离
+					[{
+							text: '距离最远',
+							value: ""
+						},
+						{
+							text: '距离最近',
+							value: "440103"
+						}
+					],
+					// 类型
+					[{
+							text: '价格最低',
+							value: "10000"
+						},
+						{
+							text: '价格最高',
+							value: "11000"
+						}
+					],
+
+					// 类型
+					[{
+							text: '距离最远',
+							value: "0-40"
+						},
+						{
+							text: '距离最近',
+							value: "40-60"
+						}
+					],
+				],
+				bgList:[
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX67a3bc8b468b1bfd77dcd4d7438a3d3e065f935a00f08e59645804daf159c284.png',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX611bc009fa733cff73887ee29c1732ae75825ed9e0954b587c74a4c189a3cffb.png',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX190c797263732d957a8b1678378cdfed7d1080d44f950646dd434fff84683bdd.png',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX7f66243508490c104c814e8c41c49756536d856e92e0ac723a73194fa798da00.png',
+					'',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX6a26b42e540e71c7fe2ec5e364d436db43d35da7b91825f4bfb6d58f156446be.png',
+					'',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX069386da770b57a37eaa0262300a56f9916e5041e2f11664c963c85b0e3ea8e1.png',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAXf71b46c3c1373105f745d79b9414347390c0c2532f936e8bcca7909f9bfaa117.png',
+					'https://alipic.lanhuapp.com/XDSlicePNGMAX659ebd674f97a9685dada70afed93e969c75dadd97236d24e373c70bd5b5adbf.png'
+				],
+				filterResultData: []
+			}
+		},
+		watch: {
+			active(val) {
+				if (val == 0) {
+					this.btnText = '去加油'
+					this.list = [{
+							id: 1,
+							src:'https://img1.baidu.com/it/u=960909382,1465538057&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
+							title: '贵西能源加油站(金清大道站)',
+							isLike: true,
+							price: 6.5,
+							type: '95#',
+							desc: '加200省2.2',
+							distance: 2.94,
+							latitude: 26.603531486213345,
+							longitude: 106.56382083892822,
+							address: '贵州省贵阳市观山湖区金清路',
+						},
+						{
+							id: 2,
+							src:'https://img0.baidu.com/it/u=2726460010,52071254&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500',
+							title: '中国石化(贵阳云岩北京路加油站)',
+							isLike: false,
+							price: 6.25,
+							type: '92#',
+							desc: '加200省3.2',
+							distance: 5.23,
+							latitude: 26.595808,
+							longitude: 106.707066,
+							address: '贵州省贵阳市云岩区北京路85号'
+						},
+						{
+							id: 2,
+							src:'https://t9.baidu.com/it/u=900121157,1816887002&fm=193',
+							title: '中国石化(贵阳云岩北京路加油站)',
+							isLike: false,
+							price: 6.25,
+							type: '92#',
+							desc: '加200省3.2',
+							distance: 5.23,
+							latitude: 26.595808,
+							longitude: 106.707066,
+							address: '贵州省贵阳市云岩区北京路85号'
+						},
+					]
+				} else if (val == 1) {
+					this.btnText = '去预定'
+					this.list = [{
+							id: 1,
+							src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+							title: '贵州实际颐和大酒店',
+							isLike: true,
+							price: 6.5,
+							desc: '预计省20元',
+							distance: 2.94,
+							latitude: 26.59955,
+							longitude: 106.633163,
+							address: '近阳明文化园'
+						},
+						{
+							id: 2,
+							src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+							title: '泊斯曼酒店',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.62396261928078,
+							longitude: 106.61702513694763,
+							address: '近摩根中心'
+						},
+						{
+							id: 3,
+							src:'https://file.gzl.cn/group1/M00/32/54/wKkBH1_7uBKAaWm1AAMJ4gwToRo237.jpg',
+							title: '贵阳万丽酒店',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.62396261928078,
+							longitude: 106.61702513694763,
+							address: '近青岩古镇'
+						},
+						{
+							id: 4,
+							src:'https://dimg04.c-ctrip.com/images/0202w120008v2aba15BD3_R_600_400_R5_D.jpg',
+							title: '贵阳万国艺术酒店',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.62396261928078,
+							longitude: 106.61702513694763,
+							address: '近贵阳站'
+						},
+						{
+							id: 5,
+							src:'https://ak-d.tripcdn.com/images/0223x1200084a4izh65B9_R_600_400_R5_D.jpg',
+							title: '漫居酒店',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.62396261928078,
+							longitude: 106.61702513694763,
+							address: '花果园'
+						}
+					]
+				} else if (val == 2) {
+					this.btnText = '去订票'
+					this.list = [{
+							id: 1,
+							src:'https://img0.baidu.com/it/u=74080926,2958835583&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500',
+							title: '黄果树瀑布',
+							isLike: true,
+							price: 6.5,
+							desc: '预计省20元',
+							distance: 2.94,
+							latitude: 26.651654,
+							longitude: 106.626228,
+							address: '贵州省黄果树瀑布'
+						},
+						{
+							id: 2,
+							src:'https://p5.itc.cn/images01/20200927/1a24090e09b0493f82b4429f0c6a7adc.jpeg',
+							title: '西江千户苗寨',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.641261,
+							longitude: 106.627265,
+							address: '贵州省西江千户苗寨'
+						},
+						{
+							id: 2,
+							src:'https://img0.baidu.com/it/u=699183765,3081252315&fm=253&fmt=auto&app=138&f=JPEG?w=804&h=500',
+							title: '荔波小七孔景区',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.641261,
+							longitude: 106.627265,
+							address: '贵州省荔波小七孔景区'
+						},
+						{
+							id: 2,
+							src:'https://p4.itc.cn/images01/20230216/3abdc64f577643d290d10a120f3e1940.jpeg',
+							title: '梵净山5A',
+							isLike: false,
+							price: 6.25,
+							desc: '预计省10元',
+							distance: 5.23,
+							latitude: 26.641261,
+							longitude: 106.627265,
+							address: '贵州省梵净山'
+						}
+					]
+				} else if (val == 3) {
+					this.btnText = '去用券'
+					this.list = [{
+							id: 1,
+							title: '刘记原味烧烤',
+							src:'https://img2.baidu.com/it/u=2568144405,1916268494&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+						},
+						{
+							id: 2,
+							title: '老地方翘脚牛肉王府',
+							src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fci.xiaohongshu.com%2F961eeba1-3cb2-96fd-b030-a1ea59b60599%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fci.xiaohongshu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695544582&t=04e1a1b16f4f1bf35da7f1496ec89a6b',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+							id: 2,
+							title: '老贵阳牛肉粉(友怡路店)',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAXa74cfc58f9a54990e0a1e804e763563f4521e3ec1dc948005893ae57a451e506.png',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+					]
+				}
+				else if (val == 4) {
+					this.btnText = '去用券'
+					this.list = [{
+							id: 1,
+							title: '滴滴代驾',
+							src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fci.xiaohongshu.com%2F961eeba1-3cb2-96fd-b030-a1ea59b60599%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fci.xiaohongshu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695544582&t=04e1a1b16f4f1bf35da7f1496ec89a6b',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '近阳明文化园'
+						},
+						{
+							id: 2,
+							title: 'uber代驾',
+							src:'https://img2.baidu.com/it/u=2568144405,1916268494&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '近青岩古镇'
+						},
+					]
+				}
+				else if (val == 5) {
+					this.btnText = '去用券'
+					this.list = [{
+							id: 1,
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAX74b53f67cd976c940403da718b8ae4dea572eb6ad87b4e75d9a08a4e66a3c24b.png',
+							title: '海豚购)',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+						},
+						{
+							id: 2,
+							title: '山姆会员折扣超市',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAX4c9d5896c29bd729a0bea17305b0fd52fec8450d7126e2722eebcae4652fe06c.png',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						
+					]
+				}
+				else if (val == 6) {
+					this.list = [{
+							id: 1,
+							title: '王师傅代驾',
+							src:'https://img1.baidu.com/it/u=2215223028,3689421296&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '近阳明文化园'
+						},
+						{
+							id: 2,
+							title: '李师傅代驾',
+							src:'https://img2.baidu.com/it/u=113455498,1780988372&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '近青岩古镇'
+						},
+						{
+							id: 2,
+							title: '王师傅代驾',
+							src:'https://img1.baidu.com/it/u=981419242,2203103347&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=333',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '近摩根中心'
+						},
+						
+					]
+				}
+				else if (val == 7) {
+					this.list = [{
+							id: 1,
+							title: 'F+轻食健身赋能空间',
+							src:'https://image.baidu.com/search/detail?tn=baiduimagedetail&word=%E5%81%A5%E8%BA%AB%E6%88%BF&album_tab=%E8%AE%BE%E8%AE%A1%E7%B4%A0%E6%9D%90&album_id=337&ie=utf-8&fr=albumsdetail&cs=168157791,2473115493&pi=132681&pn=19&ic=0&objurl=https%3A%2F%2Ft7.baidu.com%2Fit%2Fu%3D168157791%2C2473115493%26fm%3D193%26f%3DGIF&dyTabStr=MTEsMCw2LDEsMyw0LDUsMiw4LDcsOQ%3D%3D',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '近阳明文化园'
+						},
+						{
+							id: 2,
+							title: '星河荟健身轻食(逸天成店)',
+							src:'https://image.baidu.com/search/detail?tn=baiduimagedetail&word=%E5%81%A5%E8%BA%AB%E6%88%BF&album_tab=%E8%AE%BE%E8%AE%A1%E7%B4%A0%E6%9D%90&album_id=337&ie=utf-8&fr=albumsdetail&cs=759278248,2805900043&pi=132667&pn=5&ic=0&objurl=https%3A%2F%2Ft7.baidu.com%2Fit%2Fu%3D759278248%2C2805900043%26fm%3D193%26f%3DGIF&dyTabStr=MTEsMCw2LDEsMyw0LDUsMiw4LDcsOQ%3D%3D',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '近青岩古镇'
+						},
+						{
+							id: 2,
+							title: '贵阳米佳健身',
+							src:'https://t7.baidu.com/it/u=2278524516,128260033&fm=193&f=GIF',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '近摩根中心'
+						},
+						{
+							id: 2,
+							title: 'AU 健身',
+							src:'https://t7.baidu.com/it/u=3103498870,4249354294&fm=193&f=GIF',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						}
+					]
+				}else if (val == 8) {
+					this.list = [{
+							id: 1,
+							title: '叮当快药',
+							src:'https://img0.baidu.com/it/u=11997160,2930303799&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=500',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+						},
+						{
+							id: 2,
+							title: '泉源堂智慧药房',
+							src:'https://img1.baidu.com/it/u=2524636074,1628913937&fm=253&fmt=auto&app=138&f=JPEG?w=704&h=500',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+							id: 2,
+							title: '海天星辰大药房',
+							src:'https://img0.baidu.com/it/u=3833239224,203518028&fm=253&fmt=auto&app=138&f=JPEG?w=962&h=437',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						
+					]
+				}else if (val == 9) {
+					this.list = [{
+							id: 1,
+							title: '王阿姨家政',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAX7b82f25647df93025929861cf2498f3141c2207e24bbd8fb9049b4a689f90409.png',
+							isLike: true,
+							price: 6.5,
+							desc: '购物9折起',
+							distance: 2.94,
+							latitude: 26.577315,
+							longitude: 106.696473,
+							address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+						},
+						{
+							id: 2,
+							title: '安心到家家政服务',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAX4b021213a542e679edac9bbf41b2b23f0b05a372cc62708a15471c25509b4c99.png',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+							id: 2,
+							title: '便民家政',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAXdc6d1a49e7805cb3ab8049468af442076e95b95edbad2dfd7835739815d6d44b.png',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+					]
+				}
+			}
+		},
+		methods: {
+			finishClick(resultData) {
+				this.filterResultData = resultData;
+				// uni.showModal({
+				// 	title: '温馨提示',
+				// 	content: '筛选数据 = ' + JSON.stringify(resultData)
+				// })
+			},
+			handleLike(item) {
+				item.isLike = !item.isLike
+			},
+			// 地图中打开商家
+			handleAdress(item) {
+				this.longitude = item.longitude
+				this.latitude = item.latitude
+				this.destination = item.address
+				this._mapContext.openMapApp({
+					longitude: item.longitude,
+					latitude: item.latitude,
+					destination: item.address,
+					complete(r) {
+						console.log(r);
+					}
+				})
+			},
+			goDetail(item){
+				uni.setStorageSync('shopInfo',JSON.stringify(item))
+				uni.navigateTo({
+					url:'../shopDetail/shopDetail'
+				})
+			},
+			loadMore(){
+				this.status = 'loading'
+				setTimeout(()=>{
+					this.status = 'more'
+					this.list = this.list.concat([
+						{
+								id: 2,
+								src:'https://img1.baidu.com/it/u=668605153,2232949273&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+								title: '星巴克(贵阳观山湖玖福城门店)',
+								isLike: false,
+								price: 6.25,
+								desc: '预计省10元',
+								distance: 5.23,
+								latitude: 26.641261,
+								longitude: 106.627265,
+								address: '贵州省贵阳市观山湖区碧海南路贵阳国贸玖福城生活购物中心F1'
+							},
+							{
+									id: 2,
+									src:'https://img1.baidu.com/it/u=668605153,2232949273&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+									title: '星巴克(贵阳观山湖玖福城门店)',
+									isLike: false,
+									price: 6.25,
+									desc: '预计省10元',
+									distance: 5.23,
+									latitude: 26.641261,
+									longitude: 106.627265,
+									address: '贵州省贵阳市观山湖区碧海南路贵阳国贸玖福城生活购物中心F1'
+								},
+								{
+										id: 2,
+										src:'https://img1.baidu.com/it/u=668605153,2232949273&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+										title: '星巴克(贵阳观山湖玖福城门店)',
+										isLike: false,
+										price: 6.25,
+										desc: '预计省10元',
+										distance: 5.23,
+										latitude: 26.641261,
+										longitude: 106.627265,
+										address: '贵州省贵阳市观山湖区碧海南路贵阳国贸玖福城生活购物中心F1'
+									},
+									{
+											id: 2,
+											src:'https://img1.baidu.com/it/u=668605153,2232949273&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500',
+											title: '星巴克(贵阳观山湖玖福城门店)',
+											isLike: false,
+											price: 6.25,
+											desc: '预计省10元',
+											distance: 5.23,
+											latitude: 26.641261,
+											longitude: 106.627265,
+											address: '贵州省贵阳市观山湖区碧海南路贵阳国贸玖福城生活购物中心F1'
+										}
+					])
+					
+				},1000)
+			},
+		},
+		onLoad(option) {
+			this.active = option.type
+
+		},
+		onReady() {
+			this._mapContext = uni.createMapContext("map", this);
+
+		}
+	}
+</script>
+
+<style lang="scss">
+
+	.bar-item-text {
+		max-width: 250rpx !important;
+	}
+
+	.screen-bar::after {
+		display: none;
+	}
+	.discountsDetail  cc-drop-down-menu .screen-bar{
+		// position: fixed;
+		top: 0%;
+		left: 0;
+		width: 100%;
+	}
+	.discountsDetail {
+		background: #f9f9f9;
+		.banner{
+			width: 100%;
+			height: 310rpx;
+			position: relative;
+			z-index: 99;
+		}
+		.recommend{
+			display: flex;
+			justify-content: space-between;
+			padding: 0 20rpx;
+			margin-top: 20rpx;
+			.recommend-item.color{
+				background: linear-gradient(180deg, #FFD2B5 0%, #FFFFFF 100%);
+				.type-box{
+					background: linear-gradient(90deg, #FF4A39 0%, #FFA770 100%)!important;
+				}
+			}
+			.recommend-item{
+				padding: 15rpx;
+				border-radius: 16rpx;
+				width: 332rpx;
+				height: 284rpx;
+				box-sizing: border-box;
+				background: linear-gradient(180deg, #FFDEDE 0%, #FFFFFF 100%);
+				box-shadow: inset 0rpx 6rpx 12rpx 2rpx rgba(255,255,255,0.16);
+				.top-box{
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.title{
+						color: #0F0F0F;
+						font-size: 26rpx;
+					}
+					.type-box{
+						display: flex;
+						align-items: center;
+						padding: 0 16rpx;
+						height: 40rpx;
+						line-height: 40rpx;
+						border-radius: 20rpx;
+						background: linear-gradient(90deg, #FE574C 0%, #FE2A5C 100%);
+						.hot{
+							width: 16.7rpx;
+							height: 21.7rpx;
+						}
+						.type{
+							font-size: 20rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 6rpx;
+						}
+					}
+				}
+				.image-box{
+					position: relative;
+					margin-top: 20rpx;
+					.image{
+						width: 302rpx;
+						height: 182rpx;
+						border-radius: 16rpx;
+					}
+					.btn-box{
+						position: absolute;
+						left: 0;
+						bottom: 10rpx;
+						display: flex;
+						align-items: center;
+						.desc{
+							font-size: 24rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 10rpx;
+						}
+						.btn{
+							height: 36rpx;
+							line-height: 36rpx;
+							padding: 0 14rpx;
+							background: $uni-color-primary;
+							border-radius: 8rpx;
+							color: #FFFFFF;
+							font-size: 20rpx;
+						}
+					}
+				}
+			}
+		}
+
+		.zs-list {
+			// padding-top: 20rpx;
+			.item {
+				display: flex;
+				padding: 20rpx 30rpx;
+				background: #fff;
+				border-radius: 16rpx;
+				margin: 20rpx 30rpx 0;
+				.icon{
+					width: 200rpx;
+					height: 180rpx;
+					border-radius: 8px;
+				}	
+				.info{
+					flex: 1;
+					padding-left: 20rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					position: relative;
+					.title{
+						font-size: 28rpx;
+						font-weight: bold;
+						width: 340rpx;
+						white-space: nowrap;
+						overflow: hidden;
+						text-overflow: ellipsis;
+					}
+					.address{
+						color: #bebebe;
+						display: flex;
+						align-items: center;
+						font-size: 24rpx;
+						padding: 15rpx 0;
+						.u-icon{
+							align-self: flex-start;
+						}
+					}
+					.handle-box{
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						.tags{
+							display: flex;
+							align-items: center;
+							.tag-item{
+								line-height: 50rpx;
+								border-radius: 8rpx;
+								padding: 6rpx 0;
+								font-size: 24rpx;
+								margin-left: 10rpx;
+								display: flex;
+								.label{
+									background: #FE5B47;
+									color: #fff;
+									padding: 0 10rpx;
+									border-radius: 8rpx 0 0 8rpx;
+								}
+								.value{
+									color: #FE5B47;
+									background: rgba(254,91,71,0.1);
+									padding: 0 14rpx;
+									border-radius: 0 8rpx 8rpx 0;
+								}
+							}
+						}
+						.btn{
+							font-size: 22rpx;
+							font-weight: 400;
+							color: #9E6A34;
+							width: 132rpx;
+							height: 44rpx;
+							line-height: 44rpx;
+							text-align: center;
+							background: linear-gradient(137deg, #F9E093 0%, #F7D269 100%);
+							border-radius: 24rpx;
+							position: relative;
+							.hand{
+								width: 36rpx;
+								height: 32rpx;
+								position: absolute;
+								top: 50%;
+								right: 6rpx;
+								animation: click .3s cubic-bezier(0.39, 0.575, 0.565, 1) infinite;
+							}
+							.addGas{
+								width: 42rpx;
+								height: 26rpx;
+								position: absolute;
+								top: -10rpx;
+								left: 6rpx;
+								animation: click .6s cubic-bezier(0.39, 0.575, 0.565, 1) infinite;
+							}
+							@keyframes click {
+								0%{
+									transform: scale(1);
+								}
+								50%{
+									transform: scale(1.3);
+								}
+								100%{
+									transform: scale(1);
+								}
+							}
+						}
+					}
+					.like{
+						position: absolute;
+						top: 0%;
+						right: 10rpx;
+					}
+				}
+			}
+		}
+
+		#map {
+			position: relative;
+			top: -100000px;
+			left: -1000000px;
+		}
+	}
+</style>

+ 81 - 0
detail/qrcode/index.vue

@@ -0,0 +1,81 @@
+<template>
+	<view class="qrcode-page">
+		<image class="top-bg" src="../../static/top-bg.png" mode=""></image>
+		<view class="container">
+			
+			<!-- 二维码 -->
+			<uqrcode ref="uqrcode" type="2d" canvas-id="qrcode" value="12343245" :loading="loading" :options="{ margin: 20 }">
+				 <template v-slot:loading>
+					<text style="color: black;">拼命加载中...</text>
+				  </template>
+			</uqrcode>
+			
+			<view class="notice">
+				出示二维码给商家扫码验证
+			</view>
+			
+			<button class="save-btn" type="default" @click="save">我已验证</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				loading: false
+			}
+		},
+		methods: {
+			save() {
+				uni.navigateBack({
+					fail() {
+						this.$router.go(-1)
+					}
+				})
+			}
+		},
+		onLoad() {
+			// setTimeout(()=>{
+			// 	this.loading = false
+			// },5000)
+		}
+	}
+</script>
+
+<style lang="scss" >
+.qrcode-page{
+	
+	background: #F9F9F9;
+	.top-bg{
+		width: 750rpx;
+		height: 406rpx;
+	}
+	.container{
+		margin: 0 30rpx;
+		padding: 120rpx 0;
+		background: #fff;
+		border-radius: 32rpx;
+		position: relative;
+		top: -200rpx;
+		.uqrcode{
+			margin: 100rpx auto 0;
+		}
+		.notice{
+			text-align: center;
+			font-size: 32rpx;
+			margin-top: 60rpx;
+		}
+		.save-btn{
+			width: 560rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			background: $uni-color-primary;
+			color: #fff;
+			box-shadow: inset 0rpx 6rpx 12rpx 2rpx rgba(255,255,255,0.16);
+			border-radius: 46rpx;
+			margin-top: 80rpx;
+		}
+	}
+}
+</style>

+ 534 - 0
detail/shopDetail/shopDetail.vue

@@ -0,0 +1,534 @@
+<template>
+	<view class="shopDetail">
+		<view class="top-box">
+			<image class="bg" :src="info.src||'../../static/jiayou.png'" mode="aspectFill"></image>
+
+			<view class="shop-info">
+				<view class="title">
+					{{info.title}}
+				</view>
+				<view class="address">
+					<image class="position" src="../../static/position.png" mode=""></image>
+					{{info.address || 'xxxxx地址'}}·距你{{info.distance}}km
+				</view>
+			</view>
+		</view>
+		<view class="content">
+			<view class="discounts">
+				<view class="title">
+					全场优惠
+				</view>
+				<view class="discounts-item">
+					<view class="info">
+						<view class="title">
+							满200享 <text class="red">7</text> 折
+						</view>
+						<view class="time">
+							有效期至2023-10-27
+						</view>
+					</view>
+					<view class="btn-box">
+						<view class="num">
+							剩余 1 次
+						</view>
+						<view class="btn" @click="jump">
+							去使用
+						</view>
+					</view>
+				</view>
+				
+				<view class="discounts-item">
+					<view class="info">
+						<view class="title">
+							满200享 <text class="red">7</text> 折
+						</view>
+						<view class="time">
+							有效期至2023-10-27
+						</view>
+					</view>
+					<view class="btn-box">
+						<view class="num">
+							剩余 1 次
+						</view>
+						<view class="btn" @click="jump">
+							去使用
+						</view>
+					</view>
+				</view>
+				
+			</view>
+		</view>
+		
+		<view class="hot-title">
+			<image class="icon" src="../../static/hot.png" mode=""></image>
+			<view class="title">
+				热门推荐
+			</view>
+			<image class="icon" src="../../static/hot.png" mode=""></image>
+		</view>
+		
+		<!-- 列表 -->
+		<zs-list class="store-box" mt="0" @load="loadMore" :status="status">
+			<view class="left">
+				<view class="left-frist">
+					<view class="top-box">
+						<view class="title">
+							天天低价
+						</view>
+						<view class="type-box">
+							<image class="hot" src="../../static/hot-white.png" mode=""></image>
+							<view class="type">
+								今日超低价
+							</view>
+						</view>
+					</view>
+					<view class="image-box">
+						<image class="image" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F45f7efd9-3760-4fa0-8cf0-79ca4b44d017%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695803683&t=09678f8c997578d3e8101dd2b0a597e8" mode=""></image>
+						<view class="btn-box">
+							<view class="btn">
+								折
+							</view>
+							<view class="desc">
+								满200享7折
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="store-item" v-for="(item,index) in list" :key="index" @click="goShopDetail(item)">
+						<zs-img  :src="item.src" width="335rpx"  mode="widthFix" ></zs-img>
+						<view class="info">
+							<view class="title">
+								{{item.title}}
+							</view>
+							<view class="address">
+								
+								<image class="position" src="../../static/position.png" mode=""></image>
+								{{item.distance}}km
+							</view>
+							<image v-if="index==0" class="hot-icon" src="../../static/hot1.png" mode=""></image>
+						</view>
+				</view>
+			</view>
+			<view class="right">
+				<view class="store-item frist" @click="goShopDetail(list1[0])">
+						<zs-img  :src="list1[0].src" width="335rpx"  mode="widthFix" ></zs-img>
+						<view class="info">
+							<view class="title">
+								{{list1[0].title}}
+							</view>
+							<view class="tags">
+								<view class="tag-item">
+									<view class="label">
+										折
+									</view>	
+									<view class="value">
+										满200享8折
+									</view>
+								</view>
+							</view>
+						</view>
+				</view>
+				
+				<view v-if="index!=0" class="store-item" v-for="(item,index) in list1" :key="index" @click="goShopDetail(item)">
+						<zs-img  :src="item.src" width="335rpx"  mode="widthFix" ></zs-img>
+						<view class="info">
+							<view class="title">
+								{{item.title}}
+							</view>
+							<view class="address">
+								<image class="position" src="../../static/position.png" mode=""></image>
+								{{item.distance}}km
+							</view>
+						</view>
+				</view>
+			</view>
+		
+		</zs-list>
+
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				info: null,
+				status: 'more',
+				list: [{
+						src: 'https://mstatic.gzstv.com/media/images/2021/06/09/w1nrZC8_x-PQ.jpg',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+				
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+				
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+			
+				],
+				list1: [
+					{
+						id: 3,
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAX7ded25d105ed4479be2eb747ddcbdb05808ff36bf272aad1d9717f0a2fb26d06.png',
+						title: '黄果树瀑布',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAXdb1c28750d2e8f45e7509c176f186600d2bafe09de15a8107b168c078801e1e7.png',
+						title: '微笑牙科诊所',
+						distance: 5.23,
+						
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+					
+				]
+			};
+		},
+		onLoad() {
+			this.info = JSON.parse(uni.getStorageSync('shopInfo'))
+		},
+		methods: {
+			jump() {
+				uni.navigateTo({
+					url: '../qrcode/index'
+				})
+			},
+			goShopDetail(item) {
+				uni.setStorageSync('shopInfo', JSON.stringify(item))
+				uni.navigateTo({
+					url: `../../detail/shopDetail/shopDetail`
+				})
+			},
+			loadMore(){
+				// this.status = 'loading'
+				// setTimeout(() => {
+				// 	this.status = 'more'
+				// 	this.list = this.list.concat([{
+				// 		src: 'https://img1.baidu.com/it/u=384382004,2638328762&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
+				// 		title: '万安加油站(中石化)',
+				// 		distance: 13.62
+				// 	}, {
+				// 		src: 'https://img1.baidu.com/it/u=1281595595,1208289696&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
+				// 		title: '万安加油站(中石化)',
+				// 		distance: 13.62
+				// 	}])
+				// }, 1000)
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.shopDetail {
+		background: rgb(239, 239, 239);
+		min-height: 100vh;
+		.top-box{
+			background: linear-gradient(180deg, #FFDEDE 0%, #FFFCFC 100%);
+			.bg {
+				width: calc(100% - 60rpx);
+				margin: 0 30rpx;
+				height: 350rpx;
+				object-fit: cover;
+				border-radius: 16rpx;
+			}
+
+			.shop-info {
+				padding: 30rpx;
+				box-sizing: border-box;
+
+				.title {
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+
+				.address {
+					display: flex;
+					align-items: center;
+					font-size: 24rpx;
+					padding: 15rpx 0;
+					color: #999;
+					.position{
+						width: 25rpx;
+						height: 29rpx;
+						margin-right: 8rpx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding: 0 30rpx;
+
+			.discounts {
+				padding: 30rpx;
+				background: #fff;
+				border-radius: 8px;
+				margin-top: 20rpx;
+
+				.title {
+					font-weight: bold;
+					font-size: 28rpx;
+				}
+
+				.discounts-item {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					background-color: rgb(239, 239, 239);
+					background: url('../../static/card.png') no-repeat;
+					background-size: 100% 144rpx;
+					border-radius: 16rpx;
+					height: 144rpx;
+					padding: 0 30rpx;
+					margin-top: 20rpx;
+
+					.info {
+						margin-left: 20rpx;
+						.title {
+							color: #0F0F0F;
+							font-size: 30rpx;
+						}
+						.red{
+							color: $uni-text-primary!important;
+						}
+						.time {
+							color: #9a9a9a;
+							font-size: 24rpx;
+							margin-top: 15rpx;
+						}
+					}
+					.btn-box{
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						.btn {
+							width: 118rpx;
+							height: 48rpx;
+							line-height: 48rpx;
+							text-align: center;
+							font-size: 24rpx;
+							background: linear-gradient(90deg, #FEFBF2 0%, #F7D188 100%);
+							border-radius: 35rpx;
+							color: #E5452C;
+							margin-top: 15rpx;
+						}
+						.num{
+							color: #fff;
+							font-size: 24rpx;
+						}
+					}
+				}
+			}
+		}
+		
+		.hot-title{
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin: 20rpx 0;
+			.icon{
+				width: 29rpx;
+				height: 35rpx;
+			}
+			.title{
+				font-size: 32rpx;
+				color: #0F0F0F;
+				font-weight: bold;
+				padding: 0 10rpx;
+			}
+		}
+		
+		.zs-list {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			padding: 0 30rpx;
+			.left{
+				.left-frist{
+					padding: 15rpx;
+					border-radius: 16rpx;
+					width: 332rpx;
+					height: 284rpx;
+					box-sizing: border-box;
+					background: linear-gradient(180deg, #FFDEDE 0%, #FFFFFF 100%);
+					box-shadow: 0rpx 6rpx 12rpx 2rpx rgba(0,0,0,0.16);
+					margin-bottom: 25rpx;
+					.top-box{
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						.title{
+							color: #0F0F0F;
+							font-size: 26rpx;
+						}
+						.type-box{
+							display: flex;
+							align-items: center;
+							padding: 0 16rpx;
+							height: 40rpx;
+							line-height: 40rpx;
+							border-radius: 20rpx;
+							background: linear-gradient(90deg, #FE574C 0%, #FE2A5C 100%);
+							.hot{
+								width: 16.7rpx;
+								height: 21.7rpx;
+							}
+							.type{
+								font-size: 20rpx;
+								font-weight: 400;
+								color: #FFFFFF;
+								margin-left: 6rpx;
+							}
+						}
+					}
+					.image-box{
+						position: relative;
+						margin-top: 20rpx;
+						.image{
+							width: 302rpx;
+							height: 182rpx;
+							border-radius: 16rpx;
+						}
+						.btn-box{
+							position: absolute;
+							left: 0;
+							bottom: 10rpx;
+							display: flex;
+							align-items: center;
+							.desc{
+								font-size: 24rpx;
+								font-weight: 400;
+								color: #FFFFFF;
+								margin-left: 10rpx;
+							}
+							.btn{
+								height: 36rpx;
+								line-height: 36rpx;
+								padding: 0 14rpx;
+								background: $uni-color-primary;
+								border-radius: 8rpx;
+								color: #FFFFFF;
+								font-size: 20rpx;
+							}
+						}
+					}
+				}
+			}
+			.right{
+				.frist{
+					border: 1px solid #FF612E;
+					.info{
+						background: #FF612E;
+						color: #fff;
+						.address{
+							color: #fff;
+						}
+					}
+				}
+			}
+			.store-item {
+				width: 335rpx;
+				margin-bottom: 25rpx;
+				box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0, 0, 0, 0.08);
+				border-radius: 16rpx;
+				background: #fff;
+		
+				.icon {
+					width: 100%;
+					height: 300rpx;
+					border-radius: 16rpx 16rpx 0 0;
+				}
+		
+				.info {
+					padding: 20rpx;
+					background: #fff;
+					border-radius: 0 0 16rpx 16rpx;
+					position: relative;
+					.hot-icon{
+						position: absolute;
+						bottom: 20rpx;
+						right: 25rpx;
+						width: 44.6rpx;
+						height: 48.6rpx;
+					}
+					.title {
+						font-weight: bold;
+						width: 100%;
+						white-space: nowrap;
+						text-overflow: ellipsis;
+						overflow: hidden;
+					}
+					.tags{
+						display: flex;
+						align-items: center;
+						.tag-item{
+							line-height: 50rpx;
+							border-radius: 8rpx;
+							padding: 6rpx 0;
+							font-size: 24rpx;
+							margin-left: 10rpx;
+							display: flex;
+							.label{
+								background: #FFF;
+								color: #FE5B47;
+								padding: 0 10rpx;
+								border-radius: 8rpx 0 0 8rpx;
+							}
+							.value{
+								color: #FFF;
+								background: rgba(255, 255, 255, .2);
+								padding: 0 14rpx;
+								border-radius: 0 8rpx 8rpx 0;
+							}
+						}
+					}
+		
+					.address {
+						display: flex;
+						align-items: center;
+						margin-top: 15rpx;
+						color: #999;
+						.position{
+							width: 25rpx;
+							height: 29rpx;
+							margin-right: 8rpx;
+						}
+					}
+				}
+			}
+		}
+		
+	}
+</style>

+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 218 - 0
integral/logs.vue

@@ -0,0 +1,218 @@
+<template>
+	<view class="integral-logs">
+		<!-- 筛选器 -->
+		<view class="filter-box">
+			<view class="box">
+				<view class="filter-item" :class="[active == 1?'active':'']" @click="handleType(1)">
+					全部
+				</view>
+				<view class="filter-item" :class="[active == 2?'active':'']" @click="handleType(2)">
+					获得
+				</view>
+				<view class="filter-item" :class="[active == 3?'active':'']" @click="handleType(3)">
+					消耗
+				</view>
+			</view>
+				<view class="filter-time" @click="handleTime">
+					筛选时间
+					<u-icon name="arrow-down" size="30" color="#fff"></u-icon>
+				</view>
+		</view>
+		
+		
+		<u-datetime-picker
+		                :show="show"
+		                v-model="time"
+		                mode="date"
+						:closeOnClickOverlay="true"
+						@cancel="cancel"
+						@confirm="confirm"
+						@close="close"
+		        ></u-datetime-picker>
+				
+				<zs-list mt="90rpx" @load="loadMore" :status="status">
+					<view class="time-title">
+						2022年10月
+					</view>
+					<view class="item" v-for="(item,index) in list" :key="index">
+						<view class="info">
+							<view class="title">
+								{{item.title}}
+							</view>
+							<view class="time">
+								{{item.time}}
+							</view>
+						</view>
+						<view class="score">
+							{{item.score}}
+						</view>
+					</view>
+				</zs-list>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				show:false,
+				time:Number(new Date()),
+				status:'more',
+				active:1,
+				list:[
+					{
+						title:'天天签到积分',
+						time:'2022-10-01',
+						score:'+5'
+					},
+					{
+						title:'天天签到积分',
+						time:'2022-10-01',
+						score:'+5'
+					},
+					{
+						title:'天天签到积分',
+						time:'2022-10-01',
+						score:'+5'
+					},
+					{
+						title:'天天签到积分',
+						time:'2022-10-01',
+						score:'+5'
+					},
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// },
+					// {
+					// 	title:'天天签到积分',
+					// 	time:'2022-10-01',
+					// 	score:'+5'
+					// }
+				]
+			}
+		},
+		methods: {
+			handleType(val){
+				this.active = val
+			},
+			handleTime() {
+				this.show = true
+			},
+			// 关闭选择器时触发
+			close(){
+				this.show = false
+			},
+			// 点击确定按钮时触发
+			confirm(){
+				this.show = false
+			},
+			// 点击取消按钮
+			cancel(){
+				this.show = false
+			},
+			loadMore(){
+				this.status = 'loading'
+					setTimeout(()=>{
+						this.status = 'more'
+						this.list.push({
+						title:'天天签到积分',
+						time:'2022-10-01',
+						score:'+15'
+					})
+					},1000)
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+.integral-logs{
+	.filter-box{
+		display: flex;
+		padding: 25rpx 0;
+		background: rgb(57, 81, 251);
+		color: #fff;
+		position: fixed;
+		top: 0%;
+		left: 0%;
+		width: 100%;
+		.box{
+			flex: 1;
+			display: flex;
+			border-right: 1px solid #fff;
+			.filter-item{
+				flex: 1;
+				text-align: center;
+			}
+			.active{
+				font-weight: bold;
+			}
+		}
+		.filter-time{
+			width: 240rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			.u-icon{
+				margin-left: 8rpx;
+			}
+		}
+	}
+	.time-title{
+		font-size: 32rpx;
+		font-weight: bold;
+		padding-left: 20rpx;
+		line-height: 70rpx;
+	}
+	.item{
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 25rpx;
+		box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 3px 0px;
+		margin-bottom: 15rpx;
+		border-radius: 12rpx;
+		.info{
+			.title{
+				font-size: 32rpx;
+			}
+			.time{
+				font-size: 24rpx;
+				color: #cacaca;
+				margin-top: 10rpx;
+			}
+		}
+		.score{
+			font-size: 38rpx;
+			color: rgb(57, 81, 251);
+		}
+	}
+}
+</style>

+ 211 - 0
integral/shop.vue

@@ -0,0 +1,211 @@
+<template>
+	<view class="integral-shop">
+		<!-- 筛选器 -->
+		<cc-dropDownMenu :titleArr="titleArr" :dropArr="dropArr" @finishDropClick="finishClick"></cc-dropDownMenu>
+
+		<zs-list class="list" mt="100rpx" @load="loadMore" :status="status">
+			<view class="item" v-for="(item,index) in list" :key="index">
+				<image :src="item.src" mode="aspectFill" class="icon"></image>
+				<view class="info">
+					<view class="title">
+						{{item.title}}
+					</view>
+					<view class="desc">
+						{{item.desc || '非常好吃且美味的小吃'}}
+					</view>
+					<view class="sale-box">
+						<view class="price">
+							{{item.score}}分
+						</view>
+						<view class="exchange-btn">
+							兑换
+						</view>
+					</view>
+				</view>
+			</view>
+		</zs-list>
+		
+		<zs-skeleton :loading="loading" type="integralShop"></zs-skeleton>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				loading:false,
+				titleArr: ['积分', '品牌', '分类'],
+				dropArr: [
+					// 距离
+					[{
+							text: '积分',
+							value: ""
+						},
+						{
+							text: '金币',
+							value: "440103"
+						}
+					],
+					// 类型
+					[{
+							text: '宅小鹿',
+							value: "10000"
+						},
+						{
+							text: '麻辣王子',
+							value: "11000"
+						}
+					],
+
+					// 类型
+					[{
+							text: '零食',
+							value: "0-40"
+						},
+						{
+							text: '肉类',
+							value: "40-60"
+						}
+					],
+				],
+				filterResultData: [],
+				list:[
+					{
+						src:'http://t14.baidu.com/it/u=1060435979,471196002&fm=224&app=112&f=JPEG?w=500&h=500',
+						title:'宅小鹿芒果干',
+						score:6000,
+						num:120
+					},
+					{
+						src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi2%2F2207895997260%2FO1CN01Ogi5ab23V8BwbWSzn_%21%210-item_pic.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695440007&t=24ed88d94f8a1820a4411241c3bd5940',
+						title:'麻辣王子地道辣条',
+						score:6000,
+						num:120
+					},
+					{
+						src:'https://img2.baidu.com/it/u=248724739,3924050991&fm=253&fmt=auto&app=138&f=JPEG?w=616&h=500',
+						title:'良品铺子酥脆薄饼',
+						score:6000,
+						num:120
+					},
+					{
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAX5d129d495d8809b39d3bf35bf8bfabb798998037de72617952986550d6581788.png',
+						title:'良品铺子猪肉脯',
+						score:6000,
+						num:120
+					},
+					{
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAX5d129d495d8809b39d3bf35bf8bfabb798998037de72617952986550d6581788.png',
+						title:'良品铺子猪肉脯',
+						score:6000,
+						num:120
+					}
+				],
+				status:'more',//加载状态
+			}
+		},
+		methods: {
+			finishClick(resultData) {
+				this.filterResultData = resultData;
+				// uni.showModal({
+				// 	title: '温馨提示',
+				// 	content: '筛选数据 = ' + JSON.stringify(resultData)
+				// })
+			},
+			loadMore(){
+				this.status = 'loading'
+					setTimeout(()=>{
+						this.status = 'more'
+						this.list.push({
+						src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi2%2F2207895997260%2FO1CN01Ogi5ab23V8BwbWSzn_%21%210-item_pic.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695440007&t=24ed88d94f8a1820a4411241c3bd5940',
+						title:'麻辣王子地道辣条',
+						score:6000,
+						num:120
+					},)
+					},1000)
+			}
+		},
+		onLoad() {
+			this.loading = true
+			setTimeout(()=>{
+				this.loading = false
+			},1000)
+		}
+	}
+</script>
+
+<style lang="scss">
+	.integral-shop cc-drop-down-menu{
+		position: fixed;
+		left: 0%;
+		top: 0;
+		width: 100%;
+		background: #fff;
+		z-index: 99999999;
+	}
+	.integral-shop {
+		
+		.bar-item-text {
+			max-width: 250rpx !important;
+		}
+
+		.screen-bar::after {
+			display: none;
+		}
+		.zs-list{
+			.item{
+				display: flex;
+				margin: 0 20rpx 20rpx;
+				// box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 3px 0px;
+				box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0, 0, 0, 0.08);
+				
+				.icon{
+					width: 250rpx;
+					height: 250rpx;
+					border-radius: 16rpx 0 0 16rpx;
+				}
+				.info{
+					flex: 1;
+					padding: 20rpx;
+					border-radius: 0 16rpx 16rpx 0;
+					position: relative;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					.title{
+						font-size: 26rpx;
+						display: -webkit-box;
+						-webkit-box-orient: vertical;
+						overflow: hidden;
+						-webkit-line-clamp: 2;
+						text-overflow: ellipsis;
+					}
+					.desc{
+						color: #cacaca;
+						font-size: 24rpx;
+					}
+					.sale-box{
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						.price{
+							color: #ecb751;
+							font-size: 38rpx;
+						}
+						.exchange-btn{
+							width: 120rpx;
+							height: 50rpx;
+							line-height: 50rpx;
+							background: $uni-color-primary;
+							border-radius: 25rpx;
+							text-align: center;
+							color: #fff;
+							font-size: 24rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 306 - 0
integral/store.vue

@@ -0,0 +1,306 @@
+<template>
+	<view class="store">
+		
+		<view class="bg">
+			<view class="info">
+				<view class="num">
+					3399
+				</view>
+				<view class="label">
+					剩余积分
+				</view>
+			</view>
+			<view class="rule">
+				积分规则
+			</view>
+		</view>
+		
+		<view class="tab-group">
+			<view class="tab" @click="jump('./shop')">
+				<image class="icon" src="../static/store.png" mode=""></image>
+				<view class="tab-name">
+					积分商城
+				</view>
+			</view>
+			
+			<view class="tab" @click="jump('./logs')">
+				<image class="icon" src="../static/diamon.png" mode=""></image>
+				<view class="tab-name">
+					积分明细
+				</view>
+			</view>
+			
+		</view>
+		
+		<view class="title">
+			虚拟兑换
+		</view>
+		<view class="sub-title">
+			热门虚拟权益服务
+		</view>
+		
+		<view class="goods-box">
+			
+			<view class="store-title">
+				人气兑换
+				<u-icon name="arrow-right" color="#000000" size="38"></u-icon>
+			</view>
+			
+			<view class="box">
+				<view class="item" v-for="(item,index) in list" :key="index">
+					<image :src="item.src" mode="aspectFill" class="icon"></image>
+					<view class="item-title">
+						{{item.title}}
+					</view>
+					<view class="handle-box">
+						<view class="price">
+							{{item.score}}分
+						</view>
+						<view class="exchange-btn">
+							兑换
+						</view>
+					</view>
+				</view>
+				
+			</view>
+			
+			<view class="store-title">
+				生活出行
+				<u-icon name="arrow-right" color="#000000" size="38"></u-icon>
+			</view>
+			
+			<view class="box">
+				<view class="item" v-for="(item,index) in list" :key="index">
+					<image :src="item.src" mode="aspectFill" class="icon"></image>
+					<view class="item-title">
+						{{item.title}}
+					</view>
+					<view class="handle-box">
+						<view class="price">
+							{{item.score}}分
+						</view>
+						<view class="exchange-btn">
+							兑换
+						</view>
+					</view>
+				</view>
+			</view>
+			
+		</view>
+		<zs-skeleton :loading="loading" type="integral"></zs-skeleton>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				loading: false,
+				list:[
+					{
+						src:'http://t14.baidu.com/it/u=1060435979,471196002&fm=224&app=112&f=JPEG?w=500&h=500',
+						title:'宅小鹿芒果干',
+						score:6000,
+					},
+					{
+						src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi2%2F2207895997260%2FO1CN01Ogi5ab23V8BwbWSzn_%21%210-item_pic.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695440007&t=24ed88d94f8a1820a4411241c3bd5940',
+						title:'麻辣王子地道辣条',
+						score:6000,
+					},
+					{
+						src:'https://img2.baidu.com/it/u=248724739,3924050991&fm=253&fmt=auto&app=138&f=JPEG?w=616&h=500',
+						title:'良品铺子酥脆薄饼',
+						score:6000,
+					},
+				]
+			}
+		},
+		methods: {
+			jump(url) {
+				uni.navigateTo({
+					url
+				})
+			}
+		},
+		onLoad() {
+			this.loading = true
+			setTimeout(()=>{
+				this.loading = false
+			},1000)
+		}
+	}
+</script>
+
+<style lang="scss">
+.store{
+	padding-bottom: 80rpx;
+	.bg{
+		// background: #3884ea;
+		background: url('../static/top-bg.png') no-repeat #f9f9f9;
+		height: 430rpx;
+		background-size: 100% 430rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #fff;
+		position: relative;
+		.info{
+			text-align: center;
+			.num{
+				font-size: 56rpx;
+				font-weight: bold;
+			}
+			.label{
+				font-size: 24rpx;
+			}
+		}
+		.rule{
+			position: absolute;
+			top: 50%;
+			right: 0%;
+			transform: translateY(-50%);
+			background: #fff;
+			color: $uni-text-primary;
+			font-size: 28rpx;
+			padding:10rpx 18rpx;
+			border-radius: 12rpx;
+		}
+	}
+	
+	.tab-group{
+		display: flex;
+		align-items: center;
+		width: 680rpx;
+		// padding: 20rpx 0;
+		height: 184rpx;
+		box-shadow: rgba(0, 0, 0, 0.4) 0px 0px 4px 0px;
+		border-radius: 12rpx;
+		position: relative;
+		z-index: 2;
+		margin-left: 35rpx;
+		margin-top: -100rpx;
+		margin-bottom: 40rpx;
+		background: #fff;
+		.tab{
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			.icon{
+				width: 52rpx;
+				height: 52rpx;
+			}
+			.tab-name{
+				text-align: center;
+				font-size: 28rpx;
+				margin-top: 10rpx;
+			}
+		}
+	}
+	
+	.title{
+		font-size: 30rpx;
+		text-align: center;
+		font-weight: bold;
+	}
+	.sub-title{
+		color: #cacaca;
+		font-size: 26rpx;
+		position: relative;
+		text-align: center;
+		margin-top: 16rpx;
+	}
+	.sub-title::before{
+		width: 200rpx;
+		height: 1rpx;
+		background: #cacaca;
+		position: absolute;
+		display: block;
+		content: '';
+		top: 50%;
+		left: 40rpx;
+	}
+	.sub-title::after{
+		width: 200rpx;
+		height: 1rpx;
+		background: #cacaca;
+		position: absolute;
+		display: block;
+		content: '';
+		top: 50%;
+		right: 40rpx;
+	}
+	
+	.goods-box{
+		padding: 20rpx 50rpx;
+		.store-title{
+			font-size: 34rpx;
+			display: flex;
+			align-items: center;
+			position: relative;
+			padding-left: 18rpx;
+			font-weight: bold;
+			margin: 20rpx 0 30rpx;
+		}
+		.store-title::before{
+			width: 7rpx;
+			height: 100%;
+			background: rgb(57, 81, 251);
+			content: '';
+			display: flex;
+			position: absolute;
+			top: 0%;
+			left: 0;
+			
+		}
+		.box{
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx solid #cacaca;
+			padding-bottom: 30rpx;
+			.item{
+				width: 200rpx;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+				.icon{
+					width: 100%;
+					height: 210rpx!important;
+					border-radius: 12rpx;
+					object-fit: cover;
+				}
+				.item-title{
+					font-size: 26rpx;
+					 display: -webkit-box;
+					-webkit-box-orient: vertical;
+					overflow: hidden;
+					-webkit-line-clamp: 2;
+					text-overflow: ellipsis;
+					margin-top: 10rpx;
+				}
+				.handle-box{
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					margin-top: 15rpx;
+					.price{
+						font-size: 26rpx;
+						color: #FE5B47;
+					}
+					.exchange-btn{
+						width: 96rpx;
+						height: 40rpx;
+						line-height: 40rpx;
+						background: $uni-color-primary;
+						border-radius: 20rpx;
+						text-align: center;
+						color: #fff;
+						font-size: 22rpx;
+					}
+				}
+			}
+		}
+	}
+	
+}
+</style>

File diff suppressed because it is too large
+ 0 - 0
libs/qqmap-wx-jssdk.min.js


+ 193 - 0
login/login/login.vue

@@ -0,0 +1,193 @@
+<template>
+	<view class="login">
+		
+		
+		<view class="icon-info">
+			<img class="logo" src="../../static/logo.png" alt="">
+			<view class="title">移动本地生活</view>
+		</view>
+		
+		<view class="btn-box">
+			<button class="wx-login" @click="handleWx" v-if="check.length == 0">微信快捷登录</button>
+			<button class="wx-login" id="wx-login" v-else open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">微信快捷登录</button>
+			<view class="phone-login" @click="goOther">手机号登录</view>
+			<u-checkbox-group v-model="check">
+				<u-checkbox size="34" shape="circle" >
+				</u-checkbox>
+				<view  class="protocol" @click="handleProtocol">已阅读并同意用户协议
+				<view class="notice-protocol" v-if="notice">请勾选用户协议</view>
+				</view>
+			</u-checkbox-group>
+		</view>
+				
+		
+	<!-- 	<view class="notice">
+			未注册的手机号验证号将自动为您创建账户
+		</view>
+ -->
+	</view>
+</template>
+
+<script>
+	import {wechatLogin,getPhoneNum,getLoginToken} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				check: [],
+				show:false,
+				notice:false,//显示勾选提示
+			}
+		},
+		watch: {
+			check(newValue) {
+				if(newValue.length){
+					this.notice = false
+				}
+			}
+		},
+		methods: {
+			// 获取手机号微信登录
+			decryptPhoneNumber(val){
+				if(!val.detail.hasOwnProperty('encryptedData')) return
+				uni.showLoading({
+					title:'登录中'
+				})
+				getPhoneNum({code:val.detail.code}).then(data=>{
+					getLoginToken({phoneNum:data.content}).then(msg=>{
+						uni.login({
+							provider: 'weixin',
+							success(r){
+								wechatLogin({jsCode:r.code,phone:data.content,loginToken:msg.content}).then(res=>{
+									uni.hideLoading()
+									uni.setStorageSync('token',res.content.token)//登录状态
+									uni.setStorageSync('refreshToken',res.content.refreshToken)//refreshToken
+									uni.switchTab({
+										url:'../../pages/index/index'
+									})
+									// uni.navigateTo({
+									// 	url:'../../verify/index'
+									// })
+								})
+							}
+						})
+					})
+				})
+				
+			},
+			handleProtocol() {
+				
+			},
+			goOther(){
+				if(this.check.length == 0) return this.notice = true
+				uni.navigateTo({
+					url:'../../login/login/otherLogin'
+				})
+			},
+			//点击微信登录
+			handleWx(){
+				if(this.check.length == 0) return this.notice = true
+			},
+
+			// 获取验证码
+			sendCode(){
+				if(this.isSend) return
+				this.isSend = true
+				this.timer = setInterval(()=>{
+					if(this.seconds<=0){
+						this.codeText = '获取验证码'
+						this.seconds = 60
+						this.isSend = false
+						clearInterval(this.timer)
+					}else{
+						this.codeText = this.seconds +'s后获取'
+					}
+					this.seconds --
+				},1000)
+			},
+			// 点击协议
+			handleProtocol(){
+				this.show1 = true
+			},
+		},
+		
+	}
+</script>
+
+<style lang="scss" scoped>
+
+.login{
+	.icon-info{
+		text-align: center;
+		margin-top: 200rpx;
+		.logo{
+			width: 150rpx;
+			height: 150rpx;
+			
+		}
+		.title{
+			font-size: 40rpx;
+			margin-top: 80rpx;
+		}
+	}
+	.btn-box{
+		margin-top: 220rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		.wx-login{
+			width: 560rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			font-size: 32rpx;
+			font-weight: bold;
+			background: $uni-color-primary;
+			color: #fff;
+		}
+		.phone-login{
+			width: 560rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			text-align: center;
+			border-radius: 46rpx;
+			background-color: #fff;
+			box-shadow: 0rpx 0rpx 12rpx 2px rgba(0,0,0,0.04);
+			border: none!important;
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #0F0F0F;
+			margin: 40rpx 0;
+			transform: rotateZ(360deg);
+		}
+		
+	}
+	.notice-protocol{
+		color: red;
+		width: 500rpx;
+		margin: 0 auto;
+		font-size: 26rpx;
+		position: absolute;
+		bottom: -34rpx;
+		left: 0%;
+	}
+	.notice{
+		margin-top: 160rpx;
+		text-align: center;
+	}
+	
+}
+</style>
+
+<style lang="scss">
+	.u-checkbox-group{
+		width: 500rpx;
+		.protocol{
+			font-size: 24rpx;
+			margin-left: 12rpx;
+			position: relative;
+		}
+	}
+		
+	
+	
+</style>

+ 125 - 0
login/login/otherLogin.vue

@@ -0,0 +1,125 @@
+<template>
+	<view class="other-login">
+		<u--form id="uForm" labelPosition="left" :model="userInfo" :rules="rules" ref="uForm">
+			<u-form-item label="手机号码" class="code" prop="phoneNum" borderBottom ref="item1" labelWidth="140">
+				<u--input type="digit" placeholder="输入手机号码" maxlength="11" v-model="userInfo.phoneNum" border="none"></u--input>
+				<view class="code-btn" slot="right" @click="sendCode">
+					{{codeText}}
+				</view>
+			</u-form-item>
+			<u-form-item label="验证码" prop="code" borderBottom ref="item1" labelWidth="140">
+				<u--input type="idcard" placeholder="输入6位验证码" maxlength="6" v-model="userInfo.code"  border="none"></u--input>
+			</u-form-item>
+			<u-form-item label="保存此号码供以后使用" borderBottom ref="item1" labelWidth="320">
+				<u-switch v-model="open" slot="right"></u-switch>
+			</u-form-item>
+		</u--form>
+		
+		<view class="save" @click="save">
+			完成
+		</view>
+	</view>
+</template>
+
+<script>
+	import {validLogin,getLoginToken,sendVerifyCode} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				userInfo: {
+					code:'',
+					phoneNum:'',
+				},
+				open:false,
+				seconds:6,
+				rules: {
+					'phoneNum': {
+						type: 'string',
+						required: true,
+						message: '请填写姓名',
+						trigger: ['blur', 'change']
+					},
+					'code': {
+						type: 'string',
+						max: 18,
+						required: true,
+						message: '请输入身份证号',
+						trigger: ['blur', 'change']
+					},
+					
+				},
+				isSend:false,
+				seconds:60,
+				codeText:'获取验证码',//按钮文字
+			}
+		},
+		methods: {
+			// 获取验证码
+			sendCode(){
+				if(this.isSend) return
+				this.isSend = true
+				sendVerifyCode({phoneNum:this.userInfo.phoneNum,appName:'user',templateId:1}).then(res=>{
+				})
+				this.timer = setInterval(()=>{
+					if(this.seconds<=0){
+						this.codeText = '获取验证码'
+						this.seconds = 60
+						this.isSend = false
+						clearInterval(this.timer)
+					}else{
+						this.codeText = this.seconds +'s后获取'
+					}
+					this.seconds --
+				},1000)
+			},
+			save(){
+				uni.showLoading({
+					title: '加载中'
+				});
+				getLoginToken({phoneNum:this.userInfo.phoneNum}).then(res=>{
+					let userInfo = this.userInfo
+					userInfo.loginToken = res.content
+					validLogin(this.userInfo).then(res=>{
+						uni.hideLoading()
+						if(res.msg == '成功'){
+							uni.switchTab({
+								url:'../../pages/index/index',
+							})
+							// uni.navigateTo({
+							// 	url:'../../verify/index'
+							// })
+							uni.setStorageSync('token',res.content.token)//登录状态
+							uni.setStorageSync('refreshToken',res.content.refreshToken)//refreshToken
+						}
+					})
+				})
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+.other-login{
+	padding: 10rpx 20rpx;
+		.code-btn{
+			padding: 10rpx 25rpx;
+			background: rgb(164, 173, 179);
+			color: #fff;
+			border-radius: 4px;
+		}
+		.save{
+			width: 400rpx;
+			line-height: 110rpx;
+			text-align: center;
+			color: #fff;
+			background: rgb(164, 173, 179);
+			border-radius: 55rpx;
+			font-size: 30rpx;
+			margin: 150rpx auto 0;
+		}
+		
+		.u-form-item{
+			
+		}
+}
+</style>

+ 55 - 0
login/login/veriFace.vue

@@ -0,0 +1,55 @@
+<template>
+	<view class="veriFace">
+		
+		<view class="window">
+			
+		</view>
+		
+		<button class="save-btn" type="default" @click="submit">下一步</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		methods: {
+			submit() {
+				if(uni.getStorageSync('type') == 1){
+					uni.navigateTo({
+						url:'../../combo/combo/combo'
+					})
+				}else if(uni.getStorageSync('type') == 2){
+					uni.showModal({
+						title:'短信已发送至您的手机,请注意查收',
+						success:(r) =>{
+							if(r.confirm){
+								uni.navigateTo({
+									url:'../../login/login/login'
+								})
+							}
+						}
+					})
+				}
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+.veriFace{
+	.window{
+		width: 580rpx;
+		height: 700rpx;
+		border-radius: 50%;
+		background: #f1f1f1;
+		margin: 50rpx auto 0;
+	}
+	.save-btn{
+		width: 80%;
+		line-height: 100rpx;
+		background-color: rgb(222, 134, 143);
+		color: #fff;
+		font-size: 30rpx;
+		margin-top: 120rpx;
+	}
+}
+</style>

+ 29 - 0
main.js

@@ -0,0 +1,29 @@
+import App from './App'
+
+import {myRequest} from './utils/request.js'
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+//挂载,让全局可以使用
+Vue.prototype.$req = myRequest
+import uView from '@/uni_modules/uview-ui'
+Vue.use(uView)
+uni.$u.config.unit = 'rpx'
+const app = new Vue({
+  ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+  const app = createSSRApp(App)
+  return {
+    app
+  }
+}
+// #endif
+

+ 98 - 0
manifest.json

@@ -0,0 +1,98 @@
+{
+    "name" : "慧研学惠生活",
+    "appid" : "__UNI__4E38610",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "geolocation" : {}
+            }
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wx3be1d6d84d46cdf7",
+        "setting" : {
+            "urlCheck" : false,
+            "minified" : true
+        },
+        "usingComponents" : true,
+        "requiredPrivateInfos" : [
+            "getLocation",
+            "onLocationChange",
+            "startLocationUpdateBackground",
+            "chooseAddress",
+            "chooseLocation"
+        ],
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "获取你的位置,用于更好的使用服务"
+            }
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2",
+    "h5" : {
+        "sdkConfigs" : {
+            "maps" : {
+                "amap" : {
+                    "key" : "e5f0c00ee70fb13cfff563c068cf4f97",
+                    "securityJsCode" : "c7a0ad6099c03da958d6f379f5ea9ac3",
+                    "serviceHost" : ""
+                }
+            }
+        }
+    }
+}

+ 82 - 0
my/card/index.vue

@@ -0,0 +1,82 @@
+<template>
+	<view class="card">
+		<view class="card-item" :style="{backgroundImage: 'url(' + item.bgImage + ')',
+  'background-repeat':'no-repeat', backgroundSize:'100% 100%'}" v-for="(item,index) in list" :key="index">
+			<view class="info">
+				<view class="title">{{item.title}}</view>
+				<view class="score">{{item.desc}}</view>
+			</view>
+			<view class="btn">
+				立即使用
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				list: [{
+						title: '会员卡',
+						num: 45,
+						desc:'VIP会员用户,尊享9大特权',
+						bgImage: require('../../static/card-bg1.png')
+					},
+					{
+						title: '次数卡',
+						num: 45,
+						desc:'剩余次数:3次',
+						bgImage: require('../../static/card-bg.png')
+					},
+
+				]
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.card {
+		background: black;
+		padding: 30rpx 15rpx 0;
+		min-height: 100vh;
+
+		.card-item {
+			height: 154rpx;
+			border-radius: 16rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			margin-bottom: 30rpx;
+			padding: 40rpx 60rpx;
+			box-sizing: border-box;
+
+			.info {
+				color: #FEDEB5;
+
+				.title {
+					font-size: 40rpx;
+					font-weight: bold;
+				}
+
+				.score {
+					font-size: 24rpx;
+					font-family: PingFang SC-Regular, PingFang SC;
+					margin-top: 10rpx;
+				}
+			}
+
+			.btn {
+				width: 144rpx;
+				height: 52rpx;
+				line-height: 52rpx;
+				color: #302E2F;
+				font-size: 24rpx;
+				background: #FEDEB5;
+				border-radius: 26rpx;
+				text-align: center;
+			}
+		}
+	}
+</style>

+ 74 - 0
my/coupon/index.vue

@@ -0,0 +1,74 @@
+<template>
+	<view class="coupon">
+		<view class="card">
+			<view class="title">
+				定义说明
+			</view>
+			<view class="">
+				1.会员可享受本平台会员对应权益
+			</view>
+			<view class="">
+				2.权益对象:指成为本平台会员的所有用户,含各等级VIP用户
+			</view>
+			<view class="">
+				3.权益产生:平台根据运营实际情况设置等级及与等级相匹配的权益
+			</view>
+		</view>
+		
+		<view class="card">
+			<view class="title">
+				消费返利
+			</view>
+			<view class="">
+				1.邀请者和被邀请者(粉丝)建立关系后,被邀请者所有订单消费邀请者均可享受返利。
+			</view>
+			<view class="">
+				2.邀请者等级不同,返利点不同。
+			</view>
+			<view class="">
+				3.返利比例生效于“升级对应会员时间”。(例如:2023.5.23 12:22)升级为V3,在这个时间点后粉丝下单生成的订单邀请者均按照V3会员比例返利。
+			</view>
+			<view class="">
+				4.订单完成(无法退款)后进行分润(返利)。
+			</view>
+		</view>
+		
+		<view class="card">
+			<view class="title">
+				其他
+			</view>
+			<view class="">
+				1.返利比例由平台定义,平台如调整比例,对应会员等级返利可能会增加或减少。
+			</view>
+			<view class="">
+				2.如因不可抗因素终止活动,最终解释权归平台所有。
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		
+	}
+</script>
+
+<style lang="scss" scoped>
+.coupon{
+	background: #f1f1f1;
+	height: 100vh;
+	padding: 10rpx 20rpx;
+	.card{
+		margin: 20rpx 0;
+		border-radius: 8px;
+		background: #fff;
+		padding: 20rpx;
+		line-height: 50rpx;
+		.title{
+			font-size: 35rpx;
+			font-weight: bold;
+			line-height: 90rpx;
+		}
+	}
+}
+</style>

+ 94 - 0
my/edit/edit.vue

@@ -0,0 +1,94 @@
+<template>
+	<view class="edit">
+		<view class="head-box">
+			<image @click="chooseHead"  class="head" :src="headImg||defaultImg" mode=""></image>
+			<image class="icon" src="../../static/take_photo.png" mode=""></image>
+		</view>
+		<view class="">
+				<u-cell size="large" title="修改昵称" :isLink="true" url="/my/edit/editName"></u-cell>
+				<u-cell size="large" title="关于" :isLink="true"></u-cell>
+		</view>
+		<button class="login-out" @click="loginOut">退出当前账号</button>
+	</view>
+</template>
+
+<script>
+	import {uploadImg} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				headImg:'',
+				defaultImg:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fci.xiaohongshu.com%2Fc34b7b74-ba38-0456-982a-43c0f97522fe%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fci.xiaohongshu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693532127&t=a2e186c12aecaab7723611cb52a6778f',
+				userId:'',
+				userInfo:null
+			}
+		},
+		methods: {
+			chooseHead() {
+				let that = this
+				uni.chooseImage({
+					count:1,
+					success(r) {
+						that.headImg = r.tempFilePaths[0]
+						uploadImg({imgPath:r.tempFilePaths[0],userId:that.userId}).then(res=>{
+							uni.showToast({
+								title: '上传成功',
+							});
+							that.userInfo.imgPath = r.tempFilePaths[0]
+							uni.setStorageSync('userInfo',JSON.stringify(this.userInfo))
+						})
+					}
+				})
+			},
+			loginOut(){
+				uni.clearStorageSync()
+				uni.switchTab({
+					url:'/pages/index/index'
+				})
+			}
+		},
+		created() {
+			this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))
+			this.headImg = this.userInfo.imgPath||''
+			this.userId = this.userInfo.userId||''
+			console.log(this.userId);
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.edit{
+	.head-box{
+		margin: 80rpx auto 50rpx;
+		width: 150rpx;
+		height: 150rpx;
+		position: relative;
+		.head{
+			width: 150rpx;
+			height: 150rpx;
+			border-radius: 50%;
+		}
+		.icon{
+			position: absolute;
+			width: 44rpx;
+			height: 44rpx;
+			bottom: 0%;
+			right: 0;
+		}
+	}
+	.login-out{
+		position: fixed;
+		bottom: 150rpx;
+		left: 50%;
+		width: 400rpx;
+		line-height: 110rpx;
+		text-align: center;
+		color: #fff;
+		background: rgb(164, 173, 179);
+		border-radius: 55rpx;
+		transform: translateX(-50%);
+		font-size: 30rpx;
+	}
+}
+</style>

+ 66 - 0
my/edit/editName.vue

@@ -0,0 +1,66 @@
+<template>
+	<view class="edit-name">
+		<input class="input" type="nickname" placeholder="修改昵称" v-model="nickname" />
+		<button class="save" @click="updateNickname">保存</button>
+	</view>
+</template>
+
+<script>
+	import {updateNickname} from '@/api/common.js'
+import { nextTick } from 'process'
+	export default {
+		data() {
+			return {
+				nickname:'',
+				userId:'',
+				userInfo:null
+			}
+		},
+		methods: {
+			// 修改昵称
+			updateNickname() {
+				if(!this.nickname){
+					return uni.showToast({
+						title:'昵称不能为空'
+					})
+				}
+				updateNickname({nickname:this.nickname,userId:this.userId}).then(res=>{
+					
+					if(res.msg == '成功'){
+						uni.showToast({
+							title:'修改成功'
+						})
+						this.userInfo.nickname = this.nickname
+						uni.setStorageSync('userInfo',JSON.stringify(this.userInfo))
+						// uni.switchTab({
+						// 	url:'../../pages/my/index'
+						// })
+					}
+				})
+			}
+		},
+		onLoad() {
+			this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))
+			this.nickname = this.userInfo.nickname
+			this.userId = this.userInfo.userId
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.edit-name{
+	.input{
+		height: 80rpx;
+		line-height: 180rpx;
+		border-bottom: 1px solid #f1f1f1;
+		padding-left: 60rpx;
+	}
+	.save{
+		width: 450rpx;
+		line-height: 110rpx;
+		border-radius: 55rpx;
+		margin-top: 50rpx;
+		
+	}
+}
+</style>

+ 183 - 0
my/favorite/index.vue

@@ -0,0 +1,183 @@
+<template>
+	<view class="favorite">
+		<zs-list mt="0" @load="loadMore" :status="status">
+			<view class="favorite-item" v-for="(item,index) in list" :key="index">
+		<!-- 		<image :src="item.src" mode="" class="icon" @click="goDetail(item)"></image> -->
+				<zs-img radius="full" :src="item.src" width="200rpx" height="180rpx"></zs-img>
+				<view class="info">
+					<view class="title">
+						{{item.title}}
+					</view>
+					<view class="address"  @click="handleAdress(item)">
+						<u-icon name="tags" size="38"></u-icon>
+						{{item.address}}·距你{{item.distance}}km
+					</view>
+					<view class="tags">
+						<view class="tag-item">
+						<view class="label">
+							折
+						</view>	
+						<view class="value">
+							满200享8折
+						</view>
+						
+						</view>
+					</view>
+					<view class="like" @click="handleLike(item)">
+						<u-icon :name="item.isLike?'heart-fill':'heart'" color="red" size="48"></u-icon>
+					</view>
+				</view>
+			</view>
+		</zs-list>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				status:'more',
+				loading:false,
+				list: [{
+						src: 'https://mstatic.gzstv.com/media/images/2021/06/09/w1nrZC8_x-PQ.jpg',
+						title: '万安加油站(中石化)',
+						isLike:true,
+						time: '2023-07-30 10:00:00',
+						distance: 13.62,
+						address:'贵州省贵阳市观山湖区金清路',
+				
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						time: '2023-07-30 10:00:00',
+						isLike:true,
+						address:'贵州省贵阳市观山湖区金清路',
+						distance: 13.62
+				
+					},
+					{
+						id: 2,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '泊斯曼酒店',
+						isLike:true,
+						time: '2023-07-30 10:00:00',
+						address:'贵州省贵阳市观山湖区金清路',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://file.gzl.cn/group1/M00/32/54/wKkBH1_7uBKAaWm1AAMJ4gwToRo237.jpg',
+						title: '贵阳万丽酒店',
+						isLike:true,
+						time: '2023-07-30 10:00:00',
+						address:'贵州省贵阳市观山湖区金清路',
+						distance: 5.23,
+						
+					},
+				]
+			}
+		},
+		methods: {
+			handleLike(item) {
+				item.isLike = !item.isLike
+			},
+			goDetail(){
+				uni.navigateTo({
+					url:'../../detail/shopDetail/shopDetail'
+				})
+			},
+			loadMore(){
+				this.status = 'loading'
+					setTimeout(()=>{
+						this.status = 'more'
+						this.list.push({
+						id: 3,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '贵阳万丽酒店',
+						isLike:true,
+						time: '2023-07-30 10:00:00',
+						address:'贵州省贵阳市观山湖区金清路',
+						distance: 5.23,
+						
+					})
+					},1000)
+			},
+			jump(){
+				
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+.favorite{
+	background: #efefef;
+	padding: 30rpx;
+	min-height: 100vh;
+	.favorite-item {
+				display: flex;
+				padding: 20rpx 30rpx;
+				background: #FFFFFF;
+				border-radius: 16rpx;
+				margin-bottom: 20rpx;
+				.icon{
+					width: 200rpx;
+					height: 180rpx;
+					border-radius: 8px;
+				}	
+				.info{
+					flex: 1;
+					padding-left: 20rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					position: relative;
+					.title{
+						font-size: 28rpx;
+						font-weight: bold;
+					}
+					.address{
+						color: #bebebe;
+						display: flex;
+						align-items: center;
+						font-size: 24rpx;
+						padding: 15rpx 0;
+						.u-icon{
+							align-self: flex-start;
+						}
+					}
+					.tags{
+						display: flex;
+						align-items: center;
+						.tag-item{
+							line-height: 50rpx;
+							border-radius: 8rpx;
+							padding: 6rpx 0;
+							font-size: 24rpx;
+							margin-left: 10rpx;
+							display: flex;
+							.label{
+								background: #FE5B47;
+								color: #fff;
+								padding: 0 10rpx;
+								border-radius: 8rpx 0 0 8rpx;
+							}
+							.value{
+								color: #FE5B47;
+								background: rgba(254,91,71,0.1);
+								padding: 0 14rpx;
+								border-radius: 0 8rpx 8rpx 0;
+							}
+						}
+					}
+					.like{
+						position: absolute;
+						top: 0%;
+						right: 10rpx;
+					}
+				}
+			}
+}
+</style>

+ 133 - 0
my/order/detail.vue

@@ -0,0 +1,133 @@
+<template>
+	<view class="order-detail">
+		<view class="shop-info">
+			<view class="icon">
+			</view>
+			<view class="info">
+				<view class="title">
+					万安加油站(成通石化)
+				</view>
+				<view class="price">
+					¥258.00
+				</view>
+			</view>
+		</view>
+		
+		<view class="detail">
+			<view class="item">
+				<view class="label">
+					订单金额:
+				</view>
+				<view class="value red">
+					¥258.00
+				</view>
+			</view>
+			
+			<view class="item">
+				<view class="label">
+					订单号:
+				</view>
+				<view class="value">
+					23435345436
+					<u-icon class="copy" name="attach" color="#2979ff" size="38" @click="handleCopy"></u-icon>
+				</view>
+			</view>
+			<view class="item">
+				<view class="label">
+					消费时间:
+				</view>
+				<view class="value">
+					2023-09-10 10:20
+				</view>
+			</view>
+			<view class="item">
+				<view class="label">
+					下单时间:
+				</view>
+				<view class="value">
+					2023-09-10 10:20
+				</view>
+			</view>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+			}
+		},
+		methods: {
+			handleCopy() {
+				uni.setClipboardData({
+					data: 'hello',
+					showToast:true,
+					success: function () {
+						
+					}
+				});
+			}
+		},
+	}
+</script>
+
+<style lang="scss" >
+.order-detail{
+	background: #efefef;
+	padding: 30rpx;
+	min-height: 100vh;
+	.shop-info{
+		background: #fff;
+		border-radius: 8px;
+		padding:30rpx;
+		display: flex;
+		.icon{
+			width: 120rpx;
+			height: 120rpx;
+			border-radius: 8px;
+			background: #efefef;
+		}
+		.info{
+			margin-left: 30rpx;
+			.title{
+				font-size: 32rpx;
+				font-weight: bold;
+				margin-top: 15rpx;
+			}
+			.price{
+				color: $red;
+				font-size: 26rpx;
+				margin-top: 15rpx;
+			}
+		}
+	}
+	.detail{
+		background: #fff;
+		border-radius: 8px;
+		padding:30rpx;
+		margin-top: 30rpx;
+		.item{
+			display: flex;
+			align-items: center;
+			font-size: 30rpx;
+			line-height: 66rpx;
+			.red{
+				color: $red;
+			}
+			.label{
+				font-weight: bold;
+			}
+			.value{
+				display: flex;
+				align-items: center;
+				.u-icon{
+					margin-left: 20rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 143 - 0
my/order/index.vue

@@ -0,0 +1,143 @@
+<template>
+	<view class="order">
+		<zs-search fixed></zs-search>
+		<!-- <u-search placeholder="日照香炉生紫烟" v-model="keyword"></u-search> -->
+		<zs-list mt="130rpx" @load="loadMore" :status="status">
+			<view class="order-item" v-for="(item,index) in list" :key="index" @click="jump">
+				
+				<view class="order-box">
+			
+					<!-- <image class="icon" :src="item.src" mode=""></image> -->
+					<zs-img radius="full" :src="item.src" width="164rpx" height="164rpx"></zs-img>
+					<view class="info">
+						<view class="title">
+							{{item.title}}
+						</view>
+						<view class="time">
+							购买时间:{{item.time}}
+						</view>
+
+					</view>
+				</view>
+			</view>
+		</zs-list>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				status: 'more',
+				loading: false,
+				keyword: '',
+				list: [{
+						src: 'https://mstatic.gzstv.com/media/images/2021/06/09/w1nrZC8_x-PQ.jpg',
+						title: '万安加油站(中石化)',
+						time: '2023-07-30 10:00:00',
+						distance: 13.62
+				
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						time: '2023-07-30 10:00:00',
+						distance: 13.62
+				
+					},
+					{
+						id: 2,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '泊斯曼酒店',
+						time: '2023-07-30 10:00:00',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://file.gzl.cn/group1/M00/32/54/wKkBH1_7uBKAaWm1AAMJ4gwToRo237.jpg',
+						title: '贵阳万丽酒店',
+						time: '2023-07-30 10:00:00',
+						distance: 5.23,
+						
+					},
+				]
+			}
+		},
+		methods: {
+			loadMore() {
+				this.status = 'loading'
+				setTimeout(() => {
+					this.status = 'more'
+					this.list.push({
+						src: 'https://img2.baidu.com/it/u=3177584174,2077949726&fm=253&fmt=auto&app=120&f=JPEG?w=540&h=360',
+						title: '万安加油站(中石化)',
+						status: 1,
+						time: '2023-07-30 10:00:00',
+						price: 251.00
+					})
+				}, 1000)
+			},
+			jump() {
+				uni.navigateTo({
+					url: './detail'
+				})
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	.order {
+		background: #efefef;
+		padding: 0 30rpx;
+		min-height: 100vh;
+
+		.zs-search {
+			// position: fixed;
+			// top: 0%;
+			// left: 0;
+			// width: 100%;
+		}
+
+		.zs-list {
+			padding-top: 30rpx;
+
+			.order-item {
+				background-color: #fff;
+				border-radius: 8px;
+				margin-bottom: 30rpx;
+
+				.order-box {
+					padding: 25rpx;
+					display: flex;
+
+					.icon {
+						width: 164rpx;
+						height: 164rpx;
+						border-radius: 16rpx;
+						background-color: #999;
+					}
+
+					.info {
+						margin-left: 25rpx;
+						
+						.title {
+							color: #0F0F0F;
+							font-size: 28rpx;
+							margin-top: 30rpx;
+						}
+
+						.time {
+							font-size: 26rpx;
+							
+color: #999999;
+							margin-top: 20rpx;
+						}
+
+					}
+				}
+			}
+		}
+	}
+</style>

+ 277 - 0
pages.json

@@ -0,0 +1,277 @@
+{
+	"easycom": {
+		"^zs-(.*)": "@/components/zs-$1/index.vue",
+		"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "慧研学惠生活",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/index/visitorIndex",
+			"style": {
+				"navigationBarTitleText": "慧研学惠生活",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/service/index",
+			"style": {
+				"navigationBarTitleText": "客服",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/service/chatRoom",
+			"style": {
+				"navigationBarTitleText": "在线客服",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/my/index",
+			"style": {
+				"navigationStyle":"custom",
+				"navigationBarTitleText": "我的",
+				"enablePullDownRefresh": false
+				// "backgroundColor":"#f1f1f1"
+			}
+
+		}
+	    ,{
+            "path" : "pages/index/position",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
+	"subPackages": [ //分包
+		{
+			"root": "detail",
+			"pages": [{
+					"path": "shopDetail/shopDetail",
+					"style": {
+						"navigationBarTitleText": "店铺详情"
+					}
+				},
+				{
+					"path": "discountsDetail/index",
+					"style": {
+						"navigationBarTitleText": "优惠详情"
+					}
+				},
+				{
+					"path": "qrcode/index",
+					"style": {
+						"navigationBarTitleText": "出示二维码"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "my",
+			"pages": [{
+					"path": "coupon/index",
+					"style": {
+						"navigationBarTitleText": "优惠券"
+					}
+				},
+				{
+					"path": "edit/edit",
+					"style": {
+						"navigationBarTitleText": "账号设置"
+					}
+				},
+				{
+					"path": "edit/editName",
+					"style": {
+						"navigationBarTitleText": "账号设置"
+					}
+				},
+				{
+					"path": "card/index",
+					"style": {
+						"navigationBarTitleText": "卡包"
+					}
+				},
+				{
+					"path": "order/index",
+					"style": {
+						"navigationBarTitleText": "全部订单"
+					}
+				},
+				{
+					"path": "order/detail",
+					"style": {
+						"navigationBarTitleText": "订单详情"
+					}
+				},
+				{
+					"path": "favorite/index",
+					"style": {
+						"navigationBarTitleText": "我的收藏"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "combo",
+			"pages": [{
+					"path": "combo/combo",
+					"style": {
+						"navigationBarTitleText": "移动便捷生活"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "login",
+			"pages": [{
+					"path": "login/login",
+					"style": {
+						"navigationBarTitleText": "移动便捷生活"
+					}
+				},
+				{
+					"path": "login/otherLogin",
+					"style": {
+						"navigationBarTitleText": "添加其他号码"
+					}
+				},
+				{
+					"path": "login/veriFace",
+					"style": {
+						"navigationBarTitleText": "人脸识别"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "integral",
+			"pages": [{
+					"path": "store",
+					"style": {
+						"navigationBarTitleText": "积分权益"
+					}
+				},
+				{
+					"path": "shop",
+					"style": {
+						"navigationBarTitleText": "积分商城"
+					}
+				},
+				{
+					"path": "logs",
+					"style": {
+						"navigationBarTitleText": "积分明细"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "verify", //信息确认
+			"pages": [{
+					"path": "index",
+					"style": {
+						"navigationBarTitleText": "确认套餐",
+						"disableScroll": true
+					}
+				},
+				{
+					"path": "activate",
+					"style": {
+						"navigationBarTitleText": "激活",
+						"disableScroll": true
+					}
+				}
+			]
+		},
+		{
+			"root": "study", //研学
+			"pages": [
+				{
+					"path": "index",
+					"style": {
+						"navigationBarTitleText": "慧研学"
+					}
+				},
+				{
+					"path": "inspect",
+					"style": {
+						"navigationBarTitleText": "虚拟考察"
+					}
+				},
+				{
+					"path": "route",
+					"style": {
+						"navigationBarTitleText": "个性路径"
+					}
+				},
+				{
+					"path": "schedule",
+					"style": {
+						"navigationBarTitleText": "学习进度"
+					}
+				},
+				{
+					"path": "community",
+					"style": {
+						"navigationBarTitleText": "互动社区"
+					}
+				},
+				{
+					"path": "publish",
+					"style": {
+						"navigationBarTitleText": "发布"
+					}
+				}
+			]
+		}
+
+	],
+	"tabBar": {
+		"color": "#0F0F0F",
+		"selectedColor": "#FE5B47",
+		"backgroundColor": "#fff",
+		"list": [{
+				"iconPath": "static/home_off.png",
+				"selectedIconPath": "static/home_on.png",
+				"text": "首页",
+				"pagePath": "pages/index/index"
+			},
+			{
+				"iconPath": "static/service_off.png",
+				"selectedIconPath": "static/service_on.png",
+				"text": "客服",
+				"pagePath": "pages/service/index"
+			},
+			{
+				"iconPath": "static/my_off.png",
+				"selectedIconPath": "static/my_on.png",
+				"text": "我的",
+				"pagePath": "pages/my/index"
+			}
+		]
+
+	},
+
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#fff",
+		"backgroundColor": "#F8F8F8"
+	},
+	"uniIdRouter": {}
+}

+ 1041 - 0
pages/index/index.vue

@@ -0,0 +1,1041 @@
+<template>
+	<view class="home">
+		
+		<zs-banner :city="city" position></zs-banner>
+
+		<view class="login-home" >
+			<!-- 登录显示的套餐列表 -->
+			<view class="discount-list">
+				<view class="discount-item" v-for="(item,index) in discountsList" :key="index" @click="goDetail(index)">
+					<image class="icon" :src="item.icon" mode=""></image>
+					<view class="title">{{item.title}}</view>
+					<view class="tag" v-if="item.tag">
+						{{item.tag}}
+					</view>
+				</view>
+			</view>
+			
+			<view class="recommend-box">
+				<view class="top-box">
+					<view class="title">
+						天天特惠
+					</view>
+					<view class="type-box">
+						<image class="hot" src="../../static/hot-white.png" mode=""></image>
+						<view class="type">
+							今日超低价
+						</view>
+					</view>
+				</view>
+				<view class="recommend">
+					<view class="recommend-item">
+						
+						<view class="image-box">
+							<image class="image" src="https://img2.baidu.com/it/u=2852595632,3564235706&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500" mode=""></image>
+							<view class="btn-box">
+								<view class="desc">
+									满200享7折
+								</view>
+								<view class="btn">
+									整点开抢
+								</view>
+							</view>
+						</view>
+					</view>
+					
+					<view class="recommend-item">
+						<view class="image-box">
+							<image class="image" src="https://img0.baidu.com/it/u=2490196579,2804013959&fm=253&fmt=auto&app=138&f=JPEG?w=743&h=500" mode=""></image>
+							<view class="btn-box">
+								<view class="desc">
+									满200享7折
+								</view>
+								<view class="btn">
+									整点开抢
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			
+			<view class="content">
+				
+				<!-- 分类 -->
+				<scroll-view scroll-x enable-flex class="tab-group" style="white-space: nowrap;">
+					<view class="tab-item" :class="[tab == 0?'active':'']" @click="handleTab(0)">
+						<view class="tab-title">
+							热门推荐
+						</view>
+						<view class="sub-title">
+							优选好物
+						</view>
+					</view>
+					<view class="tab-item" :class="[tab == 1?'active':'']" @click="handleTab(1)">
+						<view class="tab-title jiayou">
+							加油充电
+						</view>
+						<view class="sub-title">
+							折上再减
+						</view>
+					</view>
+					<view class="tab-item" :class="[tab == 2?'active':'']" @click="handleTab(2)">
+						<view class="tab-title">
+							医疗健康
+						</view>
+						<view class="sub-title">
+							折上再减
+						</view>
+					</view>
+					<view class="tab-item" :class="[tab == 3?'active':'']" @click="handleTab(3)">
+						<view class="tab-title">
+							酒店住宿
+						</view>
+						<view class="sub-title">
+							折上再减
+						</view>
+					</view>
+					
+				</scroll-view>
+
+
+				<!-- 列表 -->
+				<zs-list class="store-box" mt="0" @load="loadMore" :status="status">
+					<view class="left">
+						<view class="left-frist">
+							<view class="top-box">
+								<view class="title">
+									天天低价
+								</view>
+								<view class="type-box">
+									<image class="hot" src="../../static/hot-white.png" mode=""></image>
+									<view class="type">
+										今日超低价
+									</view>
+								</view>
+							</view>
+							<view class="image-box">
+								<image class="image" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F45f7efd9-3760-4fa0-8cf0-79ca4b44d017%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695803683&t=09678f8c997578d3e8101dd2b0a597e8" mode=""></image>
+								<view class="btn-box">
+									<view class="btn">
+										折
+									</view>
+									<view class="desc">
+										满200享7折
+									</view>
+								</view>
+							</view>
+						</view>
+						<view class="store-item" v-for="(item,index) in list" :key="index" @click="goShopDetail(item)">
+							<zs-img v-if="index == 0"  :src="item.src"  border="border1" width="335rpx" height="335rpx"  mode="" ></zs-img>
+								<zs-img v-else :src="item.src"  :border="index<3?(index%2 == 0? 'border2':'border3'):''" width="335rpx" height="335rpx"  mode="" ></zs-img>
+								<view class="info">
+									<view class="title">
+										{{item.title}}
+									</view>
+									<view class="address">
+										
+										<image class="position" src="../../static/position.png" mode=""></image>
+										{{item.distance}}km
+									</view>
+									<image v-if="index==0" class="hot-icon" src="../../static/hot1.png" mode=""></image>
+								</view>
+						</view>
+					</view>
+					<view class="right">
+						<view class="store-item frist" @click="goShopDetail(list1[0])">
+								<zs-img  :src="list1[0].src" width="335rpx"  height="322rpx" mode="" ></zs-img>
+								<view class="info">
+									<view class="title">
+										{{list1[0].title}}
+									</view>
+									<view class="tags">
+										<view class="tag-item">
+											<view class="label">
+												折
+											</view>	
+											<view class="value">
+												满200享8折
+											</view>
+										</view>
+									</view>
+								</view>
+						</view>
+						
+						<view v-if="index!=0" class="store-item" v-for="(item,index) in list1" :key="index" @click="goShopDetail(item)">
+								<zs-img  :src="item.src" :border="index<3?(index%2 == 0? 'border3':'border2'):''" width="335rpx"  height="335rpx" mode="" ></zs-img>
+								<view class="info">
+									<view class="title">
+										{{item.title}}
+									</view>
+									<view class="address">
+										<image class="position" src="../../static/position.png" mode=""></image>
+										{{item.distance}}km
+									</view>
+								</view>
+						</view>
+					</view>
+
+				</zs-list>
+			</view>
+
+
+
+		</view>
+
+		<!-- 登录 -->
+		<!-- 		<view class="login-btn" v-if="isLogin !== 1">
+			<button class="btn" type="default" @click="handleLogin">注册/登录</button>
+		</view> -->
+
+
+		<!-- <view class="fixed-btn" @click="handleMore" v-if="!userId">
+			<view class="">
+				更多
+			</view>
+			<view class="">
+				套餐
+			</view>
+		</view> -->
+
+		
+
+
+	</view>
+</template>
+
+<script>
+	import {
+		getUserDetail,
+		getScheme
+	} from '@/api/common.js'
+	// 腾讯地图
+	var QQMapWX = require('../../libs/qqmap-wx-jssdk.min.js');
+	var qqmapsdk = new QQMapWX({key:'KX5BZ-B64RC-RO62W-AMWAZ-VVTC3-YAFXF'});
+	export default {
+		data() {
+			return {
+				show: false,
+				loading: true,
+				isLogin: 0,
+				userId: '',
+				tab: 0,
+				search: '', //搜索框
+				status: 'more',
+				city:'成都',
+				latitude : '',
+				longitude:'',
+				discountsList: [ //优惠列表
+					{
+						icon: require('../../static/type1.png'),
+						title: '加油充电',
+						tag:'大额券'
+					},
+					{
+						icon: require('../../static/type2.png'),
+						title: '酒店民宿',
+						tag:'天天领'
+					},
+					{
+						icon: require('../../static/type3.png'),
+						title: '景区门票',
+						tag:''
+					},
+					{
+						icon: require('../../static/type4.png'),
+						title: '餐饮美食',
+						tag:''
+					},
+					
+					{
+						icon: require('../../static/type5.png'),
+						title: '慧研学',
+						tag:''
+					},
+					{
+						icon: require('../../static/type6.png'),
+						title: '超市购物',
+						tag:'1元购'
+					},
+					{
+						icon: require('../../static/type7.png'),
+						title: '代驾',
+						tag:''
+					},
+					{
+						icon: require('../../static/type8.png'),
+						title: '健身运动',
+						tag:'特惠'
+					},
+					{
+						icon: require('../../static/type9.png'),
+						title: '医疗健康',
+						tag:''
+					},
+					{
+						icon: require('../../static/type10.png'),
+						title: '家政服务',
+						tag:'特惠'
+					},
+					
+				],
+				list: [{
+						src: 'https://t7.baidu.com/it/u=2204874366,1447142724&fm=193&f=GIF',
+						title: 'V9健身房',
+						distance: 13.62
+
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					
+				],
+				list1: [
+					{
+						id: 3,
+						src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fc7481b97-86a3-4aba-8d2c-d3c84d7ce831%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695542967&t=fe7462e4fc56e50b98013b198043278d',
+						title: '黄果树瀑布',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAXdb1c28750d2e8f45e7509c176f186600d2bafe09de15a8107b168c078801e1e7.png',
+						title: '微笑牙科诊所',
+						distance: 5.23,
+						
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					
+				]
+			}
+		},
+		watch: {
+			show(val) {
+				if (val) {
+					this.$nextTick(() => {
+						// this.$refs.uForm.setRules(this.rules)
+					})
+				}
+			},
+			tab(val){
+				if (val == 0) {
+					this.list =[{
+						src: 'https://mstatic.gzstv.com/media/images/2021/06/09/w1nrZC8_x-PQ.jpg',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+
+					},
+					{
+						id: 2,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://file.gzl.cn/group1/M00/32/54/wKkBH1_7uBKAaWm1AAMJ4gwToRo237.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+				]
+				} else if (val == 1) {
+					this.list = [
+						{
+							id: 2,
+							title: '老贵阳牛肉粉(友怡路店)',
+							src:'https://alipic.lanhuapp.com/XDSlicePNGMAXd4e61a1529e3eb31b8c043a65c2e8a1f3cd13c0da50ac3107d471c6777b667a6.png',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+								id: 1,
+								title: '黔诚酸汤牛肉(甲秀楼店)',
+								src:'https://alipic.lanhuapp.com/XDSlicePNGMAXa74cfc58f9a54990e0a1e804e763563f4521e3ec1dc948005893ae57a451e506.png',
+								isLike: true,
+								price: 6.5,
+								desc: '购物9折起',
+								distance: 2.94,
+								latitude: 26.577315,
+								longitude: 106.696473,
+								address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+							},
+							{
+								id: 2,
+								title: '毛辣果(护国路店)',
+								src:'https://alipic.lanhuapp.com/XDSlicePNGMAXf9cdc403cc6f4e7873202d8c6dae02be4872c20630de6fedc0da7648ab28d354.png',
+								isLike: false,
+								price: 6.25,
+								desc: '购物9折起',
+								distance: 5.23,
+								latitude: 26.652284,
+								longitude: 106.626597,
+								address: '贵州省贵阳市观山湖区诚信北路8号'
+							},
+						
+					]
+				} else if (val == 2) {
+					this.list = [
+						{
+							id: 2,
+							title: '海天星辰大药房',
+							src:'https://img0.baidu.com/it/u=3833239224,203518028&fm=253&fmt=auto&app=138&f=JPEG?w=962&h=437',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+								id: 1,
+								src:'https://img1.baidu.com/it/u=2524636074,1628913937&fm=253&fmt=auto&app=138&f=JPEG?w=704&h=500',
+								title: '泉源堂智慧药房',
+								isLike: true,
+								price: 6.5,
+								desc: '购物9折起',
+								distance: 2.94,
+								latitude: 26.577315,
+								longitude: 106.696473,
+								address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+							},
+						{
+							id: 2,
+							title: '叮当快药',
+							src:'https://img0.baidu.com/it/u=11997160,2930303799&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=500',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						
+						
+					]
+				} else if (val == 3) {
+					this.list = [
+						{
+							id: 2,
+							title: '贵阳万国艺术酒店',
+							src:'https://dimg04.c-ctrip.com/images/0202w120008v2aba15BD3_R_600_400_R5_D.jpg',
+							isLike: false,
+							price: 6.25,
+							desc: '购物9折起',
+							distance: 5.23,
+							latitude: 26.652284,
+							longitude: 106.626597,
+							address: '贵州省贵阳市观山湖区诚信北路8号'
+						},
+						{
+								id: 1,
+								src:'https://ak-d.tripcdn.com/images/0223x1200084a4izh65B9_R_600_400_R5_D.jpg',
+								title: '漫居酒店',
+								isLike: true,
+								price: 6.5,
+								desc: '购物9折起',
+								distance: 2.94,
+								latitude: 26.577315,
+								longitude: 106.696473,
+								address: '贵州省贵阳市南明区中山南路58号中山公馆2期'
+							},
+							{
+								id: 2,
+								title: '泊斯曼酒店',
+								src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+								isLike: false,
+								price: 6.25,
+								desc: '购物9折起',
+								distance: 5.23,
+								latitude: 26.652284,
+								longitude: 106.626597,
+								address: '贵州省贵阳市观山湖区诚信北路8号'
+							},
+						
+					]
+				} 
+				
+			}
+		},
+		onLoad() {
+			if (uni.getStorageSync('token')) {
+				this.getUserDetail()
+			}
+			this.getCity()
+
+		},
+		onShow() {
+			this.isLogin = uni.getStorageSync('token')
+			if(!this.isLogin) {
+				uni.navigateTo({
+					url:'./visitorIndex'
+				})
+			}
+			this.show = false
+			this.city = uni.getStorageSync('city')
+		},
+		onHide() {
+			this.show = false
+		},
+		methods: {
+			getCity(){
+				this.city = '定位中'
+				let that = this
+				uni.getLocation({
+				        type: 'wgs84',
+				        geocode: true,
+				        success: (res) => {
+				            console.log("获取经纬度成功");
+				            this.latitude = res.latitude;
+				            this.longitude = res.longitude;
+				        },
+				        fail: () => {
+				            console.log("获取经纬度失败");
+				        },
+				        complete: () => {
+				            // 解析地址
+				            qqmapsdk.reverseGeocoder({
+				                location: {
+				                    latitude: this.latitude,
+				                    longitude: this.longitude
+				                },
+				                success: function(res) {
+				                    console.log("解析地址成功");
+				                    // 市
+				                    that.city = res.result.ad_info.city.slice(0,2);
+									uni.setStorageSync('city',that.city)
+				                },
+				                fail: function(res) {
+									this.city = '定位失败'
+				                   
+				                },
+				                complete: function(res) {
+				                    console.log(res);
+				                }
+				            })
+				        }
+				    })
+			},
+			handleTab(index) {
+				this.tab = index
+			},
+			
+			getScheme() {
+				getScheme().then(res => {
+					console.log(res);
+				})
+			},
+			
+			// 跳转优惠详情
+			goDetail(type) {
+				if(type == 4){
+					uni.navigateTo({
+						url: `../../study/index`
+					})
+				}else{
+					uni.navigateTo({
+						url: `../../detail/discountsDetail/index?type=${type}`
+					})
+				}
+			},
+			goShopDetail(item) {
+				uni.setStorageSync('shopInfo', JSON.stringify(item))
+				uni.navigateTo({
+					url: `../../detail/shopDetail/shopDetail`
+				})
+			},
+			handleLogin() {
+				this.show = true
+			},
+			// 更多套餐
+			handleMore() {
+				uni.navigateTo({
+					// url:'../../login/login/login'
+					url: '../../combo/combo/combo'
+				})
+			},
+			
+			// 获取用户详情
+			getUserDetail() {
+				getUserDetail().then(res => {
+					uni.setStorageSync('userInfo', JSON.stringify(res.content))
+				})
+			},
+			loadMore() {
+				// this.status = 'loading'
+				// setTimeout(() => {
+				// 	this.status = 'more'
+				// 	this.list = this.list.concat([{
+				// 		src: 'https://img1.baidu.com/it/u=384382004,2638328762&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
+				// 		title: '万安加油站(中石化)',
+				// 		distance: 13.62
+				// 	}, {
+				// 		src: 'https://img1.baidu.com/it/u=1281595595,1208289696&fm=253&fmt=auto&app=138&f=JPEG?w=667&h=500',
+				// 		title: '万安加油站(中石化)',
+				// 		distance: 13.62
+				// 	}])
+				// }, 1000)
+			},
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	.home {
+		// padding-bottom:120rpx;
+		background: linear-gradient(180deg, #FFFFFF 0%, #DCE8FF 100%);
+
+			
+
+		.card-title {
+			display: flex;
+			justify-content: center;
+
+			.title {
+				font-size: 32rpx;
+				text-align: center;
+				color: #fff;
+				width: 210rpx;
+				line-height: 64rpx;
+				background: linear-gradient(360deg, #3074F8 0%, #568FFF 100%);
+				border-radius: 0rpx 0rpx 24rpx 24rpx;
+			}
+
+		}
+
+		.login-home {
+			// background: linear-gradient(178deg, #FFFFFF 0%, #F9F9F9 100%);
+			background: #F9F9F9;
+			.discount-list {
+				display: flex;
+				flex-wrap: wrap;
+				margin-top: 20rpx;
+				padding: 30rpx 0;
+				background: #fff;
+				border-radius: 0rpx 0rpx 32rpx 32rpx;
+				.discount-item {
+					width: 20%;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					margin-bottom: 40rpx;
+					position: relative;
+					.icon {
+						width: 80rpx;
+						height: 80rpx;
+					}
+					.title {
+						font-size: 26rpx;
+						margin-top: 10rpx;
+					}
+					.tag{
+						position: absolute;
+						top: -14rpx;
+						left: 66rpx;
+						// background: #FC1F1B;
+						color: #fff;
+						font-size: 18rpx;
+						line-height: -14rpx;
+						height: 34rpx;
+						padding: 0 10rpx;
+						border-radius: 17rpx;
+						width: fit-content;
+						background: url('../../static/tag.png') no-repeat;
+						background-size: 100% 34rpx;
+					}
+					
+				}
+			}
+			.recommend-box{
+				margin: 0 20rpx;
+				background: linear-gradient(180deg, #FE574C 0%, #FE2A5C 100%);
+				border-radius: 16rpx;
+				box-shadow: inset 0rpx 6rpx 12rpx 2rpx rgba(255,255,255,0.16);
+				.top-box{
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					margin: 0 20rpx;
+					padding-top: 20rpx;
+					.title{
+						color: #fff;
+						font-size: 26rpx;
+					}
+					.type-box{
+						display: flex;
+						align-items: center;
+						padding: 0 16rpx;
+						height: 40rpx;
+						line-height: 40rpx;
+						border-radius: 20rpx;
+						background: rgba(255, 255, 255, 0.18);
+						.hot{
+							width: 16.7rpx;
+							height: 21.7rpx;
+						}
+						.type{
+							font-size: 20rpx;
+							font-weight: 400;
+							color: #FFFFFF;
+							margin-left: 6rpx;
+						}
+					}
+				}
+				
+				.recommend{
+					display: flex;
+					justify-content: space-between;
+					
+					.recommend-item{
+						width: 355rpx;
+						height: 245rpx;
+						box-sizing: border-box;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						
+						.image-box{
+							position: relative;
+							margin-top: 20rpx;
+							width: 312rpx;
+							.image{
+								width: 312rpx;
+								height: 200rpx;
+								border-radius: 16rpx;
+							}
+							.btn-box{
+								position: absolute;
+								left: 10rpx;
+								bottom: 30rpx;
+								display: flex;
+								align-items: center;
+								.desc{
+									font-size: 24rpx;
+									font-weight: 400;
+									color: #FFFFFF;
+								}
+								.btn{
+									height: 36rpx;
+									line-height: 36rpx;
+									padding: 0 14rpx;
+									background: $uni-color-primary;
+									border-radius: 8rpx;
+									color: #FFFFFF;
+									font-size: 20rpx;
+									margin-left: 10rpx;
+								}
+							}
+						}
+					}
+				}
+			}
+			
+			
+			.content{
+				background: #fff;
+				border-radius: 16rpx 16rpx 0 0;
+			}
+
+			.tab-group {
+				display: flex;
+				margin: 30rpx 0;
+				height: 90rpx;
+
+				.tab-item {
+					padding: 0 20rpx;
+					text-align: center;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					flex: 1;
+					.tab-title.jiayou{
+						color: #3074F8;
+					}
+					.tab-title{
+						font-size: 32rpx;
+						font-family: PingFang SC-Bold, PingFang SC;
+						font-weight: bold;
+						color: #707070;
+					}
+					.sub-title{
+						font-size: 24rpx;
+						font-family: PingFang SC-Regular, PingFang SC;
+						font-weight: 400;
+						color: #999999;
+						margin-top: 10rpx;
+					}
+				}
+
+				.active {
+					font-weight: bold;
+					.tab-title{
+						color: #0F0F0F;
+					}
+					.sub-title{
+						color: #fff;
+						// background: $uni-color-primary;
+						background: linear-gradient(90deg, #FF4A39 0%, #FFA770 100%);
+						width: 124rpx;
+						line-height: 40rpx;
+						border-radius: 20rpx;
+					}
+				}
+			}
+
+			.zs-list {
+				display: flex;
+				flex-wrap: wrap;
+				justify-content: space-between;
+				padding: 0 30rpx;
+				.left{
+					.left-frist{
+						padding: 15rpx;
+						border-radius: 16rpx;
+						width: 332rpx;
+						height: 284rpx;
+						box-sizing: border-box;
+						background: linear-gradient(180deg, #FFDEDE 0%, #FFFFFF 100%);
+						box-shadow: 0rpx 6rpx 12rpx 2rpx rgba(0,0,0,0.16);
+						margin-bottom: 25rpx;
+						.top-box{
+							display: flex;
+							align-items: center;
+							justify-content: space-between;
+							.title{
+								color: #0F0F0F;
+								font-size: 26rpx;
+							}
+							.type-box{
+								display: flex;
+								align-items: center;
+								padding: 0 16rpx;
+								height: 40rpx;
+								line-height: 40rpx;
+								border-radius: 20rpx;
+								background: linear-gradient(90deg, #FE574C 0%, #FE2A5C 100%);
+								.hot{
+									width: 16.7rpx;
+									height: 21.7rpx;
+								}
+								.type{
+									font-size: 20rpx;
+									font-weight: 400;
+									color: #FFFFFF;
+									margin-left: 6rpx;
+								}
+							}
+						}
+						.image-box{
+							position: relative;
+							margin-top: 20rpx;
+							.image{
+								width: 302rpx;
+								height: 182rpx;
+								border-radius: 16rpx;
+							}
+							.btn-box{
+								position: absolute;
+								left: 0;
+								bottom: 10rpx;
+								display: flex;
+								align-items: center;
+								.desc{
+									font-size: 24rpx;
+									font-weight: 400;
+									color: #FFFFFF;
+									margin-left: 10rpx;
+								}
+								.btn{
+									height: 36rpx;
+									line-height: 36rpx;
+									padding: 0 14rpx;
+									background: $uni-color-primary;
+									border-radius: 8rpx;
+									color: #FFFFFF;
+									font-size: 20rpx;
+								}
+							}
+						}
+					}
+				}
+				.right{
+					.frist{
+						border: 1px solid #FF612E;
+						.info{
+							background: #FF612E;
+							color: #fff;
+							.address{
+								color: #fff;
+							}
+						}
+					}
+				}
+				.store-item {
+					width: 335rpx;
+					margin-bottom: 25rpx;
+					box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0, 0, 0, 0.08);
+					border-radius: 16rpx;
+					background: #fff;
+
+					.icon {
+						width: 100%;
+						height: 300rpx;
+						border-radius: 16rpx 16rpx 0 0;
+					}
+
+					.info {
+						padding: 20rpx;
+						background: #fff;
+						border-radius: 0 0 16rpx 16rpx;
+						position: relative;
+						.hot-icon{
+							position: absolute;
+							bottom: 20rpx;
+							right: 25rpx;
+							width: 44.6rpx;
+							height: 48.6rpx;
+						}
+						.title {
+							font-weight: bold;
+							width: 100%;
+							white-space: nowrap;
+							text-overflow: ellipsis;
+							overflow: hidden;
+						}
+						.tags{
+							display: flex;
+							align-items: center;
+							.tag-item{
+								line-height: 50rpx;
+								border-radius: 8rpx;
+								padding: 6rpx 0;
+								font-size: 24rpx;
+								margin-left: 10rpx;
+								display: flex;
+								.label{
+									background: #FFF;
+									color: #FE5B47;
+									padding: 0 10rpx;
+									border-radius: 8rpx 0 0 8rpx;
+								}
+								.value{
+									color: #FFF;
+									background: rgba(255, 255, 255, .2);
+									padding: 0 14rpx;
+									border-radius: 0 8rpx 8rpx 0;
+								}
+							}
+						}
+
+						.address {
+							display: flex;
+							align-items: center;
+							margin-top: 15rpx;
+							color: #999;
+							.position{
+								width: 25rpx;
+								height: 29rpx;
+								margin-right: 8rpx;
+							}
+						}
+					}
+				}
+			}
+		}
+
+
+		.login-btn {
+			position: fixed;
+			bottom: 0%;
+			left: 0;
+			width: 100%;
+			background: #fff;
+			padding: 25rpx 0;
+
+			.btn {
+				width: 440rpx;
+				line-height: 120rpx;
+				background: rgb(222, 134, 143);
+				border-radius: 60rpx;
+				color: #fff;
+				font-size: 16px;
+			}
+		}
+
+		.fixed-btn {
+			position: fixed;
+			right: 0;
+			top: 50%;
+			width: 86rpx;
+			height: 150rpx;
+			line-height: 60rpx;
+			padding: 35rpx 10rpx 0;
+			text-align: center;
+			border-radius: 45px;
+			background: royalblue;
+			white-space: pre-wrap;
+			color: #fff;
+		}
+
+	}
+</style>

+ 154 - 0
pages/index/position.vue

@@ -0,0 +1,154 @@
+<template>
+    <view>
+        <city-select
+            @cityClick="cityClick"
+            :formatName="formatName"
+            :activeCity="activeCity"
+            :hotCity="hotCity"
+            :obtainCitys="obtainCitys"
+            :isSearch="true"
+            ref="citys"
+        ></city-select>
+    </view>
+</template>
+
+<script>
+import citys from '@/components/city-select/citySelect.js'
+import citySelect from '@/components/city-select/city-select.vue'
+// 腾讯地图
+var QQMapWX = require('../../libs/qqmap-wx-jssdk.min.js');
+var qqmapsdk = new QQMapWX({key:'KX5BZ-B64RC-RO62W-AMWAZ-VVTC3-YAFXF'});
+export default {
+    data() {
+        return {
+            //需要构建索引参数的名称(注意:传递的对象里面必须要有这个名称的参数)
+            formatName: 'title',
+            //当前城市
+            activeCity: {
+                id: 1,
+                title: '南京'
+            },
+            //热门城市
+            hotCity: [
+                {
+                    id: 0,
+                    title: '北京'
+                },
+                {
+                    id: 1,
+                    title: '南京'
+                }
+            ],
+            //显示的城市数据
+            obtainCitys: [
+                {
+                    id: 0,
+                    title: '南京'
+                },
+                {
+                    id: 1,
+                    title: '北京'
+                },
+                {
+                    id: 2,
+                    title: '天津'
+                },
+                {
+                    id: 3,
+                    title: '成都'
+                },
+				{
+				    id: 4,
+				    title: '长沙'
+				},
+				{
+				    id: 5,
+				    title: '贵阳'
+				}
+            ]
+        }
+    },
+    components: {
+        citySelect
+    },
+    created() {
+		this.getCity()
+		
+        //动态更新数据
+        // setTimeout(() => {
+        //     //修改需要构建索引参数的名称
+        //     this.formatName = 'cityName'
+        //     //修改当前城市
+        //     this.activeCity = {
+        //         cityName: '南京',
+        //         cityCode: 110100
+        //     }
+        //     //修改热门城市
+        //     this.hotCity = [
+        //         {
+        //             cityName: '南京',
+        //             cityCode: 110100
+        //         },
+        //         {
+        //             cityName: '北京',
+        //             cityCode: 110102
+        //         }
+        //     ]
+        //     //修改构建索引数据
+        //     this.obtainCitys = citys
+        //     uni.showToast({
+        //         icon: 'none',
+        //         title: '更新数据成功',
+        //         // #ifdef MP-WEIXIN
+        //         duration: 3000,
+        //         // #endif
+        //         mask: true
+        //     })
+        // }, 5000)
+    },
+    methods: {
+        cityClick(item) {
+			uni.setStorageSync('city',item.title)
+			uni.navigateBack()
+        },
+		getCity(){
+			this.activeCity.title = '定位中'
+			let that = this
+			uni.getLocation({
+			        type: 'wgs84',
+			        geocode: true,
+			        success: (res) => {
+			            console.log("获取经纬度成功");
+						// 解析地址
+						qqmapsdk.reverseGeocoder({
+						    location: {
+						        latitude: res.latitude,
+						        longitude: res.longitude
+						    },
+						    success: function(res) {
+						        console.log("解析地址成功");
+						        // 市
+						        that.activeCity.title = res.result.ad_info.city.slice(0,2);
+						    },
+						    fail: function(res) {
+								this.city = '定位失败'
+						       
+						    },
+						    complete: function(res) {
+						        console.log(res);
+						    }
+						})
+			        },
+			        fail: () => {
+			            console.log("获取经纬度失败");
+			        },
+			        complete: () => {
+			           
+			        }
+			    })
+		},
+    }
+}
+</script>
+
+<style></style>

+ 443 - 0
pages/index/visitorIndex.vue

@@ -0,0 +1,443 @@
+<template>
+	<view class="visitor-index">
+		<zs-banner></zs-banner>
+
+		<view class="list">
+			<view class="combo">
+				<view class="bg" :class="[active == index?'active':'']" @click="handleCard(index)"
+					v-for="(item,index) in cardList" :key="item.title">
+					<view class="card">
+
+						<view class="combo-info">
+
+							<view class="combo-title">
+								{{item.title}}
+							</view>
+							<view class="combo-type">
+								连续包月
+							</view>
+						</view>
+						<view class="combo-desc">
+							<view class="desc-item" v-for="(item,index) in equityList" :key="index">
+								<image class="icon" :src="item.icon" mode=""></image>
+								<view class="text">
+									{{item.desc}}
+								</view>
+							</view>
+						</view>
+						<view class="btn">
+							立即订购
+						</view>
+					</view>
+				</view>
+			</view>
+
+		</view>
+
+
+
+		<view class="table-box box">
+			<view class="table-title">
+				资费详情
+			</view>
+			<table class="table">
+				<tr>
+					<td class="label">名称</td>
+					<td class="value">移动生活本地宝</td>
+				</tr>
+				<tr>
+					<td class="label">月费</td>
+					<td class="value">20元</td>
+				</tr>
+				<tr>
+					<td class="label">尊享权益</td>
+					<td class="value">
+						加油充电8折起;<br>
+						景区门票6折起;<br>
+						千家酒店随心住<br>
+					</td>
+				</tr>
+			</table>
+
+			<view class="step-box">
+				<view class="step-title">在线激活流程</view>
+
+				<view class="step">
+					<view class="step-item suffix">
+						<image src="../../static/step1.png" class="icon" mode=""></image>
+						<view class="label">
+							用户注册
+						</view>
+					</view>
+					<view class="step-item suffix">
+						<image src="../../static/step2.png" class="icon" mode=""></image>
+						<view class="label">
+							受理开户
+						</view>
+					</view>
+					<view class="step-item suffix">
+						<image src="../../static/step3.png" class="icon" mode=""></image>
+						<view class="label">
+							注册核验
+						</view>
+					</view>
+					<view class="step-item">
+						<image src="../../static/step4.png" class="icon" mode=""></image>
+						<view class="label">
+							激活套餐
+						</view>
+					</view>
+				</view>
+			</view>
+
+		</view>
+
+		<view class="choose-btn" @click="handleBtn">
+			立即办理
+		</view>
+
+
+		<!-- 登录弹窗 -->
+		<zs-login v-model="show"></zs-login>
+
+		<!-- 骨架屏 -->
+		<zs-skeleton :loading="loading"></zs-skeleton>
+
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				show: false,
+				loading: true,
+				active: 1, //套餐默认20
+				cardList: [ //套餐列表
+					{
+						title: '10元套餐',
+					},
+					{
+						title: '20元套餐',
+					},
+					{
+						title: '30元套餐',
+					}
+				],
+				equityList: [{
+						icon: require('../../static/equity1.png'),
+						desc: '加油充电9折起',
+					},
+					{
+						icon: require('../../static/equity2.png'),
+						desc: '景区门票8折起',
+					},
+					{
+						icon: require('../../static/equity3.png'),
+						desc: '千家酒店随心住',
+					}
+				],
+			}
+		},
+		methods: {
+			//选择套餐
+			handleCard(index) {
+				this.active = index
+			},
+			// 点击办理
+			handleBtn() {
+				this.show = true
+				uni.setStorageSync('type', 1)
+			},
+		},
+		onShow() {
+			this.show = false
+			this.loading = false
+		},
+		onHide() {
+			this.show = false
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.visitor-index {
+		padding-bottom: 140rpx;
+
+		.card-title {
+			display: flex;
+			justify-content: center;
+
+			.title {
+				font-size: 32rpx;
+				text-align: center;
+				color: #fff;
+				width: 210rpx;
+				line-height: 64rpx;
+				background: linear-gradient(360deg, #3074F8 0%, #568FFF 100%);
+				border-radius: 0rpx 0rpx 24rpx 24rpx;
+			}
+
+		}
+
+		.list {
+			padding: 0 20rpx 30rpx;
+			position: relative;
+
+			.combo {
+				.bg {
+					background: $uni-color-primary;
+					padding: 12rpx;
+					border-radius: 32rpx 32rpx 32rpx 32rpx;
+					margin-top: 26rpx;
+					opacity: .5;
+
+					.card {
+						display: flex;
+						padding: 24rpx;
+						background: #fff;
+						border-radius: 32rpx 32rpx 32rpx 32rpx;
+
+						.combo-info {
+							width: 172rpx;
+							height: 168rpx;
+							background: url('../../static/combo.png') no-repeat;
+							background-size: 100%;
+							display: flex;
+							flex-direction: column;
+							align-items: center;
+
+							.combo-title {
+								font-size: 36rpx;
+								font-family: DingTalk JinBuTi-Regular, DingTalk JinBuTi;
+								font-weight: 400;
+								color: $uni-text-primary;
+								margin-top: 38rpx;
+							}
+
+							.combo-type {
+								width: 112rpx;
+								height: 36rpx;
+								line-height: 36rpx;
+								text-align: center;
+								font-size: 24rpx;
+								font-weight: 400;
+								color: $uni-text-primary;
+								background-color: #fff;
+								border-radius: 18rpx;
+								margin-top: 20rpx;
+							}
+						}
+					}
+
+					.combo-desc {
+						flex: 1;
+						margin-left: 38rpx;
+						display: flex;
+						flex-direction: column;
+						justify-content: space-between;
+
+						.desc-item {
+							display: flex;
+							align-items: center;
+							align-content: flex-end;
+
+							.icon {
+								width: 36rpx;
+								height: 36rpx;
+							}
+
+							.text {
+								font-size: 24rpx;
+								font-weight: 400;
+								color: #121212;
+								text-indent: 20rpx;
+							}
+						}
+					}
+
+					.btn {
+						align-self: flex-end;
+						width: 132rpx;
+						height: 52rpx;
+						line-height: 52rpx;
+						font-size: 24rpx;
+						color: #fff;
+						text-align: center;
+						background: $uni-color-primary;
+						border-radius: 26rpx 26rpx 26rpx 26rpx;
+					}
+
+
+				}
+			}
+
+			.active {
+				opacity: 1 !important;
+			}
+
+		}
+
+		.choose-btn {
+			width: 432rpx;
+			line-height: 92rpx;
+			text-align: center;
+			color: #fff;
+			font-weight: bold;
+			font-size: 32rpx;
+			background: linear-gradient(180deg, #FF876B 0%, #FE5B47 100%);
+			box-shadow: inset 0rpx 6rpx 12rpx 2rpx rgba(255, 255, 255, 0.16);
+			border-radius: 46rpx 46rpx 46rpx 46rpx;
+			position: fixed;
+			z-index: 2;
+			bottom: 20rpx;
+			left: 50%;
+			transform: translateX(-50%);
+		}
+
+		.equity {
+			display: flex;
+			align-items: center;
+			padding: 40rpx 20rpx;
+
+			.item {
+				flex: 1;
+				text-align: center;
+				padding: 0 15rpx;
+				font-size: 24rpx;
+
+				.icon {
+					width: 84rpx;
+					height: 84rpx;
+				}
+
+				.desc {
+					margin-top: 10rpx;
+				}
+			}
+		}
+
+		.box {
+			border: 6rpx solid #DCE8FF;
+			background: #fff;
+			border-radius: 28rpx;
+			margin: 40rpx 30rpx 0;
+		}
+
+		.table-box {
+			padding: 30rpx;
+
+			.table-title {
+				background: #FEB687;
+				color: #fff;
+				line-height: 80rpx;
+				text-align: center;
+				border-radius: 12rpx 12rpx 0 0;
+			}
+
+			.table {
+				border-collapse: collapse;
+				line-height: 50rpx;
+				border-radius: 12rpx;
+				background: #FFF6EF;
+
+				tr {
+					display: flex;
+
+					td {
+						border: 2rpx solid #FEB687;
+						padding: 10rpx 0 10rpx 40rpx;
+
+					}
+
+					.label {
+						width: 200rpx;
+						display: flex;
+						align-items: center;
+					}
+
+					.value {
+						flex: 1;
+					}
+				}
+			}
+		}
+
+		.step-box {
+			padding: 30rpx;
+			margin-top: 50rpx;
+
+			.step-title {
+				font-size: 30rpx;
+				font-weight: bold;
+				text-align: center;
+				margin-bottom: 45rpx;
+				position: relative;
+
+				&::before {
+					position: absolute;
+					top: 50%;
+					left: 80rpx;
+					transform: translateY(-50%);
+					content: '';
+					width: 86rpx;
+					height: 8rpx;
+					background: linear-gradient(270deg, #FE5B47 0%, rgba(254, 91, 71, 0) 100%);
+					border-radius: 8rpx;
+				}
+
+				&::after {
+					position: absolute;
+					top: 50%;
+					right: 80rpx;
+					transform: translateY(-50%);
+					content: '';
+					width: 86rpx;
+					height: 8rpx;
+					background: linear-gradient(90deg, #FE5B47 0%, rgba(254, 91, 71, 0) 100%);
+					border-radius: 8rpx;
+				}
+			}
+
+			.step {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				.step-item {
+					text-align: center;
+
+					.icon {
+						width: 80rpx;
+						height: 80rpx;
+					}
+
+					.label {
+						font-size: 24rpx;
+						color: #121212;
+					}
+				}
+
+				.suffix {
+					position: relative;
+
+					&::after {
+						content: '';
+						position: absolute;
+						top: 50%;
+						right: -40rpx;
+						transform: translateY(calc(-50% - 20rpx));
+						width: 25rpx;
+						height: 25rpx;
+						background: url('../../static/step5.png') no-repeat;
+						background-size: 100%;
+						display: block;
+					}
+				}
+
+			}
+		}
+
+	}
+</style>

+ 333 - 0
pages/my/index.vue

@@ -0,0 +1,333 @@
+<template>
+	<view class="my">
+
+		<view class="top-box">
+
+			<view class="user-info">
+				<image class="image" :src="userInfo.imgPath || defaultImg" lazy-load mode=""></image>
+				<view class="info">
+					<view class="user-name">{{userInfo.nickname ||'用户'}}</view>
+					<view class="tel">{{userInfo.phoneNum ||'-'}}</view>
+				</view>
+				<u-icon name="setting" class="stting" color="#FFF" size="38"
+					@click="setting"></u-icon>
+			</view>
+
+			<view class="btn-group">
+				<view class="item" @click="jump('../../my/order/index')">
+
+					<image class="icon" src="../../static/icon1.png" mode=""></image>
+					<view class="label">
+						我的订单
+					</view>
+				</view>
+				<view class="item" @click="jump('../../my/card/index')">
+					<image class="icon" src="../../static/icon2.png" mode=""></image>
+					<view class="label">
+						我的权益
+					</view>
+				</view>
+				<view class="item" @click="jump('../../my/favorite/index')">
+					<image class="icon" src="../../static/icon3.png" mode=""></image>
+					<view class="label">
+						我的收藏
+					</view>
+				</view>
+				<view class="item" @click="jump('../../integral/store')">
+					<image class="icon" src="../../static/icon4.png" mode=""></image>
+					<view class="label">
+						我的积分
+					</view>
+				</view>
+			</view>
+		</view>
+
+
+
+		<view class="box-title">
+			商家推荐
+		</view>
+		<zs-list class="store-box" mt="0" @load="loadMore" :status="status">
+			<view class="left">
+				<view class="store-item" v-for="(item,index) in list" :key="index" @click="goShopDetail(item)">
+					<!-- <image class="icon" mode="" :src="item.src"> -->
+						<zs-img  :src="item.src" width="335rpx"  mode="widthFix" ></zs-img>
+						<view class="info">
+							<view class="title">
+								{{item.title}}
+							</view>
+							<view class="address">
+								<image class="position" src="../../static/position.png" mode=""></image>
+								{{item.distance}}km
+							</view>
+						</view>
+				</view>
+			</view>
+			<view class="right">
+				<view class="store-item" v-for="(item,index) in list1" :key="index" @click="goShopDetail(item)">
+					<!-- <image class="icon" mode="" :src="item.src"> -->
+						<zs-img  :src="item.src" width="335rpx"  mode="widthFix" ></zs-img>
+						<view class="info">
+							<view class="title">
+								{{item.title}}
+							</view>
+							<view class="address">
+								<image class="position" src="../../static/position.png" mode=""></image>
+								{{item.distance}}km
+							</view>
+						</view>
+				</view>
+			</view>
+		
+		</zs-list>
+
+	</view>
+</template>
+
+<script>
+	import {
+		getUserDetail
+	} from '@/api/common.js'
+	export default {
+		data() {
+			return {
+				keyword: '',
+				userId: '',
+				loading: false,
+				status: 'more',
+				defaultImg:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fci.xiaohongshu.com%2Fc34b7b74-ba38-0456-982a-43c0f97522fe%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fci.xiaohongshu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693532127&t=a2e186c12aecaab7723611cb52a6778f',
+				userInfo: {
+					imgPath: null,
+					lastLogin: "",
+					level: null,
+					nickname: null,
+					openId: "",
+					phoneNum: "",
+					sex: 0,
+					userId: "",
+					valid: 0
+				},
+				list: [{
+						src: 'https://mstatic.gzstv.com/media/images/2021/06/09/w1nrZC8_x-PQ.jpg',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+
+					},
+					{
+						src: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fss2.meipian.me%2Fusers%2F159660028%2Fb327e4a2a3e1473a82e2a53b5a5d2db2.jpeg%3Fmeipian-raw%2Fbucket%2Fivwen%2Fkey%2FdXNlcnMvMTU5NjYwMDI4L2IzMjdlNGEyYTNlMTQ3M2E4MmUyYTUzYjVhNWQyZGIyLmpwZWc%3D%2Fsign%2Fcec9ce1dfb5e0c3e627e30fb099899da.jpg&refer=http%3A%2F%2Fss2.meipian.me&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1693560973&t=7b7dfb1cbf6a6759e70f868c894888c9',
+						title: '万安加油站(中石化)',
+						distance: 13.62
+
+					},
+					{
+						id: 3,
+						src:'https://img-md.veimg.cn/meadinindex/img5/2021/11/69F51D249ADA446EB5507352AA4ABD6E.jpg',
+						title: '贵阳万丽酒店',
+						distance: 5.23,
+						
+					},
+				],
+				list1: [
+					{
+						id: 3,
+						src:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fc7481b97-86a3-4aba-8d2c-d3c84d7ce831%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1695542967&t=fe7462e4fc56e50b98013b198043278d',
+						title: '黄果树瀑布',
+						distance: 5.23,
+						
+					},
+					{
+						id: 3,
+						src:'https://alipic.lanhuapp.com/XDSlicePNGMAXdb1c28750d2e8f45e7509c176f186600d2bafe09de15a8107b168c078801e1e7.png',
+						title: '微笑牙科诊所',
+						distance: 5.23,
+						
+					},
+					{
+						id: 2,
+						src:'https://img2.baidu.com/it/u=242243300,1128843585&fm=253&fmt=auto&app=138&f=JPEG?w=696&h=500',
+						title: '泊斯曼酒店',
+						distance: 5.23,
+						
+					},
+				
+				]
+			}
+		},
+		onShow() {
+			if (uni.getStorageSync('token')) {
+				this.getUserDetail()
+			}
+
+		},
+		onLoad() {
+
+		},
+		methods: {
+			setting(){
+				if(uni.getStorageSync('token')){
+					uni.navigateTo({
+						url:'../../my/edit/edit'
+					})
+				}else{
+					uni.showToast({
+						title:'请先登录',
+						icon:'error'
+					})
+				}
+			},
+			loadMore() {
+				// this.status = 'loading'
+				// setTimeout(() => {
+				// 	this.status = 'more'
+				// 	this.list.push({
+				// 		src: 'https://img2.baidu.com/it/u=3177584174,2077949726&fm=253&fmt=auto&app=120&f=JPEG?w=540&h=360',
+				// 		title: '万安加油站(中石化)',
+				// 		distance: 13.62
+				// 	})
+				// }, 1000)
+			},
+			jump(url) {
+				uni.navigateTo({
+					url
+				})
+			},
+			goShopDetail(item) {
+				uni.setStorageSync('shopInfo', JSON.stringify(item))
+				uni.navigateTo({
+					url: `../../detail/shopDetail/shopDetail`
+				})
+			},
+			// 获取用户详情
+			getUserDetail() {
+				getUserDetail().then(res => {
+					this.userInfo = res.content
+					uni.setStorageSync('userInfo', JSON.stringify(this.userInfo))
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.my {
+		height: 100vh;
+		padding: 0 30rpx;
+		background: #F9F9F9;
+
+		.top-box {
+			width: 750rpx;
+			margin-left: -30rpx;
+			padding: 150rpx 30rpx 0;
+			box-sizing: border-box;
+			background: url('../../static/top-bg.png') no-repeat;
+			background-size: 100% 433rpx;
+
+			.user-info {
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 15rpx 0;
+				color: #fff;
+
+				.image {
+					width: 108rpx;
+					height: 108rpx;
+					background: #f1f1f1;
+					border-radius: 50%;
+				}
+
+				.info {
+					flex: 1;
+					margin-left: 30rpx;
+
+					.user-name {
+						font-size: 32rpx;
+						font-weight: bold;
+					}
+
+					.tel {
+						font-size: 24rpx;
+						margin-top: 10rpx;
+					}
+				}
+
+				.setting {}
+			}
+
+			.btn-group {
+				display: flex;
+				align-items: center;
+				padding: 40rpx 20rpx;
+				margin-top: 20rpx;
+				border-radius: 16rpx;
+				background: #fff;
+
+				.item {
+					flex: 1;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+
+					.icon {
+						width: 80rpx;
+						height: 80rpx;
+					}
+
+					.label {
+						margin-top: 15rpx;
+						font-size: 24rpx;
+						color: #121212;
+					}
+				}
+			}
+		}
+
+		.box-title {
+			font-size: 34rpx;
+			padding: 20rpx 0;
+			font-weight: bold;
+		}
+
+		.zs-list {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+
+			.store-item {
+				width: 335rpx;
+				margin-bottom: 25rpx;
+
+				box-shadow: 0rpx 0rpx 24rpx 2rpx rgba(0, 0, 0, 0.08);
+
+				.icon {
+					width: 100%;
+					height: 300rpx;
+					border-radius: 16rpx 16rpx 0 0;
+				}
+
+				.info {
+					padding: 20rpx;
+					background: #fff;
+					border-radius: 0 0 16rpx 16rpx;
+
+					.title {
+						font-weight: bold;
+					}
+
+					.address {
+						display: flex;
+						align-items: center;
+						margin-top: 15rpx;
+						color: #999;
+						.position{
+							width: 25rpx;
+							height: 29rpx;
+							margin-right: 8rpx;
+						}
+					}
+				}
+			}
+		}
+
+	}
+</style>

+ 154 - 0
pages/service/chatRoom.vue

@@ -0,0 +1,154 @@
+<template>
+	<view class="chat-room">
+		
+		<view class="chat-list">
+			<view class="chat-item" v-for="(item,index) in list" :key="index">
+				<view class="chat-msg">
+					{{item.msg}}
+				</view>
+				<view class="head">
+					我
+				</view>
+			</view>
+		</view>
+		
+		<view class="tool-box">
+			<view class="input-box">
+				<input class="input" type="text" confirm-type="send" @confirm="send" placeholder="请输入" v-model="value" />
+				<image class="btn" src="../../static/emoji.png" mode=""></image>
+				<image class="btn" src="../../static/add.png" mode="" @click="this.show = !this.show"></image>
+			</view>
+			<view class="box" v-if="show">
+				<view class="item">
+					<image class="icon" src="../../static/picture.png" mode=""></image>
+					<view class="label">
+						照片
+					</view>
+				</view>
+				<view class="item">
+					<image class="icon" src="../../static/camera.png" mode=""></image>
+					<view class="label">
+						拍照
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				show: false,
+				value:'',
+				list:[
+					{
+						type:'me',
+						msg:'你好,为什么我的加油时不能使用'
+					}
+				]
+			}
+		},
+		methods: {
+			send() {
+				console.log(this.value);
+				this.list.push(
+					{
+						type:'me',
+						msg:this.value
+					}
+				)
+				this.value = ''
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.chat-room {
+		background: #F9F9F9;
+		min-height: 100vh;
+		padding: 0 30rpx 120rpx;
+		
+		.chat-list{
+			display: flex;
+			flex-direction: column;
+			.chat-item{
+				display: flex;
+				align-items: center;
+					align-self: flex-end;
+					margin-bottom: 35rpx;
+				.chat-msg{
+					padding: 20rpx 40rpx;
+					font-size: 28rpx;
+					line-height: 38rpx;
+					background: $uni-color-primary;
+					border-radius: 40rpx 40rpx 0rpx 40rpx;
+					color: #fff;
+					margin: 0 30rpx;
+					max-width: 460rpx;
+					word-break: break-all;
+				}
+				.head{
+					width: 92rpx;
+					height: 92rpx;
+					text-align: center;
+					line-height: 92rpx;
+					border-radius: 50%;
+					background-color: #568FFF;
+					color: #fff;
+				}
+			}
+		}
+		
+		
+		.tool-box{
+			padding: 0 30rpx;
+			position: fixed;
+			bottom: 0%;
+			left: 0;
+			width: 750rpx;
+			box-sizing: border-box;
+				background: #fff;
+			.input-box {
+				display: flex;
+				align-items: center;
+				padding: 8rpx 0;
+				.input {
+					height: 80rpx;
+					line-height: 80rpx;
+					border-radius: 40rpx;
+					background: #F9F9F9;
+					padding-left: 30rpx;
+					flex: 1;
+				}
+
+				.btn {
+					width: 48rpx;
+					height: 48rpx;
+					margin: 0 10rpx;
+				}
+			}
+			
+			.box{
+				display: flex;
+				.item{
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					padding: 25rpx;
+					.icon{
+						width: 48rpx;
+						height: 48rpx;
+					}
+					.label{
+						font-size: 24rpx;
+						color: #707070;
+						margin-top: 10rpx;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 53 - 0
pages/service/index.vue

@@ -0,0 +1,53 @@
+<template>
+	<view class="service">
+		<image class="icon" src="../../static/service.png" mode=""></image>
+
+		<view class="notice">
+			在线时间 9:00-18:00
+		</view>
+		<button class="btn" type="default" @click="jump">在线客服</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		methods: {
+			jump() {
+				uni.navigateTo({
+					url:'./chatRoom'
+				})
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.service {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		.icon {
+			width: 460rpx;
+			height: 410rpx;
+			margin-top: 290rpx;
+		}
+
+		.notice {
+			font-size: 32rpx;
+			color: #0F0F0F;
+			font-weight: 400;
+			margin-top: 50rpx;
+		}
+		.btn{
+			margin-top: 110rpx;
+			width: 560rpx;
+			height: 96rpx;
+			line-height: 96rpx;
+			border-radius: 48rpx;
+			color: #fff;
+			font-size: 32rpx;
+			font-weight: bold;
+			background: $uni-color-primary;
+		}
+	}
+</style>

BIN
static/active.png


BIN
static/add.png


BIN
static/add_gas.png


BIN
static/banner.png


BIN
static/border1.png


BIN
static/border2.png


BIN
static/border3.png


BIN
static/camera.png


BIN
static/card-bg.png


BIN
static/card-bg1.png


BIN
static/card.png


BIN
static/combo.png


BIN
static/diamon.png


BIN
static/emoji.png


BIN
static/equity1.png


BIN
static/equity2.png


BIN
static/equity3.png


BIN
static/equity4.png


BIN
static/equity5.png


BIN
static/font/DOUYUFont.ttf


BIN
static/font/DOUYUFont.woff


+ 1 - 0
static/font/WX-static

@@ -0,0 +1 @@
+Subproject commit 7af5b503c4e1a85d44b872890507abb698f439f4

BIN
static/font/douyu.ttf


File diff suppressed because it is too large
+ 2 - 0
static/font/stylesheet.css


BIN
static/hand.png


BIN
static/home_banner.png


BIN
static/home_off.png


BIN
static/home_on.png


BIN
static/hot-white.png


BIN
static/hot.png


BIN
static/hot1.png


BIN
static/icon.png


BIN
static/icon1.png


BIN
static/icon2.png


BIN
static/icon3.png


BIN
static/icon4.png


BIN
static/img-loading.png


BIN
static/logo.png


BIN
static/my_off.png


BIN
static/my_on.png


BIN
static/picture.png


BIN
static/pinglun.png


BIN
static/play.png


BIN
static/position-white.png


BIN
static/position.png


BIN
static/search.png


BIN
static/send.png


BIN
static/service.png


BIN
static/service_off.png


BIN
static/service_on.png


BIN
static/step1.png


BIN
static/step2.png


BIN
static/step3.png


BIN
static/step4.png


BIN
static/step5.png


BIN
static/store.png


BIN
static/tag.png


BIN
static/take_photo.png


Some files were not shown because too many files changed in this diff