Commit Graph

45 Commits (6ac8c9b2f763016fb3237bb325c6c92fe5d513ef)

Author SHA1 Message Date
Ryan Wang 982a45bd32
Merge branch 'main' into refactor/setting-config-update 2024-09-28 17:52:12 +08:00
Ryan Wang fd40770ebc
chore: bump vue version to 3.5 (#6696)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.20.x

#### What this PR does / why we need it:

升级 UI 项目的 Vue 版本至 3.5.x。

#### Does this PR introduce a user-facing change?

```release-note
升级 UI 项目的 Vue 版本至 3.5.x。
```
2024-09-26 08:11:31 +00:00
Ryan Wang 7e911e9738 Refine UI 2024-09-25 16:15:56 +08:00
Ryan Wang 035207b8db
chore: remove unused code related to system configMap (#6695)
#### What type of PR is this?

/area ui
/kind cleanup
/milestone 2.20.x

#### What this PR does / why we need it:

清理 UI 中关于获取 system configmap 的无用代码,目前观察到已经没有任何地方在使用这个数据。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-09-24 06:57:20 +00:00
Ryan Wang 3767a5a239
feat: add H2 database usage warning to setup page (#6502)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.19.x

#### What this PR does / why we need it:

在初始化页面添加使用 H2 数据库的警告。

<img width="773" alt="image" src="https://github.com/user-attachments/assets/3be83064-2075-4d3d-9511-9c67ffb68076">

#### Special notes for your reviewer:

需要测试在首次安装的时候使用 H2 数据库时,初始化页面是否有警告界面。

#### Does this PR introduce a user-facing change?

```release-note
在初始化页面添加使用 H2 数据库的警告。
```
2024-08-26 02:29:12 +00:00
Ryan Wang 487b0d343c
fix: correct API endpoints related to backup issues (#6506)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.19.x

#### What this PR does / why we need it:

修复备份相关的 API 接口地址错误的问题,此问题由 https://github.com/halo-dev/halo/pull/6486 引入,后端修改地址之后,前端没有对应修改。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-08-23 09:08:58 +00:00
Ryan Wang 6428b2f0e2
refactor: improve conditions for determining if a plugin needs to be reloaded (#6498)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.19.x

#### What this PR does / why we need it:

优化插件是否需要重载页面的判断条件,否则从低版本升级到 2.19 时,所有插件都会提示需要重载。

因为在 https://github.com/halo-dev/halo/pull/6470 中修改了 bundle.js 的结构,但升级到 2.19 之后可能并不会及时抛弃 bundle.js 的缓存,因为插件本身的 version 并没有改变,bundle.js 的 hash 参数也不会改变。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-08-23 07:16:58 +00:00
Ryan Wang 6cd8dc8555 Adapt console for restoring from backup root
Signed-off-by: JohnNiang <johnniang@foxmail.com>
2024-08-21 11:46:30 +08:00
Ryan Wang d19c27ba52 feat: add prompt for users to reload page after plugin update 2024-08-15 17:30:01 +08:00
Ryan Wang 2aaf64aa34
feat: add plugin detail modal as global component (#6233)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.17.x

#### What this PR does / why we need it:

添加 PluginDetailModal,用于打开插件的设置界面。并在扩展设置页面适配以测试。

<img width="1643" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/4bb38ab1-ed51-4437-8202-ccaf9f79cb41">

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6232

#### Does this PR introduce a user-facing change?

```release-note
为 UI 添加通用的插件设置弹窗,以供插件主动调用
```
2024-07-01 08:59:17 +00:00
Ryan Wang 8a61a39be3
refactor: refine permissions of extension settings page (#6237)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

优化插件扩展管理页面的 UI 权限,限制只有超级管理员才能访问。


#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-07-01 08:37:16 +00:00
Ryan Wang d92bb4398e
refactor: refine extension settings page (#6231)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

完善插件扩展设置页面:

1. 完善 i18n。
2. 将入口移动至插件页面右上角的操作按钮区域。

#### Does this PR introduce a user-facing change?

```release-note
None 
```
2024-07-01 06:43:17 +00:00
Ryan Wang fc57978aa2
fix: text style in extension point definition page (#6179)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.17.0

#### What this PR does / why we need it:

修复插件扩展点设置页面标题的颜色问题。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-06-27 09:48:55 +00:00
Ryan Wang 28e4ef0756
fix: clear extension definition options after switching extension points (#6165)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.17.x

#### What this PR does / why we need it:

修复在扩展点设置页面切换扩展点定义后,扩展定义的选项被清空的问题。

#### Which issue(s) this PR fixes:

Fixes #6164 

#### Does this PR introduce a user-facing change?

```release-note
修复在扩展点设置页面切换扩展点定义后,扩展定义的选项被清空的问题。
```
2024-06-27 07:12:53 +00:00
Ryan Wang 5eabce7544
feat: add management and view pages for extension points (#6137)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.17.x

#### What this PR does / why we need it:

添加扩展点的查看和设置页面。

<img width="1414" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/4dd4660f-540f-46b5-8250-b4f011ebaae6">

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/3206

#### Does this PR introduce a user-facing change?

```release-note
添加系统扩展点的查看和设置页面。
```
2024-06-26 13:58:51 +00:00
Ryan Wang a93479dc34
chore: organize and fix imports (#6152)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

重新组织和固定 UI 部分代码的 imports 导入,防止后续因为 imports 的顺序造成不必要的 diff。

基于:https://github.com/halo-dev/halo/pull/6151

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-06-26 10:42:50 +00:00
Takagi c1ba566e08
fix: autosave content feature not working (#6147)
#### What type of PR is this?

/kind bug
/area ui
/milestone 2.17.x

#### What this PR does / why we need it:

解决自动保存失效的问题

#### How to test it?

测试文章、页面输入内容后,点击其他页面是否能够自动保存。

#### Which issue(s) this PR fixes:

Fixes #6129 

#### Does this PR introduce a user-facing change?
```release-note
解决文章自动保存失效的问题
```
2024-06-26 06:10:49 +00:00
Ryan Wang f09b685d28
refactor: remove phone field for user form (#6139)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

移除用户创建/编辑表单的手机号字段,当前手机号在系统中没有任何使用。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-06-26 03:56:48 +00:00
Ryan Wang c74187c066 feat: add requests library as a global shared dependency 2024-06-25 12:31:44 +08:00
Ryan Wang 6a1ade375d
refactor: simplify the plugin startup logic (#6113)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.17.x

#### What this PR does / why we need it:

简化插件启动的接口,改为之前单独提供的修改插件状态的接口,而不是修改 `spec.enabled`。

#### Special notes for your reviewer:

需要测试:

1. 手动安装插件之后,启动插件。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-06-24 03:58:43 +00:00
Ryan Wang a26b73e258
chore: remove unnecessary env (#6022)
#### What type of PR is this?

/area ui
/kind cleanup
/milestone 2.16.x

#### What this PR does / why we need it:

移除 UI 项目中不必要的环境变量配置。

1. VITE_API_URL:当前 Console 不会考虑独立部署,并且在开发环境是后端 Proxy 的 Console 请求,所以此变量没有任何意义。
2. VITE_BASE_URL:无意义,当前不考虑修改。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-05-30 08:31:16 +00:00
Ryan Wang 4c6abdcaa1
feat: enable asynchronous resolving for UI extension points (#6018)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.16.x

#### What this PR does / why we need it:

优化 UI 部分的扩展点获取实现,让部分扩展点支持异步获取,之前的实现与文档不符。

比如:

```ts
import { definePlugin } from "@halo-dev/console-shared";
import axios from "axios";

export default definePlugin({
  components: {},
  routes: [],
  extensionPoints: {
    "attachment:selector:create": async () => {
      const { data } = await axios.get(
        "/apis/v1alpha1/fake.halo.run/attachments/selectors"
      );

      return data;
    },
  },
});
```

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/6008

#### Does this PR introduce a user-facing change?

```release-note
优化 UI 部分的扩展点获取实现,让部分扩展点支持异步获取。
```
2024-05-30 07:01:15 +00:00
Ryan Wang f87e78904c
feat: add version for themes and plugins when copying overview information (#6012)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.16.x

#### What this PR does / why we need it:

在概览页面复制信息时,为主题和插件添加版本号。

示例:

```
- 外部访问地址: 
- 启动时间: 2024-05-29 15:51
- 版本: 2.16.0-SNAPSHOT
- 构建时间: 2024-05-29 15:51
- Git Commit: 6204472
- Java: OpenJDK Runtime Environment / 17.0.11+0
- 数据库: PostgreSQL / 15.2 (Debian 15.2-1.pgdg110+1)
- 操作系统: Mac OS X / 14.5
- 已激活主题: [Earth 1.8.0](https://github.com/halo-dev/theme-earth.git)
- 已启动插件:
  - [静态网页服务 1.0.0-alpha.2](https://github.com/ruibaby/plugin-static-pages)
  - [评论组件 2.10.0-SNAPSHOT](https://github.com/halo-dev/plugin-comment-widget)
  - [OAuth2 认证 1.1.1](https://github.com/halo-sigs/plugin-oauth2)
  - [增强备份(Backup IMproved) 1.0.0-SNAPSHOT](https://www.halo.run/store/apps/app-dHakX)
  - [图库管理 1.3.0](https://github.com/halo-sigs/plugin-photos)
  - [Markdown / HTML 内容块 1.2.0](https://github.com/halo-dev/plugin-hybrid-edit-block)
  - AI 助手 1.0.0-alpha.2
  - [对象存储(Amazon S3 协议) 1.9.1](https://github.com/halo-dev/plugin-s3)
  - [链接管理 1.3.3](https://github.com/halo-sigs/plugin-links)
  - [Docsme 1.0.0-alpha.5](https://github.com/f2ccloud/plugin-docsme)
  - [ByteMD 1.4.0](https://github.com/ruibaby/plugin-bytemd)
  - [StackEdit 1.1.1](https://github.com/halo-sigs/plugin-stackedit)
  - [应用市场 1.3.0](https://www.halo.run/store/apps/app-VYJbF)
```

#### Does this PR introduce a user-facing change?

```release-note
在概览页面复制信息时,为主题和插件添加版本号。
```
2024-05-29 08:53:11 +00:00
Ryan Wang afabffc546
refactor: typing component template refs for VModal (#5994)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.16.x

#### What this PR does / why we need it:

为 VModal 组件的引用添加类型。

See https://vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-05-27 08:56:57 +00:00
Ryan Wang 19fb1c2311
feat: record the plugin query conditions in the route query parameters (#5995)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.16.x

#### What this PR does / why we need it:

在插件数据管理列表页面路由中记录查询条件,可以保证在刷新页面或者切换路由返回时保留之前的查询状态。

<img width="1663" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/2638dfc9-793b-48c6-81dd-f460a6c9214d">

#### Special notes for your reviewer:

需要测试:

1. 插件管理列表的所有筛选项是否可以正常工作。
2. 尝试设置部分筛选,然后刷新页面,观察筛选条件是否正常保留。

#### Does this PR introduce a user-facing change?

```release-note
Console 端的插件管理列表支持在地址栏记录筛选条件。
```
2024-05-27 08:28:57 +00:00
John Niang 5df51bb715
Refactor plugin reconciliation for dependency mechanism (#5900)
#### What type of PR is this?

/kind improvement
/area core
/area plugin

#### What this PR does / why we need it:

This PR wholly refactors plugin reconciliation to implement dependency mechanism.

Currently,
- If we disable plugin which has dependents, the plugin must wait for dependents to be disabled.
- If we enable plugin which has dependencies , the plugin must wait for dependencies to be enabled.
- If we upgrade plugin which has dependents, the plugin must request dependents to be unloaded. After the plugin is unloaded, the plugin must cancel unload request for dependents.

#### Which issue(s) this PR fixes:

Fixes #5872 

#### Special notes for your reviewer:

#### Does this PR introduce a user-facing change?

```release-note
优化被依赖的插件的升级,启用和禁用
```
2024-05-27 08:16:56 +00:00
Ryan Wang 769b19c23c
refactor: improve code base of role-related (#5984)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.16.x

#### What this PR does / why we need it:

优化和角色相关的对话框显示逻辑,减少不必要的渲染开销和请求。

#### Does this PR introduce a user-facing change?

```release-note
优化和角色相关的对话框显示逻辑,减少不必要的渲染开销和请求。
```
2024-05-24 07:18:51 +00:00
Ryan Wang f3c3c91ca4
refactor: improve method name of api client (#5980)
#### What type of PR is this?

/area ui
/kind cleanup
/milestone 2.16.x

#### What this PR does / why we need it:

规范 api client 的方法名,之前生成的 api client 的方法名没有完全遵循驼峰命名。

#### Which issue(s) this PR fixes:

Close https://github.com/halo-dev/halo/issues/5716

#### Special notes for your reviewer:

CI 通过即可。

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-05-24 04:04:50 +00:00
Ryan Wang 4d289c0a45
refactor: improve code base of user-related (#5975)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.16.x

#### What this PR does / why we need it:

优化和用户管理相关的所有对话框显示逻辑,减少不必要的渲染开销和请求。

#### Special notes for your reviewer:

改动范围如下:

1. 用户密码修改
2. 用户资料修改
3. 用户创建
4. 重新登录

#### Does this PR introduce a user-facing change?

```release-note
优化和用户管理相关的所有对话框显示逻辑,减少不必要的渲染开销和请求。
```
2024-05-23 06:32:49 +00:00
guqing c22b4e9ef4
refactor: optimize auth provider sorting with drag-and-drop support (#5914)
#### What type of PR is this?
/kind feature
/area core
/area ui
/milestone 2.16.x

#### What this PR does / why we need it:
优化认证方式的排序并支持拖动

#### Which issue(s) this PR fixes:
Fixes #5813

#### Does this PR introduce a user-facing change?
```release-note
优化认证方式的排序并支持拖动
```
2024-05-20 08:30:42 +00:00
lan-yonghui 587dafa66c
fix: remove close button for reserved alert in role detail page (#5909)
#### What type of PR is this?

/kind bug
/area core
/area ui

#### What this PR does / why we need it:
用户角色详情页面,权限设置提示框关闭按钮不能关闭,增加对应关闭事件!
![image](https://github.com/halo-dev/halo/assets/81747598/2aa93550-8f97-413d-8b88-0d6731587ca7)

#### Does this PR introduce a user-facing change?


```release-note
用户-角色设置-权限设置提示框关闭按钮
```
2024-05-14 07:02:33 +00:00
Ryan Wang 2178bd8b80
fix: show plugin error message (#5838)
#### What type of PR is this?

/area ui
/kind bug
/milestone 2.15.0

#### What this PR does / why we need it:

修复插件异常启动时,指示器显示不正确的问题。

Fixes https://github.com/halo-dev/halo/pull/5520

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-04-30 06:40:24 +00:00
Ryan Wang ee76f19572
feat: add issues field for plugin and theme manifest (#5755)
#### What type of PR is this?

/area core
/area ui
/kind feature
/kind api-change

#### What this PR does / why we need it:

为主题和插件的定义文件添加 issues 字段,用于填写问题反馈地址。方便使用者可以清楚的知道可以在哪里反馈问题。

<img width="767" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/b7dfce3f-8362-4964-82b8-cc018b85bb82">


#### Which issue(s) this PR fixes:

Fixes #5715 

#### Does this PR introduce a user-facing change?

```release-note
为主题和插件的定义文件添加问题反馈(issues)字段
```
2024-04-26 07:20:31 +00:00
Ryan Wang f2b883f2e9
feat: add verified badge for email field in profile detail page (#5783)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.15.x

#### What this PR does / why we need it:

在个人中心的个人资料页面添加邮箱已验证的标识,方便用户知晓。

<img width="596" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/77cd83e1-cefe-453c-ad12-689ee893c8ee">

#### Does this PR introduce a user-facing change?

```release-note
在个人中心的个人资料页面添加邮箱已验证的标识。
```
2024-04-26 04:36:59 +00:00
Ryan Wang 5a0f735efb
feat: show the startup status of the plugin (#5520)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.14.x

#### What this PR does / why we need it:

Show the startup status of the plugin

<img width="444" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/0f5d47c2-9d81-4cb7-b114-6b2eebe753c5">


#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/5254

#### Does this PR introduce a user-facing change?

```release-note
插件支持显示启动中的状态。
```
2024-04-25 08:21:13 +00:00
Ryan Wang fbf2b06432
feat: add extension points for user detail tab (#5763)
#### What type of PR is this?

/area ui
/kind feature
/milestone 2.15.x

#### What this PR does / why we need it:

为 Console 的用户详情页面的选项卡和个人中心的个人资料页面选项卡添加扩展点,支持通过插件扩展选项卡。

todo:

- [x] 完善 docs.halo.run 的开发文档 https://github.com/halo-dev/docs/pull/340

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/5745

#### Special notes for your reviewer:

可以使用 [plugin-starter-1.3.2-SNAPSHOT.jar.zip](https://github.com/halo-dev/halo/files/15059291/plugin-starter-1.3.2-SNAPSHOT.jar.zip) 进行测试。

#### Does this PR introduce a user-facing change?

```release-note
为 Console 的用户详情页面的选项卡和个人中心的个人资料页面选项卡添加扩展点
```
2024-04-25 00:33:09 +00:00
guqing f07c09b243
feat: add original password verification for password change (#5748)
* feat: add original password verification for password change

* chore: update properties file

* Refine ui

Signed-off-by: Ryan Wang <i@ryanc.cc>

* chore: update properties file

* fix: confirm assword

* fix: unit test case

* feat: add new api for change own password

* chore: regenerate api client

* chore: adapt to UI

* chore: enusre old password not blank

---------

Signed-off-by: Ryan Wang <i@ryanc.cc>
Co-authored-by: Ryan Wang <i@ryanc.cc>
2024-04-21 15:07:46 +08:00
Ryan Wang 571df5f865
feat: refine fields in plugin detail page (#5724)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.15.x

#### What this PR does / why we need it:

优化插件详情页面的字段显示,适配 https://github.com/halo-dev/halo/pull/4061

1. 显示 metadata.name。
2. 显示源码仓库地址(spec.repo)。
3. 显示网站地址(spec.homepage)。

<img width="663" alt="image" src="https://github.com/halo-dev/halo/assets/21301288/a1b2a561-4351-4c18-b959-6b398532a9af">

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/5721

#### Does this PR introduce a user-facing change?

```release-note
优化插件详情页面的字段显示
```
2024-04-19 02:40:08 +00:00
mashirot d4f38dc6c6
feat: set selectedRole as required when creating a new user (#5697)
#### What type of PR is this?

/kind improvement
/area ui

#### Which issue(s) this PR fixes:

Fixes #5677 

#### Does this PR introduce a user-facing change?

```release-note
将新建用户的表单中的角色设置设为必填
```
2024-04-15 04:30:10 +00:00
Ryan Wang 78b60a0a29
refactor: rendering conditions for plugin installation components (#5577)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.14.x

#### What this PR does / why we need it:

优化插件安装弹框组件的渲染时机,改为在未打开时不进行渲染,可以避免一些不必要的请求,尤其是在安装了应用市场插件之后。

#### Which issue(s) this PR fixes:

Fixes #5573 

#### Special notes for your reviewer:

测试插件安装和升级功能是否正常即可。

#### Does this PR introduce a user-facing change?

```release-note
优化插件安装弹框组件的渲染时机,避免不必要的请求。
```
2024-03-26 10:48:07 +00:00
Ryan Wang 5cf4eae583
chore: redefine the actuator page as the overview page (#5509)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.14.x

#### What this PR does / why we need it:

将原来的 Actuator 页面改为 Overview。

#### Which issue(s) this PR fixes:

Fixes #5508 

#### Does this PR introduce a user-facing change?

```release-note
None
```
2024-03-15 15:30:11 +00:00
guqing 11114416fa
refactor: optimize notification and subscription query using index (#5414)
### What type of PR is this?
/kind improvement
/area core
/milestone 2.13.x

### What this PR does / why we need it:
使用索引机制优化通知和订阅查询以提高性能

how to test it
测试通知列表不报错即可

### Does this PR introduce a user-facing change?

```release-note
使用索引机制优化通知和订阅查询以提高性能
```
2024-02-27 11:53:13 +00:00
Ryan Wang 827030dd68
refactor: layout of login related page (#5413)
#### What type of PR is this?

/area ui
/kind improvement
/milestone 2.13.0

#### What this PR does / why we need it:

优化登录相关页面的布局,修复在不同分辨率下的样式问题。

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/5346

#### Special notes for your reviewer:

测试登录或者注册页面,任意放大或者缩小页面,观察页面样式是否正常。

#### Does this PR introduce a user-facing change?

```release-note
优化登录相关页面的布局,修复在不同分辨率下的样式问题。
```
2024-02-27 10:21:14 +00:00
guqing a15a9587b8
refactor: optimize user query using index (#5396)
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.13.x

#### What this PR does / why we need it:
使用索引机制优化用户查询以提高性能

#### Does this PR introduce a user-facing change?
```release-note
使用索引机制优化用户查询以提高性能
```
2024-02-27 08:45:12 +00:00
John Niang 15f7fe2d4f Move folder console to ui 2024-02-02 22:22:51 +08:00