├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

App.vue 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <view :class="['app-container', `theme-${themeStore.currentTheme}`]">
  3. <router-view />
  4. </view>
  5. </template>
  6. <script>
  7. import config from './config'
  8. import { getToken } from '@/utils/auth'
  9. import { onLaunch, onShow } from '@dcloudio/uni-app'
  10. import { mapState } from 'pinia'
  11. import { useThemeStore } from '@/store/theme' // 修正路径
  12. import { useUserStore } from '@/store/user' // 修正路径
  13. import { useVipStore } from '@/store/vip' // 修正路径
  14. import { useReminder } from '@/utils/reminder'
  15. import { readingService } from '@/services/readingService'
  16. export default {
  17. data() {
  18. return {
  19. }
  20. },
  21. computed: {
  22. ...mapState(useThemeStore, ['currentTheme']),
  23. ...mapState(useUserStore, ['user']),
  24. ...mapState(useVipStore, ['vipStatus'])
  25. },
  26. onLaunch() {
  27. // 初始化主题
  28. const themeStore = useThemeStore()
  29. themeStore.initTheme()
  30. // 检查登录状态
  31. this.checkLogin()
  32. // 初始化用户
  33. this.userStore.initUser()
  34. // 初始化签到提醒
  35. useReminder.init()
  36. // 登录成功后同步进度
  37. // uni.$on('loginSuccess', async () => {
  38. // await readingService.syncAllLocalProgress()
  39. // uni.showToast({ title: '阅读进度已同步', icon: 'success' })
  40. // })
  41. // 检查登录状态
  42. //this.checkLogin()
  43. },
  44. onShow() {
  45. // 加载用户和VIP状态
  46. this.loadUserData()
  47. },
  48. methods: {
  49. // 初始化应用配置
  50. initConfig() {
  51. this.globalData.config = config
  52. },
  53. // 检查用户登录状态
  54. checkLogin() {
  55. if (!getToken()) {
  56. this.$tab.reLaunch('/pages/login')
  57. }
  58. },
  59. // 同步阅读进度(需要实现)
  60. async syncReadingProgress() {
  61. // 实现阅读进度同步逻辑
  62. console.log('阅读进度同步逻辑待实现')
  63. },
  64. // 加载用户数据
  65. async loadUserData() {
  66. // 检查登录状态
  67. if (uni.getStorageSync('token')) {
  68. // 加载用户信息
  69. await this.userStore.initUser()
  70. // 加载VIP状态
  71. if (this.userStore.userId) {
  72. await this.vipStore.loadVipStatus(this.userStore.userId)
  73. }
  74. }
  75. }
  76. }
  77. }
  78. </script>
  79. <style lang="scss">
  80. /* 确保所有页面有基本样式 */
  81. page {
  82. height: 100%;
  83. background-color: #ffffff;
  84. font-size: 28rpx;
  85. color: #333;
  86. }
  87. /* 解决部分设备显示问题 */
  88. body, html {
  89. height: 100%;
  90. background-color: #ffffff;
  91. }
  92. /* 容器样式 */
  93. .container {
  94. min-height: 100%;
  95. padding: 20rpx;
  96. box-sizing: border-box;
  97. }
  98. /* 修正:每个 @import 语句末尾添加分号 */
  99. @import '@/static/scss/index.scss';
  100. //@import '@/styles/themes/default.scss';
  101. //@import '@/styles/themes/aydz-blue.scss';
  102. .app-container {
  103. font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  104. height: 100vh;
  105. background-color: var(--bg-color);
  106. color: var(--text-color);
  107. }
  108. /* 全局主题变量 */
  109. :root {
  110. --primary-color: #1890ff;
  111. --bg-color: #f8f9fa;
  112. --text-color: #333;
  113. --card-bg: #ffffff;
  114. --header-bg: #ffffff;
  115. /* 确保所有页面继承主题 */
  116. background-color: var(--bg-color);
  117. color: var(--text-color);
  118. }
  119. /* 哎呀科技蓝主题变量覆盖 */
  120. .theme-aydzBlue {
  121. --primary-color: #2a5caa;
  122. --bg-color: #e6f7ff;
  123. --text-color: #1a3353;
  124. --card-bg: #d0e8ff;
  125. --header-bg: #2a5caa;
  126. }
  127. /* 深色模式主题变量覆盖 */
  128. .theme-darkMode {
  129. --primary-color: #52c41a;
  130. --bg-color: #1a1a1a;
  131. --text-color: #e6e6e6;
  132. --card-bg: #2a2a2a;
  133. --header-bg: #1a1a1a;
  134. }
  135. /* 公共组件样式 */
  136. .card {
  137. background-color: var(--card-bg);
  138. border-radius: 12px;
  139. padding: 16px;
  140. margin-bottom: 16px;
  141. box-shadow: 0 2px 8px rgba(0,0,0,0.05);
  142. }
  143. .primary-button {
  144. background-color: var(--primary-color);
  145. color: white;
  146. border: none;
  147. border-radius: 24px;
  148. padding: 10px 20px;
  149. font-weight: bold;
  150. }
  151. /* 全局样式 */
  152. page {
  153. background-color: var(--bg-color);
  154. color: var(--text-color);
  155. font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  156. }
  157. </style>