From 9a36188322fb7f4c8764c2650824d4a302fe7eca Mon Sep 17 00:00:00 2001 From: Timothy Yin Date: Sun, 6 Apr 2025 02:25:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=95=99=E5=B8=88?= =?UTF-8?q?=E5=9B=A2=E9=98=9F=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=8C=85=E6=8B=AC=E6=90=9C=E7=B4=A2=E3=80=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=92=8C=E5=88=A0=E9=99=A4=E6=95=99=E5=B8=88=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/course.ts | 18 +++ api/user.ts | 14 +++ components/course/team/Member.vue | 11 +- nuxt.config.ts | 1 + package.json | 1 + pages/course/[id]/classes.vue | 40 ++++++- pages/course/[id]/team.vue | 192 ++++++++++++++++++++++++++++-- pnpm-lock.yaml | 20 ++++ types/index.ts | 2 + types/user.ts | 6 + 10 files changed, 287 insertions(+), 18 deletions(-) diff --git a/api/course.ts b/api/course.ts index cac151f..87703b1 100644 --- a/api/course.ts +++ b/api/course.ts @@ -19,6 +19,8 @@ export interface ITeacher { employeeId: string; schoolId: number; collegeId: number; + schoolName: string; + collegeName: string; sex: number; email: string; phonenumber: string; @@ -143,6 +145,22 @@ export const deleteCourseResource = async (resourceId: number) => { }); }; +export const addTeacherToCourse = async (params: { + courseId: number; + teacherId: number; +}) => { + return await http(`/system/teacherteam`, { + method: "POST", + body: params, + }); +}; + +export const deleteTeacherTeamRecord = async (recordId: number) => { + return await http(`/system/teacherteam/${recordId}`, { + method: "DELETE", + }); +}; + export const getTeacherTeamByCourse = async (courseId: number) => { return await http< IResponse<{ diff --git a/api/user.ts b/api/user.ts index c1dc0cc..7314232 100644 --- a/api/user.ts +++ b/api/user.ts @@ -35,3 +35,17 @@ export const userProfile = async () => { method: "GET", }); }; + +export const userSearch = async (pararms: { + searchType: "student" | "teacher"; + keyword: string; +}) => { + return await http< + IResponse & { + data: IUser[]; + } + >(`/system/user/search`, { + method: "GET", + query: pararms, + }); +}; diff --git a/components/course/team/Member.vue b/components/course/team/Member.vue index 2497c16..c46781e 100644 --- a/components/course/team/Member.vue +++ b/components/course/team/Member.vue @@ -7,7 +7,7 @@ defineProps<{ }>(); const emit = defineEmits<{ - delete: [teacherId: number]; + delete: [recordId: number]; }>(); @@ -17,11 +17,12 @@ const emit = defineEmits<{ class="absolute top-0 right-0 flex flex-col gap-1 invisible group-hover/member-card:visible" > @@ -46,10 +47,10 @@ const emit = defineEmits<{ 工号:{{ member.teacher.employeeId || "未知" }}

- {{ member.teacher.schoolId || "未知学校" }} + {{ member.teacher.schoolName || "未知学校" }}

- {{ member.teacher.collegeId || "未知学院" }} + {{ member.teacher.collegeName || "未知学院" }}

diff --git a/nuxt.config.ts b/nuxt.config.ts index 9e64de0..9306c72 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -23,6 +23,7 @@ export default defineNuxtConfig({ "pinia-plugin-persistedstate", "dayjs-nuxt", "@formkit/auto-animate", + "@vueuse/nuxt", ], icon: { diff --git a/package.json b/package.json index 7a8bb4f..1b04d1a 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@nuxtjs/color-mode": "^3.5.2", "@nuxtjs/tailwindcss": "^6.13.2", "@pinia/nuxt": "^0.10.1", + "@vueuse/nuxt": "^13.0.0", "dayjs": "^1.11.13", "dayjs-nuxt": "^2.1.11", "pinia-plugin-persistedstate": "^4.2.0", diff --git a/pages/course/[id]/classes.vue b/pages/course/[id]/classes.vue index 936c22b..221ffb2 100644 --- a/pages/course/[id]/classes.vue +++ b/pages/course/[id]/classes.vue @@ -1,7 +1,43 @@ - + diff --git a/pages/course/[id]/team.vue b/pages/course/[id]/team.vue index 39f62ae..0cdb9b4 100644 --- a/pages/course/[id]/team.vue +++ b/pages/course/[id]/team.vue @@ -1,21 +1,99 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04f34d6..5284869 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,9 @@ importers: '@pinia/nuxt': specifier: ^0.10.1 version: 0.10.1(magicast@0.3.5)(pinia@3.0.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))) + '@vueuse/nuxt': + specifier: ^13.0.0 + version: 13.0.0(magicast@0.3.5)(nuxt@3.16.1(@parcel/watcher@2.5.1)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.37.0)(terser@5.39.0)(typescript@5.8.2)(vite@6.2.3(jiti@2.4.2)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)) dayjs: specifier: ^1.11.13 version: 1.11.13 @@ -1412,6 +1415,12 @@ packages: '@vueuse/metadata@13.0.0': resolution: {integrity: sha512-TRNksqmvtvqsuHf7bbgH9OSXEV2b6+M3BSN4LR5oxWKykOFT9gV78+C2/0++Pq9KCp9KQ1OQDPvGlWNQpOb2Mw==} + '@vueuse/nuxt@13.0.0': + resolution: {integrity: sha512-tVb57PW0aUGMHwvzp4uH2mo8ut3D/3c7DA936E4ValhQq2VMZMCMxaKGz1nE8etFC7p18fVypyzpe8o6CBAYFw==} + peerDependencies: + nuxt: ^3.0.0 || ^4.0.0-0 + vue: ^3.5.0 + '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} @@ -6162,6 +6171,17 @@ snapshots: '@vueuse/metadata@13.0.0': {} + '@vueuse/nuxt@13.0.0(magicast@0.3.5)(nuxt@3.16.1(@parcel/watcher@2.5.1)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.37.0)(terser@5.39.0)(typescript@5.8.2)(vite@6.2.3(jiti@2.4.2)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))': + dependencies: + '@nuxt/kit': 3.16.1(magicast@0.3.5) + '@vueuse/core': 13.0.0(vue@3.5.13(typescript@5.8.2)) + '@vueuse/metadata': 13.0.0 + local-pkg: 1.1.1 + nuxt: 3.16.1(@parcel/watcher@2.5.1)(db0@0.3.1)(eslint@9.23.0(jiti@2.4.2))(ioredis@5.6.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.37.0)(terser@5.39.0)(typescript@5.8.2)(vite@6.2.3(jiti@2.4.2)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0) + vue: 3.5.13(typescript@5.8.2) + transitivePeerDependencies: + - magicast + '@vueuse/shared@12.8.2(typescript@5.8.2)': dependencies: vue: 3.5.13(typescript@5.8.2) diff --git a/types/index.ts b/types/index.ts index b6f5e94..55e2691 100644 --- a/types/index.ts +++ b/types/index.ts @@ -1,2 +1,4 @@ export * from "./user"; export * from "./course"; + +export type { FetchError } from "ofetch"; diff --git a/types/user.ts b/types/user.ts index 88a1ef0..398d7dc 100644 --- a/types/user.ts +++ b/types/user.ts @@ -1,6 +1,7 @@ export type LoginType = "admin" | "teacher" | "student"; export interface IUser { + id?: number; createBy: number; createTime: Date; updateBy: string; @@ -8,6 +9,11 @@ export interface IUser { remark: string; userId: number; deptId: number; + collegeName: string; + schoolName: string; + employeeId: string; + schoolId: number; + collegeId: number; userName: string; nickName: string; email: string;