Browse Source

宝智达冷链后台富文本编辑器修改修改,后台获取联系方式

huangyan 9 months ago
parent
commit
dd9857f738

+ 24 - 279
package-lock.json

@@ -9,12 +9,12 @@
       "version": "0.0.0",
       "dependencies": {
         "@element-plus/icons-vue": "^2.0.10",
+        "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^5.1.12",
         "axios": "^1.2.0",
         "element-plus": "^2.2.25",
         "qs": "^6.11.0",
         "vue": "^3.2.41",
-        "vue-quill-editor": "^3.0.6",
         "vue-router": "^4.0.13"
       },
       "devDependencies": {
@@ -37,7 +37,6 @@
       "version": "7.24.5",
       "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.5.tgz",
       "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==",
-      "peer": true,
       "dependencies": {
         "regenerator-runtime": "^0.14.0"
       },
@@ -115,14 +114,12 @@
     "node_modules/@transloadit/prettier-bytes": {
       "version": "0.0.7",
       "resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
-      "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==",
-      "peer": true
+      "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA=="
     },
     "node_modules/@types/event-emitter": {
       "version": "0.3.5",
       "resolved": "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz",
-      "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==",
-      "peer": true
+      "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ=="
     },
     "node_modules/@types/lodash": {
       "version": "4.14.191",
@@ -146,7 +143,6 @@
       "version": "2.2.2",
       "resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz",
       "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
-      "peer": true,
       "dependencies": {
         "@uppy/utils": "^4.1.2",
         "namespace-emitter": "^2.0.1"
@@ -156,7 +152,6 @@
       "version": "2.3.4",
       "resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz",
       "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
-      "peer": true,
       "dependencies": {
         "@transloadit/prettier-bytes": "0.0.7",
         "@uppy/store-default": "^2.1.1",
@@ -171,14 +166,12 @@
     "node_modules/@uppy/store-default": {
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz",
-      "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==",
-      "peer": true
+      "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ=="
     },
     "node_modules/@uppy/utils": {
       "version": "4.1.3",
       "resolved": "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz",
       "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
-      "peer": true,
       "dependencies": {
         "lodash.throttle": "^4.1.1"
       }
@@ -187,7 +180,6 @@
       "version": "2.1.3",
       "resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
       "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
-      "peer": true,
       "dependencies": {
         "@uppy/companion-client": "^2.2.2",
         "@uppy/utils": "^4.1.2",
@@ -345,7 +337,6 @@
       "version": "1.1.7",
       "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
       "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
-      "peer": true,
       "dependencies": {
         "is-url": "^1.2.4"
       },
@@ -362,7 +353,6 @@
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
       "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
-      "peer": true,
       "dependencies": {
         "prismjs": "^1.23.0"
       },
@@ -377,7 +367,6 @@
       "version": "1.1.19",
       "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
       "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
-      "peer": true,
       "dependencies": {
         "@types/event-emitter": "^0.3.3",
         "event-emitter": "^0.3.5",
@@ -407,7 +396,6 @@
       "version": "5.1.23",
       "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
       "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
-      "peer": true,
       "dependencies": {
         "@uppy/core": "^2.1.1",
         "@uppy/xhr-upload": "^2.0.3",
@@ -445,7 +433,6 @@
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
       "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
-      "peer": true,
       "peerDependencies": {
         "@wangeditor/core": "1.x",
         "dom7": "^3.0.0",
@@ -457,7 +444,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
       "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
-      "peer": true,
       "peerDependencies": {
         "@wangeditor/core": "1.x",
         "dom7": "^3.0.0",
@@ -472,7 +458,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
       "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
-      "peer": true,
       "peerDependencies": {
         "@uppy/core": "^2.0.3",
         "@uppy/xhr-upload": "^2.0.3",
@@ -488,7 +473,6 @@
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
       "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
-      "peer": true,
       "peerDependencies": {
         "@uppy/core": "^2.1.4",
         "@uppy/xhr-upload": "^2.0.7",
@@ -534,14 +518,6 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/clone": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
-      "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
-      "engines": {
-        "node": ">=0.8"
-      }
-    },
     "node_modules/combined-stream": {
       "version": "1.0.8",
       "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -556,8 +532,7 @@
     "node_modules/compute-scroll-into-view": {
       "version": "1.0.20",
       "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
-      "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
-      "peer": true
+      "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
     },
     "node_modules/csstype": {
       "version": "2.6.21",
@@ -568,7 +543,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz",
       "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
-      "peer": true,
       "dependencies": {
         "es5-ext": "^0.10.64",
         "type": "^2.7.2"
@@ -582,22 +556,6 @@
       "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.6.tgz",
       "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ=="
     },
-    "node_modules/deep-equal": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz",
-      "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==",
-      "dependencies": {
-        "is-arguments": "^1.1.1",
-        "is-date-object": "^1.0.5",
-        "is-regex": "^1.1.4",
-        "object-is": "^1.1.5",
-        "object-keys": "^1.1.1",
-        "regexp.prototype.flags": "^1.5.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/define-data-property": {
       "version": "1.1.4",
       "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
@@ -611,19 +569,6 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/define-properties": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz",
-      "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
-      "dependencies": {
-        "define-data-property": "^1.0.1",
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -636,7 +581,6 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
       "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
-      "peer": true,
       "dependencies": {
         "ssr-window": "^3.0.0-alpha.1"
       }
@@ -690,7 +634,6 @@
       "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz",
       "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
       "hasInstallScript": true,
-      "peer": true,
       "dependencies": {
         "es6-iterator": "^2.0.3",
         "es6-symbol": "^3.1.3",
@@ -705,7 +648,6 @@
       "version": "2.0.3",
       "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
       "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
-      "peer": true,
       "dependencies": {
         "d": "1",
         "es5-ext": "^0.10.35",
@@ -716,7 +658,6 @@
       "version": "3.1.4",
       "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz",
       "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
-      "peer": true,
       "dependencies": {
         "d": "^1.0.2",
         "ext": "^1.7.0"
@@ -1091,7 +1032,6 @@
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz",
       "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
-      "peer": true,
       "dependencies": {
         "d": "^1.0.1",
         "es5-ext": "^0.10.62",
@@ -1111,36 +1051,19 @@
       "version": "0.3.5",
       "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
       "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
-      "peer": true,
       "dependencies": {
         "d": "1",
         "es5-ext": "~0.10.14"
       }
     },
-    "node_modules/eventemitter3": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz",
-      "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
-    },
     "node_modules/ext": {
       "version": "1.7.0",
       "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
       "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
-      "peer": true,
       "dependencies": {
         "type": "^2.7.2"
       }
     },
-    "node_modules/extend": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
-    },
-    "node_modules/fast-diff": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz",
-      "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
-    },
     "node_modules/follow-redirects": {
       "version": "1.15.2",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
@@ -1186,11 +1109,6 @@
       "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
     },
-    "node_modules/functions-have-names": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
-      "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
-    },
     "node_modules/get-intrinsic": {
       "version": "1.2.4",
       "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
@@ -1238,17 +1156,6 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/has-tostringtag": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
-      "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
-      "dependencies": {
-        "has-symbols": "^1.0.3"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/hasown": {
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
@@ -1263,14 +1170,12 @@
     "node_modules/html-void-elements": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
-      "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
-      "peer": true
+      "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
     },
     "node_modules/i18next": {
       "version": "20.6.1",
       "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
       "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
-      "peer": true,
       "dependencies": {
         "@babel/runtime": "^7.12.0"
       }
@@ -1278,20 +1183,7 @@
     "node_modules/immer": {
       "version": "9.0.21",
       "resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz",
-      "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
-      "peer": true
-    },
-    "node_modules/is-arguments": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
-      "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
+      "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
     },
     "node_modules/is-core-module": {
       "version": "2.13.1",
@@ -1302,49 +1194,23 @@
         "hasown": "^2.0.0"
       }
     },
-    "node_modules/is-date-object": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
-      "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
-      "dependencies": {
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/is-hotkey": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz",
-      "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==",
-      "peer": true
+      "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
     },
     "node_modules/is-plain-object": {
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
       "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
-      "peer": true,
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/is-regex": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
-      "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
-      "dependencies": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/is-url": {
       "version": "1.2.4",
       "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
-      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
-      "peer": true
+      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
     },
     "node_modules/lodash": {
       "version": "4.17.21",
@@ -1369,44 +1235,37 @@
     "node_modules/lodash.camelcase": {
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
-      "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
-      "peer": true
+      "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
     },
     "node_modules/lodash.clonedeep": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
-      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
-      "peer": true
+      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
     },
     "node_modules/lodash.debounce": {
       "version": "4.0.8",
       "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
-      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
-      "peer": true
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
     },
     "node_modules/lodash.foreach": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
-      "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==",
-      "peer": true
+      "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
     },
     "node_modules/lodash.isequal": {
       "version": "4.5.0",
       "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
-      "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
-      "peer": true
+      "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
     },
     "node_modules/lodash.throttle": {
       "version": "4.1.1",
       "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-      "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
-      "peer": true
+      "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
     },
     "node_modules/lodash.toarray": {
       "version": "4.4.0",
       "resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
-      "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==",
-      "peer": true
+      "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw=="
     },
     "node_modules/magic-string": {
       "version": "0.25.9",
@@ -1433,7 +1292,6 @@
       "version": "1.0.2",
       "resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz",
       "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
-      "peer": true,
       "dependencies": {
         "wildcard": "^1.1.0"
       }
@@ -1452,8 +1310,7 @@
     "node_modules/namespace-emitter": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
-      "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==",
-      "peer": true
+      "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
     },
     "node_modules/nanoid": {
       "version": "3.3.7",
@@ -1469,52 +1326,18 @@
     "node_modules/next-tick": {
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
-      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
-      "peer": true
+      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
     },
     "node_modules/normalize-wheel-es": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
     },
-    "node_modules/object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
-      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/object-inspect": {
       "version": "1.12.2",
       "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz",
       "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
     },
-    "node_modules/object-is": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz",
-      "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
-      "dependencies": {
-        "call-bind": "^1.0.7",
-        "define-properties": "^1.2.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
-    "node_modules/parchment": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz",
-      "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
-    },
     "node_modules/path-parse": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
@@ -1542,14 +1365,12 @@
     "node_modules/preact": {
       "version": "10.22.0",
       "resolved": "https://registry.npmmirror.com/preact/-/preact-10.22.0.tgz",
-      "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==",
-      "peer": true
+      "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw=="
     },
     "node_modules/prismjs": {
       "version": "1.29.0",
       "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
       "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
-      "peer": true,
       "engines": {
         "node": ">=6"
       }
@@ -1570,51 +1391,10 @@
         "node": ">=0.6"
       }
     },
-    "node_modules/quill": {
-      "version": "1.3.7",
-      "resolved": "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz",
-      "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
-      "dependencies": {
-        "clone": "^2.1.1",
-        "deep-equal": "^1.0.1",
-        "eventemitter3": "^2.0.3",
-        "extend": "^3.0.2",
-        "parchment": "^1.1.4",
-        "quill-delta": "^3.6.2"
-      }
-    },
-    "node_modules/quill-delta": {
-      "version": "3.6.3",
-      "resolved": "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz",
-      "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
-      "dependencies": {
-        "deep-equal": "^1.0.1",
-        "extend": "^3.0.2",
-        "fast-diff": "1.1.2"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
     "node_modules/regenerator-runtime": {
       "version": "0.14.1",
       "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
-      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
-      "peer": true
-    },
-    "node_modules/regexp.prototype.flags": {
-      "version": "1.5.2",
-      "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
-      "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
-      "dependencies": {
-        "call-bind": "^1.0.6",
-        "define-properties": "^1.2.1",
-        "es-errors": "^1.3.0",
-        "set-function-name": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
     },
     "node_modules/resolve": {
       "version": "1.22.8",
@@ -1649,7 +1429,6 @@
       "version": "2.2.31",
       "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
       "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
-      "peer": true,
       "dependencies": {
         "compute-scroll-into-view": "^1.0.20"
       }
@@ -1670,20 +1449,6 @@
         "node": ">= 0.4"
       }
     },
-    "node_modules/set-function-name": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz",
-      "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
-      "dependencies": {
-        "define-data-property": "^1.1.4",
-        "es-errors": "^1.3.0",
-        "functions-have-names": "^1.2.3",
-        "has-property-descriptors": "^1.0.2"
-      },
-      "engines": {
-        "node": ">= 0.4"
-      }
-    },
     "node_modules/side-channel": {
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
@@ -1698,7 +1463,6 @@
       "version": "0.72.8",
       "resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
       "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
-      "peer": true,
       "dependencies": {
         "immer": "^9.0.6",
         "is-plain-object": "^5.0.0",
@@ -1709,7 +1473,6 @@
       "version": "0.66.0",
       "resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
       "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
-      "peer": true,
       "dependencies": {
         "is-plain-object": "^5.0.0"
       },
@@ -1721,7 +1484,6 @@
       "version": "3.6.2",
       "resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.2.tgz",
       "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==",
-      "peer": true,
       "engines": {
         "node": ">=12.17.0"
       }
@@ -1751,8 +1513,7 @@
     "node_modules/ssr-window": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
-      "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==",
-      "peer": true
+      "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
     },
     "node_modules/supports-preserve-symlinks-flag": {
       "version": "1.0.0",
@@ -1766,14 +1527,12 @@
     "node_modules/tiny-warning": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz",
-      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
-      "peer": true
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
     },
     "node_modules/type": {
       "version": "2.7.2",
       "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz",
-      "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
-      "peer": true
+      "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
     },
     "node_modules/vite": {
       "version": "3.2.10",
@@ -1858,19 +1617,6 @@
         }
       }
     },
-    "node_modules/vue-quill-editor": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmmirror.com/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz",
-      "integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==",
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "quill": "^1.3.4"
-      },
-      "engines": {
-        "node": ">= 4.0.0",
-        "npm": ">= 3.0.0"
-      }
-    },
     "node_modules/vue-router": {
       "version": "4.0.13",
       "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz",
@@ -1885,8 +1631,7 @@
     "node_modules/wildcard": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
-      "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==",
-      "peer": true
+      "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
     }
   }
 }

+ 1 - 1
package.json

@@ -10,12 +10,12 @@
   },
   "dependencies": {
     "@element-plus/icons-vue": "^2.0.10",
+    "@wangeditor/editor": "^5.1.23",
     "@wangeditor/editor-for-vue": "^5.1.12",
     "axios": "^1.2.0",
     "element-plus": "^2.2.25",
     "qs": "^6.11.0",
     "vue": "^3.2.41",
-    "vue-quill-editor": "^3.0.6",
     "vue-router": "^4.0.13"
   },
   "devDependencies": {

+ 0 - 5
src/main.js

@@ -7,16 +7,11 @@ import ElementPlus from 'element-plus'
 import 'element-plus/dist/index.css'
 import * as Icons from '@element-plus/icons-vue'
 import commonJs from './assets/js/common'
-import QuillEditor from 'vue-quill-editor'
 // 引入富文本组件样式
-import 'quill/dist/quill.core.css'
-import 'quill/dist/quill.snow.css'
-import 'quill/dist/quill.bubble.css'
 const app = createApp(App)
 for (let i in Icons) {
     app.component(i, Icons[i])
 }
 app.use(router).use(ElementPlus, { locale })
-app.use(QuillEditor)
 app.config.globalProperties.$commonJs = commonJs
 app.mount('#app')

+ 7 - 0
src/router/index.js

@@ -140,6 +140,13 @@ const routes = [
                 },
                 component: () => import('../view/news/Detail.vue'),
             },
+            {
+                path: '/contact/list',
+                meta: {
+                    title: '获取所有联系方式'
+                },
+                component: () => import('../view/contact/contact.vue'),
+            },
         ]
     },
 ]

+ 24 - 29
src/view/EditorWithBinding.vue

@@ -2,56 +2,50 @@
   <div style="border: 1px solid #ccc; width: 100%; margin: 10px auto">
     <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" mode="default"/>
     <Editor style="height: 500px; overflow-y: hidden" v-model="valueHtml" :defaultConfig="editorConfig" mode="default"
-            @onCreated="handleCreated" @customPaste="customPaste" @input="handleChange"/>
+            @onCreated="handleCreated" @customPaste="customPaste"/>
   </div>
-<!--  <el-button style="margin: 0 auto" @click="getEditorHTML">获取富文本HTML内容</el-button>-->
+  <!--  <el-button @click="getEditorHTML" type="primary">保存</el-button>-->
 </template>
+
 <script setup>
-// 富文本编辑器文档链接: https://www.wangeditor.com/v5/getting-started.html
-// 引入富文本编辑器CSS
 import '@wangeditor/editor/dist/css/style.css';
-import {onBeforeUnmount, ref, shallowRef, watch,defineEmits} from 'vue';
-// 导入富文本编辑器的组件
 import {Editor, Toolbar} from '@wangeditor/editor-for-vue';
+import {onBeforeUnmount, ref, shallowRef, watch, defineProps, defineEmits} from 'vue';
+import {ElMessage} from "element-plus";
 import resource from "../api/resource.js";
 
 // 编辑器实例,必须用 shallowRef
 const editorRef = shallowRef();
 
 // 内容 HTML
-// const valueHtml = ref('');
 const toolbarConfig = {};
 const editorConfig = ref({placeholder: '请输入内容...', MENU_CONF: {}});
-// 新增 props
-const props = defineProps({
-  modelValue: {
-    type: String,
-    default: '',
-  },
-});
 
-// 新增 data
+const props = defineProps(['modelValue']);
+const emit = defineEmits(['update:modelValue', 'content-change']);
+
+// 内容 HTML
 const valueHtml = ref(props.modelValue);
-const emit=defineEmits(['input'])
-// 新增事件处理方法
+const updateContentToParent = () => {
+  emit('update:modelValue', editorRef.value.getHtml())
+  console.log(editorRef.value.getHtml());
+  // emit('content-change', editorRef.value.getHtml()); // 发送当前的 HTML 内容到父组件
+};
+// 当props的modelValue变化时,同步到valueHtml
 watch(
     () => props.modelValue,
     (newVal) => {
-      valueHtml.value = newVal; // 确保内部数据与外部modelValue同步
+      valueHtml.value = newVal;
     },
-    {immediate: true} // 立即执行,确保初始化时也能同步
+    {immediate: true} // 立即执行,确保初始同步
 );
-const handleChange = (content) => {
-  console.log('content', content);
-  emit('input', editorRef.value.getHtml());
-};
 // 自定义图片上传
 editorConfig.value.MENU_CONF['uploadImage'] = {
   async customUpload(file, insertFn) {
     let dataForm = new FormData();
-    dataForm.append('types', "serve")
-    dataForm.append('file', file)
-    const fileRes = await resource.uploadResource(dataForm)
+    dataForm.append('types', "serve");
+    dataForm.append('file', file);
+    const fileRes = await resource.uploadResource(dataForm);
     // 这里的file为上传的图片对象,insertFn传入
     insertFn(fileRes.data.Data, 'img');
   },
@@ -67,12 +61,11 @@ editorConfig.value.MENU_CONF['uploadVideo'] = {
 // 富文本编辑器生成后触发
 const handleCreated = editor => {
   editorRef.value = editor; // 记录 editor 实例,重要!
-  // console.log(editorConfig.value.MENU_CONF, 'editorConfig.value');
+  editor.on('change', updateContentToParent)
 };
 
 // 监听富文本编辑器粘贴行为
 const customPaste = (editor, event, callback) => {
-  // 获取粘贴的纯文本
   const text = event.clipboardData.getData('text/plain');
   if (text) {
     editor.insertText(text);
@@ -84,6 +77,8 @@ const customPaste = (editor, event, callback) => {
 // 获取富文本html内容
 const getEditorHTML = () => {
   console.log(editorRef.value.getHtml());
+  updateContentToParent();
+  ElMessage.success("保存成功")
 };
 
 // 组件销毁时,也及时销毁编辑器
@@ -92,4 +87,4 @@ onBeforeUnmount(() => {
   if (editor == null) return;
   editor.destroy();
 });
-</script>
+</script>

+ 11 - 5
src/view/Home.vue

@@ -55,34 +55,40 @@
                         </el-menu-item>
                       <el-menu-item index="/product/list" @click="saveActiveNav('/product/list')">
                         <el-icon>
-                          <user />
+                          <user/>
                         </el-icon>
                         <span>产品管理</span>
                       </el-menu-item>
                       <el-menu-item index="/contents/list" @click="saveActiveNav('/contents/list')">
                         <el-icon>
-                          <user />
+                          <user/>
                         </el-icon>
                         <span>招募新闻管理</span>
                       </el-menu-item>
                       <el-menu-item index="/serves/list" @click="saveActiveNav('/serves/list')">
                         <el-icon>
-                          <user />
+                          <user/>
                         </el-icon>
                         <span>服务管理</span>
                       </el-menu-item>
                       <el-menu-item index="/data/list" @click="saveActiveNav('/data/list')">
                         <el-icon>
-                          <user />
+                          <user/>
                         </el-icon>
                         <span>数据大屏展示</span>
                       </el-menu-item>
                       <el-menu-item index="/news/list" @click="saveActiveNav('/news/list')">
                         <el-icon>
-                          <user />
+                          <user/>
                         </el-icon>
                         <span>新闻管理</span>
                       </el-menu-item>
+                      <el-menu-item index="/contact/list" @click="saveActiveNav('/contact/list')">
+                        <el-icon>
+                          <user/>
+                        </el-icon>
+                        <span>联系方式管理</span>
+                      </el-menu-item>
                     </el-menu>
                 </el-aside>
                 <el-container>

+ 2 - 1
src/view/contents/Detail.vue

@@ -16,7 +16,7 @@
           <el-input v-model="contentsDetail.synopsis" placeholder="请输入简介" />
         </el-form-item>
         <el-form-item label="详情:">
-          <editor :initial-value="contentsDetail.detail" @update:html="handleEditorChange"/>
+          <EditorWithBinding v-model="contentsDetail.detail"/>
         </el-form-item>
       </el-form>
     </el-card>
@@ -29,6 +29,7 @@ import {useRoute, useRouter} from 'vue-router'
 import contents from "../../api/contents.js";
 import Editor from "../editor.vue";
 import {ElMessage} from "element-plus";
+import EditorWithBinding from "../EditorWithBinding.vue";
 
 const route = useRoute();
 const router = useRouter();

+ 4 - 3
src/view/contents/add.vue

@@ -13,14 +13,14 @@
           <el-input v-model="contentsDetail.title" placeholder="请输入标题"/>
         </el-form-item>
         <el-form-item>
-          <el-switch v-model="contentsDetail.types" active-value="1" inactive-value="0" active-text="招聘" inactive-text="公告"/>
+          <el-switch v-model="contentsDetail.types" active-value="1" inactive-value="0" active-text="招募"
+                     inactive-text="关于我们"/>
         </el-form-item>
         <el-form-item label="简介:">
           <el-input v-model="contentsDetail.synopsis" placeholder="请输入简介"/>
         </el-form-item>
         <el-form-item label="详情:">
-          {{ contentsDetail.synopsis }}
-          <editor v-model="contentsDetail.synopsis"></editor>
+          <EditorWithBinding v-model="contentsDetail.detail"></EditorWithBinding>
         </el-form-item>
 
       </el-form>
@@ -34,6 +34,7 @@ import {useRoute, useRouter} from 'vue-router'
 import contents from "../../api/contents.js";
 import Editor from "../editor.vue";
 import {ElMessage} from "element-plus";
+import EditorWithBinding from "../EditorWithBinding.vue";
 
 const route = useRoute();
 const router = useRouter();

+ 2 - 0
src/view/contents/contents.vue

@@ -50,6 +50,8 @@ import {onMounted, reactive, ref} from "vue";
 import {ElMessage, ElMessageBox} from 'element-plus';
 import {useRouter} from 'vue-router'
 import contents from "../../api/contents.js";
+import EditorWithBinding from "../EditorWithBinding.vue";
+
 const router = useRouter();
 // Dom 挂载之后
 onMounted(() => {

+ 52 - 88
src/view/editor.vue

@@ -1,100 +1,64 @@
 <template>
-  <div style="border: 1px solid #ccc; width: 100%; margin: 20px auto">
-    <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" mode="default" />
-    <Editor style="height: 500px; overflow-y: hidden" v-model="data.localValueHtml"/>
-
+  <div style="border: 1px solid #ccc">
+    <Toolbar
+        style="border-bottom: 1px solid #ccc"
+        :editor="editorRef"
+        :defaultConfig="toolbarConfig"
+        :mode="mode"
+    />
+    <Editor
+        style="height: 500px; overflow-y: hidden;"
+        v-model="valueHtml"
+        :defaultConfig="editorConfig"
+        :mode="mode"
+        @onCreated="handleCreated"
+    />
   </div>
-<!--  <el-button style="margin: 0 auto" @click="getEditorHTML">获取富文本HTML内容</el-button>-->
 </template>
+<script>
+import '@wangeditor/editor/dist/css/style.css' // 引入 css
 
-<script setup>
-// 富文本编辑器文档链接: https://www.wangeditor.com/v5/getting-started.html
-// 引入富文本编辑器CSS
-import '@wangeditor/editor/dist/css/style.css';
-import {onBeforeUnmount, ref, reactive, shallowRef, defineProps, onMounted, watch} from 'vue';
-// 导入富文本编辑器的组件
-import { Editor, Toolbar } from '@wangeditor/editor-for-vue';
-
-// 定义接收外部传入内容的 prop
-const props = defineProps({
-  initialValue: {
-    type: String,
-    default: '', // 默认为空字符串
-  },
-  detailData: {
-    type: String,
-    default: '', // 默认为空字符串
-  },
-});
-
-// 编辑器实例,必须用 shallowRef
-const editorRef = shallowRef();
-//添加自定义事件
-const emit = defineEmits(['update:html']);
+import {onBeforeUnmount, ref, shallowRef, onMounted} from 'vue'
+import {Editor, Toolbar} from '@wangeditor/editor-for-vue'
 
-// 内容 HTML
-const  data = reactive({
-  localValueHtml:'12344'
-})
-const toolbarConfig = {};
-const editorConfig = ref({ placeholder: '请输入内容...', MENU_CONF: {} });
+export default {
+  components: {Editor, Toolbar},
+  setup() {
+    // 编辑器实例,必须用 shallowRef
+    const editorRef = shallowRef()
 
-watch(()=>props.detailData,(newData)=>{
-  data.localValueHtml = newData
-},{deep:true,immediatet:true})
+    // 内容 HTML
+    const valueHtml = ref('<p>hello</p>')
 
-// 自定义图片上传
-editorConfig.value.MENU_CONF['uploadImage'] = {
-  async customUpload(file, insertFn) {
-    console.log('上传图片', file);
-    // 将上传的file图片转换为base64
-    const base64 = URL.createObjectURL(file);
+    // 模拟 ajax 异步获取内容
+    onMounted(() => {
+      setTimeout(() => {
+        valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>'
+      }, 1500)
+    })
 
-    // 这里的file为上传的图片对象,insertFn传入
-    insertFn(base64, 'img');
-  },
-};
+    const toolbarConfig = {}
+    const editorConfig = {placeholder: '请输入内容...'}
 
-// 自定义视频上传
-editorConfig.value.MENU_CONF['uploadVideo'] = {
-  async customUpload(file, insertFn) {
-    console.log('上传视频', file);
-  },
-};
+    // 组件销毁时,也及时销毁编辑器
+    onBeforeUnmount(() => {
+      const editor = editorRef.value
+      if (editor == null) return
+      editor.destroy()
+    })
 
-// 富文本编辑器生成后触发
-// const handleCreated = editor => {
-//   editorRef.value = editor; // 记录 editor 实例,重要!
-//   console.log(editorConfig.value.MENU_CONF, 'editorConfig.value');
-// };
+    const handleCreated = (editor) => {
+      editorRef.value = editor // 记录 editor 实例,重要!
+    }
 
-// 监听富文本编辑器粘贴行为
-const customPaste = (editor, event, callback) => {
-  // 获取粘贴的纯文本
-  const text = event.clipboardData.getData('text/plain');
-  if (text) {
-    editor.insertText(text);
-    event.preventDefault();
-    callback(false);
-  }
-};
-
-// 获取富文本html内容
-const getEditorHTML = () => {
-  console.log(editorRef.value.getHtml());
-};
-onMounted(async () => {
-  if (!props.initialValue) {
-    await new Promise((resolve) => setTimeout(resolve, 200)); // 等待200毫秒,模拟异步数据加载
-  }
-  if (props.initialValue) {
-    editorRef.value.setHtml(props.initialValue);
+    return {
+      editorRef,
+      valueHtml,
+      mode: 'default', // 或 'simple'
+      toolbarConfig,
+      editorConfig,
+      handleCreated
+    };
   }
-});
-// 组件销毁时,也及时销毁编辑器
-onBeforeUnmount(() => {
-  const editor = editorRef.value;
-  if (editor == null) return;
-  editor.destroy();
-});
-</script>
+}
+</script>

+ 18 - 21
src/view/news/Detail.vue

@@ -15,36 +15,34 @@
         </el-form-item>
         <el-form-item label="图片:">
           <el-image v-model="newsDetail.image" style="width: 100px; height: 100px; margin-right: 10px"
-            fit="cover"></el-image>
+                    fit="cover"></el-image>
           <el-upload :http-request="httpRequest" multiple :show-file-list="true" list-type="picture-card">
             <el-icon>
-              <Plus />
+              <Plus/>
             </el-icon>
           </el-upload>
         </el-form-item>
         <el-form-item label="分类:">
-          <el-select @click="getnewstype" v-model="newsDetail.types"  placeholder="请选择分类" size="large" style="width: 240px">
-            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+          <el-select @click="getnewstype" v-model="newsDetail.types" placeholder="请选择分类" size="large"
+                     style="width: 240px">
+            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
           </el-select>
         </el-form-item>
         <el-form-item label="简介:">
           <el-input v-model="newsDetail.synopsis"></el-input>
         </el-form-item>
         <el-form-item label="详情:">
-          <editor-with-binding v-model="newsDetail.detail" />
+          <EditorWithBinding v-model="newsDetail.detail"/>
         </el-form-item>
-
       </el-form>
     </el-card>
   </div>
 </template>
 
 <script setup>
-import { onBeforeMount, onMounted, reactive ,ref} from 'vue';
-import { useRoute, useRouter } from 'vue-router'
-import product from "../../api/product.js";
-import Editor from "../editor.vue";
-import { ElMessage } from "element-plus";
+import {nextTick, onBeforeMount, onMounted, reactive, ref} from 'vue';
+import {useRoute, useRouter} from 'vue-router'
+import {ElMessage} from "element-plus";
 import EditorWithBinding from "../EditorWithBinding.vue";
 import news from '../../api/news.js';
 import resource from "../../api/resource.js";
@@ -54,7 +52,6 @@ const router = useRouter();
 const newsDetail = reactive({
   ID: '',
   detail: '',
-  synopsis: '',
   image: '',
   is_active: '',
   is_index: '',
@@ -63,8 +60,7 @@ const newsDetail = reactive({
   title: '',
   types: '',
 })
-const value = ref('')
-const newstype=reactive({})
+const newstype = reactive({})
 const options = [
   {
     value: 'firm',
@@ -75,17 +71,19 @@ const options = [
     label: '行业新闻',
   },
 ]
-const getnewstype =async()=>{
-  const res= await news.getnewstype()
-  newstype.value=res.data.Data
+const getnewstype = async () => {
+  const res = await news.getnewstype()
+  newstype.value = res.data.Data
 }
 function httpRequest(option) {
 //将图片存到数组中
   fileList.value.push(option)
 }
-const fileList = ref([])
 
+const fileList = ref([])
+const content = ref('')
 const updateProduct = async () => {
+  console.log(content.value)
   let dataForm = new FormData();
   dataForm.append('types', "serve")
   //将图片的二进制通过表单的形式发送到后台
@@ -110,12 +108,11 @@ const updateProduct = async () => {
 
 onBeforeMount(async () => {
   if (route.query.id) {
-    const res = await news.getNewDetail({ id: route.query.id })
-    console.log(res.data)
+    const res = await news.getNewDetail({id: route.query.id})
     Object.assign(newsDetail, res.data.Data);
   }
 })
-onMounted(async()=>{
+onMounted(async () => {
   await getnewstype()
 })
 </script>

+ 1 - 0
src/view/news/add.vue

@@ -99,6 +99,7 @@ const updateProduct = async () => {
     synopsis: newsDetail.synopsis,
     title: newsDetail.title,
     types: newsDetail.types,
+    image: newsDetail.image,
   });
   if (res.data.Code === 200) {
     ElMessage.success("修改成功")

+ 10 - 9
src/view/product/Detail.vue

@@ -20,25 +20,22 @@
           <el-input v-model="productDetail.synopsis"></el-input>
         </el-form-item>
         <el-form-item label="详情:">
-          <editor v-model="productDetail.detail"></editor>
+          <EditorWithBinding v-model="productDetail.detail"></EditorWithBinding>
         </el-form-item>
         <el-form-item label="产品介绍:">
-          <editor v-if="productDetail.product_introduction"
-                  :initial-value="productDetail.product_introduction"></editor>
+          <EditorWithBinding v-model="productDetail.product_introduction"></EditorWithBinding>
         </el-form-item>
         <el-form-item label="技术参数:">
-          <editor v-if="productDetail.technical_parameters"
-                  :initial-value="productDetail.technical_parameters"></editor>
+          <EditorWithBinding v-model="productDetail.technical_parameters"></EditorWithBinding>
         </el-form-item>
         <el-form-item label="使用说明:">
-          <editor v-if="productDetail.instructions" :initial-value="productDetail.instructions"></editor>
+          <EditorWithBinding v-model="productDetail.instructions"></EditorWithBinding>
         </el-form-item>
         <el-form-item label="支持软件:">
           <editor v-if="productDetail.supporting_software" :initial-value="productDetail.supporting_software"></editor>
         </el-form-item>
         <el-form-item label="可选配件:">
-          <editor v-if="productDetail.optional_accessories"
-                  :initial-value="productDetail.optional_accessories"></editor>
+          <EditorWithBinding v-model="productDetail.optional_accessories"></EditorWithBinding>
         </el-form-item>
       </el-form>
     </el-card>
@@ -67,8 +64,12 @@ const productDetail = reactive({
   supporting_software: '',
   optional_accessories: '',
 })
+const handleContentChange = (htmlContent) => {
+  productDetail.detail = htmlContent
+  // 在这里可以使用接收到的内容进行进一步处理或者存储等操作
+};
 const updateProduct = async () => {
-  const res = await product.updateRecruit({
+  const res = await product.updateProduct({
     id: parseInt(route.query.id),
     title: productDetail.title,
     synopsis: productDetail.synopsis,

+ 1 - 1
src/view/product/add.vue

@@ -42,7 +42,7 @@
           <el-input v-model="productDetail.synopsis"></el-input>
         </el-form-item>
         <el-form-item label="详情:">
-          <EditorWithBinding v-model="productDetail.content"></EditorWithBinding>
+          <EditorWithBinding v-model="productDetail.detail"></EditorWithBinding>
         </el-form-item>
         <el-form-item label="产品介绍:">
           <EditorWithBinding v-model="productDetail.product_introduction"></EditorWithBinding>

+ 2 - 1
src/view/serve/add.vue

@@ -44,7 +44,7 @@
           <el-input v-model="serveDetail.synopsis" placeholder="请输入简介"/>
         </el-form-item>
         <el-form-item label="详情:">
-          <editor v-model="serveDetail.synopsis"></editor>
+          <EditorWithBinding v-model="serveDetail.detail"></EditorWithBinding>
         </el-form-item>
 
       </el-form>
@@ -60,6 +60,7 @@ import Editor from "../editor.vue";
 import {ElMessage} from "element-plus";
 import {Plus} from "@element-plus/icons-vue";
 import resource from "../../api/resource.js";
+import EditorWithBinding from "../EditorWithBinding.vue";
 
 const value = ref('')
 const route = useRoute();

+ 4 - 152
yarn.lock

@@ -264,7 +264,7 @@
   resolved "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz"
   integrity sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==
 
-"@wangeditor/editor@>=5.1.0":
+"@wangeditor/editor@^5.1.23", "@wangeditor/editor@>=5.1.0":
   version "5.1.23"
   resolved "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz"
   integrity sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==
@@ -330,7 +330,7 @@ axios@^1.2.0:
     form-data "^4.0.0"
     proxy-from-env "^1.1.0"
 
-call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.6, call-bind@^1.0.7:
+call-bind@^1.0.0:
   version "1.0.7"
   resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz"
   integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
@@ -341,11 +341,6 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.6, call-bind@^1.0.7:
     get-intrinsic "^1.2.4"
     set-function-length "^1.2.1"
 
-clone@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz"
-  integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
-
 combined-stream@^1.0.8:
   version "1.0.8"
   resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
@@ -376,19 +371,7 @@ dayjs@^1.11.3:
   resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.6.tgz"
   integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==
 
-deep-equal@^1.0.1:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz"
-  integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
-  dependencies:
-    is-arguments "^1.1.1"
-    is-date-object "^1.0.5"
-    is-regex "^1.1.4"
-    object-is "^1.1.5"
-    object-keys "^1.1.1"
-    regexp.prototype.flags "^1.5.1"
-
-define-data-property@^1.0.1, define-data-property@^1.1.4:
+define-data-property@^1.1.4:
   version "1.1.4"
   resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz"
   integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
@@ -397,15 +380,6 @@ define-data-property@^1.0.1, define-data-property@^1.1.4:
     es-errors "^1.3.0"
     gopd "^1.0.1"
 
-define-properties@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz"
-  integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
-  dependencies:
-    define-data-property "^1.0.1"
-    has-property-descriptors "^1.0.0"
-    object-keys "^1.1.1"
-
 delayed-stream@~1.0.0:
   version "1.0.0"
   resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
@@ -539,11 +513,6 @@ event-emitter@^0.3.5:
     d "1"
     es5-ext "~0.10.14"
 
-eventemitter3@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz"
-  integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==
-
 ext@^1.7.0:
   version "1.7.0"
   resolved "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz"
@@ -551,16 +520,6 @@ ext@^1.7.0:
   dependencies:
     type "^2.7.2"
 
-extend@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
-  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-fast-diff@1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz"
-  integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
-
 follow-redirects@^1.15.0:
   version "1.15.2"
   resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz"
@@ -580,11 +539,6 @@ function-bind@^1.1.2:
   resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
   integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 
-functions-have-names@^1.2.3:
-  version "1.2.3"
-  resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
-  integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-
 get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
   version "1.2.4"
   resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
@@ -603,7 +557,7 @@ gopd@^1.0.1:
   dependencies:
     get-intrinsic "^1.1.3"
 
-has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+has-property-descriptors@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz"
   integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
@@ -620,13 +574,6 @@ has-symbols@^1.0.3:
   resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
 
-has-tostringtag@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz"
-  integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
-  dependencies:
-    has-symbols "^1.0.3"
-
 hasown@^2.0.0:
   version "2.0.2"
   resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz"
@@ -651,14 +598,6 @@ immer@^9.0.6:
   resolved "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz"
   integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
 
-is-arguments@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz"
-  integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
-  dependencies:
-    call-bind "^1.0.2"
-    has-tostringtag "^1.0.0"
-
 is-core-module@^2.13.0:
   version "2.13.1"
   resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz"
@@ -666,13 +605,6 @@ is-core-module@^2.13.0:
   dependencies:
     hasown "^2.0.0"
 
-is-date-object@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
-  integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
-  dependencies:
-    has-tostringtag "^1.0.0"
-
 is-hotkey@^0.2.0:
   version "0.2.0"
   resolved "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz"
@@ -683,14 +615,6 @@ is-plain-object@^5.0.0:
   resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz"
   integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
 
-is-regex@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
-  integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
-  dependencies:
-    call-bind "^1.0.2"
-    has-tostringtag "^1.0.0"
-
 is-url@^1.2.4:
   version "1.2.4"
   resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz"
@@ -797,34 +721,11 @@ normalize-wheel-es@^1.2.0:
   resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz"
   integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
 
-object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
-  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-
 object-inspect@^1.9.0:
   version "1.12.2"
   resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz"
   integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
 
-object-is@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz"
-  integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
-  dependencies:
-    call-bind "^1.0.7"
-    define-properties "^1.2.1"
-
-object-keys@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
-  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-parchment@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz"
-  integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==
-
 path-parse@^1.0.7:
   version "1.0.7"
   resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
@@ -866,42 +767,11 @@ qs@^6.11.0:
   dependencies:
     side-channel "^1.0.4"
 
-quill-delta@^3.6.2:
-  version "3.6.3"
-  resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz"
-  integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==
-  dependencies:
-    deep-equal "^1.0.1"
-    extend "^3.0.2"
-    fast-diff "1.1.2"
-
-quill@^1.3.4:
-  version "1.3.7"
-  resolved "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz"
-  integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==
-  dependencies:
-    clone "^2.1.1"
-    deep-equal "^1.0.1"
-    eventemitter3 "^2.0.3"
-    extend "^3.0.2"
-    parchment "^1.1.4"
-    quill-delta "^3.6.2"
-
 regenerator-runtime@^0.14.0:
   version "0.14.1"
   resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
   integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
 
-regexp.prototype.flags@^1.5.1:
-  version "1.5.2"
-  resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz"
-  integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
-  dependencies:
-    call-bind "^1.0.6"
-    define-properties "^1.2.1"
-    es-errors "^1.3.0"
-    set-function-name "^2.0.1"
-
 resolve@^1.22.1:
   version "1.22.8"
   resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz"
@@ -937,16 +807,6 @@ set-function-length@^1.2.1:
     gopd "^1.0.1"
     has-property-descriptors "^1.0.2"
 
-set-function-name@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz"
-  integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
-  dependencies:
-    define-data-property "^1.1.4"
-    es-errors "^1.3.0"
-    functions-have-names "^1.2.3"
-    has-property-descriptors "^1.0.2"
-
 side-channel@^1.0.4:
   version "1.0.4"
   resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz"
@@ -1029,14 +889,6 @@ vue-demi@*:
   resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz"
   integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
 
-vue-quill-editor@^3.0.6:
-  version "3.0.6"
-  resolved "https://registry.npmmirror.com/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz"
-  integrity sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==
-  dependencies:
-    object-assign "^4.1.1"
-    quill "^1.3.4"
-
 vue-router@^4.0.13:
   version "4.0.13"
   resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.13.tgz"