TermiNexus
|
5be85bd427
|
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
|
a1765209dd
|
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
|
65dd330802
|
fix(auth): 租户详情路由加 menuGuarded 守卫
- /company/tenant-detail 直链访问时按后端菜单树校验,普通角色菜单已隐藏则拦截跳转
|
2026-08-25 09:55:57 +08:00 |
|
TermiNexus
|
808263dc19
|
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
|
4086f41d85
|
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
|
e467b986ba
|
fix(ui): 右上角头像 hover 去除背景圈
- 移除 .gerp-user-info:hover 背景色,hover 不再出现边框圈
|
2026-08-25 08:19:24 +08:00 |
|
TermiNexus
|
1389ba0abf
|
feat(ui): 切换角色对话框加 loading 遮罩
- 设置默认登录角色 / 确认切换时,对话框内容区显示 element-plus v-loading 遮罩(文字区分两种操作)
|
2026-08-22 01:45:40 +08:00 |
|
TermiNexus
|
1d9b2fe41e
|
feat(auth): 默认登录角色设置(切换角色对话框星标)
- 切换角色对话框每张角色卡片加星标按钮:设为/取消默认登录角色(金色高亮)
- user store 新增 defaultRoleUuid 状态与 setDefaultRole 动作,fetchRoles 同步 IsDefault
- auth.ts 新增 SetDefaultRole 接口(POST /Auth/SetDefaultRole)
|
2026-08-22 01:23:28 +08:00 |
|
TermiNexus
|
8582d0cc48
|
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
|
c03eca75d6
|
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
|
600498379b
|
feat(msync): 远端 App 打开链路——用户令牌签发拼 URL + 服务离线标记 + /remote 路由
|
2026-08-14 00:33:49 +08:00 |
|
TermiNexus
|
c9d9de5422
|
feat(ram): 应用中心安装弹窗支持 RAM 角色授权选择(角色多选→GrantRoles)
|
2026-08-14 00:03:32 +08:00 |
|
TermiNexus
|
9093712c34
|
refactor(frontend): CrudTable 拆分——抽取 CrudFormPanel 动态表单与 useDraftAutosave 草稿 composable
|
2026-08-13 18:26:18 +08:00 |
|
TermiNexus
|
57421368ca
|
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
|
5d9d784846
|
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
|
b42a3f4560
|
style(ui): 导航/侧边栏/交互控件禁止文本选中(user-select:none),正文内容保持可选中
|
2026-08-13 09:44:19 +08:00 |
|
TermiNexus
|
27e31d29ac
|
feat(app): 应用配置公司化——配置页支持范围选择(租户默认/各公司)+ 批量复制到公司,权限随安装范围
|
2026-08-13 08:48:05 +08:00 |
|
TermiNexus
|
e32039afb4
|
fix(app): 恢复配置按钮——管理范围内已装(含非本公司)也显示配置入口,不再依赖 isAppUsable
|
2026-08-13 08:36:52 +08:00 |
|
TermiNexus
|
38f93e4392
|
feat(app): 管理员视角安装分布——市场卡片标记可管理范围内已装该应用的公司名,管理范围内任意公司已装即显示管理
|
2026-08-13 08:34:58 +08:00 |
|
TermiNexus
|
026badc450
|
feat(app): 侧边栏刷新按钮升级为清缓存+全量重拉(用户信息/菜单/管理员状态),避免旧缓存导致安装状态显示错乱
|
2026-08-13 08:22:16 +08:00 |
|
TermiNexus
|
63c11a1fc9
|
fix(app): 修复管理弹窗公司全未选中——manageCompanies 参数不再二次包裹 params,后端可正确收到 AppUUID 并返回各公司 Installed 状态
|
2026-08-13 08:22:16 +08:00 |
|
TermiNexus
|
4841d01956
|
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
|
9a847671f1
|
feat(app): 应用中心支持公司维度安装——安装弹窗可选全租户/指定公司,停用双停(租户+当前公司)
|
2026-08-13 06:28:27 +08:00 |
|
TermiNexus
|
e96418ee4b
|
chore(app): 删除已拆分的单页应用中心/单页GERP系统(由子页面取代)
|
2026-08-13 04:33:12 +08:00 |
|
TermiNexus
|
618f5d0e2e
|
refactor(app): 应用中心改父级菜单——拆分 应用市场/我的应用/授权审批 三个子页面
|
2026-08-13 04:33:02 +08:00 |
|
TermiNexus
|
45212bb60d
|
refactor(system): GERP系统改父级菜单——拆分 系统状态/系统时序/配置文件/运行时调整 四个子页面
|
2026-08-13 04:23:46 +08:00 |
|
TermiNexus
|
a728f09cc2
|
feat(system): GERP系统运维控制台(状态/时序/secrets.ini/运行时调整)+ 路由
|
2026-08-13 04:20:29 +08:00 |
|
TermiNexus
|
9e130cbca9
|
feat(app): 应用中心页(应用市场/我的应用/授权审批)+ 路由与菜单入口
|
2026-08-13 04:06:16 +08:00 |
|
TermiNexus
|
03996da0e1
|
feat(company): 企业创建成功页新增"返回租户详情",形成填写→详情闭环
|
2026-08-13 03:06:10 +08:00 |
|
TermiNexus
|
8fdbdacbdc
|
feat(company): 租户详情支持菜单直达(无参数时回退当前角色租户),AdminCheck 类型补充租户字段
|
2026-08-13 02:57:00 +08:00 |
|
TermiNexus
|
84289355c2
|
feat(company): 租户详情展示企业信息(CompanyInfo),未填写引导 epcreate 向导,支持编辑
|
2026-08-13 02:39:41 +08:00 |
|
TermiNexus
|
fecd94f33d
|
feat(router): 新增 debug/epcreate 路由,支持调试路径访问企业创建向导
|
2026-08-13 02:34:02 +08:00 |
|
TermiNexus
|
0897f0cd6e
|
fix(mail): 原文获取增加 blobId→Blob/get 回退,兼容 Stalwart 不支持 raw 属性
|
2026-08-13 01:24:41 +08:00 |
|
TermiNexus
|
bd5ec06ecf
|
fix(mail): 原文获取改 blobId 回退方案(兼容 Stalwart 不支持 raw 属性),安全浏览文案改企业级
|
2026-08-13 01:22:02 +08:00 |
|
TermiNexus
|
cef2388877
|
feat(mail): HTML 邮件 iframe 安全预览(默认禁脚本+JS 提示启用),支持查看源代码与原文
|
2026-08-13 01:16:52 +08:00 |
|
TermiNexus
|
26a4c8a6e7
|
feat(mail): 申请邮箱统一转为小写
|
2026-08-13 01:06:37 +08:00 |
|
TermiNexus
|
3f24f0a52c
|
fix(mail): 邮箱选择改字符串绑定,修复切换后输入框显示未更新
|
2026-08-13 01:02:54 +08:00 |
|
TermiNexus
|
69f481b7cf
|
feat(mail): 多邮箱选择登录与申请,展示已申请数量(N/5)
|
2026-08-13 01:00:43 +08:00 |
|
TermiNexus
|
a9a408967c
|
fix(gitea): 免密登录改为新开页面跳转,不替换当前页
|
2026-08-11 16:57:55 +08:00 |
|
TermiNexus
|
f2edabbca9
|
feat(gitea): 增加免密登录按钮,跳转 Gitea OIDC 入口
GiteaSessionConfig 增加 SsoUrl;账号卡片显示免密登录按钮,点击跳转 Gitea 的 /user/oauth2/gerp
|
2026-08-11 16:38:49 +08:00 |
|
TermiNexus
|
517d9f1fdf
|
fix(mail): Blob/get 兼容 Stalwart 的 data:asText 纯文本字段
Stalwart v0.11 对 text/* 直接返回 data:asText(非标准 base64 的 data),fetchEmailBody 优先读 data:asText,缺失时回退 atob(data)
|
2026-08-11 01:26:21 +08:00 |
|
TermiNexus
|
689e3865e0
|
fix(mail): 邮件正文经 Blob/get 异步拉取(Stalwart v0.11 不返回 bodyValues)
jmap.ts: 新增 fetchEmailBody(Blob/get + atob,HTML 转纯文本),request/call 支持 using 参数(需 urn:ietf:params:jmap:blob capability)
mail.ts: jmap 代理数据类型增加 Using;Mailbox.vue: selectEmail 先显示 bodyValues 否则异步拉取正文,emailBodyText 由 computed 改 ref,switchMailbox 清空正文
|
2026-08-11 01:22:25 +08:00 |
|
TermiNexus
|
b1022d7ac9
|
fix(request): 401 可读 JSON 的 msg 附加到 error.message
- 后端 401 均返回 {code, msg} 可读 JSON(如 Mail/Login 的"邮箱或密码错误"),
拦截器此前在 silent 场景原样 reject,调用方只看到 HTTP 状态文本
- 现在统一提取响应体 msg 覆盖到 error.message,silent 与普通调用都能拿到后端文案
|
2026-08-11 01:03:34 +08:00 |
|
TermiNexus
|
f6ec881894
|
style(gerp): 整体企业化改造(阿里云式克制风格、配色可配置、Win11 侧边栏)
- global.scss 重构为设计令牌体系:细边框/克制圆角/浅阴影/紧凑字号
- 统一覆盖 Element Plus 与 vxe-table 企业化样式(表头底色、行间细横线、紧凑行高)
- app store 支持自定义主色:自动派生 light-N/dark-2 色阶,配色与明暗主题解耦
- Settings 新增"主题与配色"区:预设色板 + 自定义取色器
- 布局头部改面包屑式页名;侧边栏改 Win11 胶囊菜单(无指示条,hover/选中整行高亮,折叠图标居中,菜单项补 title 提示)
- TabBar 还原圆角选中卡片式样式
- Dashboard 重做:关键指标 KPI 区 + 快捷入口 + 系统信息(去除装饰性渐变)
- Login 配色改为跟随主题主色(去掉硬编码渐变)
- 内容区内边距收敛到各视图容器,避免双层 padding
|
2026-08-11 01:03:18 +08:00 |
|
TermiNexus
|
a9b41d9b27
|
feat(gitea): 新增 Gitea 对接页面(申请/改密/头像迁移/管理)并禁用接口 HTTP 缓存
|
2026-08-09 18:28:55 +08:00 |
|
TermiNexus
|
5f7e8eef6e
|
feat(doc): 编辑器支持富文本/Markdown 双模式、深色主题、TinyMCE 原生托管与系列排序
|
2026-08-09 01:50:15 +08:00 |
|
TermiNexus
|
5c320e0e4a
|
fix(mail): 修复邮件正文为空并新增联系人管理视图
- Email/get 补 bodyValues,正文按 partId 取值,HTML 去标签 - 左栏联系人入口 + 中栏 CRUD 管理(新增/编辑/删除) - 文件夹项选中态绑定当前视图,切换联系人时取消高亮
|
2026-08-08 20:49:51 +08:00 |
|
TermiNexus
|
864a9fae3b
|
feat(mail): 云端联系人匹配与收件人标签输入 + 邮件列表多项修复
- 写信收件人改标签输入(回车生成 label),输入匹配云端联系人下拉 - 邮件列表前端显式按接收时间降序(最新在顶部) - 快速切换文件夹竞态守卫,仅采纳最后请求结果 - 操作栏移至列表底部、删除/标记 loading 遮罩、长标题截断
|
2026-08-08 19:53:34 +08:00 |
|
TermiNexus
|
0900bfb7b5
|
fix(mail): 全部邮件排除垃圾箱、Email/set 结果校验与已读本地持久化
- 全部邮件查询用 inMailboxOtherThan 排除垃圾箱/垃圾邮件,删除后不再出现 - Email/set 校验 notUpdated/notDestroyed,已读/删除失败不再静默 - 已读本地覆盖表过渡 Stalwart v0.11 keywords 写入 bug,刷新保持已读
|
2026-08-08 16:52:38 +08:00 |
|
TermiNexus
|
162f713b2e
|
fix(mail): 修复邮件列表工具栏标题与选中计数换行错乱
- 标题与「已选 x 封」计数包裹进同一 flex 容器(align-items: baseline) - white-space nowrap 禁止换行、计数 flex-shrink 0、工具栏 overflow hidden
|
2026-08-08 16:12:22 +08:00 |
|