diff --git a/build/optimize.ts b/build/optimize.ts
index cf0e28c807..1f3b9da85f 100644
--- a/build/optimize.ts
+++ b/build/optimize.ts
@@ -11,6 +11,7 @@ const include = [
"dayjs",
"axios",
"pinia",
+ "vditor",
"typeit",
"swiper",
"qrcode",
diff --git a/index.html b/index.html
index 37868842b6..9f95c7099c 100644
--- a/index.html
+++ b/index.html
@@ -10,9 +10,6 @@
/>
vue-pure-admin
-
diff --git a/locales/en.yaml b/locales/en.yaml
index 2f3b01ef6f..4ff4ebaa63 100644
--- a/locales/en.yaml
+++ b/locales/en.yaml
@@ -76,6 +76,7 @@ menus:
pureLoginLog: Login Log
pureOperationLog: Operation Log
pureSystemLog: System Log
+ pureMarkdown: Markdown
pureEditor: Editor
pureAbnormal: Abnormal Page
pureFourZeroFour: "404"
diff --git a/locales/zh-CN.yaml b/locales/zh-CN.yaml
index 7b039f33ec..22602cd1a6 100644
--- a/locales/zh-CN.yaml
+++ b/locales/zh-CN.yaml
@@ -76,6 +76,7 @@ menus:
pureLoginLog: 登录日志
pureOperationLog: 操作日志
pureSystemLog: 系统日志
+ pureMarkdown: Markdown
pureEditor: 编辑器
pureAbnormal: 异常页面
pureFourZeroFour: "404"
diff --git a/package.json b/package.json
index 06b7837060..6b690f05f0 100644
--- a/package.json
+++ b/package.json
@@ -90,6 +90,7 @@
"typeit": "^8.8.7",
"v-contextmenu": "^3.2.0",
"v3-infinite-loading": "^1.3.2",
+ "vditor": "^3.10.8",
"version-rocket": "^1.7.4",
"vue": "^3.5.13",
"vue-i18n": "^10.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0444628b25..68cd658843 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -137,6 +137,9 @@ importers:
v3-infinite-loading:
specifier: ^1.3.2
version: 1.3.2
+ vditor:
+ specifier: ^3.10.8
+ version: 3.10.8
version-rocket:
specifier: ^1.7.4
version: 1.7.4
@@ -946,16 +949,16 @@ packages:
resolution: {integrity: sha512-6GT1BJ852gZ0gItNZN2krX5QAmea+cmdjMvsWohArAZ3GmHdnNANEcF9JjPXAMRtQ6Ux5E269ymamg/+WU6tQA==}
engines: {node: '>= 16'}
- '@intlify/message-compiler@11.0.0-beta.2':
- resolution: {integrity: sha512-/cJHP1n45Zlf9tbm/hudLrUwXzJZngR9OMTQk32H1S4lBjM2996wzKTHuLbaJJlJZNTTjnfWZUHPb+F6sE6p1Q==}
+ '@intlify/message-compiler@11.0.0-rc.1':
+ resolution: {integrity: sha512-TGw2uBfuTFTegZf/BHtUQBEKxl7Q/dVGLoqRIdw8lFsp9g/53sYn5iD+0HxIzdYjbWL6BTJMXCPUHp9PxDTRPw==}
engines: {node: '>= 16'}
'@intlify/shared@10.0.5':
resolution: {integrity: sha512-bmsP4L2HqBF6i6uaMqJMcFBONVjKt+siGluRq4Ca4C0q7W2eMaVZr8iCgF9dKbcVXutftkC7D6z2SaSMmLiDyA==}
engines: {node: '>= 16'}
- '@intlify/shared@11.0.0-beta.2':
- resolution: {integrity: sha512-N6ngJfFaVA0l2iLtx/SymgHOBW4wiS5Pyue7YmY/G+mrGjesi+S+U+u/Xlv6pZa/YIBfeM4QB07lI7rz1YqKLg==}
+ '@intlify/shared@11.0.0-rc.1':
+ resolution: {integrity: sha512-8tR1xe7ZEbkabTuE/tNhzpolygUn9OaYp9yuYAF4MgDNZg06C3Qny80bes2/e9/Wm3aVkPUlCw6WgU7mQd0yEg==}
engines: {node: '>= 16'}
'@intlify/unplugin-vue-i18n@6.0.1':
@@ -2445,6 +2448,9 @@ packages:
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ diff-match-patch@1.0.5:
+ resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==}
+
diff-sequences@27.5.1:
resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -4909,6 +4915,9 @@ packages:
resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==}
engines: {node: '>=10.12.0'}
+ vditor@3.10.8:
+ resolution: {integrity: sha512-u9npjvMuGJVk0QGbpqiGAmvgiR4QvMVpNQYrvFYZ/yWDtTFLZrHmLxuUbtswotR6KY10u5kVuaoSEoBGGWQGjQ==}
+
version-rocket@1.7.4:
resolution: {integrity: sha512-YTQ7zMq7UuMfNpC/DxP+d+hlhLeDEFFi1dmWGiYXsDA8x4mN1X/NQuPPdOsUjh1UG/owWNjdTQhSqJyWxwrQeQ==}
hasBin: true
@@ -5852,8 +5861,8 @@ snapshots:
'@intlify/bundle-utils@10.0.0(vue-i18n@10.0.5(vue@3.5.13(typescript@5.6.3)))':
dependencies:
- '@intlify/message-compiler': 11.0.0-beta.2
- '@intlify/shared': 11.0.0-beta.2
+ '@intlify/message-compiler': 11.0.0-rc.1
+ '@intlify/shared': 11.0.0-rc.1
acorn: 8.14.0
escodegen: 2.1.0
estree-walker: 2.0.2
@@ -5874,14 +5883,14 @@ snapshots:
'@intlify/shared': 10.0.5
source-map-js: 1.2.1
- '@intlify/message-compiler@11.0.0-beta.2':
+ '@intlify/message-compiler@11.0.0-rc.1':
dependencies:
- '@intlify/shared': 11.0.0-beta.2
+ '@intlify/shared': 11.0.0-rc.1
source-map-js: 1.2.1
'@intlify/shared@10.0.5': {}
- '@intlify/shared@11.0.0-beta.2': {}
+ '@intlify/shared@11.0.0-rc.1': {}
'@intlify/unplugin-vue-i18n@6.0.1(@vue/compiler-dom@3.5.13)(eslint@9.16.0(jiti@2.4.1))(rollup@4.28.1)(typescript@5.6.3)(vue-i18n@10.0.5(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3))':
dependencies:
@@ -7619,6 +7628,8 @@ snapshots:
didyoumean@1.2.2: {}
+ diff-match-patch@1.0.5: {}
+
diff-sequences@27.5.1: {}
dijkstrajs@1.0.3: {}
@@ -10425,6 +10436,10 @@ snapshots:
convert-source-map: 1.9.0
source-map: 0.7.4
+ vditor@3.10.8:
+ dependencies:
+ diff-match-patch: 1.0.5
+
version-rocket@1.7.4:
dependencies:
axios: 1.7.9
diff --git a/src/router/enums.ts b/src/router/enums.ts
index 78719faf96..01e034ceba 100644
--- a/src/router/enums.ts
+++ b/src/router/enums.ts
@@ -17,14 +17,15 @@ const home = 0, // 平台规定只有 home 路由的 rank 才能为 0 ,所以
monitor = 14,
tabs = 15,
about = 16,
- editor = 17,
- flowchart = 18,
- formdesign = 19,
- board = 20,
- ppt = 21,
- mind = 22,
- guide = 23,
- menuoverflow = 24;
+ markdown = 17,
+ editor = 18,
+ flowchart = 19,
+ formdesign = 20,
+ board = 21,
+ ppt = 22,
+ mind = 23,
+ guide = 24,
+ menuoverflow = 25;
export {
home,
@@ -44,6 +45,7 @@ export {
monitor,
tabs,
about,
+ markdown,
editor,
flowchart,
formdesign,
diff --git a/src/router/modules/able.ts b/src/router/modules/able.ts
index b90bad22bd..dc4868632c 100644
--- a/src/router/modules/able.ts
+++ b/src/router/modules/able.ts
@@ -15,8 +15,7 @@ export default {
name: "MqttClient",
component: () => import("@/views/able/mqtt-client.vue"),
meta: {
- title: $t("menus.pureMqtt"),
- extraIcon: "IF-pure-iconfont-new svg"
+ title: $t("menus.pureMqtt")
}
},
{
diff --git a/src/router/modules/form.ts b/src/router/modules/form.ts
index 63980491e9..4f5afa785e 100644
--- a/src/router/modules/form.ts
+++ b/src/router/modules/form.ts
@@ -15,8 +15,7 @@ export default {
name: "SchemaForm",
component: () => import("@/views/schema-form/index.vue"),
meta: {
- title: $t("menus.pureSchemaForm"),
- extraIcon: "IF-pure-iconfont-new svg"
+ title: $t("menus.pureSchemaForm")
}
}
]
diff --git a/src/router/modules/ganttastic.ts b/src/router/modules/ganttastic.ts
index 1b68b72519..a9bcd70a19 100644
--- a/src/router/modules/ganttastic.ts
+++ b/src/router/modules/ganttastic.ts
@@ -15,8 +15,7 @@ export default {
name: "Ganttastic",
component: () => import("@/views/ganttastic/index.vue"),
meta: {
- title: $t("menus.pureGanttastic"),
- extraIcon: "IF-pure-iconfont-new svg"
+ title: $t("menus.pureGanttastic")
}
}
]
diff --git a/src/router/modules/markdown.ts b/src/router/modules/markdown.ts
new file mode 100644
index 0000000000..bff0c2b604
--- /dev/null
+++ b/src/router/modules/markdown.ts
@@ -0,0 +1,23 @@
+import { $t } from "@/plugins/i18n";
+import { markdown } from "@/router/enums";
+
+export default {
+ path: "/markdown",
+ redirect: "/markdown/index",
+ meta: {
+ icon: "ri:markdown-line",
+ title: $t("menus.pureMarkdown"),
+ rank: markdown
+ },
+ children: [
+ {
+ path: "/markdown/index",
+ name: "Markdown",
+ component: () => import("@/views/markdown/index.vue"),
+ meta: {
+ title: $t("menus.pureMarkdown"),
+ extraIcon: "IF-pure-iconfont-new svg"
+ }
+ }
+ ]
+} satisfies RouteConfigsTable;
diff --git a/src/router/modules/table.ts b/src/router/modules/table.ts
index 56b279f005..b7752c9854 100644
--- a/src/router/modules/table.ts
+++ b/src/router/modules/table.ts
@@ -31,8 +31,7 @@ export default {
name: "PureTableEdit",
component: () => import("@/views/table/edit.vue"),
meta: {
- title: $t("menus.pureTableEdit"),
- extraIcon: "IF-pure-iconfont-new svg"
+ title: $t("menus.pureTableEdit")
}
},
{
@@ -40,8 +39,7 @@ export default {
name: "VxeTable",
component: () => import("@/views/table/virtual.vue"),
meta: {
- title: $t("menus.pureVxeTable"),
- extraIcon: "IF-pure-iconfont-new svg"
+ title: $t("menus.pureVxeTable")
}
}
]
diff --git a/src/router/modules/vueflow.ts b/src/router/modules/vueflow.ts
index 7f01685e53..02f3892fd1 100644
--- a/src/router/modules/vueflow.ts
+++ b/src/router/modules/vueflow.ts
@@ -14,8 +14,7 @@ export default {
name: "VueFlow",
component: () => import("@/views/vue-flow/layouting/index.vue"),
meta: {
- title: "vue-flow",
- extraIcon: "IF-pure-iconfont-new svg"
+ title: "vue-flow"
}
}
]
diff --git a/src/views/markdown/components/Vditor.vue b/src/views/markdown/components/Vditor.vue
new file mode 100644
index 0000000000..c59dbedeb4
--- /dev/null
+++ b/src/views/markdown/components/Vditor.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
diff --git a/src/views/markdown/index.vue b/src/views/markdown/index.vue
new file mode 100644
index 0000000000..9061bbbc64
--- /dev/null
+++ b/src/views/markdown/index.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+ 代码位置 src/views/markdown
+
+
+
+ 双向绑定:{{ text }}
+
+
+
+