diff --git a/README.md b/README.md
index 17742ddd8..553739dfb 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ V3 Admin Vite is a well-crafted backend management system template, built with p
> Version 4.x will no longer be maintained unless there are critical bugs! [Click to switch to the 4.x branch](https://github.com/un-pany/v3-admin-vite/tree/4.x)
> [!TIP]
-> Paid services are officially launched! If you don’t want to do it yourself but want to remove TS or other modules, try the lazy package! [Click to check it out](https://github.com/un-pany/v3-admin-vite/issues/225)
+> Paid services are officially launched! If you don't want to do it yourself but want to remove TS or other modules, try the lazy package! [Click to check it out](https://github.com/un-pany/v3-admin-vite/issues/225)
> [!NOTE]
> If you have mobile web app requirements, give the new open-source template [MobVue](https://github.com/un-pany/mobvue) a try.
@@ -222,3 +222,84 @@ A big thank you to all the contributors!
## License
[MIT](./LICENSE) License © 2022-PRESENT [pany](https://github.com/pany-ang)
+
+## 简介
+
+一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术.
+
+## 特性
+
+- **Vue3**:采用 Vue3 + script setup 最新的 Vue3 组合式 API
+- **Element Plus**:Element UI 的 Vue3 版本
+- **Pinia**: 传说中的 Vuex5
+- **Vite**:真的很快
+- **Vue Router**:路由路由
+- **TypeScript**:JavaScript 语言的超集
+- **PNPM**:更快速的,节省磁盘空间的包管理工具
+- **Scss**:和 Element Plus 保持一致
+- **CSS 变量**:主要控制项目的布局和颜色
+- **ESlint**:代码校验
+- **Prettier**:代码格式化
+- **Axios**:发送网络请求(已封装好)
+- **UnoCSS**:具有高性能且极具灵活性的即时原子化 CSS 引擎
+- **注释**:各个配置项都写有尽可能详细的注释
+- **兼容移动端**: 布局兼容移动端页面分辨率
+
+## 功能
+
+- **用户管理**:登录、登出演示
+- **权限管理**:内置页面权限(动态路由)、指令权限、权限函数、路由守卫
+- **多环境**:开发环境(development)、预发布环境(staging)、正式环境(production)
+- **多主题**:内置普通、黑暗、深蓝三种主题模式
+- **错误页面**: 403、404
+- **Dashboard**:根据不同用户显示不同的 Dashboard 页面
+- **其他内置功能**:SVG、动态侧边栏、动态面包屑、标签页快捷导航、Screenfull 全屏、自适应收缩侧边栏、Hook(Composables)
+
+## 📝 配置
+
+### TinyMCE 富文本编辑器
+
+本项目集成了 TinyMCE 富文本编辑器,使用前需要:
+
+1. 前往 [TinyMCE 官网](https://www.tiny.cloud/) 注册账号并获取 API Key
+2. 在项目根目录创建 `.env.development` 文件(如果不存在),添加以下配置:
+
+```bash
+# TinyMCE API Key
+VITE_TINYMCE_API_KEY='qakh29dtwy4honhyvvcu3xi4l1zw3l0w7f55z8fcru52nidw'
+```
+
+将 `your-api-key` 替换为你的实际 API Key。
+
+## 安装使用
+
+- 获取项目代码
+
+```bash
+git clone https://github.com/un-pany/v3-admin-vite.git
+```
+
+- 安装依赖
+
+```bash
+cd v3-admin-vite
+
+pnpm install
+
+```
+
+- 运行
+
+```bash
+pnpm dev
+```
+
+- 打包
+
+```bash
+pnpm build:prod
+```
+
+## 更新日志
+
+[CHANGELOG](./CHANGELOG.md)
diff --git a/package.json b/package.json
index c19da78cb..299199eca 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,7 @@
},
"dependencies": {
"@element-plus/icons-vue": "2.3.1",
+ "@tinymce/tinymce-vue": "^5.1.1",
"axios": "1.10.0",
"dayjs": "1.11.13",
"element-plus": "2.10.2",
@@ -28,6 +29,7 @@
"path-to-regexp": "8.2.0",
"pinia": "3.0.3",
"screenfull": "6.0.2",
+ "tinymce": "^6.8.3",
"vue": "3.5.17",
"vue-router": "4.5.1",
"vxe-table": "4.6.25"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 43c138472..5cb5798b1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,6 +11,9 @@ importers:
'@element-plus/icons-vue':
specifier: 2.3.1
version: 2.3.1(vue@3.5.17(typescript@5.8.3))
+ '@tinymce/tinymce-vue':
+ specifier: ^5.1.1
+ version: 5.1.1(vue@3.5.17(typescript@5.8.3))
axios:
specifier: 1.10.0
version: 1.10.0
@@ -47,6 +50,9 @@ importers:
screenfull:
specifier: 6.0.2
version: 6.0.2
+ tinymce:
+ specifier: ^6.8.3
+ version: 6.8.6
vue:
specifier: 3.5.17
version: 3.5.17(typescript@5.8.3)
@@ -760,6 +766,11 @@ packages:
'@sxzz/popperjs-es@2.11.7':
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
+ '@tinymce/tinymce-vue@5.1.1':
+ resolution: {integrity: sha512-iO57HOWesFOhsaqjA5Ea6sDvQBmJJH3/dq00Uvg7metlct2kLF+ctRgoDsetLt6gmeZ7COPftr814/XzqnJ/dg==}
+ peerDependencies:
+ vue: ^3.0.0
+
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -2969,6 +2980,9 @@ packages:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
+ tinymce@6.8.6:
+ resolution: {integrity: sha512-++XYEs8lKWvZxDCjrr8Baiw7KiikraZ5JkLMg6EdnUVNKJui0IsrAADj5MsyUeFkcEryfn2jd3p09H7REvewyg==}
+
tinypool@1.1.1:
resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -3832,6 +3846,11 @@ snapshots:
'@sxzz/popperjs-es@2.11.7': {}
+ '@tinymce/tinymce-vue@5.1.1(vue@3.5.17(typescript@5.8.3))':
+ dependencies:
+ tinymce: 6.8.6
+ vue: 3.5.17(typescript@5.8.3)
+
'@trysound/sax@0.2.0': {}
'@types/chai@5.2.2':
@@ -6381,6 +6400,8 @@ snapshots:
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
+ tinymce@6.8.6: {}
+
tinypool@1.1.1: {}
tinyrainbow@2.0.0: {}
diff --git a/src/common/components/Editor/index.vue b/src/common/components/Editor/index.vue
new file mode 100644
index 000000000..f02e11cab
--- /dev/null
+++ b/src/common/components/Editor/index.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/demo/editor-demo/index.vue b/src/pages/demo/editor-demo/index.vue
new file mode 100644
index 000000000..b9478480a
--- /dev/null
+++ b/src/pages/demo/editor-demo/index.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 1908b8cd4..3343a8379 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -99,6 +99,15 @@ export const constantRoutes: RouteRecordRaw[] = [
keepAlive: true
}
},
+ {
+ path: "editor",
+ component: () => import("@/pages/demo/editor-demo/index.vue"),
+ name: "Editor",
+ meta: {
+ title: "富文本编辑器",
+ keepAlive: true
+ }
+ },
{
path: "level2",
component: () => import("@/pages/demo/level2/index.vue"),