TermiNexus
|
43a03857d1
|
refactor(company): 公司/部门/工作组编辑改为右侧抽屉
- 三个详情页的编辑 el-dialog 统一改为 el-drawer(direction=rtl, size=600)
- 保留原表单与 footer 按钮,destroy-on-close 语义不变
|
2026-09-29 12:01:02 +08:00 |
|
TermiNexus
|
6a488fe452
|
perf(layout): 分包预热改为菜单悬停懒预取
- prefetchRoutes 由「登录后全量预热」改为 WarmRouteByPath 按需预热(幂等、弱网跳过)
- 侧边栏菜单项 mouseenter/focusin 触发预热;分组菜单预热其全部子页面
- 首屏零额外请求,仅预热用户已表达意图的页面
|
2026-09-29 12:01:01 +08:00 |
|
TermiNexus
|
96e0776407
|
perf(layout): 登录后预热用户可访问页面的分包,配合 72h 强缓存
- 新增 utils/prefetchRoutes:遍历静态路由表收集懒加载 loader
- menuGuarded 路由仅当其路径在用户菜单树中才预热;其余登录即可访问的直接预热
- requestIdleCallback 启动 + 限并发 3 + 间隔 150ms,弱网/省流量模式跳过
- 按可见路径集合签名去重,菜单变化(切换角色)后重新预热一次
|
2026-09-29 11:32:43 +08:00 |
|
TermiNexus
|
1b907b3bb6
|
feat(app): 授权审批页面按公司管理员及以上判定,并统一相关文案
- 新增 userStore.isCompanyAdmin(消费 CheckAdmin.is_company_admin)
- AppPending 用 isCompanyAdmin 判定并更新空态文案
- 申请成功提示与 api/app.ts 注释从「租户管理员」改为「管理员」
|
2026-09-28 18:23:19 +08:00 |
|
TermiNexus
|
a918c9d488
|
feat(system): 站内信页面 UI 改版,列表与详情更易读
- 改为 el-card 卡片布局,标题/未读数/操作按钮收进卡片头
- 列表项:未读红点 + 左侧主色边、标题右侧显示时间、元信息加分隔
- 刷新按钮同时刷新列表与未读数;无未读时禁用「全部已读」
- 详情正文改为浅底内容块(限高滚动),元信息加分隔线
- 分页增加总数显示
|
2026-09-28 18:03:23 +08:00 |
|
TermiNexus
|
5405a4dade
|
fix(deploy): deploy.ps1 改为先构建后替换,消除部署空窗期
- 旧流程先删 dist/TempLate 资源再构建,窗口期内请求 404 或命中根目录站点
- 新流程:构建 -> 同步 assets -> 最后替换 index.html -> 清理镜像目录陈旧文件
- 清理仅限 assets/ 与 tinymce/,保留 pages/ 等生产独有目录
|
2026-09-28 18:03:21 +08:00 |
|
TermiNexus
|
cdfd6f827d
|
feat(app): 应用市场详情抽屉加遮罩并内联安装管理
- 抽屉改为带遮罩阴影,点击遮罩即关闭;宽度 420 -> 560
- 将「管理」弹窗内容(全租户状态/公司级勾选/保存)内联进抽屉
- 卡片「管理」按钮改为打开抽屉,移除独立管理弹窗
- 打开抽屉预取安装数据,保存后自动刷新勾选与「已装」标记
- 修复 loadMarket 重建列表后 detailApp 引用失效
|
2026-09-28 17:53:57 +08:00 |
|
TermiNexus
|
efd7f98522
|
fix(talk): 实时通道连接失败时透出错误原因
- 新增 connect_error 监听,dispatch talk:error 携带原因
- 避免握手被拒时前端无任何提示
|
2026-09-28 17:42:59 +08:00 |
|
TermiNexus
|
d00451c924
|
feat(app): 应用市场卡片支持右侧详情抽屉
- 卡片主体点击弹出 el-drawer,展示图标/名称/简介/标签与安装管理
- 配置入口仍跳转原独立页面 /app/config
- 操作区阻止冒泡,避免误触抽屉
|
2026-09-28 17:42:55 +08:00 |
|
TermiNexus
|
2b13f72045
|
fix(talk): 兼容历史菜单链接(/talk/index 重定向到 /talk)
- 后端菜单链接历史上写过 pages/talk/index.html,前端会规范化为 /talk/index
- 前端菜单有 localStorage 缓存,加此重定向兜住缓存里的旧链接,避免点进去 404
|
2026-09-28 17:29:28 +08:00 |
|
TermiNexus
|
eb5b51a474
|
feat(talk): 新增 Talk 企业聊天页面(仿微信三栏)
- 新增 src/views/talk/{Talk.vue,GroupCreateDialog.vue}、src/api/talk.ts、src/utils/talkSocket.ts
- 引入 socket.io-client:/talk 命名空间连接、断线重连、401 自动换令牌、心跳与 typing 节流
- 会话列表 / 消息气泡区(图片预览、文件卡片、时间分组、未读红点、上滑加载更早消息)/ 群成员面板
- 建群对话框:选本公司成员 + 配额实时提示(公司群/个人群/单群人数/公司参与人数)
- 路由 /talk(menuGuarded)+ apps/index.ts 注册 + vite.config.ts 增加 /socket.io 代理(ws)
|
2026-09-26 23:46:41 +08:00 |
|
TermiNexus
|
e79e3bb28b
|
feat(dashboard): 欢迎页对齐原生 GERP 并移除技术栈展示
- 欢迎区:logo + 标题 + 欢迎语 + 每日一言(6s 轮播/点击切换/300ms 淡入淡出)+ 个人中心/快捷操作
- 欢迎区改为占满剩余空间垂直居中(对齐原生 welcome-container),去除面板边框
- 删除「系统信息」面板(含前端/表格/后端技术栈描述行)
- 快捷入口超过 10 项折叠为「展开全部(N)/ 收起」,避免菜单过多拉长页面
|
2026-09-26 23:46:41 +08:00 |
|
TermiNexus
|
1c0885126d
|
fix(app-config): 虚拟职务绑定按公司隔离,租户默认层不展示绑定
- 新增 bindingEnabled(要求明确选中公司),租户默认层不加载虚拟职务绑定并清空已展示数据、复位脏标记
- 切换范围时仅在选中公司下重新加载绑定,避免误展示/误改他司数据
- getVirtualMapping/setVirtualMapping 注释澄清:CompanyUUID 缺省回落可管理公司
|
2026-09-15 14:24:46 +08:00 |
|
TermiNexus
|
9d1d6dca93
|
feat(role-scope): 接入 checkAdmin 细粒度作用域,CrudTable 支持只读模式
- stores/user: 新增 roleScopeType/Label 与 isScopeAdmin/isDeptManager/isWorkgroupLead/isScopeMember;AdminCheckResult.role_scope 补 DeptUUID/WorkgroupUUID
- CrudTable: 新增 editable prop,false 时隐藏新增/批量删除/编辑/删除(操作列全空则整列隐藏)
- Users: 四态标题/图标/横幅色/文案,仅 member 关闭行选择与编辑
- Products/Orders: 四态标题与文案、两态横幅;editable 取特权模式
- 清理 company 域 5 页与 system 三页的过期 role_scope TODO 注释
|
2026-09-15 14:24:40 +08:00 |
|
TermiNexus
|
3d4c46b7ee
|
feat(gerp-ui): 批量职务调整树形选择 + OA 审批页 + 虚拟职务一键绑定
- BatchPositionDialog:部门列表页以部门树组织员工、工作组列表页以工作组树组织成员,
均可勾选具体的人;选中行成员自动预勾选,可追加/取消;提交映射 UserRole/UserRoleWorkgroup
- Department/Workgroup 列表页 toolbar 新增"批量调整职务"入口(CompanyUUID 兜底当前用户公司)
- CrudTable 新增 #toolbar 插槽(暴露 selectedRows/refresh)
- OA 审批页 Approval.vue(请假/出差待审批,30s 轮询,通过/驳回)+ api/oa.ts
- AppConfigPage 虚拟职务"一键绑定"按钮 + api/app.ts autoBindVirtualPositions
- 附带:OA/财务/eHRM 应用页、MultiEntityPicker、菜单/布局优化等系列改动
|
2026-08-30 13:23:49 +08:00 |
|
TermiNexus
|
93464d0c3c
|
fix(auth): 租户详情路由加 menuGuarded 守卫
- /company/tenant-detail 直链访问时按后端菜单树校验,普通角色菜单已隐藏则拦截跳转
|
2026-08-25 09:55:57 +08:00 |
|
TermiNexus
|
c085594f51
|
fix(ui): 菜单 fa 图标宽度改用 --el-menu-icon-width
- .gerp-menu-icon 宽度 1em→var(--el-menu-icon-width,24px),与 EP el-icon 菜单图标盒宽一致,左间距/文字起点统一
|
2026-08-25 08:41:14 +08:00 |
|
TermiNexus
|
9a8cbb1c25
|
fix(ui): 侧边栏菜单 el-icon 与 fa 图标对齐(font-size/间距)
- el-menu-item/el-sub-menu__title 内 el-icon 统一 18px + margin-right 5px,与 .gerp-menu-icon(fa)一致,折叠态均去 margin
|
2026-08-25 08:39:26 +08:00 |
|
TermiNexus
|
f32ce1ff03
|
fix(ui): 右上角头像 hover 去除背景圈
- 移除 .gerp-user-info:hover 背景色,hover 不再出现边框圈
|
2026-08-25 08:19:24 +08:00 |
|
TermiNexus
|
3aebb7a035
|
feat(ui): 切换角色对话框加 loading 遮罩
- 设置默认登录角色 / 确认切换时,对话框内容区显示 element-plus v-loading 遮罩(文字区分两种操作)
|
2026-08-22 01:45:40 +08:00 |
|
TermiNexus
|
f61716f215
|
feat(auth): 默认登录角色设置(切换角色对话框星标)
- 切换角色对话框每张角色卡片加星标按钮:设为/取消默认登录角色(金色高亮)
- user store 新增 defaultRoleUuid 状态与 setDefaultRole 动作,fetchRoles 同步 IsDefault
- auth.ts 新增 SetDefaultRole 接口(POST /Auth/SetDefaultRole)
|
2026-08-22 01:23:28 +08:00 |
|
TermiNexus
|
1d5e406616
|
fix(style): 删除全局 el-dropdown-menu padding 4px 规则
- global.scss 移除 .el-dropdown__popper .el-dropdown-menu { padding: 4px 0 !important; }
- gerp-user-dropdown 自带 padding: 0 生效,用户下拉菜单无首尾空隙
|
2026-08-22 01:14:43 +08:00 |
|
TermiNexus
|
2eeaab6c5d
|
feat(ui): 头像下拉改 hover 触发并加深阴影
- el-dropdown trigger 由 click 改为 hover(与官网 GVSite 一致)
- gerp-user-dropdown 加双层阴影(0 10px 30px + 0 2px 8px),层级感与官网超级菜单一致
|
2026-08-22 01:11:08 +08:00 |
|
TermiNexus
|
a19874da72
|
feat(msync): 远端 App 打开链路——用户令牌签发拼 URL + 服务离线标记 + /remote 路由
|
2026-08-14 00:33:49 +08:00 |
|
TermiNexus
|
7e64bdf38a
|
feat(ram): 应用中心安装弹窗支持 RAM 角色授权选择(角色多选→GrantRoles)
|
2026-08-14 00:03:32 +08:00 |
|
TermiNexus
|
36afde19da
|
refactor(frontend): CrudTable 拆分——抽取 CrudFormPanel 动态表单与 useDraftAutosave 草稿 composable
|
2026-08-13 18:26:18 +08:00 |
|
TermiNexus
|
ce7a17d170
|
refactor(frontend): Phase 3 质量整改——死状态清理、类型收口、路由收敛、上传统一
- stores: 移除未使用的 token/loading/locale 死状态;AdminCheckResult 统一收口 types/api.ts
- router: 移除全 Mock 的 SKU 页生产路由(源码保留待独立工程决策)
- api/request: 新增 requestRaw() 显式原始响应封装(替代 responseType hack)
- Manager.vue: SimpleUpload 弃用 XMLHttpRequest,改统一 axios upload + onUploadProgress(拦截器收益全覆盖)
|
2026-08-13 18:14:25 +08:00 |
|
TermiNexus
|
4d49e549b5
|
build(assets): 裁剪 tinymce 部署产物(40MB 整包 → 14 文件 1.19MB)
- copyTinymceAssets 只拷运行时必需文件(核心 js/主题/模型/图标/oxide 皮肤 + 8 个在用插件)
- closeBundle 先 rmSync 清空目标目录,防陈旧完整包残留混入 dist
- deploy.ps1 清理阶段同步删除生产 tinymce 残留,保证部署一致性
|
2026-08-13 18:14:24 +08:00 |
|
TermiNexus
|
b80009c423
|
chore(gerp): 移除死依赖(FormKit/tinymce-i18n/@vxe-ui/plugin-render-element/vite-plugin-static-copy)并修正误导注释
- package.json: 移除 4 个未使用依赖,lock 同步(-27 包)
- main.ts: 去掉 FormKit 全局注册与对应 chunk
- vite.config.ts: 去掉 formkit manualChunk
- RichTextEditor.vue: 修正加载方式注释(自写 copyTinymceAssets 而非 vite-plugin-static-copy)
|
2026-08-13 17:36:13 +08:00 |
|
TermiNexus
|
08fa5d5139
|
style(ui): 导航/侧边栏/交互控件禁止文本选中(user-select:none),正文内容保持可选中
|
2026-08-13 09:44:19 +08:00 |
|
TermiNexus
|
7177f99cb8
|
feat(app): 应用配置公司化——配置页支持范围选择(租户默认/各公司)+ 批量复制到公司,权限随安装范围
|
2026-08-13 08:48:05 +08:00 |
|
TermiNexus
|
e1f43efc74
|
fix(app): 恢复配置按钮——管理范围内已装(含非本公司)也显示配置入口,不再依赖 isAppUsable
|
2026-08-13 08:36:52 +08:00 |
|
TermiNexus
|
eb0df83267
|
feat(app): 管理员视角安装分布——市场卡片标记可管理范围内已装该应用的公司名,管理范围内任意公司已装即显示管理
|
2026-08-13 08:34:58 +08:00 |
|
TermiNexus
|
2746fe4ce9
|
feat(app): 侧边栏刷新按钮升级为清缓存+全量重拉(用户信息/菜单/管理员状态),避免旧缓存导致安装状态显示错乱
|
2026-08-13 08:22:16 +08:00 |
|
TermiNexus
|
e654d147db
|
fix(app): 修复管理弹窗公司全未选中——manageCompanies 参数不再二次包裹 params,后端可正确收到 AppUUID 并返回各公司 Installed 状态
|
2026-08-13 08:22:16 +08:00 |
|
TermiNexus
|
5b221c07b7
|
feat(app): 应用中心公司级管理+配置页+身份徽标
- AppMarket 已安装应用改'管理':公司级安装/停用弹窗(diff 批量增删公司)
- 新增 AppConfigPage 独立配置页(AppConfig 键值表,/API/App/Config)
- 修复 Config 接口参数嵌套(params[AppUUID]→AppUUID)
- 侧边栏新增'强制刷新菜单'按钮
- 顶部导航新增当前身份徽标(角色+公司,管理员高亮,点击切换)
- 新增前端应用注册表 src/apps/index.ts(AppCode→路由/类型/旧页面映射,预留 MSYNC)
|
2026-08-13 07:46:59 +08:00 |
|
TermiNexus
|
91e2c186c7
|
feat(app): 应用中心支持公司维度安装——安装弹窗可选全租户/指定公司,停用双停(租户+当前公司)
|
2026-08-13 06:28:27 +08:00 |
|
TermiNexus
|
1894786327
|
chore(app): 删除已拆分的单页应用中心/单页GERP系统(由子页面取代)
|
2026-08-13 04:33:12 +08:00 |
|
TermiNexus
|
b15d3fe89d
|
refactor(app): 应用中心改父级菜单——拆分 应用市场/我的应用/授权审批 三个子页面
|
2026-08-13 04:33:02 +08:00 |
|
TermiNexus
|
ca618aa512
|
refactor(system): GERP系统改父级菜单——拆分 系统状态/系统时序/配置文件/运行时调整 四个子页面
|
2026-08-13 04:23:46 +08:00 |
|
TermiNexus
|
797bada4e7
|
feat(system): GERP系统运维控制台(状态/时序/secrets.ini/运行时调整)+ 路由
|
2026-08-13 04:20:29 +08:00 |
|
TermiNexus
|
f4aeaf94c4
|
feat(app): 应用中心页(应用市场/我的应用/授权审批)+ 路由与菜单入口
|
2026-08-13 04:06:16 +08:00 |
|
TermiNexus
|
6e9de08abc
|
feat(company): 企业创建成功页新增"返回租户详情",形成填写→详情闭环
|
2026-08-13 03:06:10 +08:00 |
|
TermiNexus
|
54e0d5fd52
|
feat(company): 租户详情支持菜单直达(无参数时回退当前角色租户),AdminCheck 类型补充租户字段
|
2026-08-13 02:57:00 +08:00 |
|
TermiNexus
|
b9e72ccf0e
|
feat(company): 租户详情展示企业信息(CompanyInfo),未填写引导 epcreate 向导,支持编辑
|
2026-08-13 02:39:41 +08:00 |
|
TermiNexus
|
e04e1bc91f
|
feat(router): 新增 debug/epcreate 路由,支持调试路径访问企业创建向导
|
2026-08-13 02:34:02 +08:00 |
|
TermiNexus
|
f894d81be8
|
fix(mail): 原文获取增加 blobId→Blob/get 回退,兼容 Stalwart 不支持 raw 属性
|
2026-08-13 01:24:41 +08:00 |
|
TermiNexus
|
be64c62a12
|
fix(mail): 原文获取改 blobId 回退方案(兼容 Stalwart 不支持 raw 属性),安全浏览文案改企业级
|
2026-08-13 01:22:02 +08:00 |
|
TermiNexus
|
ee6cd18c50
|
feat(mail): HTML 邮件 iframe 安全预览(默认禁脚本+JS 提示启用),支持查看源代码与原文
|
2026-08-13 01:16:52 +08:00 |
|
TermiNexus
|
670bb7bc76
|
feat(mail): 申请邮箱统一转为小写
|
2026-08-13 01:06:37 +08:00 |
|