Jelajahi Sumber

Merge remote-tracking branch 'origin/2025鹅状元数学' into 2025鹅状元数学

# Conflicts:
#	components/goLogin/goLogin.vue
wangxy 6 hari lalu
induk
melakukan
b94588175b

+ 16 - 35
App.vue

@@ -20,41 +20,23 @@
 			// #ifdef APP-PLUS
 			// 有auth
 			if (cacheManager.get('auth')) {
-				banbenImpinfo({}).then(res => {
-					if (res.code == 0) {
-						if (res.data.chanpinId != 0) {
-							if (cacheManager.get('xuexi-shuxue')) {
-								cacheManager.remove("xuexi-shuxue")
-							}
-							// 预防丢失
-							cacheManager.updateObject("auth",{
-								banbenId:res.data.banbenId,
-								chanpinId:res.data.chanpinId,
-								danyuanId:res.data.danyuanId,
-								dengjiId:res.data.dengjiId,
-							})
-							uni.switchTab({
-								url: `/pages/chanpinneirong/index`,
-								success() {
-									plus.navigator.closeSplashscreen();
-								}
-							})
-						} else {
-							
-							// 没学过
-							uni.switchTab({
-								url: `/pages/chanpinXuanze/index`,
-								success() {
-									plus.navigator.closeSplashscreen();
-								}
-							})
+				// 有内容缓存 跳到学习页面
+				if (cacheManager.get('contentInfo')) {
+					uni.switchTab({
+						url: `/pages/chanpinneirong/index`,
+						success() {
+							plus.navigator.closeSplashscreen();
 						}
-					}
-				}).catch(() => {
-					toast("App.vue,banbenImpinfo接口错误")
-					cacheManager.clearAll()
-					return false
-				})
+					})
+				} else {
+					//没有内容缓存 请求接口
+					uni.switchTab({
+						url: `/pages/chanpinXuanze/index`,
+						success() {
+							plus.navigator.closeSplashscreen();
+						}
+					})
+				}
 			} else {
 				cacheManager.clearAll()
 				uni.reLaunch({
@@ -64,7 +46,6 @@
 					}
 				});
 			}
-
 			// #endif
 		},
 		onShow: function() {

+ 11 - 0
api/login.js

@@ -87,4 +87,15 @@ export function banbenImpinfo(data = {}) {
     data,
     timeout: 20000
   })
+}
+export function youkeLogin(data = {}) {
+  return request({
+    'url': '/common/app/login/youke',
+    headers: {
+      isToken: false
+    },
+    method: 'post',
+    data,
+    timeout: 20000
+  })
 }

+ 4 - 5
components/goLogin/goLogin.vue

@@ -18,7 +18,7 @@
 			<input class="phone-input" type="text" v-model="loginData.yzmNumber" placeholder="请输入验证码" maxlength="4"
 				@input="clearYzmInput" />
 			<view class="close-btn" v-if="loginData.clearYzmIcon" @click="clearYzm"></view>
-			
+
 			<text class="cxfs-btn" @click="startCountdown"
 				:class="{ 'cxfs-btn-disabled': loginData.isDisabled}">{{loginData.buttonText}}</text>
 		</view>
@@ -59,7 +59,6 @@
 	} from "@/utils/common";
 	import {
 		login,
-		banbenImpinfo,
 		sendCode
 	} from "@/api/login";
 	import cacheManager from "@/utils/cacheManager";
@@ -126,7 +125,7 @@
 			loginData.telStatus = 'login-btn-disabled';
 		}
 	}
