diff --git a/package-lock.json b/package-lock.json index 6e5f1b5..e6ba677 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@element-plus/icons-vue": "^2.3.1", + "@vueup/vue-quill": "^1.5.5", "axios": "^1.6.7", "dayjs": "^1.11.10", "echarts": "^5.5.0", @@ -1489,6 +1490,19 @@ "integrity": "sha512-FTW0AFZNaK5/mOqvGBwVfUlNLU38TiQn4+DQgIFUnrBBJQ1crMJ82yeGQLV5jyKFsO8yRukpbuP7x+nRbH6aug==", "license": "MIT" }, + "node_modules/@vueup/vue-quill": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.5.5.tgz", + "integrity": "sha512-ygA61ZZPaRzTHXi8H1w5td1XCtjwRsO6oBuJHdCbfotGQ7hBQukVp5dsYeVXWKuSiF8hGDKwIlROyNNrMalQCQ==", + "license": "MIT", + "dependencies": { + "quill": "2.0.2 || >=2.0.4 <3", + "quill-delta": "^5.1.0" + }, + "peerDependencies": { + "vue": "^3.2.41" + } + }, "node_modules/@vueuse/core": { "version": "14.3.0", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-14.3.0.tgz", @@ -1938,6 +1952,12 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "license": "MIT" }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/exsolve": { "version": "1.0.8", "resolved": "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.8.tgz", @@ -1945,6 +1965,12 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "license": "Apache-2.0" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", @@ -2285,6 +2311,19 @@ "lodash-es": "*" } }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", @@ -2463,6 +2502,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/parchment": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==", + "license": "BSD-3-Clause" + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", @@ -2627,6 +2672,35 @@ ], "license": "MIT" }, + "node_modules/quill": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", + "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", + "license": "BSD-3-Clause", + "dependencies": { + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" + } + }, + "node_modules/quill-delta": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", + "license": "MIT", + "dependencies": { + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, "node_modules/readdirp": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-5.0.0.tgz", diff --git a/package.json b/package.json index 30aa6e9..f41f35f 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.1", + "@vueup/vue-quill": "^1.5.5", "axios": "^1.6.7", "dayjs": "^1.11.10", "echarts": "^5.5.0", diff --git a/src/components/RichEditor/RichEditor.vue b/src/components/RichEditor/RichEditor.vue new file mode 100644 index 0000000..35b918a --- /dev/null +++ b/src/components/RichEditor/RichEditor.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/modules/other/information/InformationListView.vue b/src/modules/other/information/InformationListView.vue index 57f3353..f70fd4c 100644 --- a/src/modules/other/information/InformationListView.vue +++ b/src/modules/other/information/InformationListView.vue @@ -14,6 +14,7 @@ import { httpGet, httpPost, httpDelete } from '@/utils/request' import { ElMessage, ElMessageBox } from 'element-plus' import DataTable from '@/components/DataTable/DataTable.vue' import PageHeader from '@/components/PageHeader/PageHeader.vue' +import RichEditor from '@/components/RichEditor/RichEditor.vue' interface Info { id: string @@ -152,7 +153,7 @@ async function onDelete(row: Info) { // === 图片上传 (FormData + Bearer 头由拦截器自动带) === async function customUpload(opt: any) { const file = opt.file as File - if (file.size > 2 * 1024 * 1024) { ElMessage.error('图片大小不能超过 2MB!'); return } + if (file.size > 5 * 1024 * 1024) { ElMessage.error('图片大小不能超过 5MB,请压缩后重试'); return } uploadLoading.value = true try { const fd = new FormData() @@ -235,11 +236,11 @@ async function customUpload(opt: any) { 封面 上传封面 - 支持 JPG/PNG, 不超过 2MB + 支持 JPG/PNG, 不超过 5MB - +