Переглянути джерело

配合上架打包的更改

ck110 2 днів тому
батько
коміт
349f59f0a7

+ 4 - 0
.hbuilderx/launch.json

@@ -19,6 +19,10 @@
         {
             "playground" : "standard",
             "type" : "uni-app:app-ios_simulator"
+        },
+        {
+            "playground" : "custom",
+            "type" : "uni-app:app-android"
         }
     ]
 }

+ 9 - 9
App.vue

@@ -49,15 +49,15 @@
 					this.globalData.uuid
 				);
 			}
-			uni.getPushClientId({
-				success: (res) => {
-					console.log(res.cid);
-					// this.push_token = res.cid;
-				},
-				fail(err) {
-					console.log(err)
-				}
-			})
+			// uni.getPushClientId({
+			// 	success: (res) => {
+			// 		console.log(res.cid);
+			// 		// this.push_token = res.cid;
+			// 	},
+			// 	fail(err) {
+			// 		console.log(err)
+			// 	}
+			// })
 		},
 
 		onShow: function(options) {

+ 10 - 2
androidPrivacy.json

@@ -2,15 +2,23 @@
 	"version": "1",
 	"prompt": "template",
 	"title": "服务协议和隐私政策",
-	"message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
+	"message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://e.yujianmate.com/web/yhxy.php\">《服务协议》</a>和<a href=\"https://e.yujianmate.com/web/yszc.php\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
 	"buttonAccept": "同意并接受",
 	"buttonRefuse": "暂不同意",
+	"hrefLoader": "system",
+	"backToExit": "true",
 	"second": {
 		"title": "确认提示",
-		"message": "  进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>,否则将退出应用。",
+		"message": "  进入应用前,你需先同意<a href=\"https://e.yujianmate.com/web/yhxy.php\">《服务协议》</a>和<a href=\"https://e.yujianmate.com/web/yszc.php\">《隐私政策》</a>,否则将退出应用。",
 		"buttonAccept": "同意并继续",
 		"buttonRefuse": "退出应用"
 	},
+	"disagreeMode": {
+		"support": false,
+		"loadNativePlugins": false,
+		"visitorEntry": false,
+		"showAlways": true
+	},
 	"styles": {
 		"backgroundColor": "#FFFFFF",
 		"borderRadius": "5px",

+ 2 - 1
common/checkVersion.js

@@ -56,13 +56,14 @@ export default function checkVersion() {
 				// app系统环境
 				let appPlatform = info.platform;
 				console.log("appPlatform", appPlatform)
+				let channel = plus.runtime.channel;
 				// 获取本机版本号
 				plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
 					// 请补充这个请求即可正常使用
 					uni.request({
 						url: 'https://e.yujianmate.com/Gapi/Index/updateWgt?skey=' +
 							getApp().globalData.skey + "&version=" + wgtinfo
-							.versionCode,
+							.versionCode + "&channel=" + channel,
 						success: (res => {
 							res = res.data;
 							console.log("res22", res)

+ 80 - 0
components/image-cache/download.js

@@ -0,0 +1,80 @@
+import {
+	ImgCache
+} from './imgCache.js';
+
+/**
+ * 图片下载任务队列
+ */
+class DownLoadQueue {
+	constructor() {
+		// 初始化任务队列
+		this.taskList = [];
+	}
+	/**
+	 * 添加图片下载任务
+	 * @param {Object} task 图片下载任务
+	 */
+	add(task) {
+		task.isDownload = false;
+		this.taskList.push(task);
+		this.consume();
+	}
+	/**
+	 * 任务消费方法
+	 */
+	async consume() {
+		if (this.taskList.length <= 0) {
+			return;
+		}
+		// 从下载队列中获取第 1 条数据
+		const task = this.taskList[0];
+		// 判断是否正在下载
+		if (task.isDownload) {
+			return;
+		}
+		// 状态修改为正在下载
+		task.isDownload = true;
+		// 判断是否已经下载过该图片
+		if (await ImgCache.isExistFile(task.filePath)) {
+			// 已经存在,无需重复下载, 进行下一个任务下载
+			this.taskList.shift();
+			return this.consume();
+		}
+		// 创建文件下载任务
+		// #ifdef MP-WEIXIN
+		uni.downloadFile({
+			url: task.url,
+			success: (res) => {
+				if (res.statusCode === 200) {
+					// 下载成功,保存文件
+					uni.getFileSystemManager().saveFile({
+						tempFilePath: res.tempFilePath,
+						filePath: task.filePath
+					});
+				}
+			},
+			complete: () => {
+				// 进行下一个任务下载
+				this.taskList.shift();
+				this.consume();
+			}
+		})
+		// #endif
+		// #ifdef APP-PLUS
+		const downloadTask = plus.downloader.createDownload(task.url, {
+			filename: task.filePath
+		}, (download, status) => {
+			// 进行下一个任务下载
+			this.taskList.shift();
+			this.consume();
+		})
+		// 开始执行下载任务
+		downloadTask.start()
+		// #endif
+	}
+}
+
+// 创建图片缓存下载队列
+let downLoadQueue = new DownLoadQueue();
+
+export default downLoadQueue;

+ 98 - 0
components/image-cache/image-cache.vue

@@ -0,0 +1,98 @@
+<template>
+	<image :src="cacheImgUrl" :mode="mode" :lazy-load="lazyLoad" :fade-show="fadeShow"
+		:show-menu-by-longpress="showMenuByLongpress" :webp="webp" :draggable="draggable"
+		@load="sendEvent('load', $event)" @error="sendEvent('error', $event)" @click="sendEvent('click', $event)">
+	</image>
+</template>
+
+<script>
+	import {
+		ImgCache
+	} from './imgCache.js';
+	export default {
+		name: "ImgCache",
+		props: {
+			// 图片资源地址
+			src: {
+				type: String,
+				default: ""
+			},
+			// 图片裁剪、缩放的模式
+			mode: {
+				type: String,
+				default: 'aspectFill'
+			},
+			// 图片懒加载。只针对page与scroll-view下的image有效
+			lazyLoad: {
+				type: Boolean,
+				default: false
+			},
+			// 图片显示动画效果
+			fadeShow: {
+				type: Boolean,
+				default: true
+			},
+			// 在系统不支持webp的情况下是否单独启用webp。默认false,只支持网络资源。webp支持详见下面说明
+			webp: {
+				type: Boolean,
+				default: false
+			},
+			// 开启长按图片显示识别小程序码菜单
+			showMenuByLongpress: {
+				type: Boolean,
+				default: false
+			},
+			// 是否能拖动图片
+			draggable: {
+				type: Boolean,
+				default: true
+			}
+		},
+		watch: {
+			// 监听URL变化
+			src: {
+				handler(src) {
+					this.handleCache(src);
+				},
+				immediate: true
+			}
+		},
+		data() {
+			return {
+				// 缓存图片地址
+				cacheImgUrl: ''
+			};
+		},
+		methods: {
+			/**
+			 * 处理缓存
+			 * @param {String} imgUrl 网络图片地址
+			 */
+			async handleCache(imgUrl) {
+				// #ifdef H5
+				this.cacheImgUrl = imgUrl;
+				return;
+				// #endif
+				// 判断图片是否存在缓存
+				let localUrl = await ImgCache.getCache(imgUrl);
+				if (localUrl) {
+					// 存在缓存,直接用本地图片地址
+					this.cacheImgUrl = localUrl;
+				} else {
+					// 不存在缓存,用网络地址
+					this.cacheImgUrl = imgUrl;
+					// 并且设置缓存
+					ImgCache.setCache(imgUrl);
+				}
+			},
+			/**
+			 * 向父级发送事件
+			 * @param {String} emit 事件名称
+			 * @param {Object} event 事件回调
+			 */
+			sendEvent(emit, event) {
+				this.$emit(emit, event);
+			}
+		}
+	}
+</script>

+ 66 - 0
components/image-cache/imgCache.js

@@ -0,0 +1,66 @@
+import md5 from "./md5.min.js";
+import downLoadQueue from './download.js';
+
+/**
+ * 图片缓存操作类
+ */
+export class ImgCache {
+	/**
+	 * 设置图片缓存
+	 * @param {String} imgUrl 网络图片地址
+	 */
+	static async setCache(imgUrl) {
+		// 创建图片下载任务
+		let task = {
+			// 图片路径
+			filePath: ImgCache.createFilePath(imgUrl),
+			url: imgUrl
+		}
+		// 添加图片下载任务
+		downLoadQueue.add(task);
+	}
+	/**
+	 * 获取图片缓存
+	 * @param {String} imgUrl 网络图片地址
+	 */
+	static getCache(imgUrl) {
+		// 创建文件key值
+		let filePath = ImgCache.createFilePath(imgUrl);
+		return ImgCache.isExistFile(filePath);
+	}
+	/**
+	 * 拼接图片文件缓存路径
+	 * @param {String} imgUrl 网络图片地址
+	 */
+	static createFilePath(imgUrl) {
+		let fileName = md5(imgUrl);
+		// #ifdef MP-WEIXIN
+		return `${wx.env.USER_DATA_PATH}/${fileName}`;
+		// #endif
+		// #ifdef APP-PLUS
+		return `_doc/imgCache/${fileName}`;
+		// #endif
+	}
+	/**
+	 * 根据文件路径判断文件是否存在
+	 * @param {String} filePath 文件路径
+	 */
+	static isExistFile(filePath) {
+		return new Promise(resolve => {
+			// #ifdef APP-PLUS
+			plus.io.resolveLocalFileSystemURL(filePath, () => resolve(filePath), () => resolve(null));
+			// #endif
+			// #ifdef MP-WEIXIN
+			uni.getFileSystemManager().readFile({
+				filePath: filePath,
+				success: (res) => {
+					resolve(filePath)
+				},
+				fail: (res) => {
+					resolve(null)
+				}
+			})
+			// #endif
+		})
+	}
+}

Різницю між файлами не показано, бо вона завелика
+ 9 - 0
components/image-cache/md5.min.js


+ 212 - 179
manifest.json

@@ -1,180 +1,213 @@
 {
-	"name": "遇见玛特",
-	"appid": "__UNI__A59181F",
-	"description": "",
-	"versionName": "1.2.1",
-	"versionCode": 121,
-	"transformPx": false,
-	/* 5+App特有相关 hfhz-mrro-iqmv-igdl storygarden2024@outlook.com*/
-	"app-plus": {
-		"compatible": {
-			"ignoreVersion": true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持  
-		},
-		"usingComponents": true,
-		"nvueStyleCompiler": "uni-app",
-		"compilerVersion": 3,
-		"splashscreen": {
-			"alwaysShowBeforeRender": true,
-			"waiting": true,
-			"autoclose": true,
-			"delay": 0
-		},
-		"safearea": {
-			"background": "#00000000",
-			"bottom": {
-				"offset": "none"
-			}
-		},
-		/* 模块配置 */
-		"modules": {
-			"Push": {},
-			"Geolocation": {},
-			"Camera": {},
-			"Record": {}
-		},
-		/* 应用发布信息 */
-		"distribute": {
-			/* android打包配置 */
-			"android": {
-				"permissions": [
-					"<uses-feature android:name=\"android.hardware.camera\"/>",
-					"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CAMERA\"/>",
-					"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
-					"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-					"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
-					"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
-					"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-					"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-					"<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.WRITE_SETTINGS\"/>"
-				],
-				"abiFilters": ["armeabi-v7a", "arm64-v8a"],
-				"enableOAID": false
-			},
-			/* ios打包配置 */
-			"ios": {
-				"UIBackgroundModes": "audio",
-				"dSYMs": false,
-				"idfa": false
-			},
-			/* SDK配置 */
-			"sdkConfigs": {
-				"ad": {},
-				"payment": {},
-				"speech": {},
-				"oauth": {},
-				"push": {
-					"unipush": {
-						"version": "2",
-						"offline": false,
-						"hms": {},
-						"oppo": {},
-						"vivo": {},
-						"mi": {},
-						"meizu": {},
-						"honor": {}
-					}
-				},
-				"geolocation": {
-					"system": {
-						"__platform__": ["android"]
-					}
-				},
-				"share": {
-					"weixin": {
-						"appid": "",
-						"UniversalLinks": ""
-					}
-				}
-			},
-			"splashscreen": {
-				"androidStyle": "default",
-				"useOriginalMsgbox": false,
-				"iosStyle": "common",
-				"ios": {},
-				"android": {
-					"xxhdpi": "static/loading_1080.png",
-					"xhdpi": "static/loading_720.png",
-					"hdpi": "static/loading_480.png"
-				}
-			},
-			"icons": {
-				"android": {
-					"hdpi": "unpackage/res/icons/72x72.png",
-					"xhdpi": "unpackage/res/icons/96x96.png",
-					"xxhdpi": "unpackage/res/icons/144x144.png",
-					"xxxhdpi": "unpackage/res/icons/192x192.png"
-				},
-				"ios": {
-					"appstore": "unpackage/res/icons/1024x1024.png",
-					"ipad": {
-						"app": "unpackage/res/icons/76x76.png",
-						"app@2x": "unpackage/res/icons/152x152.png",
-						"notification": "unpackage/res/icons/20x20.png",
-						"notification@2x": "unpackage/res/icons/40x40.png",
-						"proapp@2x": "unpackage/res/icons/167x167.png",
-						"settings": "unpackage/res/icons/29x29.png",
-						"settings@2x": "unpackage/res/icons/58x58.png",
-						"spotlight": "unpackage/res/icons/40x40.png",
-						"spotlight@2x": "unpackage/res/icons/80x80.png"
-					},
-					"iphone": {
-						"app@2x": "unpackage/res/icons/120x120.png",
-						"app@3x": "unpackage/res/icons/180x180.png",
-						"notification@2x": "unpackage/res/icons/40x40.png",
-						"notification@3x": "unpackage/res/icons/60x60.png",
-						"settings@2x": "unpackage/res/icons/58x58.png",
-						"settings@3x": "unpackage/res/icons/87x87.png",
-						"spotlight@2x": "unpackage/res/icons/80x80.png",
-						"spotlight@3x": "unpackage/res/icons/120x120.png"
-					}
-				}
-			}
-		}
-	},
-	"networkTimeout": {
-		"request": 6000
-	},
-	/* 快应用特有相关 */
-	"quickapp": {},
-	/* 小程序特有相关 */
-	"mp-weixin": {
-		"appid": "",
-		"setting": {
-			"urlCheck": false
-		},
-		"usingComponents": true
-	},
-	"mp-alipay": {
-		"usingComponents": true
-	},
-	"mp-baidu": {
-		"usingComponents": true
-	},
-	"mp-toutiao": {
-		"usingComponents": true
-	},
-	"uniStatistics": {
-		"enable": false
-	},
-	"vueVersion": "2",
-	"h5": {
-		"router": {
-			"base": "./",
-			"mode": "hash"
-		},
-		"template": "h5.template.html",
-		"optimization": {
-			"treeShaking": {
-				"enable": true
-			}
-		}
-	},
-	"fallbackLocale": "zh-Hans"
-}
+    "name" : "遇见玛特",
+    "appid" : "__UNI__A59181F",
+    "description" : "",
+    "versionName" : "2.0.0",
+    "versionCode" : 200,
+    "transformPx" : false,
+    /* 5+App特有相关 hfhz-mrro-iqmv-igdl storygarden2024@outlook.com*/
+    "app-plus" : {
+        "compatible" : {
+            "ignoreVersion" : true
+        },
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "safearea" : {
+            "background" : "#00000000",
+            "bottom" : {
+                "offset" : "none"
+            }
+        },
+        /* 模块配置 */
+        "modules" : {
+            "Push" : {},
+            "Geolocation" : {},
+            "Camera" : {},
+            "Record" : {},
+            "Payment" : {},
+            "Share" : {}
+        },
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<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.WRITE_SETTINGS\"/>"
+                ],
+                "permissionPhoneState" : {
+                    "request" : "none",
+                    "prompt" : "为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。"
+                },
+                "permissionExternalStorage" : {
+                    "request" : "none",
+                    "prompt" : "应用保存运行状态等信息,需要获取读写手机存储(系统提示为访问设备上的照片、媒体内容和文件)权限,请允许。"
+                },
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ],
+                "minSdkVersion" : 21,
+                "targetSdkVersion" : 31,
+                "enableOAID" : false
+            },
+            /* ios打包配置 */
+            "ios" : {
+                "UIBackgroundModes" : "",
+                "dSYMs" : false,
+                "idfa" : false
+            },
+            /* SDK配置 */
+            "sdkConfigs" : {
+                "ad" : {},
+                "payment" : {
+                    "weixin" : {
+                        "__platform__" : [ "android" ],
+                        "appid" : "wxc2e41e751946f425",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "speech" : {},
+                "oauth" : {},
+                "push" : {
+                    "unipush" : {
+                        "version" : "2",
+                        "offline" : true,
+                        "mi" : {},
+                        "oppo" : {},
+                        "vivo" : {},
+                        "honor" : {}
+                    }
+                },
+                "geolocation" : {
+                    "system" : {
+                        "__platform__" : [ "android" ]
+                    }
+                },
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wxc2e41e751946f425",
+                        "UniversalLinks" : ""
+                    }
+                }
+            },
+            "splashscreen" : {
+                "androidStyle" : "default",
+                "useOriginalMsgbox" : true,
+                "iosStyle" : "common",
+                "ios" : {},
+                "android" : {
+                    "xxhdpi" : "static/loading_1080.png",
+                    "xhdpi" : "static/loading_720.png",
+                    "hdpi" : "static/loading_480.png"
+                }
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                }
+            }
+        }
+    },
+    "networkTimeout" : {
+        "request" : 6000
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "channel_list" : [
+        {
+            "id" : "wandoujia",
+            "name" : "豌豆荚"
+        },
+        {
+            "id" : "market",
+            "name" : "市场部"
+        },
+        {
+            "id" : "honor",
+            "name" : "荣耀"
+        }
+    ],
+    "vueVersion" : "2",
+    "h5" : {
+        "router" : {
+            "base" : "./",
+            "mode" : "hash"
+        },
+        "template" : "h5.template.html",
+        "optimization" : {
+            "treeShaking" : {
+                "enable" : true
+            }
+        },
+        "unipush" : {
+            "enable" : true
+        }
+    },
+    "fallbackLocale" : "zh-Hans"
+}

+ 7 - 0
pages.json

@@ -21,6 +21,13 @@
 				"navigationStyle": "custom",
 				"navigationBarBackgroundColor": "#ffffff"
 			}
+		}, {
+			"path": "pages/AboutUs/pay_xy",
+			"style": {
+				"navigationBarTitleText": "协议",
+				"navigationStyle": "custom",
+				"navigationBarBackgroundColor": "#ffffff"
+			}
 		}, {
 			"path": "pages/index/ai_pp",
 			"style": {

+ 131 - 0
pages/AboutUs/pay_xy.vue

@@ -0,0 +1,131 @@
+<template>
+	<view class="page">
+
+		<!-- <view class="code">
+			<image src="../../static/code.png" mode=""></image>
+			<text>扫描二维码,您的朋友也可以使用或下载哦~</text>
+		</view> -->
+
+		<view class="xy-list">
+
+			<view class="list">
+				<view class="content">
+					<text>
+
+						M币用户协议
+
+						【特别提示】
+
+						欢迎您使用M币服务!M币是仅限遇见玛特App内使用的虚拟商品,不具有法定货币的性质和功能。M币用户协议(以下简称“本协议”)是由遇见玛特App(以下简称“本平台”)的运营商浙江求知堂科技有限公司(以下简称"本公司”)与您签订。为了让服务使用人(以下简称“您”或“用户”)更好的使用本平台的服务,请您在进行M币充值或使用M币兑换其他虚拟商品及增值服务前仔细阅读并充分理解本协议。
+
+						本平台不鼓励未成年人充值M币,未成年用户请在家长或合法监护人的陪同下判断是否同意此协议。
+
+						您在充值M币后不能将其逆向兑换为人民币或其他法定货币。
+
+						一、服务规则
+
+						1、M币是本平台提供的一种虚拟商品,可用于包括但不限于创建群聊等虚拟增值服务。M币仅可供您自己使用。M币一经充值成功,除法律法规明确规定外,在任何情况下不能兑换为法定货币,不能转让给他人。
+
+						2、用户可以通过网上银行、支付宝或其他遇见玛特App提供的途径进行M币充值。用户使用M币兑换平台内相关的虚拟商品及增值服务后,可将相关的虚拟商品及增值服务按照本平台的规则赠与其他用户。用户确认不会以非法方式或者使用非平台所指定的充值途径充值M币,如果用户违规使用非本平台认可的充值途径充值M币,则本平台不保证充值顺利或正确完成,若因此造成用户权益受损,本平台将不会作出任何补偿或赔偿,本平台同时保留随时终止用户使用遇见玛特账号及各项虚拟商品及增值服务的权利,并进行相应惩罚。
+
+						3、用户确认,用户在进行充值前已经仔细确认过自己的账号并正确选择了符合自身意愿的操作选项,若因用户自身输入账号错误、操作不当或不了解充值计费方式等因素造成充错账号、错选充值种类等情形而损害自身权益的,本平台将不会作出任何补偿或赔偿。
+
+						4、用户确认,M币只能用于兑换本平台上的各类增值服务,任何情况下不得与第三方进行M币交易,亦不得在除本平台以外的第三方平台(如淘宝)上进行交易;如违反前述约定,造成用户或第三方任何损失,本平台不负任何责任,且如本平台有理由怀疑用户的遇见玛特账号或M币使用情况存在作弊或异常状况,本平台可以拒绝该用户使用M币功能,并按本协议约定采取封禁等措施。
+
+						5、本平台有权基于M币使用安全等方面的考虑不时设定或修改涉及M币使用的相关事项,包括但不限于M币使用限额、M币使用次数等。用户了解并确认本平台的前述设定或修改可能对用户的M币使用行为产生一定的不便,用户对此没有异议。
+
+						6、用户确认,除法律法规明确规定或本协议另有约定外,用户已兑换的任何虚拟商品及增值服务不能以任何理由退购(即退换成M币或法定货币)或调换成其他服务。
+
+						7、因用户自身的原因导致本平台无法提供M币兑换服务或提供M币兑换服务时发生任何错误而产生的任何损失或责任,由用户自行负责,本平台不承担责任,包括但不限于:
+
+						(1)因用户的遇见玛特账号丢失、被封禁或冻结;
+
+						(2)用户将密码告知他人导致的财产损失;
+
+						(3)因用户绑定的第三方支付机构账户的原因导致的任何损失或责任;
+
+						(4)其他用户故意或者重大过失或者违反法律法规导致的财产损失。
+
+						8、用户在使用本平台提供的服务时,如出现违反国家法律法规、本协议约定或其他本平台对用户的管理规定的情形,本平台有权暂时或永久封禁用户的账号。账号被封禁后至账号解禁前,遇见玛特账号中剩余的M币将被暂时冻结或全部扣除,不可继续用于兑换本平台的虚拟商品及增值服务,且本平台将根据相关法律法规对用户的账号酌情处理。对于严重违反本协议被永久封禁账号的用户,其账号中的M币将会被全部扣除,本平台不予返还相应的现金价值。
+
+						9、用户确认并同意,如用户主动注销账号,则用户在平台中充值的M币、使用M币兑换的虚拟商品及增值服务、会员权益等,将被视为自动放弃,本平台不予返还相应的现金价值,也不会作出任何补偿。
+
+						10、M币并非存款、货币、预付款或其他可在一定期限内无理由退款性质的商品或财产权利。在您充值完成后,本平台的充值服务已提供完毕,所以如无本协议约定的正当理由,本平台不提供任何将M币逆向兑换为法定货币或转让给他人的服务。
+
+						二、服务的变更、中断、终止
+
+						1、鉴于网络服务的特殊性,用户同意本平台有权随时变更、中断或终止部分或全部的服务(包括平台内部的虚拟商品及增值服务)。对于本平台变更、中断或终止的服务,本平台应当尽量在变更、中断或终止之前通知用户,并应向受影响的用户提供等值的替代性的服务;如被变更、中断或终止的服务是用户通过M币进行兑换的,且用户不愿意接受替代性的服务,本平台将根据用户使用该服务的实际情况,将部分M币退还至用户。
+
+						2、如发生下列任何一种情形,本平台有权变更、中断或终止向用户提供服务,而无需对用户或任何第三方承担任何责任:
+
+						(1)根据法律规定用户应提交真实信息,而用户提供的个人资料不真实,或与注册时信息不一致又未能提供合理证明;
+
+						(2)用户违反相关法律法规或本协议的约定;
+
+						(3)按照法律规定或有权机关的要求;
+
+						(4)出于安全的原因或其他必要的情形。
+
+						三、免责声明
+
+						1.您知悉并同意,本平台不因下述任一情况而可能导致的任何损害赔偿承担责任,包括但不限于财产、收益、数据资料等方面的损失或其它无形损失:
+
+						(1)因不可抗力导致充值系统或服务器不稳定工作或不能正常运作(前述不可抗力包括台风、地震、海啸、洪水、停电、战争、恐怖袭击、重大卫生事件等);
+
+						(2)因电信设施技术故障或系统维护、黑客攻击等原因造成的服务器中断、终止或延迟;
+
+						(3)由于各级政府、司法机关、行政机关命令及法律法规变更而导致的服务器中断、终止或延迟;
+
+						(4)由于您的主观过错导致您的遇见玛特账号密码泄露给他人(如您主动将遇见玛特账号密码告知他人,有意或无意将遇见玛特账号密码进行公开披露等);
+
+						(5)您(包括未成年人用户)向本公司提供错误、不完整、不实信息等,造成您不能使用遇见玛特账号或遭受任何其他损失;
+
+						(6)本平台进行必要的系统升级、维护而暂停服务器或M币充值服务。
+
+						2.因您自身的主观原因导致本平台无法为您提供M币充值服务或本平台在提供上述服务时发生了错误而产生的任何损失,由您自行负责,您不得要求或主张本平台对您的损失作出任何补偿。前述原因包括但不限于:
+
+						(1)您未按照本协议或本平台不时公布的任何规则进行操作;
+
+						(2)您的遇见玛特账号丢失、失效、被封号等;
+
+						(3)因您绑定的第三方支付机构账户的原因导致的损失或责任,包括您使用未经认证的第三方支付账户或使用非您本人的第三方支付账户,您的第三方支付账户被冻结、查封等;
+
+						(4)因您个人的故意或重大过失所造成的财产损失;
+
+						(5)您向本平台提供了不真实的信息。
+
+						四、违约责任
+
+						如您违反本协议项下的任何规则、声明、承诺及保证,我们保留根据本公司实际损失向您追究责任的权利。
+
+						五、其他
+
+						1、本协议签订地为杭州市上城区。因本协议引起的或与本协议有关的争议,本平台将与您友好协商解决。
+
+						2、因本协议引起的或与本协议有关的争议,均适用于中华人民共和国法律。若本协议之任何规定因与中华人民共和国法律抵触或被有管辖权的人民法院认定而无效或不可执行,则在不违反法律的前提下,这些条款将按照尽可能接近本协议原条文意旨的原则重新解析,且本协议其它规定仍应具有完整的效力及效果。
+
+						3、为了向您提供更好的服务,或者基于法律规定、主管部门要求、业务开展情况等因素的更新与变化,本平台将适时对本协议内容进行修订,该等修订内容一经公布立即生效,本平台发出更新版本后,您可通过本平台M币充值页面随时查阅。若您在本协议内容发生修订后继续充值M币或使用M币兑换虚拟商品及增值服务,则视为您同意最新修订的协议内容;否则请您立即停止充值M币或使用M币兑换虚拟商品及增值服务。
+
+						4、如本协议中的任何条款无论因何种原因完全或部分无效或不具有执行力,本协议的其余条款仍应有效并且有约束力
+					</text>
+				</view>
+
+			</view>
+
+		</view>
+
+	</view>
+</template>
+<script>
+	export default {
+		data() {
+			return {
+
+			};
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@import 'AboutUs.scss';
+</style>

+ 43 - 2
pages/AboutUs/yhxy.vue

@@ -11,8 +11,49 @@
 			<view class="list">
 				<view class="content">
 					<text>
-						  
-						Copyright ©2023
+
+						遇见玛特会员服务协议
+						更新日期:2024年11月3日
+						生效日期:2024年11月4日
+						欢迎使用遇见玛特会员服务!
+						浙江求知堂科技有限公司在此特别提醒您,在您注册成为遇见玛特会员之前,请认真阅读《会员服务协议》(以下简称“本协议”),确保您充分理解各条款,特别是以黑体加粗或其他合理方式提示您注意的条款,该等条款可能与您的权益存在重大利害关系,包括但不限于浙江求知堂科技有限公司的责任、您享有的权利、争议解决方式及司法管辖条款等,请您审慎阅读并选择接受或不接受本协议。如果您不同意本协议的任一或全部条款内容,请不要以确认的形式(包括但不限于:点击、进入购买程序等)进行下一步操作或使用本协议项下服务。当您确认接受本协议或开始使用本协议项下服务时,即表示您与浙江求知堂科技有限公司已达成协议约定的服务合作关系,您自愿接受并遵守本协议项下的全部约定。
+						本协议约定遇见玛特与您之间关于“遇见玛特会员”服务的各项事项。“会员”是指注册、登录、使用本协议项下浙江求知堂科技有限公司提供的各种服务的个人(以下称“会员”或“您”遇见玛特会员服务是有偿的增值服务,您必须完全同意本协议,并完成付费,才能享受相关服务。
+						本协议是
+						“遇见玛特”软件《用户协议》、《隐私政策》的补充协议,是其不可分割的一部分。同时,遇见玛特不时发布的关于会员服务的各种规范、规则等也是本协议的一部分。您选择接受本协议,开通会员服务成为会员用户,即表示您同意接受本协议、《用户协议》、《隐私政策》及各种规范、规则的各项约束,并将遵守。如果您不接受本协议,则不能享受本服务。
+						本协议可能发生的变更(包括但不限于本协议修改、服务细则调整、会员权益调整等),遇见玛特将在相关服务页面或以合理方式事先通知您,请您仔细阅读并选择是否按照调整和/或变更后的本协议/服务细则/会员权益等继续选择本服务。如您同意上述调整和或变更,您可以采用接受服务的形式进行下一步操作或继续使用本服务,以表明您已经接受上述调整和/或变更:如您不同意调整和/或变更,我们建议您立即停止使用本服务。如您对上述调整和/或变更有任何问题可以咨询遇见玛特客服。
+						一、总则
+						1.遇见玛特是由浙江求知堂科技有限公司创建、运营的基于地理位置的移动社交产品。2.遇见玛特用户是指完成全部注册流程,愿意接受遇见玛特《用户协议》、《隐私政策》并在遇见玛特相关使用规范的规定下使用遇见玛特服务的注册用户
+						3.本服务是遇见玛特为遇见玛特用户提供的有偿增值服务,用户向遇见玛特支付相关费用后,方可享受专门为会员提供的各项服务,
+						二、服务费用及说明
+						1.遇见玛特会员增值服务分为VIP会员(含相应附加付费产品等),具体资费标准以遇见玛特App公布的为准,用户可通过选择第三方支付方式购买或消耗糖果进行兑换。遇见玛特将根据不同的购买方式和数量,向用户提供不同幅度的优惠,具体优惠政策以会员中心相关页面的公告、说明或会员资格支付页面显示的内容为准
+						2.您可以通过登录遇见玛特我的特权页面免费查询您的账号信息详情,包括已开通的服务内容和服务期限等信息
+						3.浙江求知堂科技有限公司有权基于自身业务发展需要调整会员服务内容或服务费用标准,遇见玛特将在以站内信等方式事先通知您,调整后的服务内容或费用标准将在会员中心页面显示,用户按调整后的服务内容或服务费用标准支付后方可享有或延续会员资格。已按原会员服务费用标准购买会员服务的用户,其会员资格在已取得的会员资格期限内不受影响。
+						三、服务的开通、有效期限及终止
+						1.用户完成注册程序并通过遇见玛特平台提供的付费途径完成会员费用的支付后,即取得相应遇见玛特会员资格。
+						2.提交申请并开通会员资格时,您需确保提交的个人资料真实、准确、完整、合法有效。当个人资料发生变化时,应及时对注册资料予以修改、更新,否则由此造成的会员权利不能全面有效行使或其他任何后果、责任由您自行承担。
+						3.会员资格有效期自遇见玛特会员服务开通之时起算,具体期限可以登录遇见玛特App我的特权页查看。
+						4.除非开通自动续费功能,会员资格有效期届满后,浙江求知堂科技有限公司将终止向您提供会员服务,您可以通过续交会员服务费用延续会员资格。
+						5.会员在会员资格有效期内续费,会员资格有效期将在原有效期基础上相应顺延。浙江求知堂科技有限公司提供会员自动续费功能,您可在会员资格有效期内开通该项功能,您开通该项功能后,浙江求知堂科技有限公司会在您的会员资格有效期届满前5日通知您,如您未选择取消使用自动续费功能的,浙江求知堂科技有限公司会根据您的授权在会员资格有效期届满时,自动对您的会员资格期限予以续期并扣除相应的会员费,并在续期届满后依此自动延续。
+						四、会员的权利和义务
+						1.遇见玛特会员平等享有会员的权利,同时应遵守浙江求知堂科技有限公司的各项规范、规则,包括但不限于本协议、《用户协议》《隐私政策》等。
+						2.因违反本协议第四条第1款所述的相关协议或平台规则导致会员服务被暂停使用而导致的损失,由您自行承担,
+						3.会员资格有效期内,会员可以享受相应的增值服务。
+						4.在会员资格有效期内,您主动终止或取消会员资格的,浙江求知堂科技有限公司不负责退还与剩余会员资格有效期对应的服务费用
+						5.会员自行承担在遇见玛特中传送、发布信息及使用遇见玛特免费服务或收费服务的法律责任会员使用遇见玛特服务,包括免费服务与收费服务的行为,均应遵守各项法律法规、规章、规范性文件(以下简称“法律法规”)以及平台协议及规则。
+						6.会员资格开通后,您应谨慎合理的保存使用用户名和密码,不得将账号借予他人使用。否则,您应承担由此产生的全部责任,同时,遇见玛特在该种情况下有权作出独立判断,可采取暂停或关闭用户会员资格等措施。
+						7.会员服务仅限于申请账号个人使用,不得用于商业等用途:会员服务期内不能在遇见玛特账号之间转移,不得赠与、借用、转让或售卖
+						8.会员不得以盗窃、利用系统漏洞等非法途径以及在未获遇见玛特授权的非法销售遇见玛特会员的网站上获取或购买会员服务,否则因此导致的损失由会员自行承担。
+						五、浙江求知堂科技有限公司的权利和义务
+						1.浙江求知堂科技有限公司保证会员服务的正常使用,出现技术故障时应尽快排除,但对于会员因此产生的任何损失,浙江求知堂科技有限公司不承担责任
+						2.因不可抗力造成会员服务提供的中断或其它缺陷,浙江求知堂科技有限公司不承担任何责任,但将尽力减少因此给会员造成的损失和影响。
+						3.会员应妥善保管遇见玛特账号及密码,因会员自身原因导致账号密码泄露而造成的损失,由会员自行承担。但为避免账号被盗用等情形给会员造成损失,遇见玛特会在您举报后采取一切措施避免第三方对会员账号实施操作行为,而不论该第三方基于何种目的、获取方式是否善意。但遇见玛特采取措施的前提需会员提供相应的材料以证明其为账号的合法使用者,您应予以配合。
+						4.会员在使用遇见玛特服务(含免费服务及收费服务)时,故意作出有损浙江求知堂科技有限公司、遇见玛特平台、其他遇见玛特用户合法权益的行为,或违反《用户协议》等平台规则的,浙江求知堂科技有限公司有权取消会员资格或中断一项或多项会员服务而无须给予任何补偿,与此同时,浙江求知堂科技有限公司保留追究会员法律责任的权利。
+						5.会员在使用遇见玛特服务(含免费服务及收费服务)时,存在违反法律法规的行为,浙江求知堂科技有限公司有权取消会员资格而无须给予任何补偿,且会员须自行承担全部责任。
+						六、违约处理
+						1.在您使用本服务的过程中,不得存在以下行为:
+						(1)未经遇见玛特明确授权,通过技术手段对服务内容、服务期限、服务费用、交易状态等信息进行修改;
+						(2)将会员服务通过非遇见玛特明确授权的方式(包括但不限于借用、租用、售卖、分享、转让)提供他人使用:
+
 					</text>
 				</view>
 

+ 30 - 9
pages/AboutUs/yszc.vue

@@ -11,9 +11,9 @@
 			<view class="list">
 				<view class="content">
 					<text>
-						  隐私协议
+						隐私协议
 						生效日期:2024.11.4
-						更新日期:2024.11.6
+						更新日期:2024.11.12
 						本隐私政策适用于浙江求知堂科技有限公司(以下简称我公司)提供的遇见玛特APP产品及服务。本隐私政策中遇见玛特APP产品客户端软件可能会涉及不同应用版本,用户需选择与所安装手机相匹配的软件版本,不同版本所提供的功能和服务可能有所不同。
 						我公司深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我公司致力于维持您对我公司的信任,恪守以下原则保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,我公司承诺,我公司将按业界成熟的安全标准采取相应的安全保护措施来保护您的个人信息。
 						为了更好的保护您的个人信息,建议您仔细阅读更新后的隐私政策。如您对本隐私政策条款有任何异议或疑问,您可通过本隐私政策第九条公布的联系方式与我公司联系。
@@ -69,17 +69,38 @@
 						3、当您打开本App内部下载的文件后,会关联启动第三方App。
 
 						三、通过第三方SDK收集使用信息说明
-						SDK名称:微信
-						所属单位:深圳市腾讯计算机系统有限公司
+						SDK名称:微信OpenSDK Android 开发者:深圳市腾讯计算机系统有限公司
 						Sdk用途:登录、产品分享到朋友圈和微信好友、微信支付服务与订单统计
 						SDK收集的个人信息类型: 个人常用设备信息、网络身份标识信息、个人财产信息。包括设备标识符、硬件设备型号、软件版本信息、IP地址、位置信息、移动网络信息、存储读写权限
-						微信隐私地址:https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy
-						SDK名称:个推
-						所属单位:每日互动股份有限公司
+						微信隐私地址:https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8
+
+						SDK名称:消息推送 SDK Android 开发者:每日互动股份有限公司
 						Sdk用途:平台各类消息通知推送,包括不限于用户交换联系方式申请通知,打赏交友通知,用户点赞、评论、关注通知,平台提现结算通知等其他各类系统通知。
-						SDK收集的个人信息类型:收集类别为:设备信息,AndroidID(用于生成唯一的推送目标ID(CID)和设备ID(GID),以此保证消息推送的准确下发和消息设备的准确识别。)、网络信息、位置信息、应用列表。
+						SDK收集的个人信息类型:收集类别为:设备信息,AndroidID(用于生成唯一的推送目标ID(CID)和设备ID(GID),以此保证消息推送的准确下发和消息设备的准确识别。)、网络信息、位置信息、应用列表。设备标识符(包括IMEI、IDFA、AndroidID、GAID、MAC、OAID、IMSI、
+						MEID、UAID)、设备硬件信息(包括设备型号、设备屏幕分辦率、设备硬件制造商、设备产品名称)、操作系统信息(包括操作系统版本、系统名称、系统语言)、网络信息(包括网络类型、运营商名称、基站信息、1尸地址、WiFi信息、SSID、BSSID)、推送信息日志、精确位置信息、软件列表信息(包括软件列表及软件运行列表信息)。
 						个推隐私地址: https://docs.getui.com/privacy/
 
+						SDK名称:华为AGC应用内消息SDK(开发者:华为软件技术有限公司)
+						SDK用途:设备名称、设备识别符、设备激活时间、硬件型号、操作系统版 本、应用程序版本、应用列表信息、直看网络状态、完全的网络访问权限、推送信息、数据分析
+						隐私地址:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-appmessage-sdksecurity-ios-0000001272118585
+
+						SDK名称:小米推送 开发者:北京小米移动软件有限公司
+						SDK用途:小米推送SDK 设备标识OAID、AndroidID,以及使用推送服务的应用信息如应用
+						包名、版本号和运行状态、读取手机状态和身份、查看网络状态、完全的网络访问权限、硬件序列号推送信息
+						隐私地址:https://dev.mi.com/console/doc/detail?pId=1822
+
+						SDK名称:vivo PUSH-SDK 开发者:维沃移动通信有限公司)
+						SDK用途:应用基本信息、应用内设备标识符、设备的硬件信息、系统基本信 提供推送消息服务、统 计推送SDK接口调用成功率
+						隐私地址:https://dev.vivo.com.cn/documentCenter/doc/366
+
+						SDK名称:OPPO PUSH 客户端SDK 开发者:OPPO广东移动通信有限公司
+						SDK用途:应用基本信息(MCS应用包名、应用版本号、OPUSHSDK版本 号),应用内设备标识符(RegistrateriD、appKey、appSecret)推送消息
+						隐私地址:https://open.oppomobile.com/new/developmentDoc/info?id=11228
+
+						SDK名称:荣耀推送SDK 开发者:深圳荣耀软件技术有限公司
+						SDK用途:应用匿名标识(AAID),应用Token推送信息,提供消息推送服务。
+						隐私地址:https://developer.honor.com/cn/docs/11002/guides/sdk-data-security
+
 						四、我公司如何使用Cookie和同类技术
 						为了收集前述个人信息,我公司和第三方授权合作伙伴均可能使用技术,通过理解和记忆您的特定使用偏好使用以下技术,为您提供更加全面的体验:
 						1、Cookie:为确保客户端正常运转,我公司会在您的移动设备上存储名为Cookie的小数据文件。Cookie通常包含标识符、站点名称以及一些号码和字符。借助于Cookie,网站能够存储您行为数据。我公司不会将Cookie用于本隐私政策所述目的之外的任何用途。您可根据自己的偏好管理或删除Cookie。
@@ -163,7 +184,7 @@
 
 
 
-						Copyright ©2024
+
 					</text>
 				</view>
 

+ 2 - 1
pages/article/article.vue

@@ -45,7 +45,8 @@
 				<view class="photo_list">
 					<view class="img" v-for="(item2,index2) in toArr(item.images)" :key="index2"
 						@click="previewOpen(item.images,index2)" v-if="item2 != ''">
-						<image class="icon" :src="item2" mode="aspectFill"></image>
+						<!-- <image class="icon" :src="item2" mode="aspectFill"></image> -->
+						<image-cache class="icon" mode="aspectFill" :src="item2"></image-cache>
 					</view>
 				</view>
 				<view class="desc">

+ 12 - 14
pages/chat/message.vue

@@ -106,23 +106,21 @@
 
 			<view class="listSys">
 				<block v-for="(item, index) in sysmsg_list" :key="index">
-					<next-swipe-action :btnGroup="btnGroup" :index="index" @btnClick="onclick">
-						<view class="item">
-							<view class="img">
-								<view class="bg">
-									<image class="icon" mode="widthFix" src="../../static/icon/icon_msg.png"></image>
-								</view>
+					<view class="item">
+						<view class="img">
+							<view class="bg">
+								<image class="icon" mode="widthFix" src="../../static/icon/icon_msg.png"></image>
 							</view>
-							<view class="content">
-								<view class="title">
-									{{item.content}}
-								</view>
-								<text class="time">
-									{{item.create_time}}
-								</text>
+						</view>
+						<view class="content">
+							<view class="title">
+								{{item.content}}
 							</view>
+							<text class="time">
+								{{item.create_time}}
+							</text>
 						</view>
-					</next-swipe-action>
+					</view>
 				</block>
 			</view>
 		</block>

+ 10 - 10
pages/index/index.vue

@@ -108,16 +108,16 @@
 			let self = this;
 
 			let that = this;
-			uni.getLocation({
-				type: 'wgs84',
-				success: function(res) {
-					that.lat = res.latitude;
-					that.lng = res.longitude;
-				},
-				fail: function(error) {
-					console.error('获取位置失败:', error);
-				}
-			});
+			// uni.getLocation({
+			// 	type: 'wgs84',
+			// 	success: function(res) {
+			// 		that.lat = res.latitude;
+			// 		that.lng = res.longitude;
+			// 	},
+			// 	fail: function(error) {
+			// 		console.error('获取位置失败:', error);
+			// 	}
+			// });
 		},
 		onShow() {
 			uni.$emit('check_update');

+ 16 - 11
pages/login/login.vue

@@ -142,17 +142,17 @@
 				});
 				return;
 			}
-			let that = this;
-			uni.getLocation({
-				type: 'wgs84',
-				success: function(res) {
-					that.lat = res.latitude;
-					that.lng = res.longitude;
-				},
-				fail: function(error) {
-					console.error('获取位置失败:', error);
-				}
-			});
+			// let that = this;
+			// uni.getLocation({
+			// 	type: 'wgs84',
+			// 	success: function(res) {
+			// 		that.lat = res.latitude;
+			// 		that.lng = res.longitude;
+			// 	},
+			// 	fail: function(error) {
+			// 		console.error('获取位置失败:', error);
+			// 	}
+			// });
 		},
 		methods: {
 			onBack() {},
@@ -237,6 +237,10 @@
 						return;
 					}
 				}
