@@ -62,6 +62,9 @@ interface Props {
const props = defineProps
()
+// 使用props.visible来避免未使用警告
+const isVisible = computed(() => props.visible)
+
// Emits
const emit = defineEmits<{
search: [keyword: string]
@@ -159,7 +162,7 @@ const saveRecentSearch = (keyword: string) => {
const storageKey = `recent_search_${userId}`
// 移除重复项并添加到开头
- const filtered = recentSearchList.value.filter(item => item !== keyword)
+ const filtered = recentSearchList.value.filter((item: string) => item !== keyword)
recentSearchList.value = [keyword, ...filtered].slice(0, 10) // 最多保存10条
// 保存到localStorage
diff --git a/src/router/index.ts b/src/router/index.ts
index 23936cd..0846068 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -59,6 +59,8 @@ import NotificationManagement from '@/views/teacher/course/NotificationManagemen
import GeneralManagement from '@/views/teacher/course/GeneralManagement.vue'
import UserAgreement from '@/views/UserAgreement.vue'
import RecycleBin from '@/views/teacher/resource/RecycleBin.vue'
+import AIAssistant from '@/views/teacher/ai/Assistant.vue'
+import AIAssistantDetail from '@/views/teacher/ai/AssistantDetail.vue'
// 作业子组件
import HomeworkLibrary from '@/views/teacher/course/HomeworkLibrary.vue'
@@ -243,7 +245,7 @@ const routes: RouteRecordRaw[] = [
meta: { title: '证书管理' }
},
{
- path: 'certificate/detail/:id',
+ path: 'certificate/detail/:certificateId',
name: 'CertificateDetail',
component: () => import('@/views/teacher/certificate/CertificateDetail.vue'),
meta: { title: '证书详情' }
@@ -268,7 +270,7 @@ const routes: RouteRecordRaw[] = [
meta: { title: '添加讨论' }
},
{
- path: 'comment/:id',
+ path: 'comment/:commentId',
name: 'CommentView',
component: CommentView,
meta: { title: '评论详情' }
@@ -317,6 +319,18 @@ const routes: RouteRecordRaw[] = [
component: RecycleBin,
meta: { title: '回收站' }
},
+ {
+ path: 'ai-assistant',
+ name: 'AIAssistant',
+ component: AIAssistant,
+ meta: { title: 'AI助教' }
+ },
+ {
+ path: 'ai-assistant-detail/:id',
+ name: 'AIAssistantDetail',
+ component: AIAssistantDetail,
+ meta: { title: '查看详情' }
+ },
{
path: 'student-management',
name: 'StudentManagement',
diff --git a/src/stores/user.ts b/src/stores/user.ts
index 13d4e0d..7630246 100644
--- a/src/stores/user.ts
+++ b/src/stores/user.ts
@@ -181,10 +181,11 @@ export const useUserStore = defineStore('user', () => {
user.value = JSON.parse(savedUser)
token.value = savedToken
- // 验证token是否仍然有效,并强制刷新用户信息
- await getCurrentUser(true)
+ // 不强制刷新用户信息,避免API超时导致白屏
+ // 如果需要验证token有效性,可以在用户操作时进行
+ console.log('✅ 用户认证状态已恢复')
} catch (error) {
- console.error('Failed to parse saved user data or token expired:', error)
+ console.error('Failed to parse saved user data:', error)
await logout()
}
}
diff --git a/src/views/teacher/AdminDashboard.vue b/src/views/teacher/AdminDashboard.vue
index 3beb1ae..3e01fde 100644
--- a/src/views/teacher/AdminDashboard.vue
+++ b/src/views/teacher/AdminDashboard.vue
@@ -65,11 +65,13 @@
@@ -89,6 +91,16 @@
个人中心
+
+
+
+
+
+ AI助教
+
+
@@ -120,6 +132,7 @@
+
+
+
+
diff --git a/src/views/teacher/ai/AssistantDetail.vue b/src/views/teacher/ai/AssistantDetail.vue
new file mode 100644
index 0000000..14045cc
--- /dev/null
+++ b/src/views/teacher/ai/AssistantDetail.vue
@@ -0,0 +1,3 @@
+
+ 查看分析页面
+
\ No newline at end of file
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
index 323c78a..a4136ed 100644
--- a/src/vite-env.d.ts
+++ b/src/vite-env.d.ts
@@ -5,3 +5,11 @@ declare module '*.vue' {
const component: DefineComponent<{}, {}, any>
export default component
}
+
+// Vue 3 全局类型声明
+declare global {
+ const defineProps: typeof import('vue')['defineProps']
+ const defineEmits: typeof import('vue')['defineEmits']
+ const defineExpose: typeof import('vue')['defineExpose']
+ const defineOptions: typeof import('vue')['defineOptions']
+}
\ No newline at end of file