hwq 2 years ago
parent
commit
a05dbea7ff
100 changed files with 1974 additions and 547 deletions
  1. 17 0
      App.vue
  2. 27 0
      androidPrivacy.json
  3. 10 0
      api/set.js
  4. 83 94
      components/home/index.vue
  5. 30 22
      manifest.json
  6. 56 31
      pages.json
  7. 2 0
      pages/collection/bank.vue
  8. 2 0
      pages/collection/zfb.vue
  9. 131 0
      pages/contract/agreement.vue
  10. 248 0
      pages/contract/privacy.vue
  11. 138 0
      pages/contract/start.vue
  12. 25 22
      pages/index/index.vue
  13. 15 13
      pages/money/pay.vue
  14. 5 5
      pages/money/recharge.vue
  15. 19 11
      pages/order/createOrder.vue
  16. 3 3
      pages/product/classify.vue
  17. 17 11
      pages/product/list.vue
  18. 11 3
      pages/product/product.vue
  19. 112 95
      pages/public/forget.vue
  20. 105 68
      pages/public/login.vue
  21. 19 3
      pages/public/register.vue
  22. 33 3
      pages/set/set.vue
  23. 145 133
      pages/set/userinfo.vue
  24. 65 0
      pages/user/about.vue
  25. 9 14
      pages/user/scoreAccumulate.vue
  26. 1 1
      pages/user/team.vue
  27. 12 13
      pages/user/user.vue
  28. 3 1
      pages/user/withdrawal.vue
  29. BIN
      static/img/about.png
  30. BIN
      static/img/log.png
  31. BIN
      static/img/vipxy.png
  32. BIN
      static/img/yszc.png
  33. BIN
      unpackage/cache/apk/__UNI__CB06659_cm.apk
  34. 1 1
      unpackage/cache/apk/apkurl
  35. 0 0
      unpackage/cache/apk/cmManifestCache.json
  36. 20 0
      unpackage/cache/appleConfig.ini
  37. 3 0
      unpackage/cache/certdataios
  38. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-hdpi.png
  39. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xhdpi.png
  40. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xxhdpi.png
  41. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xxxhdpi.png
  42. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-hdpi.png
  43. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-xhdpi.png
  44. BIN
      unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-xxhdpi.png
  45. 0 0
      unpackage/cache/wgt/__UNI__CB06659/__uniappopenlocation.js
  46. 27 0
      unpackage/cache/wgt/__UNI__CB06659/androidPrivacy.json
  47. 0 0
      unpackage/cache/wgt/__UNI__CB06659/app-config-service.js
  48. 0 0
      unpackage/cache/wgt/__UNI__CB06659/app-service.js
  49. 0 0
      unpackage/cache/wgt/__UNI__CB06659/app-view.js
  50. 0 0
      unpackage/cache/wgt/__UNI__CB06659/manifest.json
  51. BIN
      unpackage/cache/wgt/__UNI__CB06659/static/img/about.png
  52. BIN
      unpackage/cache/wgt/__UNI__CB06659/static/img/log.png
  53. BIN
      unpackage/cache/wgt/__UNI__CB06659/static/img/vipxy.png
  54. BIN
      unpackage/cache/wgt/__UNI__CB06659/static/img/yszc.png
  55. 0 0
      unpackage/cache/wgt/__UNI__CB06659/view.css
  56. 0 0
      unpackage/cache/wgt/__UNI__CB06659/view.umd.min.js
  57. 0 0
      unpackage/dist/build/app-plus/__uniappopenlocation.js
  58. 27 0
      unpackage/dist/build/app-plus/androidPrivacy.json
  59. 0 0
      unpackage/dist/build/app-plus/app-config-service.js
  60. 0 0
      unpackage/dist/build/app-plus/app-service.js
  61. 0 0
      unpackage/dist/build/app-plus/app-view.js
  62. 0 0
      unpackage/dist/build/app-plus/manifest.json
  63. BIN
      unpackage/dist/build/app-plus/static/img/about.png
  64. BIN
      unpackage/dist/build/app-plus/static/img/log.png
  65. BIN
      unpackage/dist/build/app-plus/static/img/vipxy.png
  66. BIN
      unpackage/dist/build/app-plus/static/img/yszc.png
  67. 0 0
      unpackage/dist/build/app-plus/view.css
  68. 0 0
      unpackage/dist/build/app-plus/view.umd.min.js
  69. BIN
      unpackage/dist/build/h5/h5.rar
  70. 2 0
      unpackage/dist/build/h5/index.html
  71. 551 0
      unpackage/dist/build/h5/static/css/cmy.css
  72. BIN
      unpackage/dist/build/h5/static/error/emptyCart.png
  73. BIN
      unpackage/dist/build/h5/static/error/errorImage.jpg
  74. BIN
      unpackage/dist/build/h5/static/error/missing-face.png
  75. BIN
      unpackage/dist/build/h5/static/icon/appleIcon.png
  76. BIN
      unpackage/dist/build/h5/static/icon/c3.png
  77. BIN
      unpackage/dist/build/h5/static/icon/c5.png
  78. BIN
      unpackage/dist/build/h5/static/icon/c6.png
  79. BIN
      unpackage/dist/build/h5/static/icon/c7.png
  80. BIN
      unpackage/dist/build/h5/static/icon/c8.png
  81. BIN
      unpackage/dist/build/h5/static/icon/i1.png
  82. BIN
      unpackage/dist/build/h5/static/icon/i2.png
  83. BIN
      unpackage/dist/build/h5/static/icon/i3.png
  84. BIN
      unpackage/dist/build/h5/static/icon/i4.png
  85. BIN
      unpackage/dist/build/h5/static/icon/i5.png
  86. BIN
      unpackage/dist/build/h5/static/icon/i6.png
  87. BIN
      unpackage/dist/build/h5/static/icon/i7.png
  88. BIN
      unpackage/dist/build/h5/static/icon/i8.png
  89. BIN
      unpackage/dist/build/h5/static/icon/img01.png
  90. BIN
      unpackage/dist/build/h5/static/icon/img02.png
  91. BIN
      unpackage/dist/build/h5/static/icon/img03.png
  92. BIN
      unpackage/dist/build/h5/static/icon/img04.png
  93. BIN
      unpackage/dist/build/h5/static/icon/img05.png
  94. BIN
      unpackage/dist/build/h5/static/icon/img06.png
  95. BIN
      unpackage/dist/build/h5/static/icon/img07.png
  96. BIN
      unpackage/dist/build/h5/static/icon/img08.png
  97. BIN
      unpackage/dist/build/h5/static/icon/img09.png
  98. BIN
      unpackage/dist/build/h5/static/icon/img10.png
  99. BIN
      unpackage/dist/build/h5/static/icon/img11.png
  100. BIN
      unpackage/dist/build/h5/static/icon/img12.png

+ 17 - 0
App.vue

@@ -3,6 +3,7 @@
  * vuex管理登陆状态,具体可以参考官方登陆模板示例
  */
 import { mapMutations } from 'vuex';
+import { getFileIndex, getFile, writerTxt, getFileText } from './utils/fileController.js';
 // #ifdef H5
 import { weixindata, setRouter } from './utils/wxAuthorized';
 // #endif
