From 0dd6665b2ad737880945eceb35dc29901941a032 Mon Sep 17 00:00:00 2001 From: xiaoming <1923740402@qq.com> Date: Mon, 23 Dec 2024 13:57:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0`Markdown`=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=20(#1193)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/optimize.ts | 1 + index.html | 3 - locales/en.yaml | 1 + locales/zh-CN.yaml | 1 + package.json | 1 + pnpm-lock.yaml | 33 +++++-- src/router/enums.ts | 18 ++-- src/router/modules/able.ts | 3 +- src/router/modules/form.ts | 3 +- src/router/modules/ganttastic.ts | 3 +- src/router/modules/markdown.ts | 23 +++++ src/router/modules/table.ts | 6 +- src/router/modules/vueflow.ts | 3 +- src/views/markdown/components/Vditor.vue | 105 +++++++++++++++++++++++ src/views/markdown/index.vue | 59 +++++++++++++ 15 files changed, 231 insertions(+), 32 deletions(-) create mode 100644 src/router/modules/markdown.ts create mode 100644 src/views/markdown/components/Vditor.vue create mode 100644 src/views/markdown/index.vue 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 @@ + + +