From e99c37aa0c2f409a3ea11c7327ec9ef50e213b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=82=A5=E7=BE=8A?= <1048382248@qq.com> Date: Fri, 15 Aug 2025 19:47:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=95=99=E5=B8=88?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- .env.production | 8 +- src/api/class.ts | 12 - src/api/school.ts | 7 - src/api/userCenter.ts | 182 ++++++ src/components/hTable/index.vue | 9 +- src/router/index.ts | 6 +- src/router/modules/home.ts | 9 - src/utils/http/index.ts | 15 +- src/utils/http/types.d.ts | 8 + src/views/class/edit.vue | 4 +- src/views/class/index.vue | 4 +- src/views/grade/index.vue | 2 +- src/views/school/SchoolEdit.vue | 3 +- src/views/school/index.vue | 2 +- src/views/teacher/edit.vue | 555 +++++++++++++++++++ src/views/teacher/editUser.vue | 555 +++++++++++++++++++ src/views/teacher/index.vue | 859 +++++++++++++++++++++++++++++ src/views/teacher/positionForm.vue | 522 ++++++++++++++++++ 19 files changed, 2719 insertions(+), 45 deletions(-) delete mode 100644 src/api/class.ts create mode 100644 src/api/userCenter.ts create mode 100644 src/views/teacher/edit.vue create mode 100644 src/views/teacher/editUser.vue create mode 100644 src/views/teacher/index.vue create mode 100644 src/views/teacher/positionForm.vue diff --git a/.env.development b/.env.development index d70fc73..93c993a 100644 --- a/.env.development +++ b/.env.development @@ -9,4 +9,4 @@ VITE_ROUTER_HISTORY = "hash" # 接口地址 VITE_API_BASEURL = "http://localhost:5199/api" #数据中心后台地址 -VITE_API_USERCENTER_URL = "https://dca.w.23544.com:8843/api/back" +VITE_API_USERCENTER_URL = "https://dca.w.23544.com:8843/api/" diff --git a/.env.production b/.env.production index 84e6086..ca7f985 100644 --- a/.env.production +++ b/.env.production @@ -10,4 +10,10 @@ VITE_CDN = false # 是否启用gzip压缩或brotli压缩(分两种情况,删除原始文件和不删除原始文件) # 压缩时不删除原始文件的配置:gzip、brotli、both(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) # 压缩时删除原始文件的配置:gzip-clear、brotli-clear、both-clear(同时开启 gzip 与 brotli 压缩)、none(不开启压缩,默认) -VITE_COMPRESSION = "none" \ No newline at end of file +VITE_COMPRESSION = "none" + + +# 接口地址 +VITE_API_BASEURL = "http://localhost:5199/api" +#数据中心后台地址 +VITE_API_USERCENTER_URL = "https://dcb.23544.com/api" \ No newline at end of file diff --git a/src/api/class.ts b/src/api/class.ts deleted file mode 100644 index 5589bda..0000000 --- a/src/api/class.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { http } from "@/utils/http"; -import type { Res } from "@/utils/http/types"; - -/** - * @description 获取所有的菜单 - * @return {object} - */ -export function addClasses(info: any) { - return http.request>("post", `classes/addclass`, { - data: info - }); -} diff --git a/src/api/school.ts b/src/api/school.ts index 1a78add..8f8e2b6 100644 --- a/src/api/school.ts +++ b/src/api/school.ts @@ -28,10 +28,3 @@ export function getregion(r) { return http.request>("get", `address/${r}/region`); } -/** - * @description 编辑学校 - * @return {void} - */ -export function EditSchool(data: any) { - return http.request>("post", `schools/add`, { data }); -} diff --git a/src/api/userCenter.ts b/src/api/userCenter.ts new file mode 100644 index 0000000..3a454ef --- /dev/null +++ b/src/api/userCenter.ts @@ -0,0 +1,182 @@ +import { http } from "@/utils/http"; +import type { Res, ResPage } from "@/utils/http/types"; +/** + * @description 获取枚举下拉 + * @param {string} type 枚举类型 type=StatusEnum + * @return {object} + */ +export function getPageUserList(data: any) { + return http.request>( + "post", + `userCenter/back/users/getpageuserlist`, + { + data + } + ); +} +/** + * @description 编辑学校 + * @return {void} + */ +export function EditSchool(data: any) { + return http.request>("post", `userCenter/back/schools/add`, { + data + }); +} +/** + * @description 获取学校 + * @return {void} + */ +export function getSchoolData() { + return http.request>("get", `userCenter/public/getschooldata`); +} +/** + * @description 获取职位列表 + * @return {void} + */ +export function getPositionList(data: any) { + return http.request>( + "post", + `userCenter/back/positions/getpositionlist`, + { data } + ); +} +/** + * @description 云校下拉框数据 + * @return {object} + */ +export function cloudSchoolCombo() { + let data = { + ValueName: "Id", + TextName: "Name" + }; + return http.request>( + "post", + `userCenter/back/cloudschool/querycombo`, + { + data + } + ); +} +/** + * @description 获取用户信息 + * @return {object} + */ +export function getUserInfo(id) { + return http.request>( + "get", + `userCenter/back/users/getuserinfo?id=${id}` + ); +} + +/** + * @description 添加班级 + * @return {object} + */ +export function addClasses(info: any) { + return http.request>("post", `userCenter/back/classes/addclass`, { + data: info + }); +} + +/** + * @description 添加班级 + * @return {object} + */ +export function editUser(data: any) { + return http.request>("post", `userCenter/back/users/edituser`, { + data + }); +} + +/** + * @description 添加班级 + * @return {object} + */ +export function getClassCombo(info: any) { + return http.request>("post", `userCenter/public/getclasscombo`, { + data: info + }); +} + +/** + * @description 获取科目 + * @return {object} + */ +export function getSubjectData() { + return http.request>("get", `userCenter/public/getsubjectdata`); +} +/** + * @description 获取职位列表 + * @return {object} + */ +export function getPositions(data) { + return http.request>("post", `userCenter/back/positions/positions`, { + data + }); +} + +//--------------------------interface---------------------------- + +/** + * 职位信息 + */ +export interface Position { + userId: number; + id: number; + name: string; + schoolId: number; + enable: boolean; + endTime: string | null; + schoolName: string; + graduationYear: number; + grade: string; + classId: number; + className: string; + subjectId: number; + subjectName: string; + positionType: number; + positionLevel: number; + status: boolean; +} + +/** + * 用户详细信息 + */ +export interface UserDetail { + id: number; + templateId: number; + phone: string; + edited: boolean; + userType: number; + cloudSchoolId: number; + account: string; + studentId: string; + realName: string; + sex: number; + subjectLevel: any; + birthDate: string; + residence: string; + national: string; + headImage: string; + idCard: string | null; + pid: number; + pname: string; + cid: number; + cname: string; + rid: number; + rname: string; + wx: string; + isPerfectInfo: number; + level: number; + state: number; + meetingAccount: string | null; + gkSubject: string | null; + glSubject: string | null; + gSubject1: string | null; + gSubject2: string | null; + thirdPartyId: string | null; + pointPenSN: string | null; + subjectLevels: null; + positions: Position[]; +} diff --git a/src/components/hTable/index.vue b/src/components/hTable/index.vue index 57b9236..c8a69ba 100644 --- a/src/components/hTable/index.vue +++ b/src/components/hTable/index.vue @@ -559,7 +559,14 @@ function fetchPagedData() { -
+
{ getTopMenu(true); // query、params模式路由传参数的标签页不在此处处理 if (route && route.meta?.title) { - if (isAllEmpty(route.parentId) && route.meta?.backstage) { + if ( + isAllEmpty(route.parentId) && + route.meta?.backstage && + route.children + ) { // 此处为动态顶级路由(目录) const { path, name, meta } = route.children[0]; useMultiTagsStoreHook().handleTags("push", { diff --git a/src/router/modules/home.ts b/src/router/modules/home.ts index ff03d20..1cc1a4f 100644 --- a/src/router/modules/home.ts +++ b/src/router/modules/home.ts @@ -20,15 +20,6 @@ export default { title: "首页", showLink: VITE_HIDE_HOME === "true" ? false : true } - }, - { - path: "/school", - name: "school", - component: () => import("@/views/school/index.vue"), - meta: { - title: "学校", - showLink: true - } } ] } satisfies RouteConfigsTable; diff --git a/src/utils/http/index.ts b/src/utils/http/index.ts index 49f6eb3..80282e0 100644 --- a/src/utils/http/index.ts +++ b/src/utils/http/index.ts @@ -18,14 +18,17 @@ import router from "@/router"; /**请求后端的地址 未配置则访问BaseURL */ const apiServiceConfig = { - classes: import.meta.env.VITE_API_USERCENTER_URL, - schools: import.meta.env.VITE_API_USERCENTER_URL + userCenter: import.meta.env.VITE_API_USERCENTER_URL, + usercenter: import.meta.env.VITE_API_USERCENTER_URL }; -function getAPIUrl(url: string): string { +function setAPIUrl(c: PureHttpRequestConfig): void { + let url = c.url; let token = url.startsWith("/") ? url.split("/")[1] : url.split("/")[0]; - if (apiServiceConfig[token] != null) return apiServiceConfig[token]; - else return import.meta.env.VITE_API_BASEURL; + if (apiServiceConfig[token] != null) { + c.url = url.replaceAll(token, ""); + c.baseURL = apiServiceConfig[token]; + } else c.baseURL = import.meta.env.VITE_API_BASEURL; } const snakeToCamel = (str: string): string => { @@ -118,7 +121,7 @@ class PureHttp { // 开启进度条动画 NProgress.start(); if (config.url.indexOf("http") === -1) { - config.baseURL = getAPIUrl(config.url); + setAPIUrl(config); } // 优先判断post/get等方法是否传入回调,否则执行初始化设置等回调 if (typeof config.beforeRequestCallback === "function") { diff --git a/src/utils/http/types.d.ts b/src/utils/http/types.d.ts index f7870e8..7eb9427 100644 --- a/src/utils/http/types.d.ts +++ b/src/utils/http/types.d.ts @@ -18,6 +18,14 @@ export interface PureHttpError extends AxiosError { isCancelRequest?: boolean; } +export type ResPage = { + code: number; + data: { + data: T; + total: number; + }; + message: string; +}; export type Res = { code: number; data: T; diff --git a/src/views/class/edit.vue b/src/views/class/edit.vue index a3fea06..8da2f5f 100644 --- a/src/views/class/edit.vue +++ b/src/views/class/edit.vue @@ -180,7 +180,7 @@ import type { FormInstance } from "element-plus"; import { getenum } from "@/api/enum"; import { hTableAPI } from "@/api/hTable"; import { ruleRequired } from "@/utils/rules"; -import { addClasses } from "@/api/class"; +import { addClasses } from "@/api/userCenter"; import { ComboModel } from "@/components/hTable/hTable"; interface Formdata { @@ -295,7 +295,7 @@ const handleResetForm = () => { classesAddForm.value?.resetFields(); }; -const SchoolApi = new hTableAPI("schools"); +const SchoolApi = new hTableAPI("usercenter/back/schools"); const fetchInitdata = async () => { // 初始化班级列表 ClassNameList.value = Array.from({ length: 500 }, (_, i) => `${i + 1}班`); diff --git a/src/views/class/index.vue b/src/views/class/index.vue index 8314e3c..80ca012 100644 --- a/src/views/class/index.vue +++ b/src/views/class/index.vue @@ -12,12 +12,12 @@ defineOptions({ name: ControllerName }); -const SchoolApi = new hTableAPI("schools"); +const SchoolApi = new hTableAPI("usercenter/back/schools"); function searchCallback(data) {} const table = ref<{ initTable: (config: TableConfig) => void }>(); const tableData: TableConfig = { - apiUrl: ControllerName, + apiUrl: "usercenter/back/classes", selectColumn: false, // 列表选择 border: false, // 是否显示表格边框 searchCallback: searchCallback, diff --git a/src/views/grade/index.vue b/src/views/grade/index.vue index 7478824..a78a477 100644 --- a/src/views/grade/index.vue +++ b/src/views/grade/index.vue @@ -12,7 +12,7 @@ defineOptions({ name: ControllerName }); -const SchoolApi = new hTableAPI("School"); +const SchoolApi = new hTableAPI("usercenter/back/schools"); function searchCallback(data) {} const table = ref<{ initTable: (config: TableConfig) => void }>(); diff --git a/src/views/school/SchoolEdit.vue b/src/views/school/SchoolEdit.vue index 3b4911e..5e48c40 100644 --- a/src/views/school/SchoolEdit.vue +++ b/src/views/school/SchoolEdit.vue @@ -105,7 +105,8 @@
+ + diff --git a/src/views/teacher/editUser.vue b/src/views/teacher/editUser.vue new file mode 100644 index 0000000..924716f --- /dev/null +++ b/src/views/teacher/editUser.vue @@ -0,0 +1,555 @@ + + + + diff --git a/src/views/teacher/index.vue b/src/views/teacher/index.vue new file mode 100644 index 0000000..5892bd7 --- /dev/null +++ b/src/views/teacher/index.vue @@ -0,0 +1,859 @@ + + + + + diff --git a/src/views/teacher/positionForm.vue b/src/views/teacher/positionForm.vue new file mode 100644 index 0000000..bf01612 --- /dev/null +++ b/src/views/teacher/positionForm.vue @@ -0,0 +1,522 @@ + + + + +