diff --git a/mixins/config.js b/mixins/config.js index dfcc980..0911345 100644 --- a/mixins/config.js +++ b/mixins/config.js @@ -1,3 +1,7 @@ + +import { mapState } from 'vuex' + + export default { data() { return { @@ -20,6 +24,8 @@ export default { }, }, computed: { + ...mapState(['userInfo']), + // 获取全局配置的文本 configParamInfo() { return key => this.$store.state.configList[key]?.info diff --git a/pages/index/home.vue b/pages/index/home.vue index 70fe2bc..c243cfd 100644 --- a/pages/index/home.vue +++ b/pages/index/home.vue @@ -418,6 +418,10 @@ export default { this.detectDevice() this.getArticleList() + + if (uni.getStorageSync('token')) { + this.$store.dispatch('getUserInfo'); + } // 先获取基础数据 await Promise.all([this.getBanner(), this.getSignup(), this.getCategory(), this.getLabel()]) diff --git a/pages/index/user.vue b/pages/index/user.vue index 565db28..23ec1d4 100644 --- a/pages/index/user.vue +++ b/pages/index/user.vue @@ -1,475 +1,481 @@ \ No newline at end of file diff --git a/stores/index.js b/stores/index.js index e3b1647..2400b57 100644 --- a/stores/index.js +++ b/stores/index.js @@ -136,6 +136,12 @@ const store = new Vuex.Store({ updateUserInfo({ commit }, userInfo) { commit('setUserInfo', userInfo) }, + async getUserInfo({ commit }) { + const res = await api.login.getUserInfo(); + if (res.code === 200) { + commit('setUserInfo', res.result); + } + }, } }) diff --git a/subPages/home/AudioControls.vue b/subPages/home/AudioControls.vue index ec1a9b1..1dd242d 100644 --- a/subPages/home/AudioControls.vue +++ b/subPages/home/AudioControls.vue @@ -188,6 +188,10 @@ export default { // 判断音频功能是否应该被禁用(会员限制页面且用户非会员) isAudioDisabled() { + // 免费用户不受音频播放限制 + if (this.userInfo && this.userInfo.freeUser === 'Y') { + return false; + } return this.currentPageRequiresMember && !this.isMember; }, @@ -2528,7 +2532,9 @@ export default { // 检查页面是否需要会员且用户非会员,如果是则跳过 const pageRequiresMember = this.pagePay[i] === 'Y'; - if (pageRequiresMember && !this.isMember) { + // 免费用户不受会员限制 + const isFreeUser = this.userInfo && this.userInfo.freeUser === 'Y'; + if (pageRequiresMember && !this.isMember && !isFreeUser) { continue; } @@ -2822,8 +2828,6 @@ export default { return; } - - // 重置播放状态 this.currentAudioIndex = 0; this.currentTime = 0; diff --git a/subPages/home/book.vue b/subPages/home/book.vue index d46322c..f881e29 100644 --- a/subPages/home/book.vue +++ b/subPages/home/book.vue @@ -12,7 +12,6 @@ {{ currentPageTitle }} - @@ -26,7 +25,7 @@ {{ currentPageTitle }} - + {{ pageTitles[index] }} 升级会员解锁 @@ -212,6 +211,11 @@ export default { pagePay: [], } }, + onShow() { + if (uni.getStorageSync('token')) { + this.$store.dispatch('getUserInfo'); + } + }, computed: { displayCourseList() { return this.isReversed ? [...this.courseList].reverse() : this.courseList; @@ -261,6 +265,10 @@ export default { // 当前页面是否需要会员 currentPageRequiresMember() { + // 免费用户不受会员限制 + if (this.userInfo && this.userInfo.freeUser === 'Y') { + return false; + } return this.pagePay[this.currentPage - 1] === 'Y'; }, @@ -395,12 +403,16 @@ export default { // 獲取用戶會員信息 判斷是否和傳參傳過來的會員id相同 async getMemberInfo() { + // 检查是否为免费用户 + if (this.userInfo && this.userInfo.freeUser === 'Y') { + this.isMember = true; // 免费用户享有会员权限 + return; + } + const memberRes = await this.$api.member.getUserMemberInfo() if (memberRes.code === 200) { this.isMember = memberRes.result.map(item => item.memberId).includes(this.memberId) - } - }, // 处理AudioControls组件的事件