diff --git a/build/optimize.ts b/build/optimize.ts index cf0e28c80..d06f0d8fe 100644 --- a/build/optimize.ts +++ b/build/optimize.ts @@ -11,6 +11,7 @@ const include = [ "dayjs", "axios", "pinia", + "vditor", "typeit", "swiper", "qrcode", @@ -22,6 +23,7 @@ const include = [ "vue-tippy", "cropperjs", "jsbarcode", + "codemirror", "pinyin-pro", "sortablejs", "swiper/vue", @@ -42,6 +44,7 @@ const include = [ "@howdyjs/mouse-menu", "@logicflow/extension", "vue-virtual-scroller", + "codemirror-editor-vue3", "@amap/amap-jsapi-loader", "el-table-infinite-scroll", "vue-waterfall-plugin-next", diff --git a/index.html b/index.html index bd64df230..732fbbbf5 100644 --- a/index.html +++ b/index.html @@ -18,9 +18,6 @@ s.parentNode.insertBefore(hm, s) })(); -
diff --git a/locales/en.yaml b/locales/en.yaml index 2f3b01ef6..e0f81c91d 100644 --- a/locales/en.yaml +++ b/locales/en.yaml @@ -76,6 +76,8 @@ menus: pureLoginLog: Login Log pureOperationLog: Operation Log pureSystemLog: System Log + pureCodeMirror: CodeMirror + pureMarkdown: Markdown pureEditor: Editor pureAbnormal: Abnormal Page pureFourZeroFour: "404" diff --git a/locales/zh-CN.yaml b/locales/zh-CN.yaml index 7b039f33e..422484349 100644 --- a/locales/zh-CN.yaml +++ b/locales/zh-CN.yaml @@ -76,6 +76,8 @@ menus: pureLoginLog: 登录日志 pureOperationLog: 操作日志 pureSystemLog: 系统日志 + pureCodeMirror: 代码编辑器 + pureMarkdown: Markdown pureEditor: 编辑器 pureAbnormal: 异常页面 pureFourZeroFour: "404" diff --git a/package.json b/package.json index ce7184cbd..361c846d2 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,8 @@ "animate.css": "^4.1.1", "axios": "^1.7.9", "china-area-data": "^5.0.1", + "codemirror": "^5", + "codemirror-editor-vue3": "^2.8.0", "cropperjs": "^1.6.2", "dayjs": "^1.11.13", "echarts": "^5.5.1", @@ -90,6 +92,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", @@ -118,6 +121,7 @@ "@iconify-icons/ri": "^1.2.10", "@iconify/vue": "^4.2.0", "@intlify/unplugin-vue-i18n": "^6.0.1", + "@types/codemirror": "^5.60.15", "@types/dagre": "^0.7.52", "@types/intro.js": "^5.1.5", "@types/js-cookie": "^3.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0444628b2..9357bc256 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,12 @@ importers: china-area-data: specifier: ^5.0.1 version: 5.0.1 + codemirror: + specifier: ^5 + version: 5.65.18 + codemirror-editor-vue3: + specifier: ^2.8.0 + version: 2.8.0(codemirror@5.65.18)(diff-match-patch@1.0.5)(vue@3.5.13(typescript@5.6.3)) cropperjs: specifier: ^1.6.2 version: 1.6.2 @@ -137,6 +143,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 @@ -216,6 +225,9 @@ importers: '@intlify/unplugin-vue-i18n': specifier: ^6.0.1 version: 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)) + '@types/codemirror': + specifier: ^5.60.15 + version: 5.60.15 '@types/dagre': specifier: ^0.7.52 version: 0.7.52 @@ -946,16 +958,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': @@ -1438,6 +1450,9 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/codemirror@5.60.15': + resolution: {integrity: sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==} + '@types/conventional-commits-parser@5.0.1': resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} @@ -1504,6 +1519,9 @@ packages: '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/tern@0.23.9': + resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} + '@types/tinycolor2@1.4.6': resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} @@ -2125,6 +2143,16 @@ packages: code-inspector-plugin@0.18.2: resolution: {integrity: sha512-LKOhA4YsoUZ6Dq4OQKP7G+kPcfeYGLoIQz7EDG4yoL5mqSu+uWR+0QvzoDc4HGXQ0jpkzEwlatbH6fBlbPiwKQ==} + codemirror-editor-vue3@2.8.0: + resolution: {integrity: sha512-ebYGNhBpLmQNLguXzNyMMkn6K8v3lcS5/Ncvdn6YS4bLGEHE67MfsJIS/WV0L7I6WavUuFlY/Rs/AJKChIwSwg==} + peerDependencies: + codemirror: ^5 + diff-match-patch: ^1.0.5 + vue: ^3.x + + codemirror@5.65.18: + resolution: {integrity: sha512-Gaz4gHnkbHMGgahNt3CA5HBk5lLQBqmD/pBgeB4kQU6OedZmqMBjlRF0LSrp2tJ4wlLNPm2FfaUd1pDy0mdlpA==} + codepage@1.15.0: resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} engines: {node: '>=0.8'} @@ -2445,6 +2473,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 +4940,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 +5886,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 +5908,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: @@ -6423,6 +6457,10 @@ snapshots: dependencies: '@babel/types': 7.26.3 + '@types/codemirror@5.60.15': + dependencies: + '@types/tern': 0.23.9 + '@types/conventional-commits-parser@5.0.1': dependencies: '@types/node': 20.17.9 @@ -6481,6 +6519,10 @@ snapshots: '@types/stack-utils@2.0.3': {} + '@types/tern@0.23.9': + dependencies: + '@types/estree': 1.0.6 + '@types/tinycolor2@1.4.6': {} '@types/web-animations-js@2.2.16': {} @@ -7319,6 +7361,14 @@ snapshots: transitivePeerDependencies: - supports-color + codemirror-editor-vue3@2.8.0(codemirror@5.65.18)(diff-match-patch@1.0.5)(vue@3.5.13(typescript@5.6.3)): + dependencies: + codemirror: 5.65.18 + diff-match-patch: 1.0.5 + vue: 3.5.13(typescript@5.6.3) + + codemirror@5.65.18: {} + codepage@1.15.0: {} collect-v8-coverage@1.0.2: {} @@ -7619,6 +7669,8 @@ snapshots: didyoumean@1.2.2: {} + diff-match-patch@1.0.5: {} + diff-sequences@27.5.1: {} dijkstrajs@1.0.3: {} @@ -10425,6 +10477,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/layout/components/lay-notice/components/NoticeItem.vue b/src/layout/components/lay-notice/components/NoticeItem.vue index 823d9cd8a..378b40d6b 100644 --- a/src/layout/components/lay-notice/components/NoticeItem.vue +++ b/src/layout/components/lay-notice/components/NoticeItem.vue @@ -112,7 +112,7 @@ function hoverDescription(event, description) { max-width: 238px; } - diff --git a/src/views/components/json-editor.vue b/src/views/components/json-editor.vue index 53817f9a4..848b7914a 100644 --- a/src/views/components/json-editor.vue +++ b/src/views/components/json-editor.vue @@ -84,17 +84,7 @@ watch( > vue-json-pretty - (支持大数据量)。 - - - 当然还有一款代码编辑器推荐(这里就不做演示了),采用开源的 -