hookehuyr

refactor(components): 重构组件目录结构,将UI组件按功能分类到对应子目录

将原ui目录下的组件按功能分类移动到新的子目录中:
- 将GradientHeader、ConfirmDialog等基础组件移至common目录
- 将CourseCard、LiveStreamCard等课程相关组件移至courses目录
- 将FrostedGlass等视觉特效组件移至effects目录
- 将VideoPlayer、AudioPlayer等媒体组件移至media目录
- 将CheckInDialog等打卡相关组件移至checkin目录
- 更新所有引用路径以匹配新的目录结构
Showing 83 changed files with 140 additions and 114 deletions
...@@ -262,3 +262,22 @@ src/ ...@@ -262,3 +262,22 @@ src/
262 - 选中对象首次会弹窗确认(标记 `has_confirmed`),支持新增/编辑;删除对象调用 `gratitudeDeleteAPI`(当前页面内未引入该 API,需补齐后才可生效)。 262 - 选中对象首次会弹窗确认(标记 `has_confirmed`),支持新增/编辑;删除对象调用 `gratitudeDeleteAPI`(当前页面内未引入该 API,需补齐后才可生效)。
263 - 预览能力: 263 - 预览能力:
264 - 上传组件点击预览时,根据扩展名识别:音频使用 `AudioPlayer` 底部弹窗;视频使用 `VideoPlayer` 居中弹窗(封面 → 点击播放 → 关闭时重置进度);图片使用 `van-image-preview` 264 - 上传组件点击预览时,根据扩展名识别:音频使用 `AudioPlayer` 底部弹窗;视频使用 `VideoPlayer` 居中弹窗(封面 → 点击播放 → 关闭时重置进度);图片使用 `van-image-preview`
265 +
266 +## /src/components 目录下组件
267 +
268 +| 目标目录(src/components/) | 包含组件 | 说明 |
269 +| --------------------------- | ------------------------------------------------------------ | ---------------- |
270 +| `checkin/` | `CheckInDialog.vue`, `CheckInList.vue`, `CheckInResult.vue` | 打卡相关组件 |
271 +| `media/` | `AudioPlayer.vue`, `VideoPlayer.vue`, `MusicPlayer.vue` | 音视频播放组件 |
272 +| `activity/` | `ActivityApplyHistoryPopup.vue`, `ActivityCard.vue`, `ActivityStatusBadge.vue`, `ActivityTicket.vue` | 活动相关组件 |
273 +| `common/` | `ConfirmDialog.vue`, `GradientHeader.vue`, `MenuItem.vue`, `SearchBar.vue`, `TermsPopup.vue`, `UserAgreement.vue` | 通用基础组件 |
274 +| `effects/` | `FrostedGlass.vue`, `LoadingSpinner.vue` | 视觉特效组件 |
275 +| `courses/` | `CourseCard.vue`, `LiveStreamCard.vue` | 课程展示组件 |
276 +| `payment/` | `WechatPayment.vue` | 支付组件 |
277 +| `studyDetail/` | `StudyMaterialsPopup.vue` | 学习资料弹窗 |
278 +| `layout/` | `AppLayout.vue`, `BottomNav.vue` | 布局与导航 |
279 +| `share/` | `SharePoster.vue` | 分享海报 |
280 +| `files/` | `FilePreview.vue` | 文件预览 |
281 +| `feedback/` | `FeedbackForm.vue` | 反馈表单 |
282 +
283 +---
......
...@@ -8,52 +8,52 @@ export {} ...@@ -8,52 +8,52 @@ export {}
8 /* prettier-ignore */ 8 /* prettier-ignore */
9 declare module 'vue' { 9 declare module 'vue' {
10 export interface GlobalComponents { 10 export interface GlobalComponents {
11 - ActivityApplyHistoryPopup: typeof import('./components/ui/ActivityApplyHistoryPopup.vue')['default'] 11 + ActivityApplyHistoryPopup: typeof import('./components/activity/ActivityApplyHistoryPopup.vue')['default']
12 - ActivityCard: typeof import('./components/ui/ActivityCard.vue')['default'] 12 + ActivityCard: typeof import('./components/activity/ActivityCard.vue')['default']
13 AddTargetDialog: typeof import('./components/count/AddTargetDialog.vue')['default'] 13 AddTargetDialog: typeof import('./components/count/AddTargetDialog.vue')['default']
14 AppLayout: typeof import('./components/layout/AppLayout.vue')['default'] 14 AppLayout: typeof import('./components/layout/AppLayout.vue')['default']
15 - AudioPlayer: typeof import('./components/ui/AudioPlayer.vue')['default'] 15 + AudioPlayer: typeof import('./components/media/AudioPlayer.vue')['default']
16 BottomNav: typeof import('./components/layout/BottomNav.vue')['default'] 16 BottomNav: typeof import('./components/layout/BottomNav.vue')['default']
17 CheckinCard: typeof import('./components/checkin/CheckinCard.vue')['default'] 17 CheckinCard: typeof import('./components/checkin/CheckinCard.vue')['default']
18 - CheckInDialog: typeof import('./components/ui/CheckInDialog.vue')['default'] 18 + CheckInDialog: typeof import('./components/checkin/CheckInDialog.vue')['default']
19 - CheckInList: typeof import('./components/ui/CheckInList.vue')['default'] 19 + CheckInList: typeof import('./components/checkin/CheckInList.vue')['default']
20 CheckinTargetList: typeof import('./components/count/CheckinTargetList.vue')['default'] 20 CheckinTargetList: typeof import('./components/count/CheckinTargetList.vue')['default']
21 - CollapsibleCalendar: typeof import('./components/ui/CollapsibleCalendar.vue')['default'] 21 + CollapsibleCalendar: typeof import('./components/calendar/CollapsibleCalendar.vue')['default']
22 - ConfirmDialog: typeof import('./components/ui/ConfirmDialog.vue')['default'] 22 + ConfirmDialog: typeof import('./components/common/ConfirmDialog.vue')['default']
23 - CourseCard: typeof import('./components/ui/CourseCard.vue')['default'] 23 + CourseCard: typeof import('./components/courses/CourseCard.vue')['default']
24 - CourseGroupCascader: typeof import('./components/ui/CourseGroupCascader.vue')['default'] 24 + CourseGroupCascader: typeof import('./components/courses/CourseGroupCascader.vue')['default']
25 - CourseImageCard: typeof import('./components/ui/CourseImageCard.vue')['default'] 25 + CourseImageCard: typeof import('./components/courses/CourseImageCard.vue')['default']
26 CourseList: typeof import('./components/courses/CourseList.vue')['default'] 26 CourseList: typeof import('./components/courses/CourseList.vue')['default']
27 FeaturedCoursesSection: typeof import('./components/homePage/FeaturedCoursesSection.vue')['default'] 27 FeaturedCoursesSection: typeof import('./components/homePage/FeaturedCoursesSection.vue')['default']
28 FormPage: typeof import('./components/infoEntry/formPage.vue')['default'] 28 FormPage: typeof import('./components/infoEntry/formPage.vue')['default']
29 - FrostedGlass: typeof import('./components/ui/FrostedGlass.vue')['default'] 29 + FrostedGlass: typeof import('./components/effects/FrostedGlass.vue')['default']
30 - GradientHeader: typeof import('./components/ui/GradientHeader.vue')['default'] 30 + GradientHeader: typeof import('./components/common/GradientHeader.vue')['default']
31 HotCoursesSection: typeof import('./components/homePage/HotCoursesSection.vue')['default'] 31 HotCoursesSection: typeof import('./components/homePage/HotCoursesSection.vue')['default']
32 LatestActivitiesSection: typeof import('./components/homePage/LatestActivitiesSection.vue')['default'] 32 LatestActivitiesSection: typeof import('./components/homePage/LatestActivitiesSection.vue')['default']
33 - LiveStreamCard: typeof import('./components/ui/LiveStreamCard.vue')['default'] 33 + LiveStreamCard: typeof import('./components/courses/LiveStreamCard.vue')['default']
34 - MenuItem: typeof import('./components/ui/MenuItem.vue')['default'] 34 + MenuItem: typeof import('./components/common/MenuItem.vue')['default']
35 - OfficeViewer: typeof import('./components/ui/OfficeViewer.vue')['default'] 35 + OfficeViewer: typeof import('./components/media/OfficeViewer.vue')['default']
36 - PdfPreview: typeof import('./components/ui/PdfPreview.vue')['default'] 36 + PdfPreview: typeof import('./components/media/PdfPreview.vue')['default']
37 - PdfViewer: typeof import('./components/ui/PdfViewer.vue')['default'] 37 + PdfViewer: typeof import('./components/media/PdfViewer.vue')['default']
38 PostCountModel: typeof import('./components/count/postCountModel.vue')['default'] 38 PostCountModel: typeof import('./components/count/postCountModel.vue')['default']
39 - RecallPoster: typeof import('./components/ui/RecallPoster.vue')['default'] 39 + RecallPoster: typeof import('./components/poster/RecallPoster.vue')['default']
40 RecommendationsSection: typeof import('./components/homePage/RecommendationsSection.vue')['default'] 40 RecommendationsSection: typeof import('./components/homePage/RecommendationsSection.vue')['default']
41 ReviewPopup: typeof import('./components/courses/ReviewPopup.vue')['default'] 41 ReviewPopup: typeof import('./components/courses/ReviewPopup.vue')['default']
42 RouterLink: typeof import('vue-router')['RouterLink'] 42 RouterLink: typeof import('vue-router')['RouterLink']
43 RouterView: typeof import('vue-router')['RouterView'] 43 RouterView: typeof import('vue-router')['RouterView']
44 - SearchBar: typeof import('./components/ui/SearchBar.vue')['default'] 44 + SearchBar: typeof import('./components/common/SearchBar.vue')['default']
45 - SharePoster: typeof import('./components/ui/SharePoster.vue')['default'] 45 + SharePoster: typeof import('./components/poster/SharePoster.vue')['default']
46 StarryBackground: typeof import('./components/effects/StarryBackground.vue')['default'] 46 StarryBackground: typeof import('./components/effects/StarryBackground.vue')['default']
47 StudyCatalogPopup: typeof import('./components/studyDetail/StudyCatalogPopup.vue')['default'] 47 StudyCatalogPopup: typeof import('./components/studyDetail/StudyCatalogPopup.vue')['default']
48 StudyCommentsSection: typeof import('./components/studyDetail/StudyCommentsSection.vue')['default'] 48 StudyCommentsSection: typeof import('./components/studyDetail/StudyCommentsSection.vue')['default']
49 StudyMaterialsPopup: typeof import('./components/studyDetail/StudyMaterialsPopup.vue')['default'] 49 StudyMaterialsPopup: typeof import('./components/studyDetail/StudyMaterialsPopup.vue')['default']
50 - SummerCampCard: typeof import('./components/ui/SummerCampCard.vue')['default'] 50 + SummerCampCard: typeof import('./components/courses/SummerCampCard.vue')['default']
51 - TaskCalendar: typeof import('./components/ui/TaskCalendar.vue')['default'] 51 + TaskCalendar: typeof import('./components/calendar/TaskCalendar.vue')['default']
52 TaskCascaderFilter: typeof import('./components/teacher/TaskCascaderFilter.vue')['default'] 52 TaskCascaderFilter: typeof import('./components/teacher/TaskCascaderFilter.vue')['default']
53 TaskFilter: typeof import('./components/teacher/TaskFilter.vue')['default'] 53 TaskFilter: typeof import('./components/teacher/TaskFilter.vue')['default']
54 - TermsPopup: typeof import('./components/ui/TermsPopup.vue')['default'] 54 + TermsPopup: typeof import('./components/common/TermsPopup.vue')['default']
55 - UploadVideoPopup: typeof import('./components/ui/UploadVideoPopup.vue')['default'] 55 + UploadVideoPopup: typeof import('./components/checkin/UploadVideoPopup.vue')['default']
56 - UserAgreement: typeof import('./components/ui/UserAgreement.vue')['default'] 56 + UserAgreement: typeof import('./components/common/UserAgreement.vue')['default']
57 VanActionSheet: typeof import('vant/es')['ActionSheet'] 57 VanActionSheet: typeof import('vant/es')['ActionSheet']
58 VanBackTop: typeof import('vant/es')['BackTop'] 58 VanBackTop: typeof import('vant/es')['BackTop']
59 VanBadge: typeof import('vant/es')['Badge'] 59 VanBadge: typeof import('vant/es')['Badge']
...@@ -101,8 +101,8 @@ declare module 'vue' { ...@@ -101,8 +101,8 @@ declare module 'vue' {
101 VanTag: typeof import('vant/es')['Tag'] 101 VanTag: typeof import('vant/es')['Tag']
102 VanTimePicker: typeof import('vant/es')['TimePicker'] 102 VanTimePicker: typeof import('vant/es')['TimePicker']
103 VanUploader: typeof import('vant/es')['Uploader'] 103 VanUploader: typeof import('vant/es')['Uploader']
104 - VideoBackground: typeof import('./components/ui/VideoBackground.vue')['default'] 104 + VideoBackground: typeof import('./components/media/VideoBackground.vue')['default']
105 - VideoPlayer: typeof import('./components/ui/VideoPlayer.vue')['default'] 105 + VideoPlayer: typeof import('./components/media/VideoPlayer.vue')['default']
106 WechatPayment: typeof import('./components/payment/WechatPayment.vue')['default'] 106 WechatPayment: typeof import('./components/payment/WechatPayment.vue')['default']
107 } 107 }
108 } 108 }
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
75 </template> 75 </template>
76 76
77 <script setup> 77 <script setup>
78 -import FrostedGlass from './FrostedGlass.vue' 78 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
79 79
80 const props = defineProps({ 80 const props = defineProps({
81 activity: { 81 activity: {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
22 <script setup> 22 <script setup>
23 import { ref, computed, onMounted, provide } from 'vue' 23 import { ref, computed, onMounted, provide } from 'vue'
24 import { useRoute, useRouter } from 'vue-router' 24 import { useRoute, useRouter } from 'vue-router'
25 -import CheckInList from '@/components/ui/CheckInList.vue' 25 +import CheckInList from '@/components/checkin/CheckInList.vue'
26 import { getTaskListAPI } from "@/api/checkin"; 26 import { getTaskListAPI } from "@/api/checkin";
27 import { normalizeCheckinTaskItems } from '@/utils/tools' 27 import { normalizeCheckinTaskItems } from '@/utils/tools'
28 28
......
...@@ -98,8 +98,8 @@ ...@@ -98,8 +98,8 @@
98 <script setup> 98 <script setup>
99 import { ref } from 'vue' 99 import { ref } from 'vue'
100 import PostCountModel from "@/components/count/postCountModel.vue"; 100 import PostCountModel from "@/components/count/postCountModel.vue";
101 -import VideoPlayer from "@/components/ui/VideoPlayer.vue"; 101 +import VideoPlayer from "@/components/media/VideoPlayer.vue";
102 -import AudioPlayer from "@/components/ui/AudioPlayer.vue"; 102 +import AudioPlayer from "@/components/media/AudioPlayer.vue";
103 103
104 const props = defineProps({ 104 const props = defineProps({
105 /** 105 /**
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
40 <script setup> 40 <script setup>
41 import { ref, watch } from 'vue'; 41 import { ref, watch } from 'vue';
42 import { showToast } from 'vant'; 42 import { showToast } from 'vant';
43 -import VideoPlayer from '@/components/ui/VideoPlayer.vue'; 43 +import VideoPlayer from '@/components/media/VideoPlayer.vue';
44 import { uploadFile, validateFile } from '@/utils/upload'; 44 import { uploadFile, validateFile } from '@/utils/upload';
45 45
46 const props = defineProps({ 46 const props = defineProps({
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
35 * @description 确认对话框组件,基于 FrostedGlass 35 * @description 确认对话框组件,基于 FrostedGlass
36 --> 36 -->
37 <script setup> 37 <script setup>
38 -import FrostedGlass from './FrostedGlass.vue' 38 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
39 39
40 const props = defineProps({ 40 const props = defineProps({
41 /** 是否显示弹窗 (v-model) */ 41 /** 是否显示弹窗 (v-model) */
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
33 <script setup> 33 <script setup>
34 import { watch, ref } from 'vue' 34 import { watch, ref } from 'vue'
35 import { useRouter } from 'vue-router' 35 import { useRouter } from 'vue-router'
36 -import FrostedGlass from './FrostedGlass.vue' 36 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
37 37
38 const router = useRouter() 38 const router = useRouter()
39 39
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
21 21
22 <script setup> 22 <script setup>
23 import { ref, onMounted } from 'vue' 23 import { ref, onMounted } from 'vue'
24 -import CourseCard from '@/components/ui/CourseCard.vue' 24 +import CourseCard from '@/components/courses/CourseCard.vue'
25 import { getCourseListAPI } from '@/api/course' 25 import { getCourseListAPI } from '@/api/course'
26 26
27 const courses = ref([]) 27 const courses = ref([])
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
19 19
20 <script setup> 20 <script setup>
21 import { ref, onMounted } from 'vue' 21 import { ref, onMounted } from 'vue'
22 -import ActivityCard from '@/components/ui/ActivityCard.vue' 22 +import ActivityCard from '@/components/activity/ActivityCard.vue'
23 23
24 const activities = ref([]) 24 const activities = ref([])
25 25
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
43 <script setup> 43 <script setup>
44 import { ref, onMounted } from 'vue' 44 import { ref, onMounted } from 'vue'
45 import { useRouter } from 'vue-router' 45 import { useRouter } from 'vue-router'
46 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 46 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
47 import { getCourseListAPI } from '@/api/course' 47 import { getCourseListAPI } from '@/api/course'
48 48
49 const router = useRouter() 49 const router = useRouter()
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
23 23
24 <script setup> 24 <script setup>
25 import BottomNav from './BottomNav.vue' 25 import BottomNav from './BottomNav.vue'
26 -import GradientHeader from '../ui/GradientHeader.vue' 26 +import GradientHeader from '../common/GradientHeader.vue'
27 import { useRoute } from 'vue-router' 27 import { useRoute } from 'vue-router'
28 28
29 const route = useRoute() 29 const route = useRoute()
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
64 64
65 <script setup> 65 <script setup>
66 import { ref, onMounted } from 'vue' 66 import { ref, onMounted } from 'vue'
67 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 67 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
68 import { wxPayAPI, wxPayCheckAPI } from "@/api/wx/pay" 68 import { wxPayAPI, wxPayCheckAPI } from "@/api/wx/pay"
69 69
70 // 定义组件的props 70 // 定义组件的props
......
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
81 81
82 <script setup> 82 <script setup>
83 import { computed } from 'vue'; 83 import { computed } from 'vue';
84 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 84 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
85 85
86 const props = defineProps({ 86 const props = defineProps({
87 /** 是否显示资料弹窗 (v-model) */ 87 /** 是否显示资料弹窗 (v-model) */
......
...@@ -330,10 +330,10 @@ import { useRoute } from 'vue-router' ...@@ -330,10 +330,10 @@ import { useRoute } from 'vue-router'
330 330
331 // 导入布局和UI组件 331 // 导入布局和UI组件
332 import AppLayout from '@/components/layout/AppLayout.vue' 332 import AppLayout from '@/components/layout/AppLayout.vue'
333 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 333 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
334 -import LiveStreamCard from '@/components/ui/LiveStreamCard.vue' 334 +import LiveStreamCard from '@/components/courses/LiveStreamCard.vue'
335 -import VideoPlayer from '@/components/ui/VideoPlayer.vue' 335 +import VideoPlayer from '@/components/media/VideoPlayer.vue'
336 -import CheckInList from '@/components/ui/CheckInList.vue' 336 +import CheckInList from '@/components/checkin/CheckInList.vue'
337 337
338 import FeaturedCoursesSection from '@/components/homePage/FeaturedCoursesSection.vue' 338 import FeaturedCoursesSection from '@/components/homePage/FeaturedCoursesSection.vue'
339 import RecommendationsSection from '@/components/homePage/RecommendationsSection.vue' 339 import RecommendationsSection from '@/components/homePage/RecommendationsSection.vue'
......
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
151 import { ref, computed, defineComponent, h } from 'vue' 151 import { ref, computed, defineComponent, h } from 'vue'
152 import { useRoute, useRouter } from 'vue-router' 152 import { useRoute, useRouter } from 'vue-router'
153 import AppLayout from '@/components/layout/AppLayout.vue' 153 import AppLayout from '@/components/layout/AppLayout.vue'
154 -import ActivityCard from '@/components/ui/ActivityCard.vue' 154 +import ActivityCard from '@/components/activity/ActivityCard.vue'
155 import { activities } from '@/utils/mockData' 155 import { activities } from '@/utils/mockData'
156 import { useTitle } from '@vueuse/core'; 156 import { useTitle } from '@vueuse/core';
157 const $route = useRoute(); 157 const $route = useRoute();
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 import { ref, onMounted, defineComponent, h } from "vue"; 2 import { ref, onMounted, defineComponent, h } from "vue";
3 import { useRoute, useRouter } from "vue-router"; 3 import { useRoute, useRouter } from "vue-router";
4 import AppLayout from "@/components/layout/AppLayout.vue"; 4 import AppLayout from "@/components/layout/AppLayout.vue";
5 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 5 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
6 import { activities } from "@/utils/mockData"; 6 import { activities } from "@/utils/mockData";
7 import { useTitle } from '@vueuse/core'; 7 import { useTitle } from '@vueuse/core';
8 const $route = useRoute(); 8 const $route = useRoute();
......
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
116 <script setup> 116 <script setup>
117 import { ref, reactive, computed, onMounted } from 'vue' 117 import { ref, reactive, computed, onMounted } from 'vue'
118 import { useRoute, useRouter } from 'vue-router' 118 import { useRoute, useRouter } from 'vue-router'
119 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 119 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
120 import { activities } from '@/utils/mockData' 120 import { activities } from '@/utils/mockData'
121 import { useTitle } from '@vueuse/core'; 121 import { useTitle } from '@vueuse/core';
122 const $route = useRoute(); 122 const $route = useRoute();
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
35 <script setup> 35 <script setup>
36 import { ref } from 'vue' 36 import { ref } from 'vue'
37 import { useRoute, useRouter } from 'vue-router' 37 import { useRoute, useRouter } from 'vue-router'
38 -import ActivityCard from '@/components/ui/ActivityCard.vue' 38 +import ActivityCard from '@/components/activity/ActivityCard.vue'
39 import { activities as mockActivities } from '@/utils/mockData' 39 import { activities as mockActivities } from '@/utils/mockData'
40 import { useTitle } from '@vueuse/core'; 40 import { useTitle } from '@vueuse/core';
41 const $route = useRoute(); 41 const $route = useRoute();
......
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
109 <script setup> 109 <script setup>
110 import { ref, reactive } from 'vue' 110 import { ref, reactive } from 'vue'
111 import { useRouter } from 'vue-router' 111 import { useRouter } from 'vue-router'
112 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 112 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
113 import { smsAPI } from '@/api/common'; 113 import { smsAPI } from '@/api/common';
114 import { resetPasswordAPI } from '@/api/users'; 114 import { resetPasswordAPI } from '@/api/users';
115 import { showToast } from 'vant'; 115 import { showToast } from 'vant';
......
...@@ -184,13 +184,13 @@ ...@@ -184,13 +184,13 @@
184 <script setup> 184 <script setup>
185 import { ref } from "vue"; 185 import { ref } from "vue";
186 import { useRoute, useRouter } from "vue-router"; 186 import { useRoute, useRouter } from "vue-router";
187 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 187 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
188 import { useAuth } from "@/contexts/auth"; 188 import { useAuth } from "@/contexts/auth";
189 import { loginAPI, getUserInfoAPI } from "@/api/users"; 189 import { loginAPI, getUserInfoAPI } from "@/api/users";
190 import { useTitle } from "@vueuse/core"; 190 import { useTitle } from "@vueuse/core";
191 import { smsAPI } from "@/api/common"; 191 import { smsAPI } from "@/api/common";
192 import { showToast } from "vant"; 192 import { showToast } from "vant";
193 -import UserAgreement from "@/components/ui/UserAgreement.vue"; 193 +import UserAgreement from "@/components/common/UserAgreement.vue";
194 import { setAuthHeaders } from "@/utils/axios"; 194 import { setAuthHeaders } from "@/utils/axios";
195 import { applyUserInfoAuth } from "@/utils/auth_user_info"; 195 import { applyUserInfoAuth } from "@/utils/auth_user_info";
196 import weixinLogo from '@/assets/images/weixin_logo_lg.jpeg' 196 import weixinLogo from '@/assets/images/weixin_logo_lg.jpeg'
......
...@@ -181,8 +181,8 @@ ...@@ -181,8 +181,8 @@
181 <script setup> 181 <script setup>
182 import { ref, reactive } from 'vue' 182 import { ref, reactive } from 'vue'
183 import { useRoute, useRouter } from 'vue-router' 183 import { useRoute, useRouter } from 'vue-router'
184 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 184 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
185 -import TermsPopup from '@/components/ui/TermsPopup.vue' 185 +import TermsPopup from '@/components/common/TermsPopup.vue'
186 import { useAuth } from '@/contexts/auth' 186 import { useAuth } from '@/contexts/auth'
187 import { useTitle } from '@vueuse/core'; 187 import { useTitle } from '@vueuse/core';
188 import { smsAPI } from '@/api/common'; 188 import { smsAPI } from '@/api/common';
......
...@@ -177,8 +177,8 @@ import { getTaskDetailAPI, getUploadTaskInfoAPI, getSubtaskListAPI, reuseGratitu ...@@ -177,8 +177,8 @@ import { getTaskDetailAPI, getUploadTaskInfoAPI, getSubtaskListAPI, reuseGratitu
177 import { useTitle } from '@vueuse/core' 177 import { useTitle } from '@vueuse/core'
178 import { useCheckin } from '@/composables/useCheckin' 178 import { useCheckin } from '@/composables/useCheckin'
179 import { normalizeAttachmentTypeConfig } from '@/utils/tools' 179 import { normalizeAttachmentTypeConfig } from '@/utils/tools'
180 -import AudioPlayer from '@/components/ui/AudioPlayer.vue' 180 +import AudioPlayer from '@/components/media/AudioPlayer.vue'
181 -import VideoPlayer from '@/components/ui/VideoPlayer.vue' 181 +import VideoPlayer from '@/components/media/VideoPlayer.vue'
182 import AddTargetDialog from '@/components/count/AddTargetDialog.vue' 182 import AddTargetDialog from '@/components/count/AddTargetDialog.vue'
183 import CheckinTargetList from '@/components/count/CheckinTargetList.vue' 183 import CheckinTargetList from '@/components/count/CheckinTargetList.vue'
184 import { showToast, showLoadingToast } from 'vant' 184 import { showToast, showLoadingToast } from 'vant'
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
61 import { ref, computed } from "vue"; 61 import { ref, computed } from "vue";
62 import { DatePicker, List, Popup } from "vant"; 62 import { DatePicker, List, Popup } from "vant";
63 import AppLayout from "@/components/layout/AppLayout.vue"; 63 import AppLayout from "@/components/layout/AppLayout.vue";
64 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 64 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
65 65
66 // 列表数据 66 // 列表数据
67 const list = ref([]); 67 const list = ref([]);
......
...@@ -157,8 +157,8 @@ import { ref, onBeforeUnmount, onMounted, computed, nextTick, getCurrentInstance ...@@ -157,8 +157,8 @@ import { ref, onBeforeUnmount, onMounted, computed, nextTick, getCurrentInstance
157 import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router' 157 import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router'
158 import { showConfirmDialog, showSuccessToast, showFailToast, showLoadingToast } from 'vant'; 158 import { showConfirmDialog, showSuccessToast, showFailToast, showLoadingToast } from 'vant';
159 import AppLayout from "@/components/layout/AppLayout.vue"; 159 import AppLayout from "@/components/layout/AppLayout.vue";
160 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 160 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
161 -import CollapsibleCalendar from "@/components/ui/CollapsibleCalendar.vue"; 161 +import CollapsibleCalendar from "@/components/calendar/CollapsibleCalendar.vue";
162 import PostCountModel from "@/components/count/postCountModel.vue"; 162 import PostCountModel from "@/components/count/postCountModel.vue";
163 import CheckinCard from "@/components/checkin/CheckinCard.vue"; 163 import CheckinCard from "@/components/checkin/CheckinCard.vue";
164 import { useTitle, useResizeObserver, useScroll } from '@vueuse/core'; 164 import { useTitle, useResizeObserver, useScroll } from '@vueuse/core';
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
59 import { ref, computed } from "vue"; 59 import { ref, computed } from "vue";
60 import { DatePicker, List, Popup } from "vant"; 60 import { DatePicker, List, Popup } from "vant";
61 import AppLayout from '@/components/layout/AppLayout.vue' 61 import AppLayout from '@/components/layout/AppLayout.vue'
62 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 62 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
63 63
64 // 列表数据 64 // 列表数据
65 const list = ref([]); 65 const list = ref([]);
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
60 import { ref, computed } from "vue"; 60 import { ref, computed } from "vue";
61 import { DatePicker, List, Popup } from "vant"; 61 import { DatePicker, List, Popup } from "vant";
62 import AppLayout from "@/components/layout/AppLayout.vue"; 62 import AppLayout from "@/components/layout/AppLayout.vue";
63 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 63 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
64 64
65 // 列表数据 65 // 列表数据
66 const list = ref([]); 66 const list = ref([]);
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
60 import { ref, computed } from "vue"; 60 import { ref, computed } from "vue";
61 import { DatePicker, List, Popup } from "vant"; 61 import { DatePicker, List, Popup } from "vant";
62 import AppLayout from "@/components/layout/AppLayout.vue"; 62 import AppLayout from "@/components/layout/AppLayout.vue";
63 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 63 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
64 64
65 // 列表数据 65 // 列表数据
66 const list = ref([]); 66 const list = ref([]);
......
...@@ -259,8 +259,8 @@ ...@@ -259,8 +259,8 @@
259 import { ref, onMounted, onUnmounted, watch, nextTick } from 'vue' 259 import { ref, onMounted, onUnmounted, watch, nextTick } from 'vue'
260 import { useRoute, useRouter } from 'vue-router' 260 import { useRoute, useRouter } from 'vue-router'
261 import AppLayout from '@/components/layout/AppLayout.vue' 261 import AppLayout from '@/components/layout/AppLayout.vue'
262 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 262 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
263 -import ConfirmDialog from '@/components/ui/ConfirmDialog.vue' 263 +import ConfirmDialog from '@/components/common/ConfirmDialog.vue'
264 import WechatPayment from '@/components/payment/WechatPayment.vue' 264 import WechatPayment from '@/components/payment/WechatPayment.vue'
265 import FormPage from '@/components/infoEntry/formPage.vue' 265 import FormPage from '@/components/infoEntry/formPage.vue'
266 import { useCart } from '@/contexts/cart' 266 import { useCart } from '@/contexts/cart'
......
...@@ -338,9 +338,9 @@ import { sharePage } from '@/composables/useShare.js' ...@@ -338,9 +338,9 @@ import { sharePage } from '@/composables/useShare.js'
338 import { useImageLoader } from '@/composables/useImageLoader' 338 import { useImageLoader } from '@/composables/useImageLoader'
339 339
340 import AppLayout from '@/components/layout/AppLayout.vue' 340 import AppLayout from '@/components/layout/AppLayout.vue'
341 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 341 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
342 -import SharePoster from '@/components/ui/SharePoster.vue' 342 +import SharePoster from '@/components/poster/SharePoster.vue'
343 -import CheckInDialog from '@/components/ui/CheckInDialog.vue' 343 +import CheckInDialog from '@/components/checkin/CheckInDialog.vue'
344 344
345 // 导入接口 345 // 导入接口
346 import { getCourseDetailAPI, getGroupCommentListAPI, addGroupCommentAPI } from "@/api/course"; 346 import { getCourseDetailAPI, getGroupCommentListAPI, addGroupCommentAPI } from "@/api/course";
......
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
33 import { ref, onMounted, watch } from 'vue'; 33 import { ref, onMounted, watch } from 'vue';
34 import { useRoute } from 'vue-router'; 34 import { useRoute } from 'vue-router';
35 import AppLayout from '@/components/layout/AppLayout.vue'; 35 import AppLayout from '@/components/layout/AppLayout.vue';
36 -import SearchBar from '@/components/ui/SearchBar.vue'; 36 +import SearchBar from '@/components/common/SearchBar.vue';
37 -import CourseCard from '@/components/ui/CourseCard.vue'; 37 +import CourseCard from '@/components/courses/CourseCard.vue';
38 import { courses as mockCourses } from '@/utils/mockData'; 38 import { courses as mockCourses } from '@/utils/mockData';
39 // 导入接口 39 // 导入接口
40 import { getCourseListAPI } from "@/api/course"; 40 import { getCourseListAPI } from "@/api/course";
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
31 import { ref, onMounted, computed } from 'vue'; 31 import { ref, onMounted, computed } from 'vue';
32 import { useRoute } from 'vue-router'; 32 import { useRoute } from 'vue-router';
33 import AppLayout from '@/components/layout/AppLayout.vue'; 33 import AppLayout from '@/components/layout/AppLayout.vue';
34 -import CourseCard from '@/components/ui/CourseCard.vue'; 34 +import CourseCard from '@/components/courses/CourseCard.vue';
35 -import CourseImageCard from '@/components/ui/CourseImageCard.vue'; 35 +import CourseImageCard from '@/components/courses/CourseImageCard.vue';
36 // 导入接口 36 // 导入接口
37 import { getScheduleCombinationListAPI } from "@/api/course"; 37 import { getScheduleCombinationListAPI } from "@/api/course";
38 38
......
...@@ -97,10 +97,10 @@ ...@@ -97,10 +97,10 @@
97 import { computed, defineComponent, h } from "vue"; 97 import { computed, defineComponent, h } from "vue";
98 import { useRoute, useRouter } from 'vue-router' 98 import { useRoute, useRouter } from 'vue-router'
99 import AppLayout from "@/components/layout/AppLayout.vue"; 99 import AppLayout from "@/components/layout/AppLayout.vue";
100 -import SearchBar from "@/components/ui/SearchBar.vue"; 100 +import SearchBar from "@/components/common/SearchBar.vue";
101 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 101 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
102 -import CourseCard from "@/components/ui/CourseCard.vue"; 102 +import CourseCard from "@/components/courses/CourseCard.vue";
103 -import LiveStreamCard from "@/components/ui/LiveStreamCard.vue"; 103 +import LiveStreamCard from "@/components/courses/LiveStreamCard.vue";
104 import { featuredCourse, liveStreams } from "@/utils/mockData"; 104 import { featuredCourse, liveStreams } from "@/utils/mockData";
105 import { useTitle } from '@vueuse/core'; 105 import { useTitle } from '@vueuse/core';
106 106
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
33 <script setup> 33 <script setup>
34 import { ref } from 'vue'; 34 import { ref } from 'vue';
35 import { useRoute, useRouter } from 'vue-router'; 35 import { useRoute, useRouter } from 'vue-router';
36 -import CourseCard from '@/components/ui/CourseCard.vue'; 36 +import CourseCard from '@/components/courses/CourseCard.vue';
37 import { useTitle } from '@vueuse/core'; 37 import { useTitle } from '@vueuse/core';
38 import AppLayout from "@/components/layout/AppLayout.vue"; 38 import AppLayout from "@/components/layout/AppLayout.vue";
39 39
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
24 import { ref, onMounted } from 'vue'; 24 import { ref, onMounted } from 'vue';
25 import { useRoute, useRouter } from 'vue-router'; 25 import { useRoute, useRouter } from 'vue-router';
26 import AppLayout from '@/components/layout/AppLayout.vue'; 26 import AppLayout from '@/components/layout/AppLayout.vue';
27 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 27 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
28 import { useTitle } from '@vueuse/core'; 28 import { useTitle } from '@vueuse/core';
29 // 导入接口 29 // 导入接口
30 import { getArticleInfoAPI } from "@/api/help"; 30 import { getArticleInfoAPI } from "@/api/help";
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
49 import { ref } from 'vue'; 49 import { ref } from 'vue';
50 import { useRouter, useRoute } from 'vue-router'; 50 import { useRouter, useRoute } from 'vue-router';
51 import AppLayout from '@/components/layout/AppLayout.vue'; 51 import AppLayout from '@/components/layout/AppLayout.vue';
52 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 52 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
53 import { useTitle } from '@vueuse/core'; 53 import { useTitle } from '@vueuse/core';
54 // 导入接口 54 // 导入接口
55 import { getArticleListAPI } from "@/api/help"; 55 import { getArticleListAPI } from "@/api/help";
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
111 import { ref } from 'vue'; 111 import { ref } from 'vue';
112 import { useRoute, useRouter } from 'vue-router'; 112 import { useRoute, useRouter } from 'vue-router';
113 import { useTitle } from '@vueuse/core'; 113 import { useTitle } from '@vueuse/core';
114 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 114 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
115 import AppLayout from '@/components/layout/AppLayout.vue'; 115 import AppLayout from '@/components/layout/AppLayout.vue';
116 import { formatDate } from '@/utils/tools'; 116 import { formatDate } from '@/utils/tools';
117 117
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
27 import { ref, onMounted } from 'vue'; 27 import { ref, onMounted } from 'vue';
28 import { useRoute } from 'vue-router'; 28 import { useRoute } from 'vue-router';
29 import AppLayout from '@/components/layout/AppLayout.vue'; 29 import AppLayout from '@/components/layout/AppLayout.vue';
30 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 30 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
31 import { useTitle } from '@vueuse/core'; 31 import { useTitle } from '@vueuse/core';
32 32
33 // 导入接口 33 // 导入接口
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
66 import { ref } from 'vue'; 66 import { ref } from 'vue';
67 import { useRouter, useRoute } from 'vue-router'; 67 import { useRouter, useRoute } from 'vue-router';
68 import AppLayout from '@/components/layout/AppLayout.vue'; 68 import AppLayout from '@/components/layout/AppLayout.vue';
69 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 69 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
70 import { useTitle } from '@vueuse/core'; 70 import { useTitle } from '@vueuse/core';
71 71
72 // 导入接口 72 // 导入接口
......
...@@ -52,8 +52,8 @@ ...@@ -52,8 +52,8 @@
52 <script setup> 52 <script setup>
53 import { ref } from 'vue'; 53 import { ref } from 'vue';
54 import { useRoute, useRouter } from 'vue-router'; 54 import { useRoute, useRouter } from 'vue-router';
55 -import CourseCard from '@/components/ui/CourseCard.vue'; 55 +import CourseCard from '@/components/courses/CourseCard.vue';
56 -import ActivityCard from '@/components/ui/ActivityCard.vue'; 56 +import ActivityCard from '@/components/activity/ActivityCard.vue';
57 import { courses as mockCourses, activities as mockActivities } from '@/utils/mockData'; 57 import { courses as mockCourses, activities as mockActivities } from '@/utils/mockData';
58 import { useTitle } from '@vueuse/core'; 58 import { useTitle } from '@vueuse/core';
59 import AppLayout from "@/components/layout/AppLayout.vue"; 59 import AppLayout from "@/components/layout/AppLayout.vue";
......
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
196 import { ref, computed, onMounted, onUnmounted } from 'vue' 196 import { ref, computed, onMounted, onUnmounted } from 'vue'
197 import { useRoute, useRouter } from 'vue-router'; 197 import { useRoute, useRouter } from 'vue-router';
198 import AppLayout from '@/components/layout/AppLayout.vue' 198 import AppLayout from '@/components/layout/AppLayout.vue'
199 -import FrostedGlass from '@/components/ui/FrostedGlass.vue' 199 +import FrostedGlass from '@/components/effects/FrostedGlass.vue'
200 import WechatPayment from '@/components/payment/WechatPayment.vue' 200 import WechatPayment from '@/components/payment/WechatPayment.vue'
201 import { useTitle } from '@vueuse/core'; 201 import { useTitle } from '@vueuse/core';
202 import { showConfirmDialog, showToast, Dialog } from 'vant'; 202 import { showConfirmDialog, showToast, Dialog } from 'vant';
......
...@@ -135,10 +135,10 @@ ...@@ -135,10 +135,10 @@
135 import { ref, h } from "vue"; 135 import { ref, h } from "vue";
136 import { useRoute, useRouter } from "vue-router"; 136 import { useRoute, useRouter } from "vue-router";
137 import AppLayout from "@/components/layout/AppLayout.vue"; 137 import AppLayout from "@/components/layout/AppLayout.vue";
138 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 138 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
139 -import MenuItem from "@/components/ui/MenuItem.vue"; 139 +import MenuItem from "@/components/common/MenuItem.vue";
140 import { useAuth } from "@/contexts/auth"; 140 import { useAuth } from "@/contexts/auth";
141 -import CheckInDialog from "@/components/ui/CheckInDialog.vue"; 141 +import CheckInDialog from "@/components/checkin/CheckInDialog.vue";
142 import { getUserInfoAPI } from "@/api/users"; 142 import { getUserInfoAPI } from "@/api/users";
143 import { showToast } from "vant"; 143 import { showToast } from "vant";
144 import { useTitle } from "@vueuse/core"; 144 import { useTitle } from "@vueuse/core";
......
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
119 import { ref, onMounted } from 'vue'; 119 import { ref, onMounted } from 'vue';
120 import { useRoute, useRouter } from 'vue-router'; 120 import { useRoute, useRouter } from 'vue-router';
121 import AppLayout from '@/components/layout/AppLayout.vue'; 121 import AppLayout from '@/components/layout/AppLayout.vue';
122 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 122 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
123 import { ChevronRightIcon } from '@heroicons/vue/24/outline'; 123 import { ChevronRightIcon } from '@heroicons/vue/24/outline';
124 import { useTitle } from '@vueuse/core'; 124 import { useTitle } from '@vueuse/core';
125 import { getUserInfoAPI } from '@/api/users'; 125 import { getUserInfoAPI } from '@/api/users';
......
...@@ -118,7 +118,7 @@ import dayjs from 'dayjs'; ...@@ -118,7 +118,7 @@ import dayjs from 'dayjs';
118 import { showToast } from 'vant'; 118 import { showToast } from 'vant';
119 import { normalizeCheckinTaskItems } from '@/utils/tools' 119 import { normalizeCheckinTaskItems } from '@/utils/tools'
120 import AppLayout from '@/components/layout/AppLayout.vue'; 120 import AppLayout from '@/components/layout/AppLayout.vue';
121 -import CheckInDialog from '@/components/ui/CheckInDialog.vue'; 121 +import CheckInDialog from '@/components/checkin/CheckInDialog.vue';
122 122
123 // 导入接口 123 // 导入接口
124 import { getCourseDetailAPI } from '@/api/course'; 124 import { getCourseDetailAPI } from '@/api/course';
......
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
20 <script setup> 20 <script setup>
21 import { ref } from 'vue'; 21 import { ref } from 'vue';
22 import AppLayout from '@/components/layout/AppLayout.vue'; 22 import AppLayout from '@/components/layout/AppLayout.vue';
23 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 23 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
24 -import AudioPlayer from '@/components/ui/AudioPlayer.vue'; 24 +import AudioPlayer from '@/components/media/AudioPlayer.vue';
25 25
26 // 测试音频数据 26 // 测试音频数据
27 const audioList = ref([ 27 const audioList = ref([
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
53 <script setup> 53 <script setup>
54 import { ref, onMounted } from "vue"; 54 import { ref, onMounted } from "vue";
55 import AppLayout from "@/components/layout/AppLayout.vue"; 55 import AppLayout from "@/components/layout/AppLayout.vue";
56 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 56 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
57 import { getUserInfoAPI, updateUserInfoAPI } from "@/api/users"; 57 import { getUserInfoAPI, updateUserInfoAPI } from "@/api/users";
58 import { qiniuTokenAPI, qiniuUploadAPI, saveFileAPI } from '@/api/common'; 58 import { qiniuTokenAPI, qiniuUploadAPI, saveFileAPI } from '@/api/common';
59 import { showToast, showLoadingToast } from 'vant'; 59 import { showToast, showLoadingToast } from 'vant';
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
61 <script setup> 61 <script setup>
62 import { ref } from 'vue'; 62 import { ref } from 'vue';
63 import AppLayout from '@/components/layout/AppLayout.vue'; 63 import AppLayout from '@/components/layout/AppLayout.vue';
64 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 64 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
65 import { resetPasswordAPI } from '@/api/users'; 65 import { resetPasswordAPI } from '@/api/users';
66 66
67 import { useTitle } from '@vueuse/core'; 67 import { useTitle } from '@vueuse/core';
......
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
89 import { ref, onMounted, computed } from 'vue'; 89 import { ref, onMounted, computed } from 'vue';
90 import { useRoute } from 'vue-router'; 90 import { useRoute } from 'vue-router';
91 import AppLayout from '@/components/layout/AppLayout.vue'; 91 import AppLayout from '@/components/layout/AppLayout.vue';
92 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 92 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
93 import { getUserInfoAPI, updateUserInfoAPI } from '@/api/users'; 93 import { getUserInfoAPI, updateUserInfoAPI } from '@/api/users';
94 import { smsAPI } from '@/api/common'; 94 import { smsAPI } from '@/api/common';
95 import { showToast } from 'vant'; 95 import { showToast } from 'vant';
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
41 <script setup> 41 <script setup>
42 import { ref, onMounted } from 'vue'; 42 import { ref, onMounted } from 'vue';
43 import AppLayout from '@/components/layout/AppLayout.vue'; 43 import AppLayout from '@/components/layout/AppLayout.vue';
44 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 44 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
45 import { getUserInfoAPI, updateUserInfoAPI } from '@/api/users'; 45 import { getUserInfoAPI, updateUserInfoAPI } from '@/api/users';
46 import { showToast } from 'vant'; 46 import { showToast } from 'vant';
47 import { useTitle } from '@vueuse/core'; 47 import { useTitle } from '@vueuse/core';
......
...@@ -95,7 +95,7 @@ import { useRouter } from 'vue-router' ...@@ -95,7 +95,7 @@ import { useRouter } from 'vue-router'
95 import { useTitle } from '@vueuse/core' 95 import { useTitle } from '@vueuse/core'
96 import { showToast } from 'vant' 96 import { showToast } from 'vant'
97 97
98 -import ActivityApplyHistoryPopup from '@/components/ui/ActivityApplyHistoryPopup.vue' 98 +import ActivityApplyHistoryPopup from '@/components/activity/ActivityApplyHistoryPopup.vue'
99 import { userInfoAPI, searchOldActivityAPI } from '@/api/recall_users' 99 import { userInfoAPI, searchOldActivityAPI } from '@/api/recall_users'
100 import { oldActivityBatchActivityRegistrationAPI } from '@/api/points' 100 import { oldActivityBatchActivityRegistrationAPI } from '@/api/points'
101 101
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
40 import { ref, onMounted } from 'vue' 40 import { ref, onMounted } from 'vue'
41 import { useRoute, useRouter } from 'vue-router' 41 import { useRoute, useRouter } from 'vue-router'
42 import { useTitle } from '@vueuse/core' 42 import { useTitle } from '@vueuse/core'
43 -import VideoBackground from '@/components/ui/VideoBackground.vue' 43 +import VideoBackground from '@/components/media/VideoBackground.vue'
44 44
45 import { getQrcodeAPI, trackingAPI } from '@/api/recall_users' 45 import { getQrcodeAPI, trackingAPI } from '@/api/recall_users'
46 46
......
1 <!-- 1 <!--
2 * @Date: 2025-12-23 13:44:58 2 * @Date: 2025-12-23 13:44:58
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-12-25 11:22:16 4 + * @LastEditTime: 2026-01-21 13:42:54
5 * @FilePath: /mlaj/src/views/recall/CompleteInfoPage.vue 5 * @FilePath: /mlaj/src/views/recall/CompleteInfoPage.vue
6 - * @Description: 文件描述 6 + * @Description: 完善信息页面
7 --> 7 -->
8 <template> 8 <template>
9 <div class="complete-info-page w-full min-h-screen relative overflow-hidden flex flex-col items-center"> 9 <div class="complete-info-page w-full min-h-screen relative overflow-hidden flex flex-col items-center">
...@@ -126,7 +126,7 @@ const handleConfirm = async () => { ...@@ -126,7 +126,7 @@ const handleConfirm = async () => {
126 // mobile: form.phone, 126 // mobile: form.phone,
127 idcard: form.idCard 127 idcard: form.idCard
128 }) 128 })
129 - if (res.code) { 129 + if (res.code === 1) {
130 // 埋点 130 // 埋点
131 trackingAPI({ 131 trackingAPI({
132 event_type: 'edit_user' 132 event_type: 'edit_user'
...@@ -136,7 +136,7 @@ const handleConfirm = async () => { ...@@ -136,7 +136,7 @@ const handleConfirm = async () => {
136 mobile: form.phone, 136 mobile: form.phone,
137 idcard: form.idCard 137 idcard: form.idCard
138 }) 138 })
139 - if (activityRes.code) { 139 + if (activityRes.code === 1) {
140 // 更新司总缓存user_info键里面的user_name的值改成新的用户名 140 // 更新司总缓存user_info键里面的user_name的值改成新的用户名
141 localStorage.setItem('user_info', JSON.stringify({ 141 localStorage.setItem('user_info', JSON.stringify({
142 ...JSON.parse(localStorage.getItem('user_info') || '{}'), 142 ...JSON.parse(localStorage.getItem('user_info') || '{}'),
......
1 +<!--
2 + * @Date: 2025-12-23 13:44:58
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2026-01-21 13:42:30
5 + * @FilePath: /mlaj/src/views/recall/IDQueryPage.vue
6 + * @Description: 查询信息页面
7 +-->
1 <template> 8 <template>
2 <div class="id-query-page w-full min-h-screen relative overflow-hidden flex flex-col items-center"> 9 <div class="id-query-page w-full min-h-screen relative overflow-hidden flex flex-col items-center">
3 <!-- Starry Background --> 10 <!-- Starry Background -->
...@@ -154,7 +161,7 @@ const handleConfirm = async () => { ...@@ -154,7 +161,7 @@ const handleConfirm = async () => {
154 mobile: phone.value, 161 mobile: phone.value,
155 idcard: idCard.value 162 idcard: idCard.value
156 }) 163 })
157 - if (res.code) { 164 + if (res.code === 1) {
158 const campaign_info = res.data?.campaign_info || [] 165 const campaign_info = res.data?.campaign_info || []
159 // 如果能查到数据, 则跳转到timeline, 否则弹出提示 166 // 如果能查到数据, 则跳转到timeline, 否则弹出提示
160 const flag = campaign_info.length > 0; 167 const flag = campaign_info.length > 0;
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
45 import { ref, onMounted } from 'vue' 45 import { ref, onMounted } from 'vue'
46 import { useRoute, useRouter } from 'vue-router' 46 import { useRoute, useRouter } from 'vue-router'
47 import { useTitle } from '@vueuse/core' 47 import { useTitle } from '@vueuse/core'
48 -import RecallPoster from '@/components/ui/RecallPoster.vue' 48 +import RecallPoster from '@/components/poster/RecallPoster.vue'
49 import { qiniuTokenAPI, qiniuUploadAPI, saveFileAPI } from '@/api/common' 49 import { qiniuTokenAPI, qiniuUploadAPI, saveFileAPI } from '@/api/common'
50 import { showToast, showLoadingToast } from 'vant' 50 import { showToast, showLoadingToast } from 'vant'
51 import { qiniuFileHash } from '@/utils/qiniuFileHash' 51 import { qiniuFileHash } from '@/utils/qiniuFileHash'
......
...@@ -89,7 +89,7 @@ import { useRouter, useRoute } from 'vue-router' ...@@ -89,7 +89,7 @@ import { useRouter, useRoute } from 'vue-router'
89 import { showToast } from 'vant' 89 import { showToast } from 'vant'
90 import { useTitle } from '@vueuse/core' 90 import { useTitle } from '@vueuse/core'
91 import { setAuthHeaders } from "@/utils/axios"; 91 import { setAuthHeaders } from "@/utils/axios";
92 -import VideoBackground from '@/components/ui/VideoBackground.vue' 92 +import VideoBackground from '@/components/media/VideoBackground.vue'
93 import { applyUserInfoAuth } from '@/utils/auth_user_info' 93 import { applyUserInfoAuth } from '@/utils/auth_user_info'
94 94
95 // 导入接口 95 // 导入接口
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
14 <script setup> 14 <script setup>
15 import { computed, onMounted, onBeforeUnmount } from 'vue' 15 import { computed, onMounted, onBeforeUnmount } from 'vue'
16 import { useRoute, useRouter } from 'vue-router' 16 import { useRoute, useRouter } from 'vue-router'
17 -import PdfViewer from '@/components/ui/PdfViewer.vue' 17 +import PdfViewer from '@/components/media/PdfViewer.vue'
18 18
19 const route = useRoute() 19 const route = useRoute()
20 const router = useRouter() 20 const router = useRouter()
......
...@@ -241,10 +241,10 @@ ...@@ -241,10 +241,10 @@
241 import { ref, onMounted, nextTick } from 'vue'; 241 import { ref, onMounted, nextTick } from 'vue';
242 import { useRoute, useRouter } from 'vue-router'; 242 import { useRoute, useRouter } from 'vue-router';
243 import { useTitle } from '@vueuse/core'; 243 import { useTitle } from '@vueuse/core';
244 -import VideoPlayer from '@/components/ui/VideoPlayer.vue'; 244 +import VideoPlayer from '@/components/media/VideoPlayer.vue';
245 -import AudioPlayer from '@/components/ui/AudioPlayer.vue'; 245 +import AudioPlayer from '@/components/media/AudioPlayer.vue';
246 -import CheckInDialog from '@/components/ui/CheckInDialog.vue'; 246 +import CheckInDialog from '@/components/checkin/CheckInDialog.vue';
247 -// import OfficeViewer from '@/components/ui/OfficeViewer.vue'; 247 +// import OfficeViewer from '@/components/media/OfficeViewer.vue';
248 import dayjs from 'dayjs'; 248 import dayjs from 'dayjs';
249 import { showToast } from 'vant'; 249 import { showToast } from 'vant';
250 import { normalizeCheckinTaskItems } from '@/utils/tools' 250 import { normalizeCheckinTaskItems } from '@/utils/tools'
......
...@@ -151,9 +151,9 @@ import { ref, onBeforeUnmount, onMounted, computed } from 'vue' ...@@ -151,9 +151,9 @@ import { ref, onBeforeUnmount, onMounted, computed } from 'vue'
151 import { useRoute, useRouter } from 'vue-router' 151 import { useRoute, useRouter } from 'vue-router'
152 import { showConfirmDialog, showSuccessToast, showFailToast, showLoadingToast, showToast } from 'vant'; 152 import { showConfirmDialog, showSuccessToast, showFailToast, showLoadingToast, showToast } from 'vant';
153 import AppLayout from "@/components/layout/AppLayout.vue"; 153 import AppLayout from "@/components/layout/AppLayout.vue";
154 -import FrostedGlass from "@/components/ui/FrostedGlass.vue"; 154 +import FrostedGlass from "@/components/effects/FrostedGlass.vue";
155 import CheckinCard from "@/components/checkin/CheckinCard.vue"; 155 import CheckinCard from "@/components/checkin/CheckinCard.vue";
156 -import CourseGroupCascader from '@/components/ui/CourseGroupCascader.vue' 156 +import CourseGroupCascader from '@/components/courses/CourseGroupCascader.vue'
157 import TaskCascaderFilter from '@/components/teacher/TaskCascaderFilter.vue' 157 import TaskCascaderFilter from '@/components/teacher/TaskCascaderFilter.vue'
158 import PostCountModel from '@/components/count/postCountModel.vue' 158 import PostCountModel from '@/components/count/postCountModel.vue'
159 import { useTitle } from '@vueuse/core'; 159 import { useTitle } from '@vueuse/core';
......
...@@ -381,7 +381,7 @@ import { ref, computed, onMounted } from 'vue'; ...@@ -381,7 +381,7 @@ import { ref, computed, onMounted } from 'vue';
381 import { useRouter } from 'vue-router'; 381 import { useRouter } from 'vue-router';
382 import { showToast, DatePicker, Popup } from 'vant'; 382 import { showToast, DatePicker, Popup } from 'vant';
383 import AppLayout from '@/components/layout/AppLayout.vue'; 383 import AppLayout from '@/components/layout/AppLayout.vue';
384 -import FrostedGlass from '@/components/ui/FrostedGlass.vue'; 384 +import FrostedGlass from '@/components/effects/FrostedGlass.vue';
385 import { useTitle } from '@vueuse/core'; 385 import { useTitle } from '@vueuse/core';
386 386
387 import { getTeacherFindSettingsAPI, setTeacherTaskAPI } from "@/api/teacher"; 387 import { getTeacherFindSettingsAPI, setTeacherTaskAPI } from "@/api/teacher";
......
...@@ -170,7 +170,7 @@ import { useRouter } from 'vue-router' ...@@ -170,7 +170,7 @@ import { useRouter } from 'vue-router'
170 import AppLayout from '@/layouts/AppLayout.vue' 170 import AppLayout from '@/layouts/AppLayout.vue'
171 import { useTitle } from '@vueuse/core'; 171 import { useTitle } from '@vueuse/core';
172 import { useAuth } from '@/contexts/auth' 172 import { useAuth } from '@/contexts/auth'
173 -import CourseGroupCascader from '@/components/ui/CourseGroupCascader.vue' 173 +import CourseGroupCascader from '@/components/courses/CourseGroupCascader.vue'
174 174
175 import { getTeacherGradeClassListAPI, getStudentListAPI } from "@/api/teacher"; 175 import { getTeacherGradeClassListAPI, getStudentListAPI } from "@/api/teacher";
176 176
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
31 31
32 <script setup> 32 <script setup>
33 import { ref } from 'vue'; 33 import { ref } from 'vue';
34 -import VideoPlayer from '@/components/ui/VideoPlayer.vue'; 34 +import VideoPlayer from '@/components/media/VideoPlayer.vue';
35 -import UploadVideoPopup from '@/components/ui/UploadVideoPopup.vue'; 35 +import UploadVideoPopup from '@/components/checkin/UploadVideoPopup.vue';
36 36
37 const showUploadPopup = ref(false); 37 const showUploadPopup = ref(false);
38 const videos = ref([]); 38 const videos = ref([]);
......