+				let channel = "";
+				// #ifdef APP-PLUS
+				channel = plus.runtime.channel;
+				// #endif
 
 				uni.showLoading({
 					mask: true,
@@ -246,6 +250,7 @@
 					url: this.$apiHost + method,
 					data: {
 						uuid: getApp().globalData.uuid,
+						channel: channel,
 						loginType: this.type,
 						mobile: this.mobile,
 						password: this.password,

+ 33 - 10
pages/login/reg.vue

@@ -38,6 +38,22 @@
 				<text class="left" v-else></text>
 				<text class="right" @click="goPage('/pages/login/login')">已有账号?去登录</text>
 			</view>
+			<view class="agree">
+				<view class="agree2" @click="agreeChk()">
+					<image mode="widthFix" src="../../static/login/sel_no.png" v-if="is_agree == 0"></image>
+					<image mode="widthFix" src="../../static/login/sel_yes.png" v-if="is_agree == 1"></image>
+					<text>我已阅读并同意</text>
+				</view>
+				《
+				<text class="xy" @click="goPage('yhxy')">
+					隐私协议
+				</text>
+				》和《
+				<text class="xy" @click="goPage('yszc')">
+					用户使用协议
+				</text>
+				》
+			</view>
 			<text class="btn_submit" @click="toReg">注册</text>
 
 
@@ -101,16 +117,16 @@
 		onShow() {
 			let that = this;
 			// #ifdef APP-PLUS
-			uni.getLocation({
-				type: 'wgs84',
-				success: function(res) {
-					that.lat = res.latitude;
-					that.lng = res.longitude;
-				},
-				fail: function(error) {
-					console.error('获取位置失败:', error);
-				}
-			});
+			// uni.getLocation({
+			// 	type: 'wgs84',
+			// 	success: function(res) {
+			// 		that.lat = res.latitude;
+			// 		that.lng = res.longitude;
+			// 	},
+			// 	fail: function(error) {
+			// 		console.error('获取位置失败:', error);
+			// 	}
+			// });
 			// #endif
 		},
 		methods: {
@@ -190,6 +206,13 @@
 				}
 			},
 			toReg() {
+				if (this.is_agree == 0) {
+					uni.showToast({
+						title: "请确认并选择协议",
+						icon: "none",
+					});
+					return;
+				}
 				if (this.mobile.length != 11) {
 					uni.showToast({
 						title: "请输入手机号",

+ 103 - 7
pages/my/M_purchase.vue

@@ -7,7 +7,7 @@
 
 				<view class="purchaseList" style="margin-top: 60rpx;">
 					<view class="item" :class="index==sel?'itemSel':''" v-for="(item,index) in list"
-						@click="selTA(index)">
+						@click="selTA(item,index)">
 						<view class="num1">
 							<view class="name">{{ item.num_gmm }}M{{$t('txt.币')}}</view>
 						</view>
@@ -32,7 +32,7 @@
 							mode="heightFix" />
 					</view>
 				</view>
-				<view class="line"></view>
+				<!-- <view class="line"></view>
 				<view class="mingxiList" @click="selPay('alipay')">
 					<view class="left">
 						<image class="icon" src="../../static/me/icon_alipay.png" mode="widthFix" />
@@ -43,10 +43,10 @@
 							:src="payType=='alipay'?'../../static/me/icon_select.png':'../../static/me/icon_unsel.png'"
 							mode="heightFix" />
 					</view>
-				</view>
+				</view -->>
 				<view class="line"></view>
-				<view class="btn_submit">{{$t('txt.立即支付')}}{{$t('txt.¥')}}{{money}}</view>
-				<view class="bottom">
+				<view class="btn_submit" @click="submitData">{{$t('txt.立即支付')}}{{$t('txt.¥')}}{{money}}</view>
+				<view class="bottom" @click="goPage('/pages/AboutUs/pay_xy')">
 					<text style="font-size: 28rpx;color: #FFFFFF;">{{$t('txt.点击支付即代表同意')}}</text>
 					<text style="font-size: 28rpx;color: #FF2A95;">{{$t('txt.M币充值协议')}}</text>
 				</view>
@@ -73,7 +73,8 @@
 				payType: 'wechat',
 				list: [],
 				money: 0,
-
+				tid: 0,
+				linkid: '',
 
 			}
 		},
@@ -91,10 +92,17 @@
 		},
 		onShow() {
 			this.loadData();
+			let that = this;
 		},
 		methods: {
 			onBack() {},
-			selTA(se) {
+			goPage(page) {
+				uni.navigateTo({
+					url: page,
+				})
+			},
+			selTA(item, se) {
+				this.tid = item.id;
 				this.sel = se;
 				if (this.list != null && this.list != undefined) {
 					this.money = this.list[se]['money'];
@@ -111,6 +119,92 @@
 					this.sel = 1;
 				}
 			},
+			submitData() {
+				// #ifdef H5
+				uni.showToast({
+					title: '请使用app充值',
+					icon: "error"
+				});
+				return;
+				// #endif
+				let that = this;
+				uni.request({
+					url: this.$apiHost + '/Order/submit', //仅为示例,并非真实接口地址。
+					data: {
+						uuid: getApp().globalData.uuid,
+						product_id: this.tid,
+						type: 'buyM',
+						payType: 'wechat'
+					},
+					header: {
+						'content-type': 'application/json' //自定义请求头信息
+					},
+					success: (res) => {
+						console.log("res-pay", res.data);
+						if (res.data.success == 'yes') {
+							this.linkid = res.data.linkid;
+
+							uni.requestPayment({
+								"provider": "wxpay",
+								"orderInfo": res.data.wepay,
+								success(res) {
+									console.log("res-suu:", res)
+									setTimeout(function() {
+										that.showPayCall();
+									}, 1000);
+								},
+								fail(e) {
+									console.log("fail", e);
+								}
+							});
+						} else {
+							uni.showToast({
+								title: '创建订单失败,请联系客服',
+								icon: "error"
+							});
+						}
+					}
+				});
+			},
+			showPayCall() {
+				let that = this;
+				this.$refs['DialogBox'].confirm({
+					title: '提示',
+					content: '我已经支付完成',
+					DialogType: 'inquiry',
+					btn1: '否',
+					btn2: '是',
+					animation: 0
+				}).then((res) => {
+					uni.request({
+						url: this.$apiHost + "/Order/getstatus",
+						data: {
+							uuid: getApp().globalData.uuid,
+							linkid: that.linkid
+						},
+						header: {
+							"content-type": "application/json"
+						},
+						success: (res) => {
+							if (res.data.success == "yes") {
+								uni.showToast({
+									title: '充值成功',
+									icon: "none"
+								});
+							} else {
+								uni.showToast({
+									title: '还未检测到充值状态,请稍后再试',
+									icon: "none"
+								});
+								setTimeout(function() {
+									that.showPayCall();
+								}, 1000);
+							}
+						},
+						complete: (com) => {},
+					});
+				})
+			},
 			loadData() {
 				var offset = (this.page - 1) * 20;
 				uni.request({
@@ -126,6 +220,8 @@
 						this.num = res.data.num;
 						if (res.data.list != null && res.data.list != undefined) {
 							this.list = res.data.list;
+							this.tid = this.list[1]['id'];
+							this.sel = 1;
 							this.money = this.list[1]['money'];
 						}
 					}

+ 30 - 4
pages/my/my.vue

@@ -42,7 +42,7 @@
 					</view>
 					<view class="item" @click="goPage('/pages/my/recordList?type=GMM')">
 						<view class="num">
-							<text>{{myinfo.num_gmb}}</text>
+							<text>{{myinfo.num_gmm}}</text>
 							<view class="name">我的M币</view>
 						</view>
 					</view>
@@ -136,9 +136,35 @@
 				}
 			},
 			goPage(page) {
-				uni.navigateTo({
-					url: page,
-				})
+				if (page == 'kefu') {
+					let that = this;
+					// #ifdef APP-PLUS
+					plus.share.getServices(res => {
+						const wechat = res.find(i => i.id === 'weixin')
+						if (wechat) {
+							wechat.openCustomerServiceChat({
+								corpid: 'wwbc06aa8311b6ac08',
+								// url: 'https://work.weixin.qq.com/kfid/kfc4b0bcb4038d00a50'
+								url: that.myinfo.wxkf
+							}, src => {
+								console.log("success:")
+							}, err => {
+								console.log("error:")
+							})
+						} else {
+							uni.showToast({
+								title: '没有检测到微信,请先安装',
+								icon: "error"
+							});
+						}
+					});
+					// #endif
+
+				} else if (page != '') {
+					uni.navigateTo({
+						url: page,
+					})
+				}
 			},
 			loadData() {
 				console.log({

+ 29 - 6
pages/my/setting.vue

@@ -86,9 +86,9 @@
 					// 	'path': ''
 					// },
 					{
-						'name': '客服热线',
-						'desc': '400-888-1688',
-						'path': ''
+						'name': '企业客服',
+						'desc': '',
+						'path': 'kefu'
 					},
 				]
 			}
@@ -135,7 +135,31 @@
 			},
 			goPage(page) {
 				if (page == 'delete') {
-					this.DelMem()
+					this.DelMem();
+				} else if (page == 'kefu') {
+					let that = this;
+					// #ifdef APP-PLUS
+					plus.share.getServices(res => {
+						const wechat = res.find(i => i.id === 'weixin')
+						if (wechat) {
+							wechat.openCustomerServiceChat({
+								corpid: 'wwbc06aa8311b6ac08',
+								// url: 'https://work.weixin.qq.com/kfid/kfc4b0bcb4038d00a50'
+								url: that.myinfo.wxkf
+							}, src => {
+								console.log("success:")
+							}, err => {
+								console.log("error:")
+							})
+						} else {
+							uni.showToast({
+								title: '没有检测到微信,请先安装',
+								icon: "error"
+							});
+						}
+					});
+					// #endif
+
 				} else if (page != '') {
 					uni.navigateTo({
 						url: page,
@@ -161,8 +185,7 @@
 							'content-type': 'application/json' //自定义请求头信息
 						},
 						success: (res) => {
-							getApp().globalData.skey = "";
-							uni.removeStorageSync("wapptoken")
+							uni.removeStorageSync("wapptoken");
 							uni.redirectTo({
 								url: '/pages/login/login',
 							})

+ 17 - 2
pages/my/share_img.vue

@@ -7,7 +7,7 @@
 				<image class="img" :src="myinfo.share_img0" mode="widthFix"></image>
 
 				<view style="margin-top: 24rpx;" class="numlist">
-					<view class="num" @click="saveImg">
+					<view class="num" @click="shareImg">
 						<view class="img2">
 							<image src="../../static/icon/share_wx.png" mode="widthFix"></image>
 						</view>
@@ -92,11 +92,26 @@
 					}
 				});
 			},
+			shareImg() {
+				let that = this;
+				uni.share({
+					provider: "weixin",
+					scene: "WXSceneSession",
+					type: 2,
+					imageUrl: that.myinfo.share_img0,
+					success: function(res) {
+						console.log("success:" + JSON.stringify(res));
+					},
+					fail: function(err) {
+						console.log("fail:" + JSON.stringify(err));
+					}
+				});
+			},
 			saveImg() {
 				// #ifdef APP-PLUS
 				let that = this;
 				uni.showLoading({
-					title:'正在保存...',
+					title: '正在保存...',
 				})
 				uni.downloadFile({
 					url: that.myinfo.share_img0,

+ 2 - 2
pages/my/wish.vue

@@ -23,11 +23,11 @@
 					</view>
 					<view class="tit">
 						<view class="name">{{item.name}}</view>
-						<view class="desc">市场价:¥{{item.price}}</view>
+						<view class="desc" v-if="false">市场价:¥{{item.price}}</view>
 					</view>
 					<view class="list_mem">
 						<image class="icon" v-for="(item2,index2) in item.mem_list" :src="item2.avator"
-							mode="aspectFill" />
+							mode="aspectFill" v-if="index2 < 8 && item2.avator != ''" />
 					</view>
 					<view class="btn_submit" @click="JoinIt(item)" v-if="item.status == 1">加入心愿</view>
 					<view class="btn_submit gray" v-if="item.status == 2">已加入</view>

+ 4 - 4
pages/my/wishDetail.vue

@@ -4,12 +4,12 @@
 		<view class="list_info">
 			<view class="item">
 				<view class="avator">
-					<image class="icon" :src="info.image" mode="widthFix">
+					<image class="icon" :src="info.image" mode="aspectFill">
 					</image>
 				</view>
 				<view class="tit">
 					<view class="name">{{info.name}}</view>
-					<view class="desc">市场价:¥{{info.price}}</view>
+					<view class="desc" v-if="false">市场价:¥{{info.price}}</view>
 				</view>
 				<view class="jindu">
 					<view class="bord">
@@ -21,7 +21,7 @@
 					<view class="title">助力好友</view>
 					<view class="list_mem">
 						<view class="mem" v-for="(item,index) in info.mem_list">
-							<image class="icon" :src="item.avator" mode="widthFix" />
+							<image class="icon" :src="item.avator" mode="aspectFill" />
 							<text>{{item.nickname}}</text>
 						</view>
 					</view>
@@ -29,7 +29,7 @@
 					<view class="list_record">
 						<view class="record" v-for="(item,index) in info.mem_list">
 							<view class="left">
-								<image class="icon" :src="item.avator" mode="widthFix" />
+								<image class="icon" :src="item.avator" mode="aspectFill" />
 								<text>{{item.nickname}}</text>
 							</view>
 							<text class="right">{{item.create_time}}</text>

+ 1 - 1
pages/my/wishHelp.vue

@@ -9,7 +9,7 @@
 				</view>
 				<view class="tit">
 					<view class="name">{{info.name}}</view>
-					<view class="desc">市场价:¥{{info.price}}</view>
+					<view class="desc" v-if="false">市场价:¥{{info.price}}</view>
 				</view>
 				<view class="jindu">
 					<view class="bord">

+ 1 - 1
pages/my/wishList.vue

@@ -4,7 +4,7 @@
 		<view class="list_info">
 			<view class="item" v-for="(item,index) in list">
 				<view class="avator">
-					<image class="icon" :src="item.image" mode="widthFix" />
+					<image class="icon" :src="item.image" mode="aspectFill" />
 				</view>
 				<view class="left">
 					<view class="name">{{item.name}}</view>

+ 37 - 6
pages/w3/share_img.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class="page">
-		<uni-nav-bar rightWidth='136rpx' title="邀请战队成员" fixed  :border="false" statusBar backgroundColor="#24234B" color="#FFFFFF">
+		<uni-nav-bar rightWidth='136rpx' title="邀请战队成员" fixed :border="false" statusBar backgroundColor="#24234B"
+			color="#FFFFFF">
 			<template #left>
 				<view class="cl-topbar__icon" @click="navigateBack">
 					<text class="cl-icon-arrow-left"></text>
@@ -32,7 +33,9 @@
 <script>
 	import uniNavBar from '../../components/uni-ui/uni-nav-bar/uni-nav-bar.vue'
 	export default {
-		components: {uniNavBar},
+		components: {
+			uniNavBar
+		},
 		data() {
 			return {
 				title: '',
@@ -57,7 +60,7 @@
 		},
 		onShow() {},
 		methods: {
-			navigateBack(){
+			navigateBack() {
 				uni.navigateBack(1)
 			},
 			onBack() {},
@@ -95,13 +98,41 @@
 					}
 				});
 			},
-			sharePyq(){},
-			shareWx(){},
+			sharePyq() {
+				let that = this;
+				uni.share({
+					provider: "weixin",
+					scene: "WXSceneTimeline",
+					type: 2,
+					imageUrl: that.myinfo.share_img,
+					success: function(res) {
+						console.log("success:" + JSON.stringify(res));
+					},
+					fail: function(err) {
+						console.log("fail:" + JSON.stringify(err));
+					}
+				});
+			},
+			shareWx() {
+				let that = this;
+				uni.share({
+					provider: "weixin",
+					scene: "WXSceneSession",
+					type: 2,
+					imageUrl: that.myinfo.share_img,
+					success: function(res) {
+						console.log("success:" + JSON.stringify(res));
+					},
+					fail: function(err) {
+						console.log("fail:" + JSON.stringify(err));
+					}
+				});
+			},
 			saveImg() {
 				// #ifdef APP-PLUS
 				let that = this;
 				uni.showLoading({
-					title:'正在保存...',
+					title: '正在保存...',
 				})
 				uni.downloadFile({
 					url: that.myinfo.share_img,

+ 20 - 8
pages/w3/ucenter.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class="page">
-		<uni-nav-bar rightWidth='136rpx' title="" fixed  :border="false" statusBar backgroundColor="#24234B" color="#FFFFFF">
+		<uni-nav-bar rightWidth='136rpx' title="会员中心" fixed :border="false" statusBar backgroundColor="#24234B"
+			color="#FFFFFF">
 			<template #left>
 				<view class="cl-topbar__icon" @click="navigateBack">
 					<text class="cl-icon-arrow-left"></text>
@@ -14,20 +15,22 @@
 					<view class="user">
 						<image class="avator" mode="aspectFill" :src="myinfo.avator"></image>
 						<text class="nickname">{{myinfo.nickname}}</text>
-						<image class="iconV" mode="widthFix" :src="'http://c.yujianmate.com/images/v1/w3/w3_icon_'+(myinfo.level+1)+'.png'">
+						<image class="iconV" mode="widthFix" :src="img_w3_icon_lev">
 						</image>
 					</view>
 					<view class="num">{{myinfo.num_gmb}}</view>
 					<view class="desc">
 						可用数量
-						<image class="arrow" mode="widthFix" src="http://c.yujianmate.com/images/v1/w3/wenhao.png"></image>
+						<image class="arrow" mode="widthFix" src="http://c.yujianmate.com/images/v1/w3/wenhao.png">
+						</image>
 					</view>
 				</view>
 				<view class="right">
-					<image class="icon" mode="widthFix" :src="'http://c.yujianmate.com/images/v1/w3/w3_'+(myinfo.level+1)+'.png'"></image>
+					<image class="icon" mode="widthFix" :src="img_w3_lev"></image>
 					<view class="desc" @click="goPage('/pages/w3/levRule')">
 						查看晋升规则
-						<image class="arrow" mode="widthFix" src="http://c.yujianmate.com/images/v1/me/arrow_right.png"></image>
+						<image class="arrow" mode="widthFix" src="http://c.yujianmate.com/images/v1/me/arrow_right.png">
+						</image>
 					</view>
 				</view>
 			</view>
@@ -56,7 +59,8 @@
 		<view class="list_item" v-for="(item,index) in list" v-if="index == 0">
 			<view class="item2">
 				<view class="left">
-					<image class="icon" mode="widthFix" :src="'http://c.yujianmate.com/images/v1/w3/box/box_'+item.id+'.png'"></image>
+					<image class="icon" mode="widthFix"
+						:src="'http://c.yujianmate.com/images/v1/w3/box/box_'+item.id+'.png'"></image>
 					<view class="price">
 						{{item.num_dui}}暗物质
 					</view>
@@ -103,7 +107,9 @@
 <script>
 	import uniNavBar from '../../components/uni-ui/uni-nav-bar/uni-nav-bar.vue'
 	export default {
-		components: {uniNavBar},
+		components: {
+			uniNavBar
+		},
 		data() {
 			return {
 				title: '',
@@ -130,6 +136,8 @@
 				tid: 0,
 				audio: null,
 				record_id: 0,
+				img_w3_icon_lev: '',
+				img_w3_lev: '',
 			}
 		},
 		onLoad() {
@@ -145,7 +153,7 @@
 			this.loadBoxList();
 		},
 		methods: {
-			navigateBack(){
+			navigateBack() {
 				uni.navigateBack(1)
 			},
 			goPage(page) {
@@ -166,6 +174,10 @@
 					success: (res) => {
 						console.log("----:", res.data);
 						this.myinfo = res.data;
+						this.img_w3_icon_lev = 'http://c.yujianmate.com/images/v1/w3/w3_icon_' + (this.myinfo
+							.level + 1) + '.png';
+						this.img_w3_lev = 'http://c.yujianmate.com/images/v1/w3/w3_' + (this.myinfo.level +
+							1) + '.png';
 					},
 					complete: (com) => {
 						// uni.hideLoading();

Деякі файли не було показано, через те що забагато файлів було змінено