李琦
beba5e8feb
feat: 订单双视图、工作台日历组件、医生排班管理与挂号语音提醒
...
- 订单双视图:商品订单/处方/挂号列表新增卡片视图(CardList)、视图切换组件 view-mode-switch、stat-islands 统计岛、constants 字典
- 工作台:新增工作日历 Widget、待办日历、即将到访预约、公告滚动 NoticeTicker、日历面板 CalendarPanel
- 医生排班:新增排班 API、ScheduleDrawer 抽屉、schedule-calendar 组件、门店设置弹窗
- 日志与通知:新增排班变更日志页、排班变更通知视图
- 挂号提醒:新增挂号语音播报资源与 register-notify 工具
- 桌面端:新增 apps/desktop 壳及 desktop 工具方法
- 其他:处方/订单导出、聊天设置与 WebSocket 等小幅优化
2026-08-14 17:46:50 +08:00
李琦
f622743661
feat: 优化了若干接口页面,可用性存疑
2026-08-12 08:57:15 +08:00
李琦
6db736a6f4
feat:
...
1. 更新框架
2. 修复框架更新后导致的问题
3. 消息系统升级
2026-08-11 13:30:21 +08:00
李琦
b82754e36b
feat:
...
1. 更新框架
2. 修复框架更新后导致的问题
3. 消息系统升级
2026-08-10 20:08:50 +08:00
李琦
82b10bd122
Merge remote-tracking branch 'vben/main' into vben-dev
...
# Conflicts:
# .gitignore
# .husky/pre-commit
# .vscode/extensions.json
# .vscode/settings.json
# README.ja-JP.md
# README.md
# README.zh-CN.md
# apps/backend-mock/api/auth/codes.ts
# apps/backend-mock/api/auth/login.post.ts
# apps/backend-mock/api/auth/logout.post.ts
# apps/backend-mock/api/auth/refresh.post.ts
# apps/backend-mock/api/menu/all.ts
# apps/backend-mock/api/status.ts
# apps/backend-mock/api/table/list.ts
# apps/backend-mock/api/test.get.ts
# apps/backend-mock/api/test.post.ts
# apps/backend-mock/api/user/info.ts
# apps/backend-mock/middleware/1.api.ts
# apps/backend-mock/nitro.config.ts
# apps/backend-mock/package.json
# apps/backend-mock/routes/[...].ts
# apps/backend-mock/tsconfig.json
# apps/backend-mock/utils/cookie-utils.ts
# apps/backend-mock/utils/jwt-utils.ts
# apps/backend-mock/utils/mock-data.ts
# apps/backend-mock/utils/response.ts
# apps/web-antd/.env
# apps/web-antd/src/adapter/component/index.ts
# apps/web-antd/src/adapter/form.ts
# apps/web-antd/src/api/request.ts
# apps/web-antd/src/layouts/auth.vue
# apps/web-antd/src/layouts/basic.vue
# apps/web-antd/src/preferences.ts
# apps/web-antd/src/router/guard.ts
# apps/web-antd/src/router/routes/modules/demos.ts
# apps/web-antd/src/store/auth.ts
# apps/web-antd/src/views/demos/antd/index.vue
# apps/web-antdv-next/vite.config.ts
# apps/web-ele/.env
# apps/web-ele/index.html
# apps/web-ele/package.json
# apps/web-ele/src/adapter/component/index.ts
# apps/web-ele/src/adapter/form.ts
# apps/web-ele/src/adapter/vxe-table.ts
# apps/web-ele/src/api/request.ts
# apps/web-ele/src/bootstrap.ts
# apps/web-ele/src/layouts/auth.vue
# apps/web-ele/src/layouts/basic.vue
# apps/web-ele/src/locales/index.ts
# apps/web-ele/src/locales/langs/en-US/demos.json
# apps/web-ele/src/locales/langs/en-US/page.json
# apps/web-ele/src/locales/langs/zh-CN/demos.json
# apps/web-ele/src/locales/langs/zh-CN/page.json
# apps/web-ele/src/preferences.ts
# apps/web-ele/src/router/guard.ts
# apps/web-ele/src/router/routes/core.ts
# apps/web-ele/src/router/routes/modules/dashboard.ts
# apps/web-ele/src/router/routes/modules/demos.ts
# apps/web-ele/src/router/routes/modules/vben.ts
# apps/web-ele/src/store/auth.ts
# apps/web-ele/src/views/_core/authentication/code-login.vue
# apps/web-ele/src/views/_core/authentication/forget-password.vue
# apps/web-ele/src/views/_core/authentication/register.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-trends.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-data.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-sales.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits-source.vue
# apps/web-ele/src/views/dashboard/analytics/analytics-visits.vue
# apps/web-ele/src/views/dashboard/analytics/index.vue
# apps/web-ele/src/views/demos/element/index.vue
# apps/web-ele/src/views/demos/form/basic.vue
# apps/web-ele/tsconfig.json
# apps/web-ele/tsconfig.node.json
# apps/web-naive/.env
# apps/web-naive/index.html
# apps/web-naive/package.json
# apps/web-naive/src/adapter/component/index.ts
# apps/web-naive/src/adapter/form.ts
# apps/web-naive/src/adapter/vxe-table.ts
# apps/web-naive/src/api/request.ts
# apps/web-naive/src/bootstrap.ts
# apps/web-naive/src/layouts/auth.vue
# apps/web-naive/src/layouts/basic.vue
# apps/web-naive/src/locales/index.ts
# apps/web-naive/src/locales/langs/en-US/demos.json
# apps/web-naive/src/locales/langs/en-US/page.json
# apps/web-naive/src/locales/langs/zh-CN/demos.json
# apps/web-naive/src/locales/langs/zh-CN/page.json
# apps/web-naive/src/preferences.ts
# apps/web-naive/src/router/guard.ts
# apps/web-naive/src/router/routes/core.ts
# apps/web-naive/src/router/routes/modules/dashboard.ts
# apps/web-naive/src/router/routes/modules/demos.ts
# apps/web-naive/src/router/routes/modules/vben.ts
# apps/web-naive/src/store/auth.ts
# apps/web-naive/src/views/_core/authentication/code-login.vue
# apps/web-naive/src/views/_core/authentication/forget-password.vue
# apps/web-naive/src/views/_core/authentication/register.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-trends.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-data.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-sales.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits-source.vue
# apps/web-naive/src/views/dashboard/analytics/analytics-visits.vue
# apps/web-naive/src/views/dashboard/analytics/index.vue
# apps/web-naive/src/views/demos/form/basic.vue
# apps/web-naive/src/views/demos/naive/index.vue
# apps/web-naive/tsconfig.json
# apps/web-naive/tsconfig.node.json
# apps/web-naive/vite.config.ts
# docs/.vitepress/components/demo-preview.vue
# docs/.vitepress/components/preview-group.vue
# docs/.vitepress/config/en.mts
# docs/.vitepress/config/index.mts
# docs/.vitepress/config/plugins/demo-preview.ts
# docs/.vitepress/config/shared.mts
# docs/.vitepress/config/zh.mts
# docs/.vitepress/theme/components/site-layout.vue
# docs/.vitepress/theme/components/vben-contributors.vue
# docs/.vitepress/theme/styles/variables.css
# docs/package.json
# docs/src/_env/adapter/component.ts
# docs/src/_env/adapter/form.ts
# docs/src/_env/adapter/vxe-table.ts
# docs/src/commercial/community.md
# docs/src/components/common-ui/vben-count-to-animator.md
# docs/src/components/common-ui/vben-drawer.md
# docs/src/components/common-ui/vben-form.md
# docs/src/components/common-ui/vben-modal.md
# docs/src/components/common-ui/vben-vxe-table.md
# docs/src/components/layout-ui/page.md
# docs/src/demos/vben-drawer/auto-height/drawer.vue
# docs/src/demos/vben-drawer/basic/index.vue
# docs/src/demos/vben-drawer/dynamic/index.vue
# docs/src/demos/vben-drawer/shared-data/drawer.vue
# docs/src/demos/vben-drawer/shared-data/index.vue
# docs/src/demos/vben-form/api/index.vue
# docs/src/demos/vben-form/basic/index.vue
# docs/src/demos/vben-form/custom/index.vue
# docs/src/demos/vben-form/dynamic/index.vue
# docs/src/demos/vben-form/query/index.vue
# docs/src/demos/vben-form/rules/index.vue
# docs/src/demos/vben-modal/auto-height/modal.vue
# docs/src/demos/vben-modal/basic/index.vue
# docs/src/demos/vben-modal/dynamic/index.vue
# docs/src/demos/vben-modal/shared-data/index.vue
# docs/src/demos/vben-modal/shared-data/modal.vue
# docs/src/demos/vben-vxe-table/basic/index.vue
# docs/src/demos/vben-vxe-table/custom-cell/index.vue
# docs/src/demos/vben-vxe-table/edit-row/index.vue
# docs/src/demos/vben-vxe-table/fixed/index.vue
# docs/src/demos/vben-vxe-table/form/index.vue
# docs/src/demos/vben-vxe-table/remote/index.vue
# docs/src/demos/vben-vxe-table/tree/index.vue
# docs/src/demos/vben-vxe-table/virtual/index.vue
# docs/src/en/guide/essentials/development.md
# docs/src/en/guide/essentials/external-module.md
# docs/src/en/guide/essentials/route.md
# docs/src/en/guide/essentials/server.md
# docs/src/en/guide/essentials/settings.md
# docs/src/en/guide/in-depth/access.md
# docs/src/en/guide/in-depth/loading.md
# docs/src/en/guide/in-depth/locale.md
# docs/src/en/guide/in-depth/theme.md
# docs/src/en/guide/introduction/quick-start.md
# docs/src/en/guide/introduction/thin.md
# docs/src/en/guide/introduction/vben.md
# docs/src/en/guide/other/faq.md
# docs/src/en/guide/project/dir.md
# docs/src/en/guide/project/standard.md
# docs/src/en/guide/project/tailwindcss.md
# docs/src/en/index.md
# docs/src/friend-links/index.md
# docs/src/guide/essentials/build.md
# docs/src/guide/essentials/development.md
# docs/src/guide/essentials/external-module.md
# docs/src/guide/essentials/route.md
# docs/src/guide/essentials/server.md
# docs/src/guide/essentials/settings.md
# docs/src/guide/in-depth/access.md
# docs/src/guide/in-depth/check-updates.md
# docs/src/guide/in-depth/loading.md
# docs/src/guide/in-depth/locale.md
# docs/src/guide/in-depth/theme.md
# docs/src/guide/introduction/quick-start.md
# docs/src/guide/introduction/thin.md
# docs/src/guide/introduction/vben.md
# docs/src/guide/introduction/why.md
# docs/src/guide/other/faq.md
# docs/src/guide/project/dir.md
# docs/src/guide/project/standard.md
# docs/src/guide/project/tailwindcss.md
# docs/src/index.md
# docs/tsconfig.json
# package.json
# packages/@core/ui-kit/shadcn-ui/src/components/logo/logo.vue
# packages/constants/src/core.ts
# packages/effects/common-ui/src/components/index.ts
# packages/effects/common-ui/src/ui/dashboard/analysis/analysis-overview.vue
# packages/effects/common-ui/src/ui/dashboard/workbench/workbench-header.vue
# packages/effects/common-ui/src/ui/dashboard/workbench/workbench-project.vue
# packages/effects/layouts/src/authentication/authentication.vue
# packages/effects/layouts/src/basic/layout.vue
# packages/effects/layouts/src/widgets/notification/notification.vue
# packages/effects/layouts/src/widgets/notification/types.ts
# packages/icons/src/iconify/index.ts
# packages/icons/src/svg/index.ts
# packages/stores/src/modules/user.ts
# playground/src/adapter/component/index.ts
# playground/src/store/auth.ts
# pnpm-lock.yaml
# vben-admin.code-workspace
2026-08-10 16:55:17 +08:00
JyQAQ
e8d35a7471
fix(@vben/styles): 修复弹窗内 tooltip 层级被遮挡问题 ( #8240 )
...
将 antd-tooltip 的 z-index 提升至 2001,避免在 Modal/弹窗等高 z-index 容器内的 tooltip 被遮挡
2026-08-07 06:08:20 +08:00
金毛88
82d790a6ab
Merge branch 'fork/dream-weave/fix/popup-route-reentry'
2026-08-07 05:14:52 +08:00
金毛88
9c3ba53990
Merge branch 'fork/ming4762/fix-transition-20260805'
2026-08-07 05:11:42 +08:00
Dream
98761dce98
fix(@vben-core/popup-ui): stabilize content popups across routes
...
Mount in-content drawers and modals to the persistent main content element.
Initialize drawer open state when mounted after the API opens.
Fixes vbenjs/vue-vben-admin#8210
2026-08-06 10:17:14 +08:00
zhongming4762
d3dc081b5d
perf: 优化路由动画切换 1、切换出现双页面问题 2、切换出现横向和纵向滚动条问题
2026-08-05 19:14:12 +08:00
Dream
21d9132703
feat(@vben-core/popup-ui)!: add typed popup data contracts
...
Bind shared data to modal and drawer APIs and infer it from exposed connected components.
BREAKING CHANGE: getData<T>() is replaced by getData().
Shared data defaults to unknown, and an unset payload returns undefined instead
of an empty object.
2026-08-05 09:46:37 +08:00
dream-weave
9f5b1cd9fb
fix(@vben-core/form-ui)!: group field slot component props ( #8215 )
...
* refactor(@vben-core/form-ui)!: group field slot component props
* fix(@vben-core/form-ui): stabilize grouped field slot bindings
Resolve function-based common component props with field context.
Preserve internal model and event bindings when custom field slots spread componentProps.
Add regression coverage for array contexts, disabled precedence, and stale binding isolation.
* feat(@vben/vite-config): warn about field slot migration
Print the temporary field-slot migration warning when the development server starts.
Inject the same message into the browser console and keep the plugin serve-only.
* docs(@vben/docs): document field slot migration
Place the breaking field-slot notice at the start of both form documents.
Explain old and new bindings, development warnings, and planned notice removal.
* feat(@vben/playground): extend custom form example
Add a switchable input and select field to demonstrate schema component updates.
Update the composite phone field to emit new tuple values so validation observes changes.
2026-07-31 18:13:49 +08:00
dream-weave
32495e40b2
fix(@vben-core/popup-ui): rebind popup api after HMR ( #8217 )
...
* fix(@vben-core/popup-ui): rebind popup api after hmr
* fix(@vben-core/popup-ui): preserve options after remount
2026-07-31 06:13:10 +08:00
dream-weave
cb52807b27
fix(@vben-core/form-ui): correct field slot props ( #8216 )
2026-07-31 06:07:52 +08:00
MistyMoon
418c16e093
fix(@vben/locales): 修复锁屏弹窗按钮文案歧义 ( #8211 )
...
锁屏设置弹窗(lock-screen-modal)的确认按钮作用是输入密码后锁定屏幕,
但按钮文案 i18n key `ui.widgets.lockScreen.screenButton` 原值为「解锁」/「Unlock」,
与弹窗标题「锁定屏幕」及实际动作矛盾,存在歧义。
- zh-CN: 「解锁」->「锁定」
- en-US: 「Unlock」->「Lock」
(同段另有 `unlock` key 值「点击解锁」,用于已锁定后的全屏解锁界面,语义正确,保持不变)
2026-07-30 07:12:08 +08:00
JyQAQ
b04d728249
fix(@vben-core/form-ui): 兼容 zod v4 的 ZodArray,避免误用 unwrap() 丢失数组外壳导致数组校验失败 ( #8207 )
2026-07-28 15:50:15 +08:00
layhuts
fbf0cebf4b
style: 优化 vxe-table 类型组织结构,将 viewed-row 功能域相关类型进行模块化拆分,由全局类型声明调整为功能目录内聚管理,避免公共 types 文件持续膨胀。 ( #8204 )
2026-07-27 22:36:04 +08:00
金毛88
98344dfcec
Merge branch 'fork/dream-weave/fix-layout-scroll-container'
2026-07-25 20:37:20 +08:00
Dream
6d5ccc7ac8
fix(@vben/layouts): scope hash targets to layout
2026-07-24 17:32:51 +08:00
Dream
b9c6d56f74
fix(@vben/layouts): restore internal scroll navigation
2026-07-24 16:58:39 +08:00
Dream
aaf0da582c
fix(@vben-core/layout-ui): stabilize internal layout scrolling
2026-07-24 16:57:32 +08:00
Dream
9a5d052fa5
fix(@vben-core/composables): lock layout scroll container
2026-07-24 16:56:35 +08:00
Dream
baea741432
feat(@vben-core/shared): add layout scroll helpers
2026-07-24 16:55:36 +08:00
xingyu4j
cb6b0a8872
fix: constrain popper content to available viewport width
2026-07-24 15:21:07 +08:00
xingyu4j
57e2a54219
fix: add missing Symbol descriptions
2026-07-24 15:17:55 +08:00
xingyu4j
4db254cd21
fix: Tailwindcss v4 new variable shorthand syntax
2026-07-24 15:07:17 +08:00
xingyu4j
255a76d79a
feat: canonical tailwind class
2026-07-24 15:04:10 +08:00
dream-weave
dcdbfe5dfc
fix(@vben-core/form-ui): restore lock screen form submission ( #8195 )
...
* fix(@vben-core/form-ui): avoid stale form context access
* fix(@vben/playground): constrain date range codec fields
* test(@vben-core/form-ui): harden benchmark fixtures
* docs(@vben/docs): document form runtime and benchmarks
* fix(@vben/docs): 明确 getValues/submit 返回值及 submit 参数类型
2026-07-24 10:05:27 +08:00
Dream
517a42ec05
perf(@vben-core/form-ui): benchmark form hot paths
2026-07-23 17:47:57 +08:00
Dream
bacfdf5e42
perf(@vben-core/form-ui): optimize array field updates
2026-07-23 17:47:57 +08:00
Dream
decbed20bc
fix(@vben-core/form-ui): harden codec value boundaries
2026-07-23 17:47:57 +08:00
Dream
1ac5ac3e82
fix(@vben-core/form-ui): preserve array field focus
2026-07-23 17:47:57 +08:00
zhb410181
8d5a419c50
Merge branch 'vbenjs:main' into main
2026-07-23 15:25:16 +08:00
xingyu
2d82505330
fix: dropdown menu responsiveness and improve dialog handling ( #8187 )
...
* fix: 修复用户下拉框小部件菜单行点击无响应及弹框闪退
- 主题/时区/全屏/通知菜单行补充 @select 处理器,点击行任意位置即可触发
- 时区设置弹框宿主移出 DropdownMenu(showButton 模式),修复弹框随下拉框关闭而闪退
- 通知组件暴露 toggle 供下拉框调用
- 偏好设置小部件文案精简,positionMap 顺序调整
* feat: draggable-list.vue 直接复用 SelectItem,用法和 tabbar.vue 完全一致
2026-07-23 15:14:25 +08:00
dream-weave
98dea92225
feat(@vben-core/form-ui): add typed form value codecs ( #8189 )
...
* feat(@vben-core/form-ui): add typed form value codecs
* test(@vben-core/form-ui): cover codec value boundaries
* refactor(project): propagate form codec generics
* feat(@vben/plugins): propagate form codecs through vxe grids
* refactor(@vben/playground): migrate form codec examples
* refactor(@vben/playground): migrate query forms to codecs
* docs(@vben/docs): document form value codecs
2026-07-23 15:09:31 +08:00
hiss
e6a23479ee
fix: 修复锁定屏幕和退出登录小部件,位置在 user-dropdown 时,使用快捷键唤出两个模态窗
2026-07-23 14:44:32 +08:00
Harold Zhang
f43de252b5
fix: fixed the icon defect which cause to langauge button can not be clicked ( #8184 )
2026-07-23 12:20:38 +08:00
dream-weave
28757fb9c8
refactor(@vben-core/form-ui): migrate to Zod 4 and TanStack Form ( #8176 )
...
* build(@vben-core/form-ui): update form validation dependencies
* refactor(@vben-core/form-ui): replace vee-validate with TanStack Form
* test(@vben-core/form-ui): cover TanStack Form migration
* docs(@vben/docs): document Zod 4 form migration
* refactor(project): update form adapters
* refactor(project): migrate application form consumers
* refactor(@vben/playground): migrate form examples
* docs(@vben/docs): fix validate return type and required rule empty check in form docs
* fix(@vben-core/form-ui): resolve oxlint and eslint errors
- rewrite nested ternary expressions as if/else in form-field-array.vue and form-runtime.ts
- sort @tanstack/vue-form before @vben-core/composables in package.json
* chore: fix merge artifacts and formatting
- move dependencies before devDependencies in root package.json
- update preferences snapshot for widget positioning fields
- format form-array demo README
* refactor(@vben-core/form-ui): optimize form runtime and value flow
- add fine-grained field selectors and atomic dependency resolution
- expose raw and formatted value snapshots with focused regression coverage
* fix(@vben/layouts): dispose sortable instance on unmount
* docs(@vben/docs): document form runtime API changes
- list added, changed, removed, and deprecated form APIs
- document atomic dependencies and raw versus formatted values
2026-07-22 19:47:07 +08:00
xingyu
6b6708bcf2
fix: 修复点击退出图标确认后不能退出 && 图标排序等数组字段需顺序敏感比较 ( #8179 )
...
* chore: 调整 sortablejs 的位置,只在用到的模块引入
* fix: non-null assertion lint error
* fix: 修复点击退出图标确认后不能退出
* fix: 图标排序等数组字段需顺序敏感比较
* feat: 配置中增加 refresh 并统一位置
2026-07-22 17:44:10 +08:00
金毛88
899910547f
Merge branch 'fork/xingyu4j/deps'
2026-07-22 09:55:03 +08:00
金毛88
b21563a89b
feat: 顶栏与用户下拉框按钮样式统一与 tooltip 修复
...
- 修复 VbenTooltip 的 :content prop 类型错误,改用默认插槽
- 修复 VbenIconButton 的 onClick prop 支持数组合并
- VbenFullScreen 新增 tooltip prop,支持直接设置提示
- 统一顶栏与用户下拉框所有按钮样式,使用 VbenIconButton 包装
- 移除 i18n 中多余的"启用"字样(全局搜索/语言切换)
- 修复 VbenPopover PopoverTrigger 嵌套 button 导致 tooltip 不显示
Co-Authored-By: AtomCode (GLM-5.2) <noreply@atomgit.com >
2026-07-21 22:36:42 +08:00
xingyu4j
68a2717a26
fix: test error
2026-07-20 18:48:20 +08:00
xingyu4j
0a2c01e453
fix: 添加 oxlint 禁用注释以避免嵌套三元运算符警告
2026-07-20 18:45:38 +08:00
金毛88
f840d235ef
feat: 偏好设置小部件支持位置选择与拖拽排序
...
- 顶栏各小部件按钮支持选择位置(header/user-dropdown/none),偏好设置按钮额外保留 auto/fixed 智能兜底,移动端/全屏内容模式下自动切 fixed 浮动保命,避免偏好入口死锁
- draggable-list.vue 的 listRef 未在模板绑定,Sortable 永不初始化导致小部件无法拖拽;加 ref 绑定与 data-key 让 onEnd 从 DOM 读真实新顺序
- preferences.ts 的 updatePreferences 用 defu(merge) 合并数组,对 widget.order 是 concat 语义,每次拖拽触发更新都会把当前 order 追加一次,localStorage 里膨胀到上百条;改用 mergeWithArrayOverride 整体替换,加载缓存时 sanitizeCachedArray 去重已存在的脏数据
- preferences 按钮之前在 widget.order 里因 labelMap 未登记显示成裸字符串,且 widgetChecks 缺 refresh 导致刷新按钮不按 order 渲染;统一 preferences 与其它 widget 的拖拽排序与位置 select,refresh 补进 rightSlots.widgetChecks 并补模板渲染
- 补 sortablejs 依赖、WidgetPreferences.order 类型字段、preferences-drawer.vue 的 widgetOrder 绑定
2026-07-19 21:34:11 +08:00
金毛88
0cd87c170f
feat: 顶栏按钮支持位置选择(header/user-dropdown/none)
...
为顶栏所有部件按钮添加独立的位置配置,支持在顶栏、用户下拉菜单、不显示
三种选项间切换,每个按钮可独立设置。
- 新增 7 个位置偏好字段:globalSearchButtonPosition、
themeToggleButtonPosition、languageToggleButtonPosition、
fullscreenButtonPosition、notificationButtonPosition、
refreshButtonPosition、timezoneButtonPosition
- 合并 lockScreenButtonPosition、logoutButtonPosition
- header.vue 按位置条件过滤按钮显示
- user-dropdown.vue 新增对应菜单项,支持在用户下拉菜单中显示
- 偏好设置界面仅保留位置选择器(不再需要独立的开关)
- 更新中英文国际化文案
Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com >
2026-07-18 22:46:31 +08:00
金毛88
b71ebbd673
Merge remote-tracking branch 'pr-8019-temp/main'
2026-07-18 19:21:36 +08:00
金毛88
31d3bd18f3
Merge branch 'fork/LayHuts/feature/form-field-arry'
2026-07-18 19:18:14 +08:00
Jin Mao
eae6771554
Merge branch 'main' into feature/fix_defects_router
2026-07-18 03:54:49 +08:00
Guillermo Sagar
6910c691f7
修复动画导致的白屏Bug ( #8148 )
...
首次页面加载正常,但是当通过页面点击切换路由的时候白屏,无法正常渲染子页面
Vue Transition + KeepAlive 空白页 bug**: `<Transition mode="out-in">` + 条件渲染会导致路由切换空白页。`mode="out-in"` 要求旧元素完成 leave 动画后新元素才进入,但路由切换时条件渲染可能在动画前就移除了旧元素,导致 `<Transition>` 永远等待一个不存在的元素 → 死锁。**解决方案**: 移除 `mode="out-in"`(保留 Transition 动画),或在 `apps/web-antd/src/preferences.ts` 设置 `transition: { enable: false }` 关闭动画走 `v-else` 分支。
2026-07-16 09:35:25 +08:00
Harold Zhang
263d8e5b52
Merge branch 'main' into feature/fix_defects_router
2026-07-14 09:47:34 +08:00