-	
+
 	const validatePhone = (value) => {
 		const phoneRegex = /^1[3-9]\d{9}$/;
 		return phoneRegex.test(value)
@@ -222,12 +221,12 @@
 	}
 
 	function startCountdown() {
-		
+
 		if (!loginData.phoneNumber) {
 			toast('请输入手机号')
 			return;
 		}
-		
+
 		if (loginData.buttonText === '重新发送' ||loginData.buttonText ===  '获取验证码') {
 			showCaptcha();
 			return;

+ 7 - 7
pages/chanpinneirong/index.vue

@@ -140,7 +140,7 @@
 		},
 		onShow() {
 			this.currentTabIndex = 1
-			const cacheData = cacheManager.get('xuexi-shuxue');
+			const cacheData = cacheManager.get('contentInfo');
 
 			if (cacheData) {
 				console.log('使用缓存数据');
@@ -184,7 +184,7 @@
 			// 从缓存更新数据方法
 			updateFromCache() {
 				updateXuexiProcess()
-				const cacheData = cacheManager.get('xuexi-shuxue');
+				const cacheData = cacheManager.get('contentInfo');
 				console.log('cacheData 从缓存更新数据方法', cacheData);
 				if (cacheData) {
 					this.banbenInfo = {
@@ -225,7 +225,7 @@
 							danyuanId: this.danyuanId,
 							dengjiId: this.dengjiId
 						};
-						cacheManager.set('xuexi-shuxue', cacheData);
+						cacheManager.set('contentInfo', cacheData);
 
 						// 更新全局auth信息
 						cacheManager.updateObject('auth', {
@@ -243,7 +243,7 @@
 						// });
 					}
 				}).catch(res => {
-					cacheManager.remove("xuexi-shuxue");
+					cacheManager.remove("contentInfo");
 					toast("加载失败,请重试");
 				});
 			},
@@ -295,13 +295,13 @@
 							return false;
 						}
 
-						const cacheData = cacheManager.get('xuexi-shuxue') || {};
+						const cacheData = cacheManager.get('contentInfo') || {};
 						cacheData.curDanyuanName = curJieAndDanyuan.danyuan.danyuanName;
 						cacheData.curKechengName = curJieAndDanyuan.jie.jieIntro;
 						cacheData.danyuanId = curJieAndDanyuan.jie.danyuanId;
 						cacheData.curJieId = jieId;
 						cacheData.type = curJieAndDanyuan.jie.type;
-						cacheManager.set('xuexi-shuxue', cacheData);
+						cacheManager.set('contentInfo', cacheData);
 
 						if (type == 1) {
 							uni.navigateTo({
@@ -354,4 +354,4 @@
 
 		}
 	}
-</script>
+</script>

+ 4 - 4
pages/chanpinneirong/useNeirongShuxue.js

@@ -1,7 +1,7 @@
 import cacheManager from "@/utils/cacheManager.js";
 
 export function updateXuexiProcess() {
-	const cacheData = cacheManager.get('xuexi-shuxue');
+	const cacheData = cacheManager.get('contentInfo');
 	console.log('cacheData333333', cacheData)
 	const list = cacheData.danyuanList;
 	const defaultCurProcess = cacheData.curProcess;
@@ -9,8 +9,8 @@ export function updateXuexiProcess() {
 	list.forEach(item => {
 		mList = [...mList, ...item.jieList]
 	})
-	
+
 	const process = mList.filter(item => item.wanchengFlag).length/mList.length * 100 || 0;
 	cacheData.curProcess = defaultCurProcess > process ? defaultCurProcess: process;
-	cacheManager.set('xuexi-shuxue', cacheData);
-}
+	cacheManager.set('contentInfo', cacheData);
+}

+ 51 - 12
pages/login/index.vue

@@ -20,22 +20,23 @@
 						@click="agreeBtn('ystk')" class="agreement-text">《隐私政策》</view>
 				</view>
 			</view>
-			<ezyActiveVue class="ezy-btn-active login-btn" @aclick="getYzmBtn" :class="indexData.telStatus">发送验证码</ezyActiveVue>
+			<ezyActiveVue class="ezy-btn-active login-btn" @aclick="getYzmBtn" :class="indexData.telStatus">发送验证码
+			</ezyActiveVue>
 			<view class="bottom-btn-box">
-				<view class="bottom-tip">选择第三方登录</view>
+				<view class="bottom-tip">选择游客登录</view>
 				<view class="btn-box">
-					<view v-if="wxFlag" class="wx-btn" @click="wxLoginClick">
+					<!-- 		<view v-if="wxFlag" class="wx-btn" @click="wxLoginClick">
 						<icon></icon>
 						<view>微信登录</view>
-					</view>
-					<!-- 			<view class="yk-btn" @click="ykBtn">
+					</view> -->
+					<view class="yk-btn" @click="ykBtn">
 						<icon></icon>
 						<view>游客登录</view>
-					</view> -->
-					<view class="apple-btn" v-if="showAppleLogin" @click="appleLoginClick">
+					</view>
+					<!-- 	<view class="apple-btn" v-if="showAppleLogin" @click="appleLoginClick">
 						<icon></icon>
 						<view>苹果登录</view>
-					</view>
+					</view> -->
 				</view>
 			</view>
 		</view>
@@ -63,7 +64,8 @@
 	import agreeDialog from './agreeDialog.vue'
 	import {
 		wxLogin,
-		getVersion
+		getVersion,
+		youkeLogin
 	} from "@/api/login.js"
 	import {
 		toast,
@@ -77,7 +79,7 @@
 		error
 	} from "uview-plus";
 	import ezyActiveVue from "@/components/ezyActive/ezyActive.vue";
-	
+
 	let indexData = reactive({
 		phoneNumber: null,
 		clearTelIcon: false,
@@ -97,12 +99,14 @@
 
 	const version = config.appInfo.version;
 	const tipDialogRef = ref(null);
+	const uuid = ref(null);
 	const tipTitle = '升级提醒';
 	const tipContent = '您的APP不是最新版本,部分功能不能使用,请升级至最新版本!';
 
 	onLoad((options) => {
 		showAppleLogin.value = isIOS13OrAbove();
 		getLoginInit()
+		getUUid()
 		if (plus.runtime.isApplicationExist({
 				pname: 'com.tencent.mm',
 				action: 'weixin://'
@@ -207,6 +211,20 @@
 		}
 		agreeContentDialogRef.value.handleShow();
 	};
+	const getUUid = (data) => {
+		plus.device.getInfo({
+			success: (res) => {
+				// res.uuid 是设备的 UUID(iOS 下为 identifierForVendor)
+				console.log('res', res);
+				uuid.value = res.uuid;
+				console.log('iOS 设备 UUID:', uuid.value);
+
+			},
+			fail: (err) => {
+				console.error('获取设备信息失败:', err);
+			}
+		});
+	};
 
 	const handleAgreementChange = (event) => {
 		if (event.detail.value[0] === 'agree') {
@@ -217,10 +235,31 @@
 	}
 	// 游客登录
 	const ykBtn = () => {
+		const systemInfo = uni.getSystemInfoSync();
 		if (indexData.isAgreed === true) {
-			uni.redirectTo({
-				url: `/pages/selectGradesTerms/index`
+
+			if (!uuid.value) {
+				toast("设备id丢失")
+				getUUid()
+				return false
+			}
+			let req = {
+				uuid: uuid.value
+			}
+			youkeLogin(req).then(res => {
+				if (res.code == 0) {
+					cacheManager.set('auth', res.data)
+					uni.switchTab({
+						url: `/pages/chanpinXuanze/index`
+					})
+				}
 			})
+
+
+
+			// uni.redirectTo({
+			// 	url: `/pages/selectGradesTerms/index`
+			// })
 		} else {
 			agreeYkDialog.value.handleShow();
 		}

+ 9 - 38
pages/login/login.vue

@@ -11,7 +11,8 @@
 						maxlength="4" @input="clearYzmInput" />
 					<view class="close-btn" v-if="loginData.clearYzmIcon" @click="clearYzm"></view>
 				</view>
-				<ezyActiveVue class="ezy-btn-active login-btn yzm-btn" @aclick="loginBtn" :class="loginData.yzmStatus">登录</ezyActiveVue>
+				<ezyActiveVue class="ezy-btn-active login-btn yzm-btn" @aclick="loginBtn" :class="loginData.yzmStatus">
+					登录</ezyActiveVue>
 				<text class="cxfs-btn" @click="startCountdown"
 					:class="{ 'cxfs-btn-disabled': loginData.isDisabled}">{{loginData.buttonText}}</text>
 				<text class="login-text" @click="goIndex">无法收到验证码</text>
@@ -59,14 +60,15 @@
 					captchaId: "9d5837b0807b8de44da0de310a0b2813",
 				},
 				banbenId: '',
-				chanpinId: '',
-				danyuanId:'',
-				dengjiId:''
+				chanpinId: '',
+				danyuanId: '',
+				dengjiId: ''
 
 			}
 		},
 		components: {
-			captcha,ezyActiveVue
+			captcha,
+			ezyActiveVue
 		},
 		onLoad(options) {
 			this.loginInit(options);
@@ -123,39 +125,8 @@
 				login(req).then(res => {
 					if (res.code == 0) {
 						cacheManager.set('auth', res.data)
-						setTimeout(() => {
-							banbenImpinfo({}).then(res => {
-								if (res.code == 0) {
-									console.log('banbenImpinfores',res);
-									this.banbenId = res.data.banbenId
-									this.chanpinId = res.data.chanpinId
-									this.danyuanId = res.data.danyuanId
-									this.dengjiId = res.data.dengjiId
-									cacheManager.updateObject("auth",{
-										banbenId:res.data.banbenId,
-										chanpinId:res.data.chanpinId,
-										danyuanId:res.data.danyuanId,
-										dengjiId:res.data.dengjiId,
-									})
-									if(this.chanpinId ==0){
-										// 没学过
-										uni.switchTab({
-											url: `/pages/chanpinXuanze/index`
-										})
-									}else{
-										if (cacheManager.get('xuexi-shuxue')) {
-											cacheManager.remove("xuexi-shuxue")
-										}
-										// 学过直接到学习页面
-										uni.switchTab({
-											url: `/pages/chanpinneirong/index`,
-										})
-									}
-								}
-							}).catch(() => {
-								toast('banbenImpinfo出错')
-								return false
-							})
+						uni.switchTab({
+							url: `/pages/chanpinXuanze/index`
 						})
 					}
 				})

+ 4 - 4
utils/cacheManager.js

@@ -109,7 +109,7 @@ const cacheManager = (function() {
 		}, obj);
 	}
 	function updateShuxueWanchengStatus(currentJieId) {
-	    let obj = get('xuexi-shuxue') || {};
+	    let obj = get('contentInfo') || {};
 	    if (obj && obj.danyuanList) {
 	        obj.danyuanList.forEach(danyuan => {
 	            if (danyuan.jieList) {
@@ -120,9 +120,9 @@ const cacheManager = (function() {
 	            }
 	        });
 	    }
-	    set('xuexi-shuxue', obj);
+	    set('contentInfo', obj);
 	}
-	
+
 	return {
 		set,
 		get,
@@ -147,4 +147,4 @@ export function useUnitTestTishi() {
 		updateTishi: () => cacheManager.set(SHOW_UNIT_TEST_TISHI, 'has'),
 		getTishi: () => cacheManager.get(SHOW_UNIT_TEST_TISHI)
 	}
-}
+}