@@ -22,6 +23,22 @@ export default {
 	onLaunch: function(urlObj) {
 		let obj = this;
 		// 加载缓存中的用户信息
+		// #ifdef APP-PLUS
+			getFileIndex()
+			.then(indexObj => {
+				getFileText(indexObj, 'userInfo.txt').then(e => {
+					console.log(e.target,"获取文件1111");
+					if (e.target.result) {
+						console.log(JSON.parse(e.target.result), 'wenjianduixiang ');
+						obj.setUserInfo(e.target.result);
+						obj.login();
+					}
+				});
+			})
+			.catch(e => {
+				console.log(e, '344156');
+			});
+		// #endif
 		let userInfo = uni.getStorageSync('userInfo') || '';
 		// 判断是否拥有用户信息
 		if (userInfo.uid) {

+ 27 - 0
androidPrivacy.json

@@ -0,0 +1,27 @@
+{
+    "version" : "1",
+    "prompt" : "template",
+    "title" : "服务协议和隐私政策",
+    "message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
+    "buttonAccept" : "同意并接受",
+    "buttonRefuse" : "暂不同意",
+    "second" : {
+        "title" : "确认提示",
+        "message" : "  进入应用前,你需先同意<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>,否则将退出应用。",
+        "buttonAccept" : "同意并继续",
+        "buttonRefuse" : "退出应用"
+    },
+    "styles" : {
+        "backgroundColor" : "#ffffff",
+        "borderRadius" : "5px",
+        "title" : {
+            "color" : "#ff0000"
+        },
+        "buttonAccept" : {
+            "color" : "#000000"
+        },
+        "buttonRefuse" : {
+            "color" : "#000000"
+        }
+    }
+}

+ 10 - 0
api/set.js

@@ -34,6 +34,16 @@ export function binding(data) {
 		data
 	});
 }
+
+//查看当前版本
+export function version(data) {
+	return request({
+		url: '/api/version',
+		method: 'get',
+		data
+	});
+}
+
 // #ifdef APP-PLUS
 //苹果生成账户
 export function applelogin(data) {

+ 83 - 94
components/home/index.vue

@@ -2,117 +2,106 @@
 	<view style="touch-action: none;">
 		<view class="home" style="position:fixed;" :style="{ top: top + 'px', bottom: bottom }" id="right-nav" @touchmove.stop.prevent="setTouchMove">
 			<view class="homeCon bg-color-red" :class="homeActive === true ? 'on' : ''" v-if="homeActive">
-				<navigator hover-class='none' url='/pages/index/index' open-type='switchTab' class='iconfont icon-shouye-xianxing'></navigator>
-				<navigator hover-class='none' url='/pages/order_addcart/order_addcart' open-type='switchTab' class='iconfont icon-caigou-xianxing'></navigator>
-				<navigator hover-class='none' url='/pages/user/index' open-type='switchTab' class='iconfont icon-yonghu1'></navigator>
+				<navigator hover-class="none" url="/pages/index/index" open-type="switchTab" class="iconfont icon-shouye-xianxing"></navigator>
+				<navigator hover-class="none" url="/pages/order_addcart/order_addcart" open-type="switchTab" class="iconfont icon-caigou-xianxing"></navigator>
+				<navigator hover-class="none" url="/pages/user/index" open-type="switchTab" class="iconfont icon-yonghu1"></navigator>
 			</view>
 			<view @click="open" class="pictrueBox">
-				<view class="pictrue">
-					<image :src="
-              homeActive === true
-                ? '/static/images/close.gif'
-                : '/static/images/open.gif'
-            "
-					 class="image" />
-				</view>
+				<view class="pictrue"><image :src="homeActive === true ? '/static/images/close.gif' : '/static/images/open.gif'" class="image" /></view>
 			</view>
 		</view>
 	</view>
 </template>
 <script>
-	import {
-		mapGetters
-	} from "vuex";
-	export default {
-		name: "Home",
-		props: {},
-		data: function() {
-			return {
-				top: "",
-				bottom: ""
-			};
-		},
-		computed: mapGetters(["homeActive"]),
-		methods: {
-			setTouchMove(e) {
-				var that = this;
-				if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
-					that.top = e.touches[0].clientY
-					// that.setData({
-					// 	top: e.touches[0].clientY
-					// })
-				}
-			},
-			open: function() {
-				this.homeActive ?
-					this.$store.commit("CLOSE_HOME") :
-					this.$store.commit("OPEN_HOME");
+import { mapGetters } from 'vuex';
+export default {
+	name: 'Home',
+	props: {},
+	data: function() {
+		return {
+			top: '',
+			bottom: ''
+		};
+	},
+	computed: mapGetters(['homeActive']),
+	methods: {
+		setTouchMove(e) {
+			var that = this;
+			if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
+				that.top = e.touches[0].clientY;
+				// that.setData({
+				// 	top: e.touches[0].clientY
+				// })
 			}
 		},
-		created() {
-			this.bottom = "50px";
+		open: function() {
+			this.homeActive ? this.$store.commit('CLOSE_HOME') : this.$store.commit('OPEN_HOME');
 		}
-	};
+	},
+	created() {
+		this.bottom = '50px';
+	}
+};
 </script>
 
 <style scoped>
-	.pictrueBox {
-		width: 130rpx;
-		height: 120rpx;
-	}
+.pictrueBox {
+	width: 130rpx;
+	height: 120rpx;
+}
 
-	/*返回主页按钮*/
-	.home {
-		position: fixed;
-		color: white;
-		text-align: center;
-		z-index: 9999;
-		right: 15rpx;
-		display: flex;
-	}
+/*返回主页按钮*/
+.home {
+	position: fixed;
+	color: white;
+	text-align: center;
+	z-index: 9999;
+	right: 15rpx;
+	display: flex;
+}
 
-	.home .homeCon {
-		border-radius: 50rpx;
-		opacity: 0;
-		height: 0;
-		color: #e93323;
-		width: 0;
-	}
+.home .homeCon {
+	border-radius: 50rpx;
+	opacity: 0;
+	height: 0;
+	color: #e93323;
+	width: 0;
+}
 
-	.home .homeCon.on {
-		opacity: 1;
-		animation: bounceInRight 0.5s cubic-bezier(0.215, 0.610, 0.355, 1.000);
-		width: 300rpx;
-		height: 86rpx;
-		margin-bottom: 20rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		background: #f44939 !important;
-	}
+.home .homeCon.on {
+	opacity: 1;
+	animation: bounceInRight 0.5s cubic-bezier(0.215, 0.61, 0.355, 1);
+	width: 300rpx;
+	height: 86rpx;
+	margin-bottom: 20rpx;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	background: #f44939 !important;
+}
 
-	.home .homeCon .iconfont {
-		font-size: 48rpx;
-		color: #fff;
-		display: inline-block;
-		margin: 0 auto;
-	}
+.home .homeCon .iconfont {
+	font-size: 48rpx;
+	color: #fff;
+	display: inline-block;
+	margin: 0 auto;
+}
 
-	.home .pictrue {
-		width: 86rpx;
-		height: 86rpx;
-		border-radius: 50%;
-		margin: 0 auto;
-	}
+.home .pictrue {
+	width: 86rpx;
+	height: 86rpx;
+	border-radius: 50%;
+	margin: 0 auto;
+}
 
-	.home .pictrue .image {
-		width: 100%;
-		height: 100%;
-		border-radius: 50%;
-		transform: rotate(90deg);
-		ms-transform: rotate(90deg);
-		moz-transform: rotate(90deg);
-		webkit-transform: rotate(90deg);
-		o-transform: rotate(90deg);
-	}
+.home .pictrue .image {
+	width: 100%;
+	height: 100%;
+	border-radius: 50%;
+	transform: rotate(90deg);
+	ms-transform: rotate(90deg);
+	moz-transform: rotate(90deg);
+	webkit-transform: rotate(90deg);
+	o-transform: rotate(90deg);
+}
 </style>

+ 30 - 22
manifest.json

@@ -2,8 +2,8 @@
     "name" : "云力商城",
     "appid" : "__UNI__CB06659",
     "description" : "",
-    "versionName" : "1.0.2",
-    "versionCode" : 102,
+    "versionName" : "1.3.9",
+    "versionCode" : 139,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */
@@ -23,33 +23,36 @@
             "android" : {
                 /* android打包配置 */
                 "permissions" : [
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                     "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
                     "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
                     "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
                     "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>"
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
                 ],
-                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
+                "autoSdkPermissions" : true
             },
             "ios" : {
-                "idfa" : false
+                "idfa" : false,
+                "privacyDescription" : {
+                    "NSPhotoLibraryUsageDescription" : "使您上传个性化头像",
+                    "NSPhotoLibraryAddUsageDescription" : "使您上传个性化头像"
+                }
             },
             /* ios打包配置 */
             "sdkConfigs" : {
                 "maps" : {},
-                "oauth" : {
-                    "weixin" : {
-                        "appid" : "",
-                        "appsecret" : "",
-                        "UniversalLinks" : ""
-                    }
-                },
+                "oauth" : {},
                 "geolocation" : {},
                 "payment" : {
-                    "weixin" : {
-                        "__platform__" : [ "android" ],
-                        "appid" : "wxf5df6dcc18834a18",
-                        "UniversalLinks" : ""
+                    "alipay" : {
+                        "__platform__" : [ "ios", "android" ]
                     }
                 },
                 "push" : {},
@@ -61,14 +64,19 @@
             "splashscreen" : {
                 "androidStyle" : "default",
                 "android" : {
-                    "hdpi" : "unpackage/启动图/22.2.28/启动图480.png",
-                    "xhdpi" : "unpackage/启动图/22.2.28/启动图720.png",
-                    "xxhdpi" : "unpackage/启动图/22.2.28/启动图1080.png"
-                }
+                    "hdpi" : "unpackage/启动图/480.png",
+                    "xhdpi" : "unpackage/启动图/启动图3.png",
+                    "xxhdpi" : "unpackage/启动图/启动图1080.png"
+                },
+                "iosStyle" : "storyboard",
+                "ios" : {
+                    "storyboard" : "D:/工作/项目2/多力/苹果/appleqdt.zip"
+                },
+                "useOriginalMsgbox" : true
             },
             "icons" : {
                 "android" : {
-                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "hdpi" : "unpackage/res/icons/20x20.png",
                     "xhdpi" : "unpackage/res/icons/96x96.png",
                     "xxhdpi" : "unpackage/res/icons/144x144.png",
                     "xxxhdpi" : "unpackage/res/icons/192x192.png"
@@ -142,7 +150,7 @@
                 "/api" : {
                     "target" : "http://store.duolio.cn/api", //请求的目标域名
                     "changeOrigin" : true,
-                    // "secure": false,
+                    // "secure": false,https://shop.zhengyjk1994.com/ulink/https://shop.zhengyjk1994.com/ulink/
                     "pathRewrite" : {
                         "^/api" : "/"
                     }

+ 56 - 31
pages.json

@@ -96,7 +96,7 @@
 				}
 			}
 		},
-		
+
 		{
 			"path": "pages/product/reply",
 			"style": {
@@ -160,6 +160,7 @@
 		{
 			"path": "pages/product/classify",
 			"style": {
+				"navigationBarTitleText": "报单商品",
 				"navigationStyle": "custom",
 				"app-plus": {
 					"titleNView": {
@@ -209,7 +210,7 @@
 				"navigationBarTitleText": "购物车"
 			}
 		},
-		
+
 		{
 			"path": "pages/user/user",
 			"style": {
@@ -239,6 +240,12 @@
 				"navigationBarTitleText": "收藏夹"
 			}
 		},
+		{
+			"path": "pages/user/about",
+			"style": {
+				"navigationBarTitleText": "关于我们"
+			}
+		},
 		{
 			"path": "pages/user/scoreAccumulate",
 			"style": {
@@ -286,7 +293,7 @@
 			"style": {
 				"navigationBarTitleText": "创建订单"
 			}
-		},  {
+		}, {
 			"path": "pages/money/pay",
 			"style": {
 				"navigationBarTitleText": "支付"
@@ -360,6 +367,24 @@
 				}
 			}
 		},
+		{
+			"path": "pages/contract/privacy",
+			"style": {
+				"navigationBarTitleText": "隐私政策"
+			}
+		},
+		{
+			"path": "pages/contract/start",
+			"style": {
+				"navigationBarTitleText": "温馨提示"
+			}
+		},
+		{
+			"path": "pages/contract/agreement",
+			"style": {
+				"navigationBarTitleText": "会员协议"
+			}
+		},
 		{
 			"path": "pages/user/shareQrCode",
 			"style": {
@@ -367,37 +392,37 @@
 			}
 		}
 	],
-	"subPackages": [
-		{
-			"root": "pages/activity",
-			"name": "activity",
-			"pages":[{
-					"path": "goods_bargain/index",
-					"style": {
-						"navigationStyle": "custom"
+	"subPackages": [{
+		"root": "pages/activity",
+		"name": "activity",
+		"pages": [{
+				"path": "goods_bargain/index",
+				"style": {
+					"navigationStyle": "custom"
 						// #ifdef MP
-						,"navigationBarTextStyle": "#fff"
-						// #endif
-					}
-				},
-				{
-					"path": "goods_bargain_details/index",
-					"style": {
-						"navigationStyle": "custom"
+						,
+					"navigationBarTextStyle": "#fff"
+					// #endif
+				}
+			},
+			{
+				"path": "goods_bargain_details/index",
+				"style": {
+					"navigationStyle": "custom"
 						// #ifdef MP
-						,"navigationBarTextStyle": "#fff"
-						// #endif
-					}
-				},
-				{
-					"path": "bargain/index",
-					"style": {
-						"navigationBarTitleText": "砍价记录"
-					}
+						,
+					"navigationBarTextStyle": "#fff"
+					// #endif
 				}
-			]
-		}
-	],
+			},
+			{
+				"path": "bargain/index",
+				"style": {
+					"navigationBarTitleText": "砍价记录"
+				}
+			}
+		]
+	}],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "uni-app",

+ 2 - 0
pages/collection/bank.vue

@@ -125,6 +125,8 @@ page,
 			line-height: 100rpx;
 		}
 		input {
+			height: 100rpx;
+			display: inline-block;
 			font-size: 28rpx;
 			font-family: PingFang SC;
 			font-weight: 400;

+ 2 - 0
pages/collection/zfb.vue

@@ -116,6 +116,8 @@ page,
 			line-height: 100rpx;
 		}
 		input {
+			height: 100rpx;
+			display: inline-block;
 			font-size: 28rpx;
 			font-family: PingFang SC;
 			font-weight: 400;

+ 131 - 0
pages/contract/agreement.vue

@@ -0,0 +1,131 @@
+<template>
+	<view class="box">
+		<view class="title pt20 pb30">云力商城用户/会员注册协议</view>
+		<view class="content">欢迎您访问并使用云力商城服务平台!本协议是您与云力商城平台所有者就云力商城平台服务的相关事宜所订立的协议。</view>
+		<view class="content">
+			为维护您自身权益,请您仔细阅读本协议,您点击“同意并继续”按钮后,本协议即构成对双方具有约束力的法律文件; 阅读本协议过程中,
+			如您不同意本协议或其中任何条款的约定,您应立即停止注册程序。
+		</view>
+		<view class="title">总则所有权和运营权归浙江多力网络科技有限公司所有。(浙江多力网络科技有限公司以下简称:多力公司)</view>
+		<view class="title">一、用户协议细则</view>
+		<view class="content">1.1 用户在注册之前,应当仔细阅读本协议,并同意遵守本协议后方可成为注册用户。一旦注册成功,则用户与多力公司间自动形成协议关系,用户应当受本协议的约束。用户在使用特殊的服务或产品时,应当同意接受相关协议后方能使用。</view>
+		<view class="content">1.2 本协议可由多力公司随时更新,用户应当及时关注并同意本站不承担通知义务。本站的通知、公告、声明或其它类似内容是本协议的一部分。</view>
+		<view class="title">二、服务内容</view>
+		<view class="content">2.1 多力公司的具体内容由本站根据实际情况提供。</view>
+		<view class="content">2.2 本站仅提供相关的网络服务,除此之外与相关网络服务有关的设备(如个人电脑、手机、及其他与接入互联网或移动网有关的装置)及所需的费用(如为接入互联网而支付的电话费及上网费、为使用移动网而支付的手机费)均应由用户自行负担。</view>
+		<view class="title">三、用户帐号</view>
+		<view class="content">
+			3.1 经本站注册系统完成注册程序并通过身份认证的用户即成为正式用户,可以获得本站规定用户所应享有的一切权限;未经认证仅享有本站规定的部分会员权限。多力公司有权对会员的权限设计进行变更。
+		</view>
+		<view class="content">3.2 用户只能按照注册要求使用真实姓名,及身份证号注册。用户有义务保证密码和帐号的安全,用户利用该密码和帐号所进行的一切活动引起的任何损失或损害,由用户自行承担全部责任,本站不承担任何责任。如用户发现帐号遭到未授权的使用或发生其他任何安全问题,应立即修改帐号密码并妥善保管,如有必要,请通知本站。因黑客行为或用户的保管疏忽导致帐号非法使用,本站不承担任何责任。</view>
+		<view class="title">四、使用规则</view>
+		<view class="content">
+			4.1遵守中华人民共和国相关法律法规,包括但不限于《中华人民共和国计算机信息系统安全保护条例》、《计算机软件保护条例》、《最高人民法院关于审理涉及计算机网络著作权纠纷案件适用法律若干问题的解释(法释[2004]1号)》、《全国人大常委会关于维护互联网安全的决定》、《互联网电子公告服务管理规定》、《互联网新闻信息服务管理规定》、《互联网著作权行政保护办法》和《信息网络传播权保护条例》等有关计算机互联网规定和知识产权的法律和法规、实施办法。
+		</view>
+		<view class="content">4.2 用户对其自行发表、上传或传送的内容负全部责任,所有用户不得在本站任何页面发布、转载、传送含有下列内容之一的信息,否则本站有权自行处理并不通知用户:</view>
+		<view class="content">
+			①违反宪法确定的基本原则的;
+		</view>
+		<view class="content">②危害国家安全,泄漏国家机密,颠覆国家政权,破坏国家统一的;</view>
+		<view class="content">③损害国家荣誉和利益的;</view>
+		<view class="content">④煽动民族仇恨、民族歧视,破坏民族团结的;</view>
+		<view class="content">⑤破坏国家宗教政策,宣扬邪教和封建迷信的;</view>
+		<view class="content">⑥散布谣言,扰乱社会秩序,破坏社会稳定的;</view>
+		<view class="content">⑦散布淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的;</view>
+		<view class="content">⑧侮辱或者诽谤他人,侵害他人合法权益的;</view>
+		<view class="content">⑨煽动非法集会、结社、游行、示威、聚众扰乱社会秩序的;</view>
+		<view class="content">⑩以非法民间组织名义活动的;</view>
+		<view class="content">⑪含有法律、行政法规禁止的其他内容的。</view>
+		<view class="content">4.3 用户承诺对其发表或者上传于本站的所有信息(即属于《中华人民共和国著作权法》规定的作品,包括但不限于文字、图片、音乐、电影、表演和录音录像制品和电脑程序等)均享有完整的知识产权,或者已经得到相关权利人的合法授权;如用户违反本条规定造成本站被第三人索赔的,用户应全额补偿本站一切费用(包括但不限于各种赔偿费、诉讼代理费及为此支出的其它合理费用);</view>
+		<view class="content">4.4 当第三方认为用户发表或者上传于本站的信息侵犯其权利,并根据《信息网络传播权保护条例》或者相关法律规定向本站发送权利通知书时,用户同意本站可以自行判断决定删除涉嫌侵权信息,除非用户提交书面证据材料排除侵权的可能性,本站将不会自动恢复上述删除的信息</view>
+		<view class="content">
+			①不得为任何非法目的而使用网络服务系统;
+		</view>
+		<view class="content">②遵守所有与网络服务有关的网络协议、规定和程序;</view>
+		<view class="content">③不得利用本站进行任何可能对互联网的正常运转造成不利影响的行;</view>
+		<view class="content">④不得利用本站进行任何不利于本站的行为。</view>
+		<view class="content">4.5 如用户在使用网络服务时违反上述任何规定,本站有权要求用户改正或直接采取一切必要的措施(包括但不限于删除用户张贴的内容、暂停或终止用户使用网络服务的权利)以减轻用户不当行为而造成的影响。</view>
+		<view class="title">五、隐私保护</view>
+		<view class="content">
+			5.1
+			本站不对外公开或向第三方提供单个用户的注册资料及用户在使用网络服务时存储在本站的非公开内容,但下列情况除外:(1)事先获得用户的明确授权;(2)根据有关的法律法规要求;(3)按照相关政府主管部门的要求;(4)为维护社会公众的利益。
+		</view>
+		<view class="content">
+			5.2 本站可能会与第三方合作向用户提供相关的网络服务,在此情况下,如该第三方同意承担与本站同等的保护用户隐私的责任,则本站有权将用户的注册资料等提供给该第三方。
+		</view>
+		<view class="content">
+			5.3 在不透露单个用户隐私资料的前提下,本站有权对整个用户数据库进行分析并对用户数据库进行商业上的利用。
+		</view>
+		<view class="title">六、版权声明</view>
+		<view class="content">
+			6.1 本站的文字、图、音频、视频等版权均归多力公司享有或与作者共同享有,未经本站许可,不得任意转载。
+		</view>
+		<view class="content">
+			6.2 本站特有的标识、版面设计、编排方式等版权均属多力公司享有,未经本站许可,不得任意复制或转载。
+		</view>
+		<view class="content">6.3 使用本站的任何内容均应注明“来源于咪兔合和商城”及署上作者姓名,按法律规定需要支付稿酬的,应当通知本站及作者及支付稿酬,并独立承担一切法律责任。</view>
+		<view class="content">6.4 本站享有所有作品用于其它用途的优先权,包括但不限于网站、电子杂志、平面出版等,但在使用前会通知作者,并按同行业的标准支付稿酬。</view>
+		<view class="content">6.5 本站所有内容仅代表作者自己的立场和观点,与本站无关,由作者本人承担一切法律责任。</view>
+		<view class="content">6.6 恶意转载本站内容的,本站保留将其诉诸法律的权利。</view>
+		<view class="content">七、责任声明</view>
+		<view class="content">
+			7.1 用户明确同意其使用本站网络服务所存在的风险及一切后果将完全由用户本人承担,咪兔合和商城对此不承担任何责任。
+		</view>
+		<view class="content">
+			7.2 本站无法保证网络服务一定能满足用户的要求,也不保证网络服务的及时性、安全性、准确性。
+		</view>
+		<view class="content">
+			7.3 本站不保证为方便用户而设置的外部链接的准确性和完整性,同时,对于该等外部链接指向的不由本站实际控制的任何网页上的内容,本站不承担任何责任。
+		</view>
+		<view class="content">
+			7.4 对于因不可抗力或本站不能控制的原因造成的网络服务中断或其它缺陷,本站不承担任何责任,但将尽力减少因此而给用户造成的损失和影响。
+		</view>
+		<view class="content">
+			7.5 对于站向用户提供的下列产品或者服务的质量缺陷本身及其引发的任何损失,本站无需承担任何责任:</br>
+			(1)本站向用户免费提供的各项网络服务;</br>(2)本站向用户赠送的任何产品或者服务。
+		</view>
+		<view class="content">
+			7.6 本站有权于任何时间暂时或永久修改或终止本服务(或其任何部分),而无论其通知与否,本站对用户和任何第三人均无需承担任何责任。
+		</view>
+		<view class="content">
+			7.7 任务补贴活动的特别提醒:
+		</view>
+		<view class="content">
+			①本站是为了前期推广才推出的任务补贴活动;
+		</view>
+		<view class="content">②您已经确认了参加任务补贴活动时购买的产品的价值了,您对产品的价值与你购买的价格没有异议。本站不会对您购买后的产品进行保价行为。</view>
+		<view class="content">③任务补贴活动时给您的总任务数只是一个最高补贴数,您只能作为参考不能当成您的报酬,只有通过您完成任务后获得的补贴才能算您的报酬。</view>
+		<view class="content">④您在参加任务补贴活动时一定按照自己需求购买产品,不能当成投资或投机行为购买产品,因此造成损失本站概不负责。</view>
+		<view class="content">⑤您不能听信任何人在推广活动时的口头承诺,一切以本协议为准。</view>
+		<view class="content">⑥任务补贴活动会根据总的推广量或分享量随时调整或取消。。</view>
+		<view class="content">⑦因政策不允许此种补贴活动时,本站立即取消本活动.</view>
+		<view class="title">八、附则</view>
+		<view class="content">
+			8.1 本协议的订立、执行和解释及争议的解决均应适用中华人民共和国法律。
+		</view>
+		<view class="content">
+			8.2 如本协议中的任何条款无论因何种原因完全或部分无效或不具有执行力,本协议的其余条款仍应有效并且有约束力。
+		</view>
+		<view class="content">
+			8.3 本协议解释权及修订权归多力公司所有。
+		</view>
+	</view>
+</template>
+
+<script></script>
+
+<style>
+	.box{
+		padding: 30rpx;
+	}
+.title {
+	font-size: 32rpx;
+	font-weight: 700;
+	line-height: 2;
+}
+.content {
+	font-size: 28rpx;
+	color: #666;
+	line-height: 2;
+}
+</style>

+ 248 - 0
pages/contract/privacy.vue

@@ -0,0 +1,248 @@
+<template>
+	<view class="box">
+		<view class="title">隐私政策</view>
+
+		<view class="title">提示条款</view>
+		<view class="content">
+			“云力商城”及其关联公司(以下简称“我们”)深知个人信息对您的重要性,并会尽力保护您的个人信息安全可靠,我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则,目的明确原则,选择同意原则,最少够用原则,确保安全原则,主体参与原则,公开透明原则等等。同时我们承诺,我们将按业界成熟的安全解决方案,采取相应的安全保护措施来保护您的个人信息。鉴此,我们制定本《隐私政策》(下称“本政策/本隐私政策”)并提醒您:
+		</view>
+		<view class="content">
+			本政策适用于“云力商城”产品或服务。如我们关联公司的产品或服务中使用了“云力商城”提供的产品或服务(例如直接使用“云力商城”账户登录)但未设独立隐私政策的,则本政策同样适用于该部分产品或服务。
+			需要特别说明的是,本政策不适用于其他第三方向您提供的服务,也不适用于“云力商城”中已另行独立设置隐私政策的产品或服务。
+		</view>
+		<view class="content">
+			在使用“云力商城”各项产品或服务前,请您务必仔细阅读并透彻理解本政策,在确认充分理解并同意后使用相关产品或服务。一旦您开始使用“云力商城”各项产品或服务,即表示您已充分理解并同意本政策。如对本政策内容有任何疑问、意见或建议,您可通过“云力商城”提供的各种联系方式与我们联系。
+		</view>
+		<view class="title">本隐私政策部分将帮助您了解以下内容:</view>
+		<view class="content">1、我们如何收集和使用您的个人信息</view>
+		<view class="content">2、我们如何使用 Cookie 和同类技术</view>
+		<view class="content">3、我们如何共享、转让、公开披露您的个人信息</view>
+		<view class="content">4、我们如何保护您的个人信息</view>
+		<view class="content">5、您如何管理您的个人信息</view>
+		<view class="content">6、我们如何处理未成年人的个人信息</view>
+		<view class="content">7、您的个人信息如何在全球范围转移</view>
+		<view class="content">8、本隐私政策如何更新</view>
+		<view class="content">9、如何联系我们</view>
+		<view class="title">一、我们如何收集和使用您的个人信息</view>
+		<view class="content">
+			个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息,我们会出于本政策所述的以下目的,收集和使用您的个人信息:
+		</view>
+		<view class="title">(一) 帮助您成为我们的用户</view>
+		<view class="content">为完成创建账号,以便我们为您提供服务,您需要提供以下信息:您的手机号码、头像、昵称、性别,并创建用户名和密码。</view>
+		<view class="title">(二)为您展示和推送商品或服务</view>
+		<view class="content">
+			为改善我们的产品或服务、向您提供个性化的信息搜索及交易服务,我们会根据您的浏览及搜索记录、设备信息、位置信息、交易信息,提取您的浏览、搜索偏好、行为习惯、位置信息等特征,基于特征标签进行间接人群画像并展示、推送信息。
+		</view>
+		<view class="content">如果您不想接受我们给您发送的商业广告,您可随时通过点击相应按钮取消。</view>
+		<view class="title">(三)向您提供商品或服务</view>
+		<view class="content">1、您向我们提供的信息</view>
+		<view class="content">
+			您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件、银行卡号或支付宝账号等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。向“云力商城”提供该其他方的前述个人信息之前,您需确保您已经取得其授权同意。您在使用我们的人脸识别分类服务时明确同意开启人物相册功能后向我们提供的本地相册信息。
+		</view>
+		<view class="content">2、我们在您使用服务过程中收集的信息</view>
+		<view class="content">为向您提供更契合您需求的页面展示和搜索结果、了解产品适配性、识别账号异常状态,我们会收集关于您使用</view>
+		<view class="content">的服务以及使用方式的信息并将这些信息进行关联,这些信息包括:</view>
+		<view class="content">
+			设备信息:我们会根据您在软件安装及使用中授予的具体权限,接收并记录您所使用的设备相关信息(例如设备型号、操作系统版本、设备设置、唯一设备标识符等软硬件特征信息)、设备所在位置相关信息(例如IP
+			地址、GPS位置以及能够提供相关信息的Wi-Fi
+			接入点、蓝牙和基站等传感器信息)。日志信息:当您使用我们的网站或客户端提供的产品或服务时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。例如您的搜索查询内容、IP地址、浏览器的类型、电信运营商、使用的语言、访问日期和时间及您访问的网页记录等。请注意,单独的设备信息、日志信息等是无法识别特定自然人身份的信息。如果我们将这类非个人信息与其他信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将被视为个人信息,除取得您授权或法律法规另有规定外,我们会将该类个人信息做匿名化、去标识化处理。当您与我们联系时,我们可能会保存您的通信/通话记录和内容或您留下的联系方式等信息,以便与您联系或帮助您解决问题,或记录相关问题的处理方案及结果。
+		</view>
+		<view class="content">3、我们通过间接获得方式收集到的您的个人信息</view>
+		<view class="content">
+			您可通过“云力商城”账号在我们提供的链接入口使用我们关联公司提供的产品或服务,为便于我们基于关联账号共同向您提供一站式服务并便于您统一进行管理,我们在“云力商城”集中展示您的信息或推荐您感兴趣的信息。当您通过我们产品或服务使用上述服务时,您授权我们根据实际业务及合作需要从我们关联公司处接收、汇总、分析我们确认其来源合法或您授权同意其向我们提供的您的个人信息或交易信息。如您拒绝提供上述信息或拒绝授权,可能无法使用我们关联公司的相应产品或服务,或者无法展示相关信息,但不影响使用“云力商城”的核心服务。
+		</view>
+		<view class="title">(四)为您提供安全保障</view>
+		<view class="content">
+			为提高您使用我们及我们关联公司、合作伙伴提供服务的安全性,保护您或其他用户或公众的人身财产安全免遭侵害,更好地预防钓鱼网站、欺诈、网络漏洞、计算机病毒、网络攻击、网络侵入等安全风险,更准确地识别违反法律法规或“云力商城”相关协议规则的情况,我们可能使用或整合您的用户信息、交易信息、设备信息、有关网络日志以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息,来综合判断您账户及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。
+		</view>
+		<view class="title">(五)其他用途</view>
+		<view class="content">我们将信息用于本政策未载明的其他用途,或者将基于特定目的收集而来的信息用于其他目的时,会事先征求您的同意。</view>
+		<view class="title">(六)征得授权同意的例外</view>
+		<view class="content">根据相关法律法规规定,以下情形中收集您的个人信息无需征得您的授权同意:</view>
+		<view class="content">1、与国家安全、国防安全有关的;</view>
+		<view class="content">2、与公共安全、公共卫生、重大公共利益有关的;</view>
+		<view class="content">3、与犯罪侦查、起诉、审判和判决执行等有关的;</view>
+		<view class="content">4、出于维护个人信息主体或其他个人的生命、财产等重大合法权益但又很难得到您本人同意的;</view>
+		<view class="content">5、所收集的个人信息是您自行向社会公众公开的;</view>
+		<view class="content">6、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道;</view>
+		<view class="content">7、根据您的要求签订合同所必需的;</view>
+		<view class="content">8、用于维护所提供的产品或服务的安全稳定运行所必需的,例如发现、处置产品或服务的故障;</view>
+		<view class="content">9、为合法的新闻报道所必需的;</view>
+		<view class="content">10、学术研究机构基于公共利益开展统计或学术研究所必要,且对外提供学术研究或描述的结果时,对结果中所</view>
+		<view class="content">包含的个人信息进行去标识化处理的;</view>
+		<view class="content">11、法律法规规定的其他情形。</view>
+		<view class="content">如我们停止运营“云力商城”产品或服务,我们将及时停止继续收集您个人信息的活动,将停止运营的通知以逐</view>
+		<view class="content">一送达或公告的形式通知您,对所持有的个人信息进行删除或匿名化处理。</view>
+		<view class="title">二、我们如何使用 Cookie 和同类技术</view>
+		<view class="title">(一)Cookie</view>
+		<view class="content">
+			为确保网站正常运转、为您获得更轻松的访问体验、向您推荐您可能感兴趣的内容,我们会在您的计算机或移动设备上存储名为 Cookie 的小数据文件。Cookie
+			通常包含标识符、站点名称以及一些号码和字符。借助于Cookie,网站能够存储您的偏好等数据。
+		</view>
+		<view class="title">(二)网站信标和像素标签</view>
+		<view class="content">
+			除 Cookie
+			外,我们还会在网站上使用网站信标和像素标签等其他同类技术。例如,我们向您发送的电子邮件可能含有链接至我们网站内容的地址链接,如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或
+			服务偏好以便于我们主动改善客户服务体验。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。如果您不希望自己的活动以这种方式被追踪,则可以随时从我们的寄信名单中退订。
+		</view>
+		<view class="title">三、我们如何共享、转让、公开披露您的个人信息</view>
+		<view class="title">(一)共享</view>
+		<view class="content">我们不会与“云力商城”服务提供者以外的公司、组织和个人共享您的个人信息,但以下情况除外:</view>
+		<view class="content">1、在获取明确同意的情况下共享:获得您的明确同意后,我们会与其他方共享您的个人信息。</view>
+		<view class="content">2、在法定情形下的共享:我们可能会根据法律法规规定、诉讼争议解决需要,或按行政、司法机关依法提出的要求,对外共享您的个人信息。</view>
+		<view class="content">
+			3、与关联公司间共享:为便于我们基于关联账号共同向您提供服务,推荐您可能感兴趣的信息或保护“云力商城”关联公司或其他用户或公众的人身财产安全免遭侵害,您的个人信息可能会与我们的关联公司共享。我们只会共享必要的个人信息(如为便于您使用“云力商城”账号使用我们关联公司产品或服务,我们会向关联公司共享您必要的账户信息),如果我们共享您的个人敏感信息或关联公司改变个人信息的使用及处理目的,将再次征求您的授权同意。
+		</view>
+		<view class="content">
+			4、与授权合作伙伴共享:仅为实现本隐私政策中声明的目的,我们的某些服务将由我们和授权合作伙伴共同提供。我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。例如安排合作伙伴提供服务。我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于与产品或服务无关的其他用途。
+			目前,我们的授权合作伙伴包括以下类型:
+		</view>
+		<view class="content">
+			(1)广告、分析服务类的授权合作伙伴。除非得到您的许可,否则我们不会将您的个人身份信息(指可以识别您身份的信息,例如姓名或电子邮箱,通过这些信息可以联系到您或识别您的身份)与提供广告、分析服务的合作伙伴共享。我们会向这些合作伙伴提供有关其广告覆盖面和有效性的信息,而不会提供您的个人身份信息,或者我们将这些信息进行汇总,以便它不会识别您个人。例如,只有在广告主同意遵守我们的广告发布准则后,我们才可能会告诉广告主他们广告的效果如何,或者有多少人看了他们广告或在看到广告后安装了应用,或者向这些合作伙伴提供不能识别个人身份的统计信息(例如“男性,25-29岁,位于北京”),帮助他们了解其受众或顾客。
+		</view>
+		<view class="content">
+			(2)供应商、服务提供商和其他合作伙伴。我们将信息发送给支持我们业务的供应商、服务提供商和其他合作伙伴,这些支持包括提供技术基础设施服务、分析我们服务的使用方式、衡量广告和服务的有效性、提供客户服务、支付便利或进行学术研究和调查。
+			对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的数据保护协定,要求他们按照我们的说明、本隐私政策以及其他任何相关的保密和安全措施来处理个人信息。
+		</view>
+		<view class="title">(二)转让</view>
+		<view class="content">我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:</view>
+		<view class="content">1、在获取明确同意的情况下转让:获得您的明确同意后,我们会向其他方转让您的个人信息;</view>
+		<view class="content">
+			2、在涉及合并、收购或破产清算情形,或其他涉及合并、收购或破产清算情形时,如涉及到个人信息转让,我们会要求新的持有您个人信息的公司、组织继续受本政策的约束,否则我们将要求该公司、组织和个人重新向您征求授权同意。
+		</view>
+		<view class="title">(三)公开披露</view>
+		<view class="content">我们仅会在以下情况下,公开披露您的个人信息:</view>
+		<view class="content">1、获得您明确同意或基于您的主动选择,我们可能会公开披露您的个人信息;</view>
+		<view class="content">
+			2、如果我们确定您出现违反法律法规或严重违反“云力商城”相关协议规则的情况,或为保护“云力商城”及其关联公司用户或公众的人身财产安全免遭侵害,我们可能依据法律法规或“云力商城”相关协议规则征得您同意的情况下披露关于您的个人信息,包括相关违规行为以及“云力商城”已对您采取的措施。
+		</view>
+		<view class="title">(四)共享、转让、公开披露个人信息时事先征得授权同意的例外</view>
+		<view class="content">以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:</view>
+		<view class="content">1、与国家安全、国防安全有关的;</view>
+		<view class="content">2、与公共安全、公共卫生、重大公共利益有关的;</view>
+		<view class="content">3、与犯罪侦查、起诉、审判和判决执行等有关的;</view>
+		<view class="content">4、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;</view>
+		<view class="content">5、您自行向社会公众公开的个人信息;</view>
+		<view class="content">6、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。</view>
+		<view class="content">
+			根据法律规定,共享、转让经去标识化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。
+		</view>
+		<view class="title">四、我们如何保护您的个人信息安全</view>
+		<view class="content">
+			(一)我们已采取符合业界通用解决方案、合理可行的安全防护措施保护您提供的个人信息安全,防止个人信息遭到未经授权访问、公开披露、使用、修改、损坏或丢失。例如,在您的浏览器与服务器之间交换数据(如信用卡信息)时受
+			SSL(Secure Socket
+			Layer)协议加密保护;我们会使用加密技术提高个人信息的安全性;我们会使用受信赖的保护机制防止个人信息遭到恶意攻击;我们会部署访问控制机制,尽力确保只有授权人员才可访问个人信息;以及我们会举办安全和隐私保护培训课程,加强员工对于保护个人信息重要性的认识。
+		</view>
+		<view class="content">
+			(二)我们有行业先进的以数据为核心,围绕数据生命周期进行的数据安全管理体系,从组织建设、制度设计、人员管理、产品技术等方面多维度提升整个系统的安全性。
+		</view>
+		<view class="content">
+			(三)我们会采取合理可行的措施,尽力避免收集无关的个人信息。我们只会在达成本政策所述目的所需的期限内保留您的个人信息,除非需要延长保留期或受到法律的允许。
+		</view>
+		<view class="content">
+			(四)互联网并非绝对安全的环境,我们强烈建议您不要使用非“云力商城”推荐的通信方式发送个人信息。您可以通过我们的服务建立联系和相互分享。当您通过我们的服务创建交流、交易或分享时,您可以自主选择沟通、交易或分享的对象,作为能够看到您的交易内容、联络方式、交流信息或分享内容等相关信息的第三方。
+			如您发现自己的个人信息尤其是您的账户或密码发生泄露,请您立即联络“云力商城”用户服务的相关人员,以便我们根据您的申请采取相应措施。
+			请注意,您在使用我们服务时自愿共享甚至公开分享的信息,可能会涉及您或他人的个人信息甚至个人敏感信息,如您选择上传包含个人信息的图片。请您更加谨慎地考虑,是否在使用我们的服务时共享甚至公开分享相关信息。
+			请使用复杂密码,协助我们保证您的账号安全。我们将尽力保障您发送给我们的任何信息的安全性。 同时,我们还将按照监管部门要求,上报个人信息安全事件的处置情况。
+		</view>
+		<view class="title">五、您如何管理您的个人信息</view>
+		<view class="content">您可以通过以下方式访问及管理您的个人信息:</view>
+		<view class="content">(一)访问您的个人信息</view>
+		<view class="content">
+			您有权访问您的个人信息,法律法规规定的例外情况除外。您可以通过以下方式自行访问您的个人信息:
+			个人资料—如果您希望访问或编辑您个人资料中的昵称、头像、签名、性别等,您可以通过登录账户通过-“编辑”执行此类操作。
+			如果您无法通过上述路径访问该等个人信息,您可以加入QQ群““云力商城”用户反馈群‘与我们取得联系。
+		</view>
+		<view class="content">(二)更正或补充您的个人信息</view>
+		<view class="content">
+			当您发现我们处理的关于您的个人信息有错误时,您有权要求我们做出更正或补充。您可以通过本条“(一)访问您的个人信息”中列明的方式提出更正或补充申请。
+		</view>
+		<view class="content">(三)删除您的个人信息</view>
+		<view class="content">您可以通过本条“(一)访问您的个人信息”中列明的方式删除您的部分个人信息。</view>
+		<view class="content">在以下情形中,您可以向我们提出删除个人信息的请求:</view>
+		<view class="content">1、如果我们处理个人信息的行为违反法律法规;</view>
+		<view class="content">2、如果我们收集、使用您的个人信息,却未征得您的明确同意;</view>
+		<view class="content">3、如果我们处理个人信息的行为严重违反了与您的约定;</view>
+		<view class="content">4、如果您不再使用我们的产品或服务;</view>
+		<view class="content">5、如果我们永久不再为您提供产品或服务。</view>
+		<view class="content">
+			若我们决定响应您的删除请求,我们还将同时尽可能通知从我们处获得您的个人信息的主体,要求其及时删除,除非法律法规另有规定,或这些主体获得您的独立授权。
+			当您从我们的服务中删除信息后,我们可能不会立即从备份系统中删除相应的信息,但会在备份更新时删除这些信息。
+		</view>
+		<view class="content">(四)改变您授权同意的范围</view>
+		<view class="content">
+			每个业务功能需要一些基本的个人信息才能得以完成(见本隐私政策“第一条”)。除此之外,对于额外个人信息的收集和使用,您可以在设置或与“云力商城”客服联系给予或收回您的授权同意。
+			当您收回同意后,我们将不再处理相应的个人信息。但您收回同意的决定,不会影响此前基于您的授权而开展的个人信息处理。
+		</view>
+		<view class="content">(五)约束信息系统自动决策</view>
+		<view class="content">
+			在某些业务功能中,我们可能仅依据信息系统、算法等在内的非人工自动决策机制做出决定。如果这些决定显著影响您的合法权益,您有权要求我们做出解释,我们也将在不侵害“云力商城”商业秘密或其他用户权益、社会公共利益的前提下提供申诉方法。
+		</view>
+		<view class="content">(六)响应您的上述请求</view>
+		<view class="content">
+			为保障安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。
+			我们将在30天内做出答复。如您不满意,还可以通过“云力商城”客服发起投诉。
+			对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际的请求,我们可能会予以拒绝。
+			在以下情形中,按照法律法规要求,我们将无法响应您的请求:
+		</view>
+		<view class="content">1、与国家安全、国防安全有关的;</view>
+		<view class="content">2、与公共安全、公共卫生、重大公共利益有关的;</view>
+		<view class="content">3、与犯罪侦查、起诉、审判和执行判决等有关的;</view>
+		<view class="content">4、有充分证据表明个人信息主体存在主观恶意或滥用权利的;</view>
+		<view class="content">5、响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;</view>
+		<view class="content">6、涉及商业秘密的。</view>
+		<view class="title">六、我们如何处理未成年人的个人信息</view>
+		<view class="content">
+			如果没有父母或监护人的同意,未成年人不得创建自己的用户账户。如您为未成年人的,建议您请您的父母或监护人仔细阅读本隐私政策,并在征得您的父母或监护人同意的前提下使用我们的服务或向我们提供信息。
+			对于经父母或监护人同意使用我们的产品或服务而收集未成年人个人信息的情况,我们只会在法律法规允许、父母或监护人明确同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。
+		</view>
+		<view class="title">七、您的个人信息如何在全球范围转移</view>
+		<view class="content">我们在中华人民共和国境内运营中收集和产生的个人信息,存储在中国境内,以下情形除外:</view>
+		<view class="content">1、法律法规有明确规定;</view>
+		<view class="content">2、获得您的明确授权;</view>
+		<view class="content">3、您通过互联网进行跨境直播/发布动态等个人主动行为。</view>
+		<view class="content">针对以上情形,我们会确保依据本隐私政策对您的个人信息提供足够的保护。</view>
+		<view class="title">八、本隐私政策如何更新</view>
+		<view class="content">我们的隐私政策可能变更。</view>
+		<view class="content">
+			未经您明确同意,我们不会限制您按照本隐私政策所应享有的权利。对于重大变更,我们会提供显著的通知(包括我们会通过“云力商城”公示的方式进行通知甚至向您提供弹窗提示)。
+			本政策所指的重大变更包括但不限于:
+		</view>
+		<view class="content">1、我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;</view>
+		<view class="content">2、我们在控制权等方面发生重大变化。如并购重组等引起的所有者变更等;</view>
+		<view class="content">3、个人信息共享、转让或公开披露的主要对象发生变化;</view>
+		<view class="content">4、您参与个人信息处理方面的权利及其行使方式发生重大变化;</view>
+		<view class="content">5、我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生变化时;</view>
+		<view class="content">6、个人信息安全影响评估报告表明存在高风险时。</view>
+		<view class="content pb30">我们还会将本隐私政策的旧版本存档,供您查阅。</view>
+		<view class="title">开发者:浙江多力网络科技有限公司</view>
+		<view class="title">应用名:云力商城</view>
+		<view class="title">公司名称:浙江多力网络科技有限公司</view>
+		<view class="title">注册地址:浙江省台州市温岭市箬横镇横滨大道西侧</view>
+		<view class="title">办公地址:浙江省台州市温岭市箬横镇横滨大道西侧</view>
+		<view class="title">负责人电话:15057279972</view>
+	</view>
+</template>
+
+<script>
+export default {};
+</script>
+
+<style>
+.box {
+	padding: 30rpx;
+}
+.title {
+	font-size: 32rpx;
+	font-weight: 700;
+	line-height: 2;
+}
+.content {
+	font-size: 28rpx;
+	color: #666;
+	line-height: 2;
+}
+.pb10 {
+	font-size: 28rpx;
+}
+</style>

+ 138 - 0
pages/contract/start.vue

@@ -0,0 +1,138 @@
+<template>
+	<view class="start">
+		<view class="background"></view>
+		<view class="popup">
+			<view class="title">温馨提示</view>
+			<scroll-view :scroll-y="true" class="content">
+				<text>欢迎使用和合商城APP。我们非常重视您的用户权益和个人信息的保护,在您使用和合商城APP服务前,请认真阅读</text>
+				<text class="money" @click="goUser">《用户协议》</text>
+				<text>和</text>
+				<text class="money" @click="goYs">《隐私政策》</text>
+				<text>
+					全部条款。我们将通过上述协议向您说明我们如何为您提供服务并保障您的用户权益,
+					如何收集、使用、保存、共享和保护您的相关信息,以及我们为您提供的访问、更正、删除和申诉您信息相关问题的方式。
+					我们会严格按照您的授权,在上述协议约定的范围内收集、存储和使用您的注册信息、设备信息、位置信息、日志信息或其他经您授权的信息。
+					您点击“同意并继续”视为您已同意上述协议的全部内容
+				</text>
+			</scroll-view>
+			<view class="button flex">
+				<text class="disagree" @click="disagree">不同意</text>
+				<text class="agree" @click="agree">同意并继续</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {};
+	},
+	onLoad() {
+		let agree = uni.getStorageSync('agree');
+		if (agree) {
+			// this.agree()
+			console.log(uni.getStorageSync('agree'),'2222232');
+			uni.redirectTo({ url: '/pages/index/index' });
+		}
+	},
+	methods: {
+		//前往用户协议
+		goUser() {
+			uni.navigateTo({ url: './agreement' });
+		},
+		goYs() {
+			uni.navigateTo({ url: './privacy' });
+		},
+		//不同意
+		disagree() {
+			plus.runtime.quit();
+		},
+		//同意
+		agree() {
+			uni.setStorageSync('agree', true);
+			uni.switchTab({
+				url: '/pages/index/index',
+				success(e) {
+					console.log(e);
+				},
+				fail(e) {
+					console.log(e);
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.money {
+	color: $base-color;
+}
+.disagree {
+	padding: 10rpx 30rpx;
+	font-size: 28rpx;
+	width: 200rpx;
+	height: 64rpx;
+	color: $base-color;
+	border-radius: 999rpx;
+	border: 2rpx solid $base-color;
+}
+.agree {
+	padding: 10rpx 30rpx;
+	width: 210rpx;
+	height: 64rpx;
+	font-size: 28rpx;
+	color: #fff;
+	background-color: $base-color;
+	border-radius: 999rpx;
+	border: 2rpx solid $base-color;
+}
+.button {
+	position: absolute;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	z-index: 0;
+	display: flex;
+	padding: 24rpx;
+	justify-content: center;
+	text-align: center;
+	justify-content: space-around;
+}
+.content {
+	position: absolute;
+	left: 0;
+	right: 0;
+	top: 100rpx;
+	bottom: 120rpx;
+	z-index: 0;
+	font-size: 28rpx;
+	padding: 0 50rpx;
+	line-height: 44rpx;
+}
+.title {
+	font-size: 36rpx;
+	padding: 20rpx 50rpx;
+}
+.background {
+	position: fixed;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	z-index: 0;
+	background-color: rgba(0, 0, 0, 0.4);
+}
+.popup {
+	position: absolute;
+	z-index: 0;
+	left: 50%;
+	top: 50%;
+	transform: translate(-50%, -50%);
+	width: 600rpx;
+	height: 700rpx;
+	background-color: #fff;
+	border-radius: 30rpx;
+}
+</style>

+ 25 - 22
pages/index/index.vue

@@ -34,24 +34,24 @@
 					<text>报单商品</text>
 				</view>
 			</navigator>
-			<!-- <navigator url="/pages/product/groupBooking/index">
+			<navigator url="/pages/product/list?fid=5&sid=5&tid=6&isFu=1">
 				<view class="cate-item">
 					<image src="/static/icon/c5.png"></image>
-					<text>超值拼团</text>
+					<text>复购专区</text>
 				</view>
 			</navigator>
-			<navigator url="/pages/product/seckill">
+			<!-- <navigator url="/pages/product/seckill">
 				<view class="cate-item">
 					<image src="/static/icon/c7.png"></image>
 					<text>限时秒杀</text>
 				</view>
 			</navigator> -->
-			<navigator url="/pages/user/shareQrCode">
+			<view @click="navTo('/pages/user/shareQrCode')">
 				<view class="cate-item">
 					<image src="/static/icon/c8.png"></image>
 					<text>邀请好友</text>
 				</view>
-			</navigator>
+			</view>
 		</view>
 		<!-- 精品 商品 -->
 		<view class="f-header m-t">
@@ -69,9 +69,9 @@
 						<text class="font-size-sm ">¥</text>
 						{{ item.price }}
 					</view>
-					<view class="font-size-sm">
+					<!-- <view class="font-size-sm">
 						<text class="font-color-gray">{{ item.sales }}人购买</text>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -91,9 +91,9 @@
 						<text class="font-size-sm ">¥</text>
 						{{ item.price }}
 					</view>
-					<view class="font-size-sm">
+					<!-- <view class="font-size-sm">
 						<text class="font-color-gray">{{ item.sales }}人购买</text>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -113,9 +113,9 @@
 						<text class="font-size-sm ">¥</text>
 						{{ item.price }}
 					</view>
-					<view class="font-size-sm">
+					<!-- <view class="font-size-sm">
 						<text class="font-color-gray">{{ item.sales }}人购买</text>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -125,7 +125,7 @@
 <script>
 import { loadIndexs } from '@/api/index.js';
 import { getUserInfo } from '@/api/user.js';
-import { interceptor } from '@/utils/loginUtils';
+import { saveUrl, interceptor } from '@/utils/loginUtils.js';
 import { mapState } from 'vuex';
 
 export default {
@@ -145,7 +145,7 @@ export default {
 				let bHeight = Math.ceil(obj.bastBanner.length / 2);
 				obj.swiperHeight = Math.ceil(obj.pageProportion * 520 * bHeight);
 			}
-		},
+		}
 		// 初次加载页面高度时修改页面高度
 		// bastList(newValue, oldValue) {
 		// 	let obj = this;
@@ -268,15 +268,6 @@ export default {
 	},
 	// #endif
 	methods: {
-		//砍价商品推荐详情页
-		navToDetailPages(item) {
-			let id = item.product_id;
-			//let type = 2;
-
-			uni.navigateTo({
-				url: '/pages/product/product?id=' + id
-			});
-		},
 		openSubscribe: function(e) {
 			let page = e;
 			// #ifndef MP
@@ -300,6 +291,18 @@ export default {
 				});
 			// #endif
 		},
+		navTo(url) {
+			if (!this.hasLogin) {
+				// 保存地址
+				saveUrl();
+				// 登录拦截
+				interceptor();
+			} else {
+				uni.navigateTo({
+					url
+				});
+			}
+		},
 		// 监听切换事件
 		listChange(e) {
 			this.checkid = e.detail.current;

+ 15 - 13
pages/money/pay.vue

@@ -5,7 +5,7 @@
 			<text class="price">{{ money }}</text>
 		</view>
 		<view class="pay-type-list">
-			<view class="type-item b-b" @click="changePayType(1)">
+			<view class="type-item b-b" v-if="ispg == 'android'" @click="changePayType(1)">
 				<text class="icon iconfont iconweixin"></text>
 				<view class="con">
 					<text class="tit">微信支付</text>
@@ -13,13 +13,11 @@
 				</view>
 				<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 1"></radio></label>
 			</view>
-			<!-- #ifdef APP-PLUS -->
-			<!-- <view class="type-item b-b" @click="changePayType(2)">
+			<view class="type-item b-b" @click="changePayType(2)">
 				<text class="icon iconfont iconzhifubao"></text>
 				<view class="con"><text class="tit">支付宝支付</text></view>
 				<label class="radio"><radio value="" color="#5dbc7c" :checked="payType == 2"></radio></label>
-			</view> -->
-			<!-- #endif -->
+			</view>
 			<view class="type-item" @click="changePayType(3)">
 				<text class="icon iconfont iconyue"></text>
 				<view class="con">
@@ -35,8 +33,9 @@
 
 <script>
 import { balance } from '@/api/wallet.js';
-import { createOrderkey,computedOrderkey,orderPay } from '@/api/order.js';
+import { createOrderkey, computedOrderkey, orderPay } from '@/api/order.js';
 import { mapState } from 'vuex';
+import { isIOS } from '@/utils/platform.js';
 export default {
 	data() {
 		return {
@@ -52,7 +51,8 @@ export default {
 			// #ifdef H5
 			froms: '', //保存h5中数据来源对象
 			// #endif
-			pinkid: '' //保存拼团商品id
+			pinkid: '', //保存拼团商品id
+			ispg: '' //是否是苹果
 		};
 	},
 	computed: {
@@ -61,6 +61,8 @@ export default {
 		// #endif
 	},
 	onLoad(options) {
+		this.ispg = uni.getSystemInfoSync().platform;
+		console.log(this.ispg);
 		if (options.type == 1) {
 			this.type = 1;
 			this.orderId = options.ordid;
@@ -151,12 +153,12 @@ export default {
 							}
 						};
 						// #ifdef H5
-						if(obj.payName == 'weixin'){
-						obj.weichatObj.chooseWXPay(data);
+						if (obj.payName == 'weixin') {
+							obj.weichatObj.chooseWXPay(data);
 						}
 						// #endif
 						// #ifdef MP-WEIXIN
-						if(obj.payName == 'routine'){
+						if (obj.payName == 'routine') {
 							wx.requestPayment(data);
 						}
 						// #endif
@@ -237,7 +239,7 @@ export default {
 			uni.showLoading({
 				title: '支付中',
 				mask: true
-			})
+			});
 			// 判断是否余额不足
 			if (obj.payName == 'yue' && +obj.now_money < obj.money) {
 				uni.showModal({
@@ -313,7 +315,7 @@ export default {
 					obj.orderId = data.result.orderId;
 					// 判断是否为余额支付
 					if (obj.payName == 'yue') {
-						if (status == 200 ) {
+						if (status == 200) {
 							obj.paySuccessTo();
 						} else {
 							obj.$api.msg(msg);
@@ -326,7 +328,7 @@ export default {
 				.catch(e => {
 					uni.hideLoading();
 					obj.payLoding = false;
-					console.log(e,"123456789");
+					console.log(e, '123456789');
 				});
 		}
 	}

+ 5 - 5
pages/money/recharge.vue

@@ -36,7 +36,7 @@
 		</view> -->
 		<view class="line_box"></view>
 		<view class="box">
-			<view class="type-item b-b" @click="changePayType(1)">
+			<view class="type-item b-b" @click="changePayType(1)" v-if="ispg == 'android'">
 				<text class="icon iconfont iconweixin"></text>
 				<view class="con">
 					<text class="tit">微信支付</text>
@@ -44,13 +44,11 @@
 				</view>
 				<label class="radio"><radio value="" color="#5dbc7c" :checked="type == 'weixin'"></radio></label>
 			</view>
-			<!-- #ifdef APP-PLUS -->
-			<!-- <view class="type-item b-b" @click="changePayType(2)">
+			<view class="type-item b-b" @click="changePayType(2)">
 				<text class="icon iconfont iconzhifubao"></text>
 				<view class="con"><text class="tit">支付宝支付</text></view>
 				<label class="radio"><radio value="" color="#5dbc7c" :checked="type == 'ali'"></radio></label>
-			</view> -->
-			<!-- #endif -->
+			</view>
 		</view>
 		<button class="add-btn up" :class="{ 'active-bg': payLoding }" @click="!payLoding ? confirm() : ''">立即充值</button>
 	</view>
@@ -94,9 +92,11 @@ export default {
 			zhuyi: [],
 			quota: '',	// 送的钱
 			typeText: 0,	// 0-微信 1-佣金
+			ispg:'',
 		};
 	},
 	onLoad(options) {
+		this.ispg = uni.getSystemInfoSync().platform;
 		this.loadData();
 	},
 	computed: {

+ 19 - 11
pages/order/createOrder.vue

@@ -93,10 +93,10 @@
 				<text class="cell-tit clamp">优惠金额</text>
 				<text class="cell-tip red">-¥35</text>
 			</view> -->
-			<!-- <view class="yt-list-cell b-b">
+			<view class="yt-list-cell b-b" v-if="isPao == 0 && isFu == 0">
 				<text class="cell-tit clamp">积分抵扣{{ '(当前积分:' + integralAll + ')' }}</text>
 				<view class="cell-tip"><radio @click="checkedPoints = !checkedPoints" color=" #5dbc7c" :checked="checkedPoints" /></view>
-			</view> -->
+			</view>
 			<view class="yt-list-cell b-b">
 				<text class="cell-tit clamp">运费</text>
 				<text class="cell-tip">{{ Postage }}</text>
@@ -160,7 +160,7 @@
 </template>
 
 <script>
-import { confirm,computedOrderkey,couponsOrder } from '@/api/order.js';
+import { confirm, computedOrderkey, couponsOrder } from '@/api/order.js';
 import { getUserInfo } from '@/api/user.js';
 import { cartAdd } from '@/api/product.js';
 export default {
@@ -182,7 +182,7 @@ export default {
 			],
 			maskState: 0, //优惠券面板显示状态
 			desc: '', //备注
-			gainPoint:'',//送积分
+			gainPoint: '', //送积分
 			payType: 1, //1微信 2支付宝
 			// 优惠券列表
 			couponList: [],
@@ -217,10 +217,18 @@ export default {
 			integralMoney: 0, //积分抵扣金额
 			integralShow: false, //是否显示积分抵扣金额
 			payType: true, //是否可支付
-			pinkid: '' //保存拼团商品id
+			pinkid: '', //保存拼团商品id
+			isPao: 0,
+			isFu: 0
 		};
 	},
 	onLoad(option) {
+		if (option.isPao) {
+			this.isPao = option.isPao;
+		}
+		if (option.isFu) {
+			this.isFu = option.isFu;
+		}
 		// 判断是否为拼团商品
 		if (option.type == 'pink') {
 			this.pinkid = option.pinkId;
@@ -288,13 +296,13 @@ export default {
 				addressId: this.addressData.id //地址编号
 			})
 				.then(({ data }) => {
-					console.log(data,'111');
+					console.log(data, '111');
 					this.payType = true;
 					this.integralShow = true;
 					// 获取支付金额
 					this.payPrice = +data.result.pay_price;
 					this.integralMoney = data.result.deduction_price;
-					this.gainPoint = data.result.gainPoint
+					this.gainPoint = data.result.gainPoint;
 				})
 				.catch(e => {
 					console.log(e);
@@ -335,7 +343,7 @@ export default {
 		},
 		loadData() {
 			let obj = this;
-			confirm({ cartId: obj.cartId+'' }).then(({ data }) => {
+			confirm({ cartId: obj.cartId + '' }).then(({ data }) => {
 				obj.addressData = data.addressInfo || {};
 				obj.shopList = data.cartInfo; //商品列表
 				obj.moneyAll = data.priceGroup; //金额数据
@@ -364,9 +372,9 @@ export default {
 				this.$api.msg('请选择收货地址');
 				return false;
 			}
-			let url =  '/pages/money/pay?key='+ this.orderKey
-			if(this.pinkid){
-				url += '&pinkid='+this.pinkid
+			let url = '/pages/money/pay?key=' + this.orderKey;
+			if (this.pinkid) {
+				url += '&pinkid=' + this.pinkid;
 			}
 			uni.navigateTo({
 				url

+ 3 - 3
pages/product/classify.vue

@@ -35,7 +35,7 @@
 							</view>
 							<view class="otMoney-box">
 								<text class="otMoney">¥{{ ls.ot_price }}</text>
-								<text class="sales">已售{{ ls.sales }}件</text>
+								<!-- <text class="sales">已售{{ ls.sales }}件</text> -->
 							</view>
 						</view>
 						<view @click="navTo(ls)" class="cart iconfont iconcart"></view>
@@ -64,7 +64,7 @@ export default {
 	methods: {
 		navTo: function(ls) {
 			uni.navigateTo({
-				url: '/pages/product/product?id=' + ls.id
+				url: '/pages/product/product?id=' + ls.id + '&isPao=1'
 			});
 		},
 		// 请求载入数据
@@ -172,7 +172,7 @@ page {
 				position: absolute;
 				left: 0;
 				bottom: 0;
-				width:100%;
+				width: 100%;
 				.money-box {
 					.money {
 						font-size: $font-lg;

+ 17 - 11
pages/product/list.vue

@@ -24,7 +24,7 @@
 				<text class="title clamp">{{ item.title }}</text>
 				<view class="price-box">
 					<text class="price">{{ item.price }}</text>
-					<text>已售 {{ item.sales }}</text>
+					<!-- <text>已售 {{ item.sales }}</text> -->
 				</view>
 			</view>
 		</view>
@@ -55,6 +55,7 @@ export default {
 	},
 	data() {
 		return {
+			isFu: 0,
 			cateMaskState: 0, //分类面板展开状态
 			headerPosition: 'fixed',
 			headerTop: '0px',
@@ -71,9 +72,13 @@ export default {
 	},
 
 	onLoad(options) {
+		if (options.isFu) {
+			this.isFu = options.isFu;
+		}
 		// #ifdef H5
 		this.headerTop = document.getElementsByTagName('uni-page-head')[0].offsetHeight + 'px';
 		// #endif
+		console.log(this.headerPosition, this.headerTop);
 		this.cateId = options.tid;
 		this.loadCateList(options.fid, options.sid);
 		this.loadData();
@@ -129,25 +134,25 @@ export default {
 			if (type === 'refresh') {
 				// 清空数组
 				obj.goodsList = [];
-				obj.page = 1
+				obj.page = 1;
 			}
 			if (this.filterIndex == 1) {
-				console.log( obj.salesOrder);
+				console.log(obj.salesOrder);
 				data.salesOrder = obj.numberOrder == 1 ? 'asc' : 'desc';
 			}
 			if (this.filterIndex == 2) {
-				console.log( obj.priceOrder);
+				console.log(obj.priceOrder);
 				data.priceOrder = obj.priceOrder == 1 ? 'asc' : 'desc';
 			}
 			getProducts(data).then(function(e) {
 				console.log(e.data);
 				obj.goodsList = obj.goodsList.concat(e.data);
 				//判断是否还有下一页,有是more  没有是nomore
-				if (obj.limit==e.data.length) {
-					obj.page++
-					obj.loadingType='more'
-				} else{
-					obj.loadingType='nomore'
+				if (obj.limit == e.data.length) {
+					obj.page++;
+					obj.loadingType = 'more';
+				} else {
+					obj.loadingType = 'nomore';
 				}
 				if (type === 'refresh') {
 					if (loading == 1) {
@@ -205,7 +210,7 @@ export default {
 				scrollTop: 0
 			});
 			// 初始化查询页数
-			this.page = 1
+			this.page = 1;
 			// 重新加载数据
 			this.loadData('refresh', 1);
 			uni.showLoading({
@@ -215,8 +220,9 @@ export default {
 		//详情
 		navToDetailPage(item) {
 			let id = item.id;
+			let type = this.isFu;
 			uni.navigateTo({
-				url: `/pages/product/product?id=${id}`
+				url: `/pages/product/product?id=${id}&isFu=${type}`
 			});
 		},
 		stopPrevent() {}

+ 11 - 3
pages/product/product.vue

@@ -13,7 +13,7 @@
 		<!-- 规格信息 -->
 		<fresh-detail :goodsObjact="goodsObjact"></fresh-detail>
 
-		<view class="c-list">
+		<view class="c-list" v-if="goodsObjact.give_point != 0">
 			<view class="c-row b-b">
 				<text class="tit">赠送</text>
 				<view class="con">
@@ -63,7 +63,7 @@
 						</text>
 					</view>
 				</view>
-				<view class="attr-list">
+				<view class="attr-list" v-if="isPao != 1">
 					<text>购买数量</text>
 					<view class="item-list">
 						<uni-number-box class="step" :isMin="true" :value="goodsNumber" :min="1" :max="goodsNumberMax" @eventChange="numberChange"></uni-number-box>
@@ -115,6 +115,8 @@ export default {
 	},
 	data() {
 		return {
+			isPao: 0, //是否是报单商品
+			isFu: 0, //是否是复购商品
 			goodsStore: 0, //选中库存
 			specList: [],
 			buys_show: true,
@@ -188,6 +190,12 @@ export default {
 			// 存储邀请人
 			uni.setStorageSync('spread', options.spread);
 		}
+		if (options.isPao) {
+			this.isPao = options.isPao;
+		}
+		if (options.isFu) {
+			this.isFu = options.isFu;
+		}
 		saveUrl();
 		this.goodsDetail();
 		// 注册邀请信息
@@ -386,7 +394,7 @@ export default {
 					if (obj.type == 1) {
 						// 跳转到支付页
 						uni.navigateTo({
-							url: '/pages/order/createOrder?id=' + da.cartId
+							url: '/pages/order/createOrder?id=' + da.cartId + '&isPao=' + obj.isPao + '&isFu=' + obj.isFu
 						});
 					}
 					if (obj.type == 2) {

+ 112 - 95
pages/public/forget.vue

@@ -1,35 +1,41 @@
 <template>
 	<view class="container">
-		<view class="container_text">
-			<image class="banner-img" src="/static/img/img01.png" mode=" scaleToFill"></image>
-		</view>
-		<view class="loginTitle"><text>手机号登录</text></view>
+		<view class="logo-img"><image src="../../static/img/log.png" mode=""></image></view>
+		<view class="logo">云力商城</view>
 		<view class="login_text">
-			<view class="login_input flex">
-				<view class="login_img"><image src="/static/icon/img03.png"></image></view>
-				<view class="login_name"><input class="uni-input" v-model="phone" focus placeholder="请输入手机号" /></view>
+			<view class="login_input flex_item">
+				<view class="login_img"><image class="phone" src="/static/img/phone.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="text" v-model="phone" focus placeholder="请输入手机" /></view>
+			</view>
+			<view class="login_input flex_item">
+				<view class="login_img"><image src="/static/img/zfpwd.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder=" 请输入新的不少于6位的密码" /></view>
+			</view>
+			<view class="login_input flex_item">
+				<view class="login_img"><image src="/static/img/zfpwd.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="password" v-model="password2" focus placeholder="请重复输入新密码" /></view>
 			</view>
 			<view class="login_input flex">
-				<view class="login_img"><image src="/static/icon/img06.png"></image></view>
+				<view class="login_img"><image class="codeimg" src="/static/img/yan.png"></image></view>
 				<view class="login_name flex">
-					<input class="uni-input width" v-model="code" focus placeholder="请输入验证码" />
-					<view class="code" @click="verification">{{ countDown == 0 ? '验证码' : countDown }}</view>
+					<input class="uni-input width" v-model="code" type="number" focus placeholder="请输入验证码" />
+					<view class="code" @click="verification">{{ countDown == 0 ? '发送验证码' : countDown }}</view>
 				</view>
 			</view>
-			<view>
-				<button type="green" @click="register" class="uni-button uni-button-green">登录</button>
-			</view>
 		</view>
+		<view class="login" @click="updatalogin">确认修改</view>
 	</view>
 </template>
 <script>
-import { mapMutations } from 'vuex';
-import { verify, loginMobile, getUserInfo } from '@/api/login.js';
+import { registerReset } from '@/api/set.js';
+import { verify } from '@/api/login.js';
 export default {
 	data() {
 		return {
 			phone: '', //用户
 			code: '', //验证码
+			password2: '',
+			password: '',
 			time: '', //保存倒计时对象
 			countDown: 0 //倒计时
 		};
@@ -44,50 +50,58 @@ export default {
 		}
 	},
 	methods: {
-		...mapMutations('user', ['setUserInfo', 'login']),
-		// 手机登录
-		register() {
+		updatalogin() {
 			let obj = this;
 			if (obj.phone == '') {
-				obj.$api.msg('请输入电话号码');
+				obj.$api.msg('请输入手机');
+				return;
+			}
+			if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && (!/(^1[2|3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone))) {
+				obj.$api.msg('请输入正确的邮箱或手机');
+				return;
+			}
+			if (obj.password == '') {
+				obj.$api.msg('请输入密码');
 				return;
 			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(this.phone)) {
-				obj.$api.msg('请输入正确的手机号');
+			if (obj.password2 == '') {
+				obj.$api.msg('请再次输入密码');
+				return;
+			}
+			if (obj.password2 != obj.password) {
+				obj.$api.msg('两次密码不正确');
 				return;
 			}
 			if (obj.code == '') {
 				obj.$api.msg('请输入验证码');
 				return;
 			}
-
-			loginMobile({
-				phone: obj.phone, //账号
+			registerReset({
+				account: obj.phone, //账号
+				password: obj.password,
+				password2: obj.password2,
+				type: 1,
 				captcha: obj.code
-			}).then(function(e) {
-				uni.setStorageSync('token', e.data.token);
-				getUserInfo({}).then(e => {
-					obj.login();
-					// 保存返回用户数据
-					obj.setUserInfo(e.data);
-					//成功跳转首页
-					uni.switchTab({
-						url: '/pages/index/index'
+			})
+				.then(function(e) {
+					obj.$api.msg(e.msg);
+					uni.navigateTo({
+						url: '/pages/public/login'
 					});
+				})
+				.catch(e => {
+					console.log(e);
 				});
-			}).catch((e) => {
-				console.log(e);
-			});
 		},
 		//发送验证码
 		verification() {
 			let obj = this;
 			if (this.phone == '') {
-				this.$api.msg('请输入电话号码');
+				this.$api.msg('请输入邮箱号码');
 				return;
 			}
-			if (this.phone.length < 11) {
-				this.$api.msg('请输入正确的手机号');
+			if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && (!/(^1[2|3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone))) {
+				obj.$api.msg('请输入正确手机');
 				return;
 			}
 			// 判断是否在倒计时
@@ -103,17 +117,18 @@ export default {
 					phone: obj.phone,
 					type: 'login'
 				})
-					.then(({ data }) => {})
+					.then(({ data }) => {
+						uni.showToast({
+							title: '验证码已发送',
+							duration: 2000,
+							position: 'top',
+							icon: 'none'
+						});
+					})
 					.catch(err => {
 						console.log(err);
 					});
 			}
-		},
-		login() {
-			//返回登录
-			uni.navigateTo({
-				url: '/pages/public/login'
-			});
 		}
 	}
 };
@@ -121,47 +136,64 @@ export default {
 
 <style lang="scss">
 page {
-	height: 100%;
-}
-.container {
-	width: 100%;
-	height: 100%;
-	background-size: 100%;
-}
-.container_text {
-	width: 100%;
-	height: 500rpx;
-	top: 0rpx;
-	.banner-img {
+	min-height: 100%;
+	background-color: #ffffff;
+	.container {
 		width: 100%;
-		height: 100%;
+		padding: 60rpx 70rpx;
 	}
 }
+.logo-img {
+	width: 161rpx;
+	height: 161rpx;
+	margin:auto;
+	margin-top: 52rpx !important;
+	margin-bottom: 15rpx !important;
+	box-shadow: 0px 12rpx 13rpx 0px rgba(68, 150, 157, 0.47);
+	border-radius: 50%;
+	image {
+		width: 161rpx;
+		height: 161rpx;
+		border-radius: 50%;
+	}
+}
+.logo {
+	font-size: 36rpx;
+	font-weight: 400;
+	color: #5dbc7c;
+	text-align: center;
+}
+.phone {
+	height: 43rpx !important;
+	width: 27rpx !important;
+}
+.codeimg {
+	height: 39rpx !important;
+	width: 31rpx !important;
+}
 .login_text {
-	margin: auto 30rpx;
-	position: relative;
-	padding: 100rpx 102rpx;
-	background-color: #ffffff;
-	margin-top: -180rpx;
 	border-radius: 20rpx;
+	margin-top: 80rpx;
 	.login_input {
-		border-bottom: 1px solid #f0f0f0;
-		margin-bottom: 65rpx;
-		.login_img image {
+		// border-bottom: 1px solid #C5CEE0;
+		margin-bottom: 35rpx;
+		padding-bottom: 60rpx;
+		.login_img {
 			height: 35rpx;
-			width: 29rpx;
+			width: 31rpx;
 			margin-right: 20rpx;
+			image {
+				width: 100%;
+				height: 100%;
+			}
 		}
 		.uni-input {
 			text-align: left;
-			width: 470rpx;
-			font-size: 28rpx !important;
+			width: 400rpx;
+			font-size: 32rpx !important;
 		}
 		.login_name {
 			color: #333333;
-			.width {
-				width: 325rpx !important;
-			}
 			.code {
 				color: #5dbc7c;
 				font-size: 23rpx;
@@ -172,29 +204,14 @@ page {
 			}
 		}
 	}
-	.uni-button-green {
-		color: #ffffff;
-		background-color: #5dbc7c;
-		margin: 40rpx 10rpx;
-		border-radius: 50rpx;
-	}
-	.uni-button {
-		height: 85rpx;
-		line-height: 85rpx;
-	}
-}
-.loginTitle {
-	position: absolute;
-	top: 250rpx;
-	width: 100%;
-	text-align: center;
-	color: white;
-	font-size: 40rpx;
 }
 
-uni-button {
-	height: 80rpx !important;
-	line-height: 80rpx !important;
+.login {
+	background: #5dbc7c;
+	margin-top: 96rpx;
+	color: #ffffff;
+	text-align: center;
+	padding: 26rpx 0rpx;
+	border-radius: 20rpx;
 }
-
 </style>

+ 105 - 68
pages/public/login.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="container">
-		<view class="container_text">
-			<image class="banner-img" src="/static/img/img01.png" mode="scaleToFill"></image>
-		</view>
+		<view class="container_text"><image class="banner-img" src="/static/img/img01.png" mode="scaleToFill"></image></view>
 		<view class="loginTitle"><text>登录</text></view>
 		<view class="login_text">
 			<view class="login_input flex">
@@ -16,17 +14,24 @@
 			<view><button type="green" class="uni-button uni-button-green" @click="toLogin">登录</button></view>
 			<view><button type="green" class="uni-button uni-button-green uni-button-green-plain" plain="true" hover-class="none" @click="register">注册</button></view>
 			<navigator url="./forget"><view class="forget">忘记密码</view></navigator>
+			<label class="two" @click="checkboxChange">
+				<radio style="transform:scale(0.7)" color="#5dbc7c" :checked="istype" />
+				我已阅读并同意
+				<text @click.stop="navTo('/pages/contract/agreement')">《用户协议》</text>
+				&nbsp
+				<text @click.stop="navTo('/pages/contract/privacy')">《隐私政策》</text>
+			</label>
 			<!-- <view class="flex other">
 				<view class="fenge"></view>
 				<view class="qita">其他方式登录</view>
 				<view class="fenge"></view>
 			</view> -->
 			<!-- #ifndef APP-PLUS -->
-					<!-- <view class="weixin" @click="wecahtLogin"><image src="/static/img/img05.png"></image></view>
+			<!-- <view class="weixin" @click="wecahtLogin"><image src="/static/img/img05.png"></image></view>
 					<view class="weixin_text" @click="wecahtLogin">微信登录</view> -->
-					<!-- #endif -->
-					<!-- #ifdef APP-PLUS -->
-					<!-- <block v-if="!is_ios">
+			<!-- #endif -->
+			<!-- #ifdef APP-PLUS -->
+			<!-- <block v-if="!is_ios">
 						<view class="weixin" @click="wecahtLogin"><image src="/static/img/img05.png" mode="scaleToFill"></image></view>
 						<view class="weixin_text" @click="wecahtLogin">微信登录</view>
 					</block>
@@ -40,15 +45,16 @@
 							<text class="weixin_text">通过Apple登录</text>
 						</view>
 					</block> -->
-					<!-- #endif -->
-				</view>
-			</view>
+			<!-- #endif -->
+		</view>
+	</view>
 </template>
 
 <script>
 import { mapMutations } from 'vuex';
-import { login} from '@/api/login.js';
-import { getUserInfo} from '@/api/user.js';
+import { login } from '@/api/login.js';
+import { getUserInfo } from '@/api/user.js';
+import { getFileIndex, getFile, writerTxt, getFileText } from '@/utils/fileController.js';
 // #ifdef APP-PLUS
 // applelogin接口需要开发编写,基础项目中可能没有
 import { applelogin } from '@/api/set.js';
@@ -63,14 +69,16 @@ export default {
 		return {
 			username: '',
 			passward: '',
+			istype: false,
 			// #ifdef APP-PLUS
-			is_ios: false ,//判断是否为ios手机
-			is_apple_login:false,//是否有ios授权登录功能
+			is_ios: false, //判断是否为ios手机
+			is_apple_login: false //是否有ios授权登录功能
 			// #endif
 		};
 	},
 	onLoad() {
 		let obj = this;
+		uni.hideLoading();
 		// #ifdef APP-PLUS
 		let system = uni.getStorageSync('platform');
 		// 判断是否为ios
@@ -79,15 +87,24 @@ export default {
 		}
 		uni.getSystemInfo({
 			success(e) {
-				if(+e.system.split('.')[0]>=13){
-					obj.is_apple_login=true;
+				if (+e.system.split('.')[0] >= 13) {
+					obj.is_apple_login = true;
 				}
 			}
-		})
+		});
 		// #endif
 	},
 	methods: {
 		...mapMutations('user', ['setUserInfo', 'login']),
+		checkboxChange() {
+			this.istype = !this.istype;
+			console.log(this.istype);
+		},
+		navTo(url) {
+			uni.navigateTo({
+				url
+			});
+		},
 		// 微信登录
 		wecahtLogin(type) {
 			let obj = this;
@@ -104,7 +121,7 @@ export default {
 					uni.getUserInfo({
 						provider: type,
 						success(es) {
-							if(type==='weixin'){
+							if (type === 'weixin') {
 								loginWx(es.userInfo)
 									.then(e => {
 										uni.setStorageSync('token', e.data.token);
@@ -127,13 +144,13 @@ export default {
 										});
 									});
 							}
-							if(type==='apple'){
+							if (type === 'apple') {
 								console.log(es.userInfo);
 								applelogin({
-									account: es.userInfo.openId,
+									account: es.userInfo.openId
 								})
 									.then(function(e) {
-										console.log(e,'token')
+										console.log(e, 'token');
 										uni.setStorageSync('token', e.data.token);
 										getUserInfo({}).then(e => {
 											obj.login();
@@ -144,13 +161,11 @@ export default {
 												url: '/pages/index/index'
 											});
 										});
-										
 									})
 									.catch(function(e) {
 										console.log(e);
 									});
 							}
-							
 						},
 						fail(es) {
 							uni.showModal({
@@ -190,6 +205,10 @@ export default {
 				obj.$api.msg('请输入密码');
 				return;
 			}
+			if (!obj.istype) {
+				obj.$api.msg('请查看并同意用户协议和隐私政策');
+				return;
+			}
 			login({
 				account: obj.username,
 				password: obj.passward
@@ -199,9 +218,16 @@ export default {
 					obj.$store.commit('hasLogin', true);
 					getUserInfo({}).then(e => {
 						obj.login();
+						//#ifdef APP-PLUS
+						getFileIndex().then(info => {
+							getFile(info, 'userInfo').then(data => {
+								writerTxt(data, e.data);
+							});
+						});
+						//#endif
 						// 保存返回用户数据
 						obj.setUserInfo(e.data);
-						let ur = uni.getStorageSync('present')|| '/pages/index/index';
+						let ur = uni.getStorageSync('present') || '/pages/index/index';
 						//成功跳转首页
 						uni.switchTab({
 							url: ur,
@@ -210,7 +236,7 @@ export default {
 									url: ur,
 									fail(e) {
 										uni.navigateTo({
-											url: '/pages/index/index',
+											url: '/pages/index/index'
 										});
 									}
 								});
@@ -237,51 +263,51 @@ export default {
 </script>
 
 <style lang="scss">
-	/* #ifdef APP-PLUS */
-	
-	.ios_login {
-		width: 260rpx;
-		border-radius: 12rpx;
-		justify-content: center;
-		border: 1px solid #212121;
-		margin: 24rpx auto;
-		padding: 10rpx;
-		background-color: #212121;
-		color: #ffffff;
-		.loginIcon {
-			width: 50rpx;
-			height: 50rpx;
-		}
-		.weixin_text {
-			line-height: 1;
-			margin-left: 20rpx;
-			color: #ffffff !important;
-		}
+/* #ifdef APP-PLUS */
+
+.ios_login {
+	width: 260rpx;
+	border-radius: 12rpx;
+	justify-content: center;
+	border: 1px solid #212121;
+	margin: 24rpx auto;
+	padding: 10rpx;
+	background-color: #212121;
+	color: #ffffff;
+	.loginIcon {
+		width: 50rpx;
+		height: 50rpx;
 	}
-	
-	/* #endif */
-	.ios_login {
-		width: 350rpx;
-		border-radius: 12rpx;
-		justify-content: center;
-		border: 1px solid #212121;
-		margin: 24rpx auto;
-		padding: 15rpx;
-		background-color: #212121;
-		color: #ffffff;
-		font-size: 32rpx;
-		.loginIcon {
-			font-size: 35rpx;
-			width: 35rpx;
-			height: 35rpx;
-		}
-		.weixin_text {
-			line-height: 1;
-			margin-left: 20rpx;
-			color: #ffffff !important;
-		}
+	.weixin_text {
+		line-height: 1;
+		margin-left: 20rpx;
+		color: #ffffff !important;
 	}
-	
+}
+
+/* #endif */
+.ios_login {
+	width: 350rpx;
+	border-radius: 12rpx;
+	justify-content: center;
+	border: 1px solid #212121;
+	margin: 24rpx auto;
+	padding: 15rpx;
+	background-color: #212121;
+	color: #ffffff;
+	font-size: 32rpx;
+	.loginIcon {
+		font-size: 35rpx;
+		width: 35rpx;
+		height: 35rpx;
+	}
+	.weixin_text {
+		line-height: 1;
+		margin-left: 20rpx;
+		color: #ffffff !important;
+	}
+}
+
 page {
 	height: 100%;
 }
@@ -383,4 +409,15 @@ page {
 	color: white;
 	font-size: 40rpx;
 }
+.two {
+	margin: 20rpx 0;
+	font-size: 28rpx;
+	text-align: center;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #999999;
+	text {
+		color: #5dbc7c;
+	}
+}
 </style>

+ 19 - 3
pages/public/register.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container">
 		<view class="status_bar"><!-- 这里是状态栏 --></view>
-		<view class="loginTitle">欢迎注册力</view>
+		<view class="loginTitle">欢迎注册力</view>
 		<view class="loginText">请认真填写个人信息</view>
 		<view class="login-box">
 			<view class="username">账号</view>
@@ -26,6 +26,13 @@
 			<view class="username">邀请码</view>
 			<input class="input-box" type="text" v-model="invitation" placeholder="请输入邀请码" />
 		</view>
+		<label class="two" @click="checkboxChange">
+			<radio style="transform:scale(0.7)" color="#5dbc7c" :checked="istype" />
+			我已阅读并同意
+			<text @click.stop="navTo('/pages/contract/agreement')">《用户协议》</text>
+			&nbsp
+			<text @click.stop="navTo('/pages/contract/privacy')">《隐私政策》</text>
+		</label>
 		<view class="login" @click="register">注册</view>
 	</view>
 </template>
@@ -35,6 +42,7 @@ import { register, verify } from '@/api/login.js';
 export default {
 	data() {
 		return {
+			istype: false,
 			phone: '', //用户
 			loginPass: '', //密码
 			payPass: '',
@@ -57,6 +65,10 @@ export default {
 		}
 	},
 	methods: {
+		checkboxChange() {
+			this.istype = !this.istype;
+			console.log(this.istype);
+		},
 		// 注册
 		register() {
 			let obj = this;
@@ -64,7 +76,7 @@ export default {
 				obj.$api.msg('请输入账号');
 				return;
 			}
-			if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && (!/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone))) {
+			if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(obj.phone) && !/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone)) {
 				obj.$api.msg('请输入正确的邮箱或手机');
 				return;
 			}
@@ -80,6 +92,10 @@ export default {
 				obj.$api.msg('请输入邀请码');
 				return;
 			}
+			if (!obj.istype) {
+				obj.$api.msg('请查看并同意用户协议和隐私政策');
+				return;
+			}
 			register({
 				account: obj.phone, //账号
 				captcha: obj.code, //验证码
@@ -108,7 +124,7 @@ export default {
 				this.$api.msg('请输入账号');
 				return;
 			}
-			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+(\.([a-zA-Z]{2,4}))+$/.test(obj.phone) && (!/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone))) {
+			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+(\.([a-zA-Z]{2,4}))+$/.test(obj.phone) && !/(^1[3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone)) {
 				obj.$api.msg('请输入正确的账号');
 				return;
 			}

+ 33 - 3
pages/set/set.vue

@@ -4,7 +4,13 @@
 		    <uni-list-item title="个人资料" @click="navTo('/pages/set/userinfo')" ></uni-list-item>
  		    <uni-list-item title="收货地址" @click="navTo('/pages/set/address')" ></uni-list-item>
 		</uni-list>
-		
+		<uni-list class="margin-t-20" v-if="new_version != ''">
+		    <uni-list-item title="检查更新"  @click="updates()">
+				<template slot="right">
+					当前版本{{ new_version }}
+				</template>
+			</uni-list-item>
+		</uni-list>
 		<view class="list-cell log-out-btn" @click="toLogout">
 			<text class="cell-tit">退出登录</text>
 		</view>
@@ -14,19 +20,32 @@
 <script>
 	import uniList from "@/components/uni-list/uni-list.vue"
 	import uniListItem from "@/components/uni-list-item/uni-list-item.vue"
-	import { logout } from '@/api/set.js';
+	import { logout,version } from '@/api/set.js';
 	import {  
 	    mapMutations  
 	} from 'vuex';
+	// #ifdef APP-PLUS
+	import { getUpApp } from '@/utils/upApp.js';
+	// #endif
 	export default {
 		components: {
 			uniList,uniListItem
 		},
 		data() {
 			return {
-				
+				new_version:'',
 			};
 		},
+		onShow() {
+			const obj = this;
+			//#ifdef APP-PLUS
+			plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
+				// 获取当前系统
+				obj.new_version = wgtinfo.version;
+				console.log(wgtinfo.version,"123456");
+			});
+			//#endif
+		},
 		methods:{
 			...mapMutations('user',['logout']),
 			navTo(url){
@@ -34,6 +53,17 @@
 					url:url
 				})
 			},
+			updates(){
+				const obj = this
+				version().then(({data}) =>{
+					if(data.version_code == obj.new_version){
+						obj.$api.msg('已经是最新版本了')
+					}else{
+						getUpApp();
+					}
+				})
+				
+			},
 			//退出登录
 			toLogout(){
 				let obj = this;

+ 145 - 133
pages/set/userinfo.vue

@@ -10,14 +10,14 @@
 		</view>
 		<view class="row">
 			<text class="tit">ID</text>
-			<input class="input" type="text"  disabled="true" v-model="userInfo.uid" placeholder-class="placeholder" />
+			<input class="input" type="text" disabled="true" v-model="userInfo.uid" placeholder-class="placeholder" />
 		</view>
 		<view class="row">
 			<text class="tit">账户</text>
-			<input class="input" type="text"  disabled="true" v-model="userInfo.phone" placeholder-class="placeholder" />
+			<input class="input" type="text" disabled="true" v-model="userInfo.phone" placeholder-class="placeholder" />
 		</view>
 		<view class="add-btn" @click="confirm">提交</view>
-		<!-- <view class="out" @click="cancel">注销账户</view> -->
+		<view class="out" @click="cancel">注销账户</view>
 		<uni-popup ref="popup" type="center">
 			<view class="psw-wrapper">
 				<view class="psw-title">请输入自己的账户</view>
@@ -32,40 +32,50 @@
 </template>
 
 <script>
-import { mapState,mapMutations } from 'vuex';
+import { mapState, mapMutations } from 'vuex';
 import { upload } from '@/api/order.js';
-import {userEdit,logout} from '@/api/set.js';
+import { userEdit, logout } from '@/api/set.js';
 export default {
-	data(){
-		return{
-			show:false,
-			password: '',
-		}
+	data() {
+		return {
+			show: false,
+			password: ''
+		};
 	},
 	onLoad() {
-		console.log(this.userInfo)
+		console.log(this.userInfo);
 	},
 	computed: {
-		...mapState('user',['userInfo'])
+		...mapState('user', ['userInfo'])
 	},
 	methods: {
-		...mapMutations('user',['logout']),
+		...mapMutations('user', ['logout']),
 		imgsub() {
-			console.log('上传头像')
-			upload({
-				filename: ''
-			}).then(data => {
-				console.log("data",data);
-				this.userInfo.avatar = data[0].url;
-			})
+			uni.showModal({
+				title: '提示',
+				content: '需要使用摄像头或图库权限来进行个性化定义头像',
+				success: function(res) {
+					if (res.confirm) {
+						upload({
+							filename: ''
+						}).then(data => {
+							console.log('data', data);
+							this.userInfo.avatar = data[0].url;
+						});
+					} else if (res.cancel) {
+						console.log('用户点击取消');
+					}
+				}
+			});
+			console.log('上传头像');
 		},
 		confirm() {
-			userEdit({ avatar: this.userInfo.avatar ,nickname: this.userInfo.nickname})
+			userEdit({ avatar: this.userInfo.avatar, nickname: this.userInfo.nickname })
 				.then(e => {
 					this.$api.msg('修改成功');
-					setTimeout(()=> {
+					setTimeout(() => {
 						uni.switchTab({
-							url:'/pages/user/user'
+							url: '/pages/user/user'
 						});
 					}, 1000);
 					console.log(e);
@@ -74,23 +84,25 @@ export default {
 					console.log(e);
 				});
 		},
-		toLogout(){
+		toLogout() {
 			let obj = this;
 			uni.showModal({
-			    content: '确定要退出登录么',
-			    success: (e)=>{
-			    	if(e.confirm){
-						logout({}).then((e) => {
-							uni.navigateBack();
-						}).catch((e) => {
-							console.log(e);
-						})
-			    		obj.logout();
-			    	}
-			    }
+				content: '确定要退出登录么',
+				success: e => {
+					if (e.confirm) {
+						logout({})
+							.then(e => {
+								uni.navigateBack();
+							})
+							.catch(e => {
+								console.log(e);
+							});
+						obj.logout();
+					}
+				}
 			});
 		},
-		cancel(){
+		cancel() {
 			this.$refs.popup.open();
 		},
 		qx() {
@@ -98,116 +110,116 @@ export default {
 			this.$refs.popup.close();
 		},
 		pswQd() {
-			if(this.password != this.userInfo.phone){
+			if (this.password != this.userInfo.phone) {
 				this.$refs.popup.close();
 				this.password = '';
-				this.$api.msg("请输入自己的账户")
-				return
+				this.$api.msg('请输入自己的账户');
+				return;
 			}
 			this.$refs.popup.close();
 			this.password = '';
-			this.$api.msg("申请注销成功,请耐心等待审核")
+			this.$api.msg('申请注销成功,请耐心等待审核');
 		}
 	}
-}
+};
 </script>
 
 <style lang="scss">
-	.row1 {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		position: relative;
-		padding: 0 30upx;
-		height: 110upx;
-		background: #fff;
-		margin-bottom: 20upx;
-		.tit {
-			flex-shrink: 0;
-			width: 120upx;
-			font-size: $font-lg;
-			color: $font-color-dark;
-		}
-		
-		.background-img {
-			width: 80rpx;
-			height: 80rpx;
-			border-radius: 50%;
-			background: #f2f2f2;
-		}
+.row1 {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	position: relative;
+	padding: 0 30upx;
+	height: 110upx;
+	background: #fff;
+	margin-bottom: 20upx;
+	.tit {
+		flex-shrink: 0;
+		width: 120upx;
+		font-size: $font-lg;
+		color: $font-color-dark;
 	}
-	.row {
-		display: flex;
-		align-items: center;
-		padding: 0 30upx;
-		height: 110upx;
-		background: #fff;
-	
-		.tit {
-			flex-shrink: 0;
-			width: 120upx;
-			font-size: $font-lg;
-			color: $font-color-dark;
-		}
-		.input {
-			flex: 1;
-			text-align: right;
-			font-size: $font-base;
-			color: $color-gray;
-		}
-	}
-	.add-btn {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		margin: 158rpx auto 30rpx;
-		width: 560rpx;
+
+	.background-img {
+		width: 80rpx;
 		height: 80rpx;
-		background: linear-gradient(0deg, #2E58FF, #32C6FF);
-		border-radius: 40px;
-		color: #FFFFFF;
+		border-radius: 50%;
+		background: #f2f2f2;
 	}
-	.out {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		margin: 0 auto 30rpx;
-		width: 560rpx;
-		height: 80rpx;
-		border: 1px solid #32C6FF;
-		background: #FFFFFF;
-		border-radius: 40px;
-		color: #32C6FF;
+}
+.row {
+	display: flex;
+	align-items: center;
+	padding: 0 30upx;
+	height: 110upx;
+	background: #fff;
+
+	.tit {
+		flex-shrink: 0;
+		width: 120upx;
+		font-size: $font-lg;
+		color: $font-color-dark;
 	}
-	.psw-wrapper {
-		width: 548rpx;
-		height: 344rpx;
-		background-color: #ffffff;
-		.psw-title {
-			width: 100%;
-			font-size: 35rpx;
-			padding: 43rpx 0 49rpx;
-			text-align: center;
-			font-weight: 800;
-		}
-		.psw-ipt {
-			display: block;
-			background-color: #dce3ed;
-			height: 90rpx;
-			width: 464rpx;
-			padding-left: 30rpx;
-			margin: 0 auto;
-			font-size: 80rpx;
-		}
-		.psw-btn text {
-			display: inline-block;
-			text-align: center;
-			width: 50%;
-			padding-top: 29rpx;
-			font-size: 35rpx;
-		}
-		.psw-qd {
-			color: #32C6FF;
-		}
+	.input {
+		flex: 1;
+		text-align: right;
+		font-size: $font-base;
+		color: $color-gray;
 	}
+}
+.add-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	margin: 158rpx auto 30rpx;
+	width: 560rpx;
+	height: 80rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	border-radius: 40px;
+	color: #ffffff;
+}
+.out {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	margin: 0 auto 30rpx;
+	width: 560rpx;
+	height: 80rpx;
+	border: 1px solid #32c6ff;
+	background: #ffffff;
+	border-radius: 40px;
+	color: #32c6ff;
+}
+.psw-wrapper {
+	width: 548rpx;
+	height: 344rpx;
+	background-color: #ffffff;
+	.psw-title {
+		width: 100%;
+		font-size: 35rpx;
+		padding: 43rpx 0 49rpx;
+		text-align: center;
+		font-weight: 800;
+	}
+	.psw-ipt {
+		display: block;
+		background-color: #dce3ed;
+		height: 90rpx;
+		width: 464rpx;
+		padding-left: 30rpx;
+		margin: 0 auto;
+		font-size: 80rpx;
+	}
+	.psw-btn text {
+		display: inline-block;
+		text-align: center;
+		width: 50%;
+		padding-top: 29rpx;
+		font-size: 35rpx;
+	}
+	.psw-qd {
+		color: #32c6ff;
+	}
+}
 </style>

+ 65 - 0
pages/user/about.vue

@@ -0,0 +1,65 @@
+<template>
+	<view class="conter">
+		<view class="box">
+			<!-- <image src="../../static/img/about.png" class="image" mode=""></image> -->
+			<view class="image"><image src="../../static/img/log.png" mode=""></image></view>
+			<view class="title">V1.3.9</view>
+		</view>
+		<view class="main">
+			<text>
+				浙江多力网络科技有限公司,2016年创立于浙江台州 ,公司以网站建设核心业务 专注于创意设计和传播应用 ,探索并实现商业价值最大化,为所有谋求长远发展的企业机构贡献全力。
+				浙江多力网络科技有限公司注重专业探索,摒弃虚浮夸张,在更深远的认知中,将不断修正服务导向,完善制作品格,以探求精品塑造与理念升华,勇做推动行业发展的中坚力量
+			</text>
+		</view>
+		<view class="tip">
+			浙江多力网络科技有限公司
+			<br />
+			版权所有
+		</view>
+	</view>
+</template>
+
+<script></script>
+
+<style lang="scss">
+.conter,
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+.box {
+	width: 100%;
+	text-align: center;
+	.image {
+		width: 162rpx;
+		height: 162rpx;
+		margin: 0 auto;
+		margin-top: 88rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.title {
+		font-size: 30rpx;
+		font-family: PingFangSC;
+		font-weight: 500;
+		color: #666666;
+	}
+}
+.main {
+	background-color: #ffffff;
+	padding: 20rpx 50rpx;
+	margin-top: 70rpx;
+	font-size: 30rpx;
+	font-family: PingFangSC;
+	font-weight: 500;
+	color: #000000;
+	line-height: 54rpx;
+}
+.tip {
+	margin-top: 100rpx;
+	text-align: center;
+	color: #666666;
+}
+</style>

+ 9 - 14
pages/user/scoreAccumulate.vue

@@ -2,12 +2,9 @@
 	<view class="content">
 		<view class="content-money">
 			<view class="money-box">
-				<view class="text">
-					我的积分
-				</view>
+				<view class="text">我的积分</view>
 				<view class="money">{{ userInfo.integral | getMoneyStyle }}</view>
 			</view>
-
 		</view>
 		<view class="navbar">
 			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
@@ -22,7 +19,7 @@
 						<view v-for="(item, i) in tabItem.orderList" class="order-item flex">
 							<view class="title-box">
 								<view class="title">
-									<text>{{ item.title }}</text>
+									<text>{{ item.mark }}</text>
 								</view>
 
 								<view class="time">
@@ -125,17 +122,15 @@ export default {
 			}
 			// 修改当前对象状态为加载中
 			navItem.loadingType = 'loading';
-			integral(
-				{
-					page: navItem.page,
-					limit: navItem.limit,
-					pm: state
-				}
-			)
+			integral({
+				page: navItem.page,
+				limit: navItem.limit,
+				pm: state
+			})
 				.then(({ data }) => {
-					console.log(data)
+					console.log(data);
 					navItem.orderList = navItem.orderList.concat(data);
-					console.log(navItem.orderList,'123465')
+					console.log(navItem.orderList, '123465');
 					navItem.page++;
 					if (navItem.limit == data.length) {
 						//判断是否还有数据, 有改为 more, 没有改为noMore

+ 1 - 1
pages/user/team.vue

@@ -41,7 +41,7 @@
 									<view class="title-name clamp">{{ item.nickname }}</view>
 								</view>
 								<view class="time">
-									<text>{{ item.account }}</text>
+									<text>{{ item.phone }}</text>
 								</view>
 							</view>
 							<view class="money">

+ 12 - 13
pages/user/user.vue

@@ -19,9 +19,7 @@
 							<view class="font-size-sm">小区业绩:{{ userInfo.small_achievement }}</view>
 						</view>
 					</view>
-					<view class="config iconfont">
-						<text class="setting iconsetting" @click="navTo('/pages/set/set')"></text>
-					</view>
+					<view class="config iconfont"><text class="setting iconsetting" @click="navTo('/pages/set/set')"></text></view>
 				</view>
 				<!-- 会员卡功能 -->
 			</view>
@@ -83,9 +81,7 @@
 							<text>待收货</text>
 						</view>
 						<view class="order-item" @click="navTo('/pages/order/order?state=3')" hover-class="common-hover" :hover-stay-time="50">
-							<view class="icon position-relative">
-								<image class="icon-img" src="/static/icon/i4.png" mode="aspectFit"></image>
-							</view>
+							<view class="icon position-relative"><image class="icon-img" src="/static/icon/i4.png" mode="aspectFit"></image></view>
 							<text>已完成</text>
 						</view>
 					</view>
@@ -98,7 +94,10 @@
 						<uni-list-item title="收货地址" @click="navTo('/pages/set/address')" thumb="/static/icon/img12.png"></uni-list-item>
 						<uni-list-item title="我的收藏" @click="navTo('/pages/user/favorites')" thumb="/static/icon/img02.png"></uni-list-item>
 						<uni-list-item title="邀请好友" @click="navTo('/pages/user/shareQrCode')" thumb="/static/icon/img10.png"></uni-list-item>
-						<uni-list-item title="关于我们" @click="navTo('/pages/shareQrCode/index')" thumb="/static/icon/img09.png"></uni-list-item>
+						<uni-list-item title="会员协议" @click="navTo('/pages/contract/agreement')" thumb="/static/img/vipxy.png"></uni-list-item>
+						<uni-list-item title="隐私政策" @click="navTo('/pages/contract/privacy')" thumb="/static/img/yszc.png"></uni-list-item>
+						<uni-list-item title="关于我们" @click="navTo('/pages/user/about')" thumb="/static/img/about.png"></uni-list-item>
+						<!-- <uni-list-item title="关于我们" @click="navTo('/pages/shareQrCode/index')" thumb="/static/icon/img09.png"></uni-list-item> -->
 					</uni-list>
 				</view>
 			</view>
@@ -215,7 +214,7 @@ export default {
 					url
 				});
 			}
-		},
+		}
 	}
 };
 </script>
@@ -282,7 +281,7 @@ page {
 		.info-box {
 			margin-left: 20rpx;
 			line-height: 1.5;
-		
+
 			.username {
 				font-size: $font-lg + 2rpx;
 				height: 100%;
@@ -312,13 +311,13 @@ page {
 					line-height: 40rpx;
 				}
 			}
-		
+
 			.username-t {
 				font-size: $font-lg + 6rpx;
 				// height: 32rpx;
 				display: flex;
 				align-items: center;
-		
+
 				image {
 					display: inline-block;
 					margin-left: 10rpx;
@@ -326,10 +325,10 @@ page {
 					height: 32rpx;
 				}
 			}
-		
+
 			.user-get {
 				font-size: $font-lg;
-		
+
 				text {
 					font-size: $font-lg + 6rpx;
 				}

+ 3 - 1
pages/user/withdrawal.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="content">
-		<!-- <uni-notice-bar single="true" text="每月25号到月底可提现上月结算余额"></uni-notice-bar> -->
+		<uni-notice-bar v-if="sxf != ''" single="true" :text="'提现手续费' + sxf + '%'"></uni-notice-bar>
 		<view class="content-money">
 			<view class="flex ">
 				<view class="buttom">
@@ -88,6 +88,7 @@ export default {
 	},
 	data() {
 		return {
+			sxf: 0,//手续费
 			type: 'alipay', //提现方式
 			money: '0.00', //可提现金额
 			freeze: '0.0', //冻结金额
@@ -123,6 +124,7 @@ export default {
 				this.minPrice = data.minPrice; //最小提现
 				this.freeze = data.extractPriceCount; //提现中的余额
 				this.exchange = data.real_get_ratio / 100;
+				this.sxf = data.extractCommission;//提现手续费
 			});
 		},
 		// 跳转

BIN
static/img/about.png


BIN
static/img/log.png


BIN
static/img/vipxy.png


BIN
static/img/yszc.png


BIN
unpackage/cache/apk/__UNI__CB06659_cm.apk


+ 1 - 1
unpackage/cache/apk/apkurl

@@ -1 +1 @@
-https://ide.dcloud.net.cn/build/download/f81fcac0-a75a-11ec-a603-f74cd6b2f25b
+https://ide.dcloud.net.cn/build/download/ce81fbd0-ccfb-11ec-9235-5f36a0247a35

File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/apk/cmManifestCache.json


+ 20 - 0
unpackage/cache/appleConfig.ini

@@ -0,0 +1,20 @@
+[appleAppid]
+appleAppid=com.dl.appname
+
+[appstore]
+appstore=
+
+[iosStyle]
+iosStyle=storyboard
+
+[universalLinks]
+universalLinks=
+spaceid=
+
+[universalLinks_qq]
+universalLinks_qq=
+spaceid_qq=
+
+[universalLinks_weibo]
+universalLinks_weibo=
+spaceid_weibo=

+ 3 - 0
unpackage/cache/certdataios

@@ -0,0 +1,3 @@
+iosProfile=D:/工作/项目2/多力/苹果/dlapp.mobileprovision
+ioscertFile=D:/工作/项目2/多力/苹果/证书(1).p12
+ioscertPassword=ep/Tdjka4Y7WYqDB6/S7dw==

BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-hdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xhdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xxhdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/icon-android-xxxhdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-hdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-xhdpi.png


BIN
unpackage/cache/wgt/__UNI__CB06659/.manifest/splash-android-xxhdpi.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/__uniappopenlocation.js


+ 27 - 0
unpackage/cache/wgt/__UNI__CB06659/androidPrivacy.json

@@ -0,0 +1,27 @@
+{
+	"version": "1",
+	"prompt": "template",
+	"title": "服务协议和隐私政策",
+	"message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
+	"buttonAccept": "同意并接受",
+	"buttonRefuse": "暂不同意",
+	"second": {
+		"title": "确认提示",
+		"message": "  进入应用前,你需先同意<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>,否则将退出应用。",
+		"buttonAccept": "同意并继续",
+		"buttonRefuse": "退出应用"
+	},
+	"styles": {
+		"backgroundColor": "#ffffff",
+		"borderRadius": "5px",
+		"title": {
+			"color": "#ff0000"
+		},
+		"buttonAccept": {
+			"color": "#000000"
+		},
+		"buttonRefuse": {
+			"color": "#000000"
+		}
+	}
+}

File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/app-config-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/app-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/app-view.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/manifest.json


BIN
unpackage/cache/wgt/__UNI__CB06659/static/img/about.png


BIN
unpackage/cache/wgt/__UNI__CB06659/static/img/log.png


BIN
unpackage/cache/wgt/__UNI__CB06659/static/img/vipxy.png


BIN
unpackage/cache/wgt/__UNI__CB06659/static/img/yszc.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/view.css


File diff suppressed because it is too large
+ 0 - 0
unpackage/cache/wgt/__UNI__CB06659/view.umd.min.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/__uniappopenlocation.js


+ 27 - 0
unpackage/dist/build/app-plus/androidPrivacy.json

@@ -0,0 +1,27 @@
+{
+    "version" : "1",
+    "prompt" : "template",
+    "title" : "服务协议和隐私政策",
+    "message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
+    "buttonAccept" : "同意并接受",
+    "buttonRefuse" : "暂不同意",
+    "second" : {
+        "title" : "确认提示",
+        "message" : "  进入应用前,你需先同意<a href=\"http://store.duolio.cn/index/#/pages/contract/agreement\">《服务协议》</a>和<a href=\"http://store.duolio.cn/index/#/pages/contract/privacy\">《隐私政策》</a>,否则将退出应用。",
+        "buttonAccept" : "同意并继续",
+        "buttonRefuse" : "退出应用"
+    },
+    "styles" : {
+        "backgroundColor" : "#ffffff",
+        "borderRadius" : "5px",
+        "title" : {
+            "color" : "#ff0000"
+        },
+        "buttonAccept" : {
+            "color" : "#000000"
+        },
+        "buttonRefuse" : {
+            "color" : "#000000"
+        }
+    }
+}

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/app-config-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/manifest.json


BIN
unpackage/dist/build/app-plus/static/img/about.png


BIN
unpackage/dist/build/app-plus/static/img/log.png


BIN
unpackage/dist/build/app-plus/static/img/vipxy.png


BIN
unpackage/dist/build/app-plus/static/img/yszc.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/view.css


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/build/app-plus/view.umd.min.js


BIN
unpackage/dist/build/h5/h5.rar


+ 2 - 0
unpackage/dist/build/h5/index.html

@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>商城</title><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><link rel=stylesheet href=/index/static/index.a5c69d49.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.603d3310.js></script><script src=/index/static/js/index.e1ed12c6.js></script></body></html>

+ 551 - 0
unpackage/dist/build/h5/static/css/cmy.css

@@ -0,0 +1,551 @@
+/*初始化类*/
+@font-face {
+	font-family: 'iconfont';
+	/* project id 1482221 */
+	src: url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.eot');
+	src: url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.eot?#iefix') format('embedded-opentype'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.woff2') format('woff2'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.woff') format('woff'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.ttf') format('truetype'),
+		url('https://at.alicdn.com/t/font_1482221_x9emymthrxs.svg#iconfont') format('svg');
+}
+
+.acea-row {
+	display: -webkit-box;
+	display: -moz-box;
+	display: -webkit-flex;
+	display: -ms-flexbox;
+	display: flex;
+	-webkit-box-lines: multiple;
+	-moz-box-lines: multiple;
+	-o-box-lines: multiple;
+	-webkit-flex-wrap: wrap;
+	-ms-flex-wrap: wrap;
+	flex-wrap: wrap
+}
+
+.acea-row.row-middle {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center
+}
+
+.bg-color-red {
+	background-color: #e93323 !important;
+}
+
+.acea-row.row-right {
+	-webkit-box-pack: end;
+	-moz-box-pack: end;
+	-o-box-pack: end;
+	-ms-flex-pack: end;
+	-webkit-justify-content: flex-end;
+	justify-content: flex-end
+}
+
+.acea-row.row-between-wrapper {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center;
+	-webkit-box-pack: justify;
+	-moz-box-pack: justify;
+	-o-box-pack: justify;
+	-ms-flex-pack: justify;
+	-webkit-justify-content: space-between;
+	justify-content: space-between
+}
+
+.acea-row.row-column-around {
+	-webkit-flex-direction: column;
+	-ms-flex-direction: column;
+	flex-direction: column;
+	justify-content: space-around;
+	-webkit-justify-content: space-around
+}
+
+.acea-row.row-center-wrapper {
+	-webkit-box-align: center;
+	-moz-box-align: center;
+	-o-box-align: center;
+	-ms-flex-align: center;
+	-webkit-align-items: center;
+	align-items: center;
+	-webkit-box-pack: center;
+	-moz-box-pack: center;
+	-o-box-pack: center;
+	-ms-flex-pack: center;
+	-webkit-justify-content: center;
+	justify-content: center
+}
+
+.iconfont {
+	font-family: "iconfont" !important;
+	font-size: 34rpx;
+	font-style: normal;
+	-webkit-font-smoothing: antialiased;
+	-webkit-text-stroke-width: 0rpx;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+.iconedit:before {
+	content: "\e649";
+}
+
+.iconfavorfill:before {
+	content: "\e64b";
+}
+
+.iconfavor:before {
+	content: "\e64c";
+}
+
+.iconlocation:before {
+	content: "\e651";
+}
+
+.iconroundcheckfill:before {
+	content: "\e656";
+}
+
+.iconroundcheck:before {
+	content: "\e657";
+}
+
+.iconunfold:before {
+	content: "\e661";
+}
+
+.iconlikefill:before {
+	content: "\e668";
+}
+
+.iconlike:before {
+	content: "\e669";
+}
+
+.iconshop:before {
+	content: "\e676";
+}
+
+.iconcart:before {
+	content: "\e6af";
+}
+
+.icondelete:before {
+	content: "\e6b4";
+}
+
+.iconhome:before {
+	content: "\e6b8";
+}
+
+.iconcartfill:before {
+	content: "\e6b9";
+}
+
+.iconhomefill:before {
+	content: "\e6bb";
+}
+
+.iconlock:before {
+	content: "\e6c0";
+}
+
+.iconfriendadd:before {
+	content: "\e6ca";
+}
+
+.iconfold:before {
+	content: "\e6de";
+}
+
+.iconapps:before {
+	content: "\e729";
+}
+
+.iconadd:before {
+	content: "\e767";
+}
+
+.iconmove:before {
+	content: "\e768";
+}
+
+.icontriangledownfill:before {
+	content: "\e79b";
+}
+
+.icontriangleupfill:before {
+	content: "\e79c";
+}
+
+.iconshaixuan:before {
+	content: "\e74a";
+}
+
+.iconyanzhengma:before {
+	content: "\e684";
+}
+
+.iconjifen:before {
+	content: "\e60f";
+}
+
+.iconwuliuxinxi:before {
+	content: "\e62b";
+}
+
+.iconmessage:before {
+	content: "\e78a";
+}
+
+.iconsetting:before {
+	content: "\e78e";
+}
+
+.iconaddition:before {
+	content: "\e6e0";
+}
+
+.iconclose:before {
+	content: "\e6e9";
+}
+
+.iconenter:after {
+	content: "\e6f8";
+}
+
+.iconprompt:before {
+	content: "\e71b";
+}
+
+.iconreturn:before {
+	content: "\e720";
+}
+
+.iconsearch:before {
+	content: "\e741";
+}
+
+.iconpengyouquan:before {
+	content: "\e62c";
+}
+
+.iconweixin:before {
+	content: "\e60e";
+}
+
+.iconzhifubao:before {
+	content: "\e673";
+}
+
+.iconyue:before {
+	content: "\e618";
+}
+
+.iconweixin1:before {
+	content: "\e622";
+}
+
+.iconlock1:before {
+	content: "\e64d";
+}
+
+.iconuser:before {
+	content: "\e64e";
+}
+
+.iconchenggongtixianshouyi:before {
+	content: "\e64f";
+}
+
+.iconviptuiguangdingdan:before {
+	content: "\e650";
+}
+
+.icondaifukuan:before {
+	content: "\e652";
+}
+
+.icondaijiesuanshouyi:before {
+	content: "\e653";
+}
+
+.icondaidakuanshouyi:before {
+	content: "\e654";
+}
+
+.icondaifahuo:before {
+	content: "\e655";
+}
+
+.icondaishouhuoshouyi:before {
+	content: "\e658";
+}
+
+.icondaishouhuo:before {
+	content: "\e659";
+}
+
+.iconwuxiaoshouyi:before {
+	content: "\e65a";
+}
+
+.icontixianmingxi:before {
+	content: "\e65b";
+}
+
+.iconshouyi:before {
+	content: "\e65c";
+}
+
+.iconkouchutixianshouxufei:before {
+	content: "\e65d";
+}
+
+.iconyishenqingshouyi:before {
+	content: "\e65e";
+}
+
+.icontuihuanhuo:before {
+	content: "\e65f";
+}
+
+
+/*水平线*/
+.hr {
+	width: 100%;
+	position: relative;
+	border-bottom: 1px solid #dddddd;
+	/* height: 0.5rpx; */
+}
+
+/* 一行显示 */
+.clamp {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+	display: block;
+}
+
+/* 二行显示 */
+.clamp2 {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-line-clamp: 2;
+	-webkit-box-orient: vertical;
+}
+
+/* 二行显示 */
+.ellipsis {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+}
+
+.common-hover {
+	background: #f5f5f5;
+}
+
+/* 角标 */
+.corner {
+	background-color: #e51c23;
+	position: absolute;
+	right: -18rpx;
+	top: -18rpx;
+	color: #FFFFFF;
+	text-align: center;
+	border-radius: 999px;
+	font-size: 24rpx !important;
+	min-width: 35rpx;
+	min-height: 35rpx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	line-height: 1;
+}
+
+.flex_item {
+	display: flex;
+	align-items: center;
+	/* justify-content: space-between; */
+}
+
+/* 左右顶格加上下居中 */
+.flex-between-center {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+
+/* flex布局-整体居中 */
+.flex-center {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+.flex-start {
+	display: flex;
+	align-items: center;
+	justify-content: flex-start;
+}
+
+/*文字对齐*/
+.text-left {
+	text-align: left !important;
+}
+
+.text-center {
+	text-align: center !important;
+}
+
+.text-justify {
+	text-align: justify !important;
+}
+
+.text-right {
+	text-align: right !important;
+}
+
+.text-default {
+	color: #212121 !important;
+}
+
+.text-white {
+	color: #ffffff !important;
+}
+
+.text-primary {
+	color: #00bcd4 !important;
+}
+
+.text-success {
+	color: #009688 !important;
+}
+
+.text-info {
+	color: #03a9f4 !important;
+}
+
+.text-warning {
+	color: #ffc107 !important;
+}
+
+.text-danger {
+	color: #e51c23 !important;
+}
+
+.text-pink {
+	color: #e91e63 !important;
+}
+
+.text-purple {
+	color: #673ab7 !important;
+}
+
+.text-indigo {
+	color: #3f51b5 !important;
+}
+
+.text-gray {
+	color: #999999 !important;
+}
+
+.bg-default {
+	background-color: #f5f5f5 !important;
+}
+
+.bg-primary {
+	background-color: #00bcd4 !important;
+}
+
+.bg-success {
+	background-color: #009688 !important;
+}
+
+.bg-info {
+	background-color: #03a9f4 !important;
+}
+
+.bg-warning {
+	background-color: #FFB238 !important;
+}
+
+.bg-danger {
+	background-color: #DC4D46 !important;
+}
+
+.bg-pink {
+	background-color: #e91e63 !important;
+}
+
+.bg-purple {
+	background-color: #673ab7 !important;
+}
+
+.bg-indigo {
+	background-color: #3f51b5 !important;
+}
+
+.bg-white {
+	background-color: white !important;
+}
+
+.bg-gray {
+	background-color: #e3e3e3 !important;
+}
+
+/* 边框 */
+.border-radius-15 {
+	border-radius: 15rpx;
+}
+
+.border-radius-10 {
+	border-radius: 10rpx;
+}
+
+.border-radius-all {
+	border-radius: 1000rpx;
+}
+
+/* 底部边线 */
+.borde-b {
+	border-bottom: 1px solid #dddddd;
+}
+
+/* 弹性盒子 */
+.flex {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+}
+
+.items-left {
+	justify-content: flex-start;
+}
+
+.items-right {
+	justify-content: flex-end;
+}
+
+.flex-shrink-false {
+	flex-shrink: 0;
+}
+
+.flex-grow-true {
+	flex-grow: 1;
+}
+
+.position-relative {
+	position: relative;
+}

BIN
unpackage/dist/build/h5/static/error/emptyCart.png


BIN
unpackage/dist/build/h5/static/error/errorImage.jpg


BIN
unpackage/dist/build/h5/static/error/missing-face.png


BIN
unpackage/dist/build/h5/static/icon/appleIcon.png


BIN
unpackage/dist/build/h5/static/icon/c3.png


BIN
unpackage/dist/build/h5/static/icon/c5.png


BIN
unpackage/dist/build/h5/static/icon/c6.png


BIN
unpackage/dist/build/h5/static/icon/c7.png


BIN
unpackage/dist/build/h5/static/icon/c8.png


BIN
unpackage/dist/build/h5/static/icon/i1.png


BIN
unpackage/dist/build/h5/static/icon/i2.png


BIN
unpackage/dist/build/h5/static/icon/i3.png


BIN
unpackage/dist/build/h5/static/icon/i4.png


BIN
unpackage/dist/build/h5/static/icon/i5.png


BIN
unpackage/dist/build/h5/static/icon/i6.png


BIN
unpackage/dist/build/h5/static/icon/i7.png


BIN
unpackage/dist/build/h5/static/icon/i8.png


BIN
unpackage/dist/build/h5/static/icon/img01.png


BIN
unpackage/dist/build/h5/static/icon/img02.png


BIN
unpackage/dist/build/h5/static/icon/img03.png


BIN
unpackage/dist/build/h5/static/icon/img04.png


BIN
unpackage/dist/build/h5/static/icon/img05.png


BIN
unpackage/dist/build/h5/static/icon/img06.png


BIN
unpackage/dist/build/h5/static/icon/img07.png


BIN
unpackage/dist/build/h5/static/icon/img08.png


BIN
unpackage/dist/build/h5/static/icon/img09.png


BIN
unpackage/dist/build/h5/static/icon/img10.png


BIN
unpackage/dist/build/h5/static/icon/img11.png


BIN
unpackage/dist/build/h5/static/icon/img12.png


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