From 7f02fc7e9c0d40d8a6086f898f07e3ff6126dffd Mon Sep 17 00:00:00 2001 From: hebo Date: Mon, 23 Feb 2026 17:29:36 +0800 Subject: [PATCH] =?UTF-8?q?SAAS=E6=A8=A1=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/api/analysis/xs.ts | 14 +- src/api/base/jfApi.ts | 8 + src/api/base/jzApi.ts | 14 + src/api/routine/jz.ts | 16 + src/api/system/config/index.ts | 15 + src/api/system/login/index.ts | 5 - src/api/system/menu.ts | 17 + src/components/Tinymce/TinymceEditorH5.vue | 178 ++ src/components/Tinymce/TinymceOrEditor.vue | 45 + src/pages.json | 93 +- src/pages/base/mine/index.vue | 608 +++-- src/pages/base/service/index copy.vue | 1984 +++++++++++++++++ src/pages/base/service/index.vue | 182 +- src/pages/system/launchPage/launchPage.vue | 81 +- src/pages/view/analysis/xs/studentArchive.vue | 583 ----- .../view/routine/JiFenPingJia/jftj/detail.vue | 91 +- .../view/routine/JiFenPingJia/jftj/index.vue | 328 ++- .../view/routine/JiFenPingJia/jftj/yjpm.vue | 633 +++--- .../view/routine/RengJiaoRengZhi/index.vue | 3 +- src/pages/view/routine/da/jsda/index.vue | 660 ++++++ src/pages/view/routine/da/jzda/index.vue | 312 +++ .../view/routine/da/xsda/studentArchive.vue | 450 ++++ src/pages/view/routine/tz/publish.vue | 4 +- src/pages/view/routine/xk/xkkcDetail.vue | 45 +- src/static/base/home/grda.png | Bin 0 -> 6154 bytes src/static/base/home/jsda.png | Bin 6154 -> 5658 bytes src/static/base/home/jzda.png | Bin 0 -> 8317 bytes src/static/tinymce/langs/zh_CN.js | 31 + src/store/modules/menu.ts | 34 + src/store/modules/user.ts | 33 +- src/utils/permission.ts | 336 +-- 32 files changed, 4917 insertions(+), 1887 deletions(-) create mode 100644 src/api/base/jzApi.ts create mode 100644 src/api/routine/jz.ts create mode 100644 src/api/system/menu.ts create mode 100644 src/components/Tinymce/TinymceEditorH5.vue create mode 100644 src/components/Tinymce/TinymceOrEditor.vue create mode 100644 src/pages/base/service/index copy.vue delete mode 100644 src/pages/view/analysis/xs/studentArchive.vue create mode 100644 src/pages/view/routine/da/jsda/index.vue create mode 100644 src/pages/view/routine/da/jzda/index.vue create mode 100644 src/pages/view/routine/da/xsda/studentArchive.vue create mode 100644 src/static/base/home/grda.png create mode 100644 src/static/base/home/jzda.png create mode 100644 src/static/tinymce/langs/zh_CN.js create mode 100644 src/store/modules/menu.ts diff --git a/package.json b/package.json index 57329af..8393edb 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "pinia-plugin-persist-uni": "1.2.0", "pinyin-pro": "^3.27.0", "qrcode": "^1.5.3", + "tinymce": "^5.10.7", "uview-plus": "3.1.20", "vconsole": "3.15.1", "vue": "3.2.45", diff --git a/src/api/analysis/xs.ts b/src/api/analysis/xs.ts index 08943ef..67f21a8 100644 --- a/src/api/analysis/xs.ts +++ b/src/api/analysis/xs.ts @@ -1,4 +1,4 @@ -import { get, post } from "@/utils/request"; +import { get } from "@/utils/request"; // 学生档案相关API接口 @@ -8,3 +8,15 @@ import { get, post } from "@/utils/request"; export function findStudentInfoByNjAndBjSimpleApi(njId: string, bjId: string) { return get('/api/xs/findStudentInfoByNjAndBjSimple', { njId, bjId }); } + +/** + * 学生档案查询:支持多年级、多班级、学生、姓名 + */ +export function findStudentArchiveApi(params: { + njIds?: string; + bjIds?: string; + xsIds?: string; + xsxm?: string; +}) { + return get('/api/xs/findStudentArchive', params); +} diff --git a/src/api/base/jfApi.ts b/src/api/base/jfApi.ts index 5ce6437..89f1501 100644 --- a/src/api/base/jfApi.ts +++ b/src/api/base/jfApi.ts @@ -1,5 +1,13 @@ import { get, post } from "@/utils/request"; +/** + * 按教师统计积分(已审批、待审批、已驳回、暂存),按大类分组 + * 返回数据结构:{ jsId, jsName, topTypeId, topTypeName, approvedCount, calculatedScore, pendingCount, rejectedCount, draftCount } + */ +export function jfStatisticsByTeacherApi(params: any) { + return get('/api/jf/statisticsByTeacher', params); +} + /** * 教师积分类型汇总 */ diff --git a/src/api/base/jzApi.ts b/src/api/base/jzApi.ts new file mode 100644 index 0000000..ca161f5 --- /dev/null +++ b/src/api/base/jzApi.ts @@ -0,0 +1,14 @@ +import { get } from "@/utils/request"; + +/** + * 家长档案分页查询(按年级班级、家长姓名模糊查询,支持分页滚动加载) + */ +export function findParentArchivePageApi(params: { + njId: string; + bjId: string; + jzxm?: string; + page?: number; + rows?: number; +}) { + return get('/api/jz/findParentArchivePage', params); +} diff --git a/src/api/routine/jz.ts b/src/api/routine/jz.ts new file mode 100644 index 0000000..7c62f3e --- /dev/null +++ b/src/api/routine/jz.ts @@ -0,0 +1,16 @@ +import { get } from "@/utils/request"; + +/** + * 家长档案分页查询 + * 支持多年级、多班级、学生筛选,按家长姓名模糊查询,分页滚动加载 + */ +export function findParentArchivePageApi(params: { + njIds?: string; + bjIds?: string; + xsIds?: string; + jzxm?: string; + page?: number; + rows?: number; +}) { + return get('/api/jz/findParentArchivePage', params); +} diff --git a/src/api/system/config/index.ts b/src/api/system/config/index.ts index 41c9363..b078eb8 100644 --- a/src/api/system/config/index.ts +++ b/src/api/system/config/index.ts @@ -1,5 +1,20 @@ import { get } from "@/utils/request"; +/** 短时缓存,避免 launchPage → service 连续跳转时重复调用 */ +let _changeTimeCache: { promise: Promise; ts: number } | null = null; +const CACHE_MS = 10000; // 10 秒内复用 + +/** 获取权限变更时间戳,用于判断本地缓存的菜单是否需重新拉取 */ +export const getPermissionChangeTimeApi = () => { + const now = Date.now(); + if (_changeTimeCache && now - _changeTimeCache.ts < CACHE_MS) { + return _changeTimeCache.promise; + } + const promise = get("/api/comConfig/getPermissionChangeTime"); + _changeTimeCache = { promise, ts: now }; + return promise; +}; + //配置参数接口 export const dmBeforeMinuteApi = async () => { return await get("/api/comConfig/getDmBeforeMinute"); diff --git a/src/api/system/login/index.ts b/src/api/system/login/index.ts index cc26b92..1b895af 100644 --- a/src/api/system/login/index.ts +++ b/src/api/system/login/index.ts @@ -44,11 +44,6 @@ export const weChatLogin = async (param: any) => { return await get("/userlogin/weloginByCode", param); }; -//获取用户按钮权限 -export const authenticationApi = async (param: { userId: string }) => { - return await get("/api/authentication/find-by-user", param); -}; - //获取公众号票据 export const wxConfigApi = async (param: any) => { return await post("/userlogin/wxConfig", param); diff --git a/src/api/system/menu.ts b/src/api/system/menu.ts new file mode 100644 index 0000000..3823de7 --- /dev/null +++ b/src/api/system/menu.ts @@ -0,0 +1,17 @@ +import { get } from "@/utils/request"; + +/** 手机端菜单树节点 */ +export interface MobileMenuTreeNode { + id: number; + parentId: number | null; + screenName: string; + normalCss?: string; + pagePath?: string; + sortNum: number; + authCode?: string; + children: MobileMenuTreeNode[]; +} + +/** 获取手机端菜单 */ +export const getMobileMenuApi = () => + get<{ result: MobileMenuTreeNode[] }>("/api/screen/find-mobile-menu"); diff --git a/src/components/Tinymce/TinymceEditorH5.vue b/src/components/Tinymce/TinymceEditorH5.vue new file mode 100644 index 0000000..c93ba80 --- /dev/null +++ b/src/components/Tinymce/TinymceEditorH5.vue @@ -0,0 +1,178 @@ + + + + + + diff --git a/src/components/Tinymce/TinymceOrEditor.vue b/src/components/Tinymce/TinymceOrEditor.vue new file mode 100644 index 0000000..4f44955 --- /dev/null +++ b/src/components/Tinymce/TinymceOrEditor.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/pages.json b/src/pages.json index 8b17f2e..b77b5f3 100644 --- a/src/pages.json +++ b/src/pages.json @@ -861,6 +861,69 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/view/routine/xszp/kc/kclx", + "style": { + "navigationBarTitleText": "课程任务类型", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/tj/index", + "style": { + "navigationBarTitleText": "学业统计", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/tj/kclx", + "style": { + "navigationBarTitleText": "课程任务类型", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/tj/statistics", + "style": { + "navigationBarTitleText": "学业统计", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/tj/personnelList", + "style": { + "navigationBarTitleText": "人员名单", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/tj/groupDetail", + "style": { + "navigationBarTitleText": "分组情况明细", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/kclx/index", + "style": { + "navigationBarTitleText": "作品课程类型", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/kclx/add", + "style": { + "navigationBarTitleText": "新增课程类型", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/xszp/kclx/edit", + "style": { + "navigationBarTitleText": "编辑课程类型", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/routine/xszp/pj/index", "style": { @@ -1317,6 +1380,20 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/view/homeSchool/kspj/index", + "style": { + "navigationBarTitleText": "成绩评价", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/homeSchool/kspj/detail", + "style": { + "navigationBarTitleText": "评价详情", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/hr/jsQj/index", "style": { @@ -1722,12 +1799,26 @@ } }, { - "path": "pages/view/analysis/xs/studentArchive", + "path": "pages/view/routine/da/xsda/studentArchive", "style": { "navigationBarTitleText": "学生档案", "enablePullDownRefresh": false } }, + { + "path": "pages/view/routine/da/jzda/index", + "style": { + "navigationBarTitleText": "家长档案", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/view/routine/da/jsda/index", + "style": { + "navigationBarTitleText": "教师档案", + "enablePullDownRefresh": false + } + }, { "path": "pages/view/analysis/xk/xkCourse", "style": { diff --git a/src/pages/base/mine/index.vue b/src/pages/base/mine/index.vue index 9cec9fe..0dcf4b9 100644 --- a/src/pages/base/mine/index.vue +++ b/src/pages/base/mine/index.vue @@ -1,58 +1,62 @@