From 6cfaee4a1edbe47f7c9da41905e8d877ed590dc4 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 22 五月 2024 16:09:13 +0800
Subject: [PATCH] ''

---
 admin/src/api/index.js                                     |    1 
 admin/src/components/common/RichEditor.vue                 |  234 ++++++------
 admin/src/views/platform/LogisticsRecord/waybill.vue       |  185 +++++++++
 admin/src/views/statistics/platformRecord.vue              |    0 
 admin/src/views/platform/set/application.vue               |   16 
 admin/src/views/platform/LogisticsRecord/subscribe.vue     |  160 ++++++++
 admin/src/views/platform/LogisticsRecord/operationCity.vue |  168 ++++++++
 admin/package-lock.json                                    |  182 ++++----
 admin/src/views/platform/LogisticsRecord/operation.vue     |  168 ++++++++
 admin/package.json                                         |    2 
 admin/src/views/statistics/platformStatic.vue              |    0 
 11 files changed, 903 insertions(+), 213 deletions(-)

diff --git a/admin/package-lock.json b/admin/package-lock.json
index 485d39d..38c5cd6 100644
--- a/admin/package-lock.json
+++ b/admin/package-lock.json
@@ -1876,63 +1876,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "ssri": {
           "version": "8.0.1",
           "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1940,28 +1883,6 @@
           "dev": true,
           "requires": {
             "minipass": "^3.1.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
           }
         }
       }
@@ -2058,7 +1979,7 @@
     },
     "@wangeditor/basic-modules": {
       "version": "1.1.7",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
       "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
       "requires": {
         "is-url": "^1.2.4"
@@ -2066,7 +1987,7 @@
     },
     "@wangeditor/code-highlight": {
       "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
       "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
       "requires": {
         "prismjs": "^1.23.0"
@@ -2074,7 +1995,7 @@
     },
     "@wangeditor/core": {
       "version": "1.1.19",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
       "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
       "requires": {
         "@types/event-emitter": "^0.3.3",
@@ -2087,7 +2008,7 @@
     },
     "@wangeditor/editor": {
       "version": "5.1.23",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
       "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
       "requires": {
         "@uppy/core": "^2.1.1",
@@ -2114,28 +2035,28 @@
       }
     },
     "@wangeditor/editor-for-vue": {
-      "version": "5.1.12",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
-      "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ=="
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-1.0.2.tgz",
+      "integrity": "sha512-BOENvAXJVtVXlE2X50AAvjV82YlCUeu5cbeR0cvEQHQjYtiVnJtq7HSoj85r2kTgGouI5OrpJG9BBEjSjUSPyA=="
     },
     "@wangeditor/list-module": {
       "version": "1.0.5",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
       "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ=="
     },
     "@wangeditor/table-module": {
       "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
       "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w=="
     },
     "@wangeditor/upload-image-module": {
       "version": "1.0.2",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
       "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA=="
     },
     "@wangeditor/video-module": {
       "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+      "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
       "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg=="
     },
     "@webassemblyjs/ast": {
@@ -13950,6 +13871,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-property-decorator": {
       "version": "8.5.1",
       "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.5.1.tgz",
diff --git a/admin/package.json b/admin/package.json
index 3816b55..326225c 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -13,7 +13,7 @@
   "dependencies": {
     "@riophae/vue-treeselect": "^0.4.0",
     "@wangeditor/editor": "^5.1.23",
-    "@wangeditor/editor-for-vue": "^5.1.12",
+    "@wangeditor/editor-for-vue": "^1.0.2",
     "axios": "^0.21.1",
     "core-js": "^3.6.5",
     "echarts": "^5.4.3",
diff --git a/admin/src/api/index.js b/admin/src/api/index.js
new file mode 100644
index 0000000..e068dbd
--- /dev/null
+++ b/admin/src/api/index.js
@@ -0,0 +1 @@
+export const uploadFile = '/admin_interface/visitsAdmin/cloudService/public/upload'
diff --git a/admin/src/components/common/RichEditor.vue b/admin/src/components/common/RichEditor.vue
index 0c56289..7ed7fdc 100644
--- a/admin/src/components/common/RichEditor.vue
+++ b/admin/src/components/common/RichEditor.vue
@@ -1,158 +1,162 @@
 <template>
-  <div style="border: 1px solid #ccc;">
+  <div class="wang_editor">
     <Toolbar
       style="border-bottom: 1px solid #ccc"
       :editor="editor"
-      :defaultConfig="toolbarConfig"
+      :default-config="toolbarConfig"
       :mode="mode"
     />
     <Editor
-      style="height: 300px; overflow-y: hidden;"
-      :value="content.content"
+      v-model="html"
+      style="min-height: 200px"
+      :default-config="editorConfig"
       :mode="mode"
-      :defaultConfig="editorConfig"
       @onCreated="onCreated"
-      @onChange="onChange"
-      @input="html=$event"
     />
   </div>
 </template>
 
 <script>
 import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
+import '@wangeditor/editor/dist/css/style.css'
+import axios from 'axios'
+
+import { uploadFile } from '@/api'
+
+const uploadConfig = {
+  action: uploadFile, // 蹇呭~鍙傛暟 鍥剧墖涓婁紶鍦板潃
+  methods: 'POST', // 蹇呭~鍙傛暟 鍥剧墖涓婁紶鏂瑰紡
+  token: '', // 鍙�夊弬鏁� 濡傛灉闇�瑕乼oken楠岃瘉锛屽亣璁句綘鐨則oken鏈夊瓨鏀惧湪sessionStorage
+  name: 'file', // 蹇呭~鍙傛暟 鏂囦欢鐨勫弬鏁板悕
+  size: 500, // 鍙�夊弬鏁�   鍥剧墖澶у皬锛屽崟浣嶄负Kb, 1M = 1024Kb
+  accept: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon' // 鍙�� 鍙笂浼犵殑鍥剧墖鏍煎紡
+}
 export default {
-  name: 'RichEditor',
-  components: { Editor, Toolbar },
+  components: {
+    Editor,
+    Toolbar
+  },
   props: {
-    content: {
-      type: Object,
-      default: () => {}
+    info: {
+      type: String,
+      default: ''
+    },
+    default: {
+      type: String,
+      default: ''
+    },
+    placeholder: {
+      type: String,
+      default: '璇疯緭鍏ュ唴瀹�...'
     }
   },
-  data() {
+  data () {
     return {
       editor: null,
-      html: '<p><br></p>',
-      toolbarConfig: {
-        toolbarKeys: [
-          "headerSelect",
-          "blockquote",
-          "|",
-          "bold",
-          "underline",
-          "italic",
-          {
-              "key": "group-more-style",
-              "title": "鏇村",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M204.8 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M505.6 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path><path d=\"M806.4 505.6m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z\"></path></svg>",
-              "menuKeys": [
-                  "through",
-                  "code",
-                  "sup",
-                  "sub",
-                  "clearStyle"
-              ]
-          },
-          "color",
-          "bgColor",
-          "|",
-          "fontSize",
-          "fontFamily",
-          "lineHeight",
-          "|",
-          "bulletedList",
-          "numberedList",
-          "todo",
-          {
-              "key": "group-justify",
-              "title": "瀵归綈",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M768 793.6v102.4H51.2v-102.4h716.8z m204.8-230.4v102.4H51.2v-102.4h921.6z m-204.8-230.4v102.4H51.2v-102.4h716.8zM972.8 102.4v102.4H51.2V102.4h921.6z\"></path></svg>",
-              "menuKeys": [
-                  "justifyLeft",
-                  "justifyRight",
-                  "justifyCenter",
-                  "justifyJustify"
-              ]
-          },
-          {
-              "key": "group-indent",
-              "title": "缂╄繘",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M0 64h1024v128H0z m384 192h640v128H384z m0 192h640v128H384z m0 192h640v128H384zM0 832h1024v128H0z m0-128V320l256 192z\"></path></svg>",
-              "menuKeys": [
-                  "indent",
-                  "delIndent"
-              ]
-          },
-          // "|",
-          "emotion",
-          "insertLink",
-          {
-              "key": "group-image",
-              "title": "鍥剧墖",
-              "iconSvg": "<svg viewBox=\"0 0 1024 1024\"><path d=\"M959.877 128l0.123 0.123v767.775l-0.123 0.122H64.102l-0.122-0.122V128.123l0.122-0.123h895.775zM960 64H64C28.795 64 0 92.795 0 128v768c0 35.205 28.795 64 64 64h896c35.205 0 64-28.795 64-64V128c0-35.205-28.795-64-64-64zM832 288.01c0 53.023-42.988 96.01-96.01 96.01s-96.01-42.987-96.01-96.01S682.967 192 735.99 192 832 234.988 832 288.01zM896 832H128V704l224.01-384 256 320h64l224.01-192z\"></path></svg>",
-              "menuKeys": [
-                  "insertImage",
-                  "uploadImage"
-              ]
-          },
-          "insertTable",
-          "codeBlock",
-          "divider",
-          "|",
-          "undo",
-          "redo",
-          "|",
-          "fullScreen"
-        ]
-      },
+      toolbarConfig: {},
       editorConfig: {
-        placeholder: '璇疯緭鍏ュ唴瀹�...',
+        placeholder: this.placeholder,
         MENU_CONF: {
           uploadImage: {
-            // server: '/api/upload',
-            name: 'file',
-            server: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadLocal',
+            html: this.info,
+            server: uploadFile,
+            // 鍗曚釜鏂囦欢鐨勬渶澶т綋绉檺鍒讹紝榛樿涓� 2M
+            maxFileSize: 5 * 1024 * 1024, // 1M
+            // 閫夋嫨鏂囦欢鏃剁殑绫诲瀷闄愬埗锛岄粯璁や负 ['image/*'] 銆傚涓嶆兂闄愬埗锛屽垯璁剧疆涓� []
+            allowedFileTypes: ['image/*'],
+            // 鑷畾涔変笂浼犲弬鏁帮紝渚嬪浼犻�掗獙璇佺殑 token 绛夈�傚弬鏁颁細琚坊鍔犲埌 formData 涓紝涓�璧蜂笂浼犲埌鏈嶅姟绔�
             meta: {
-              folder: 'shop'
+              token: '',
+              otherKey: '',
+              folder: 'COURSE_IMG'
             },
-            onBeforeUpload(file) {    // JS 璇硶
-              // file 閫変腑鐨勬枃浠讹紝鏍煎紡濡� { key: file }
-              // debugger
-              return file
+            // 鑷畾涔夊鍔� http  header
+            headers: {
+              token: localStorage.getItem('token') || ''
+              // Accept: 'text/x-json',
+              // otherKey: 'xxx'
             },
-            onSuccess(file, res) {
-                console.log(`${file.name} 涓婁紶鎴愬姛`, res)
+            // 璺ㄥ煙鏄惁浼犻�� cookie 锛岄粯璁や负 false
+            withCredentials: true,
+            // 瓒呮椂鏃堕棿锛岄粯璁や负 10 绉�
+            timeout: 5 * 1000, // 5 绉�
+            onSuccess (file, res) { // TS 璇硶
+              // onSuccess(file, res) {          // JS 璇硶
+              console.log(`${file.name} 涓婁紶鎴愬姛`, res)
             },
-            onError(file, err, res) {
-              console.log(`${file.name} 涓婁紶鍑洪敊`, err, res)
-            },
-          },
+            customUpload (file, insertFn) { // TS 璇硶
+              // file 鍗抽�変腑鐨勬枃浠�
+              // 鑷繁瀹炵幇涓婁紶锛屽苟寰楀埌鍥剧墖 url alt href
+              // var form = new FormData()
+              // form.append('image', file)
+              // form.append('folder', 'COURSE_IMG')
+              var formData = new FormData()
+              formData.append(file.name, file)
+              formData.append('image', file)
+              formData.append('folder', 'member')
+              // formData.append('type', '')
 
+              var xhr = new XMLHttpRequest()
+              xhr.open(uploadConfig.methods, uploadConfig.action, true)
+              // 涓婁紶鏁版嵁鎴愬姛锛屼細瑙﹀彂
+              xhr.send(formData)
+              xhr.onreadystatechange = () => {
+                // 鑻ュ搷搴斿畬鎴愪笖璇锋眰鎴愬姛
+                if (xhr.readyState === 4 && xhr.status === 200) {
+                  const result = JSON.parse(xhr.responseText)
+                  console.log('result', result);
+                  insertFn(result.data.url, '', result.data.url)
+                }
+              }
+            },
+            customInsert (res, insertFn) { // TS 璇硶
+              // customInsert(res, insertFn) {                  // JS 璇硶
+              // res 鍗虫湇鍔$鐨勮繑鍥炵粨鏋�
+              console.log(res.data.url)
+              // 浠� res 涓壘鍒� url alt href 锛岀劧鍚庢彃鍏ュ浘鐗�
+              insertFn(res.url)
+            }
+          }
         }
       },
-      mode: 'default', // or 'simple'
+      mode: 'default' // or 'simple'
     }
   },
-  beforeDestroy() {
+  emits: ['input'],
+  computed: {
+    html: {
+      get () {
+        return this.info || ''
+      },
+      set (newValue) {
+        this.$emit('input', newValue)
+      }
+    }
+  },
+  mounted () {
+    setTimeout(() => {
+      this.info = this.default
+    }, 1200)
+  },
+  beforeDestroy () {
     const editor = this.editor
     if (editor == null) return
     editor.destroy() // 缁勪欢閿�姣佹椂锛屽強鏃堕攢姣佺紪杈戝櫒
   },
   methods: {
     onCreated (editor) {
-      this.editor = Object.seal(editor)
+      this.editor = Object.seal(editor) // 涓�瀹氳鐢� Object.seal() 锛屽惁鍒欎細鎶ラ敊
+      this.$emit('input', '123123')
     },
-    onChange (editor) {
-      console.log(this.html);
-      // debugger
-      if (!this.html||this.content.content==this.html) {
-        return
-      }
-      this.$emit('edit', this.html)
-    },
-  },
-
+    test () {
+      console.log(this.info)
+    }
+  }
 }
 </script>
 
-<style src="@wangeditor/editor/dist/css/style.css"></style>
+<style lang="scss" scoped>
+.wang_editor {
+  border: 1px solid;
+}
+</style>
diff --git a/admin/src/views/platform/LogisticsRecord/operation.vue b/admin/src/views/platform/LogisticsRecord/operation.vue
index e69de29..15e1955 100644
--- a/admin/src/views/platform/LogisticsRecord/operation.vue
+++ b/admin/src/views/platform/LogisticsRecord/operation.vue
@@ -0,0 +1,168 @@
+<template>
+  <div class="main_app">
+    <QueryForm
+      v-model="filters"
+      :query-form-config="queryFormConfig"
+      @handleQuery="getList(1)"
+      @clear="clear"
+    />
+    <el-table v-loading="loading" :data="list" stripe>
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍓嶇収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍚庣収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="椹鹃┒鍛�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鑱旂郴鏂瑰紡"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="纭鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="绛惧埌鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍙彿鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟寮�濮嬫椂闂�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟瀹屾垚鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟鏃堕暱"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍙彿鏈堝彴"
+        min-width="100"
+      />
+      <el-table-column
+        prop="name"
+        label="鏈堝彴缁�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杩愯緭鍗曞彿/鍚堝悓鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟鎯呭喌"
+        min-width="100"
+        show-overflow-tooltip
+      />
+    
+    </el-table>
+    <pagination
+      @size-change="handleSizeChange"
+      @current-change="getList"
+      :pagination="pagination"
+    />
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+export default {
+  components: {
+    Pagination,
+    QueryForm
+  },
+  data () {
+    return {
+      loading: false,
+      pagination: {
+        capacity: 10,
+        page: 1
+      },
+      filters: {},
+      list: [],
+      total: 0,
+      isShowEdit: false,
+      param: {},
+      rules: {},
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'aaaa',
+            type: 'input',
+            label: '杞︾墝鍙�'
+          },
+          {
+            filed: 'bbb',
+            type: 'input',
+            label: '椹鹃┒鍛�'
+          },
+          {
+            filed: 'selDate',
+            type: 'daterange',
+            label: '鎿嶄綔鏃堕棿'
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  methods: {
+    handleSub () {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          alert('submit!')
+        }
+      })
+    },
+    getList (page) { },
+    clear () { },
+    handleEdit (row) {
+      this.isShowEdit = true
+    },
+    handleDel () { },
+    handleSizeChange (capacity) {
+      this.pagination.capacity = capacity
+    }
+  }
+}
+</script>
+
+<style>
+</style>
diff --git a/admin/src/views/platform/LogisticsRecord/operationCity.vue b/admin/src/views/platform/LogisticsRecord/operationCity.vue
index e69de29..15e1955 100644
--- a/admin/src/views/platform/LogisticsRecord/operationCity.vue
+++ b/admin/src/views/platform/LogisticsRecord/operationCity.vue
@@ -0,0 +1,168 @@
+<template>
+  <div class="main_app">
+    <QueryForm
+      v-model="filters"
+      :query-form-config="queryFormConfig"
+      @handleQuery="getList(1)"
+      @clear="clear"
+    />
+    <el-table v-loading="loading" :data="list" stripe>
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍓嶇収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍚庣収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="椹鹃┒鍛�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鑱旂郴鏂瑰紡"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="纭鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="绛惧埌鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍙彿鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟寮�濮嬫椂闂�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟瀹屾垚鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟鏃堕暱"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍙彿鏈堝彴"
+        min-width="100"
+      />
+      <el-table-column
+        prop="name"
+        label="鏈堝彴缁�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杩愯緭鍗曞彿/鍚堝悓鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟鎯呭喌"
+        min-width="100"
+        show-overflow-tooltip
+      />
+    
+    </el-table>
+    <pagination
+      @size-change="handleSizeChange"
+      @current-change="getList"
+      :pagination="pagination"
+    />
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+export default {
+  components: {
+    Pagination,
+    QueryForm
+  },
+  data () {
+    return {
+      loading: false,
+      pagination: {
+        capacity: 10,
+        page: 1
+      },
+      filters: {},
+      list: [],
+      total: 0,
+      isShowEdit: false,
+      param: {},
+      rules: {},
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'aaaa',
+            type: 'input',
+            label: '杞︾墝鍙�'
+          },
+          {
+            filed: 'bbb',
+            type: 'input',
+            label: '椹鹃┒鍛�'
+          },
+          {
+            filed: 'selDate',
+            type: 'daterange',
+            label: '鎿嶄綔鏃堕棿'
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  methods: {
+    handleSub () {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          alert('submit!')
+        }
+      })
+    },
+    getList (page) { },
+    clear () { },
+    handleEdit (row) {
+      this.isShowEdit = true
+    },
+    handleDel () { },
+    handleSizeChange (capacity) {
+      this.pagination.capacity = capacity
+    }
+  }
+}
+</script>
+
+<style>
+</style>
diff --git a/admin/src/views/platform/LogisticsRecord/subscribe.vue b/admin/src/views/platform/LogisticsRecord/subscribe.vue
index e69de29..92cba1b 100644
--- a/admin/src/views/platform/LogisticsRecord/subscribe.vue
+++ b/admin/src/views/platform/LogisticsRecord/subscribe.vue
@@ -0,0 +1,160 @@
+<template>
+  <div class="main_app">
+    <QueryForm
+      v-model="filters"
+      :query-form-config="queryFormConfig"
+      @handleQuery="getList(1)"
+      @clear="clear"
+    />
+    <el-table v-loading="loading" :data="list" stripe>
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍓嶇収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍚庣収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="椹鹃┒鍛�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鑱旂郴鏂瑰紡"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍚堝悓鍗曞彿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鍏ュ簱绫诲瀷"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="棰勭害鍒板満鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="瀹℃壒缁撴灉"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="瀹℃壒浜�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鎿嶄綔鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鎿嶄綔"
+        min-width="80"
+        align="center"
+        show-overflow-tooltip
+      >
+        <template v-slot="scope">
+          <el-button type="text" @click="handleEdit(scope.row)">棰勭害璇︽儏</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      @size-change="handleSizeChange"
+      @current-change="getList"
+      :pagination="pagination"
+    />
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+export default {
+  components: {
+    Pagination,
+    QueryForm
+  },
+  data () {
+    return {
+      loading: false,
+      pagination: {
+        capacity: 10,
+        page: 1
+      },
+      filters: {},
+      list: [],
+      total: 0,
+      isShowEdit: false,
+      param: {},
+      rules: {},
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'aaaa',
+            type: 'input',
+            label: '杞︾墝鍙�'
+          },
+          {
+            filed: 'bbb',
+            type: 'input',
+            label: '椹鹃┒鍛�'
+          },
+          {
+            filed: 'cc',
+            type: 'input',
+            label: '鍚堝悓鍗曞彿'
+          },
+          {
+            filed: 'selDate',
+            type: 'daterange',
+            label: '鎿嶄綔鏃堕棿'
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  methods: {
+    handleSub () {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          alert('submit!')
+        }
+      })
+    },
+    getList (page) { },
+    clear () { },
+    handleEdit (row) {
+      this.isShowEdit = true
+    },
+    handleDel () { },
+    handleSizeChange (capacity) {
+      this.pagination.capacity = capacity
+    }
+  }
+}
+</script>
+
+<style>
+</style>
diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue
index e69de29..887f2ab 100644
--- a/admin/src/views/platform/LogisticsRecord/waybill.vue
+++ b/admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -0,0 +1,185 @@
+<template>
+  <div class="main_app">
+    <QueryForm
+      v-model="filters"
+      :query-form-config="queryFormConfig"
+      @handleQuery="getList(1)"
+      @clear="clear"
+    />
+    <div class="mb10 mt20">
+      <el-button type="primary" @click="handleEdit()">鏂板</el-button>
+    </div>
+    <el-table v-loading="loading" :data="list" stripe>
+      <el-table-column
+        prop="name"
+        label="杞︾墝鍓嶇収鍙�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浠诲姟鏉ユ簮"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杩愯緭鍏徃"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="椹鹃┒鍛�"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鑱旂郴鏂瑰紡"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="浣滀笟绫诲瀷"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="杩愯緭鍗曞彿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鎿嶄綔鏃堕棿"
+        min-width="100"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        prop="name"
+        label="鎿嶄綔"
+        min-width="80"
+        align="center"
+        show-overflow-tooltip
+      >
+        <template v-slot="scope">
+          <el-button type="text" @click="handleEdit(scope.row)">杩愬崟璇︽儏</el-button>
+          <el-button type="text" class="red" @click="handleDel(scope.row)"
+            >鍒犻櫎</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      @size-change="handleSizeChange"
+      @current-change="getList"
+      :pagination="pagination"
+    />
+    <el-dialog
+      :title="param.id ? '缂栬緫浣滀笟浠诲姟' : '鏂板浣滀笟浠诲姟'"
+      :visible.sync="isShowEdit"
+      width="480px"
+    >
+      <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
+        <el-form-item label="杩愯緭鍗曞彿" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�"></el-input>
+        </el-form-item>
+        <el-form-item label="杞﹀墠鐗岀収鍙�" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�"></el-input>
+        </el-form-item>
+        <el-form-item label="椹鹃┒鍛�" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�"></el-input>
+        </el-form-item>
+        <el-form-item label="鑱旂郴鏂瑰紡" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�"></el-input>
+        </el-form-item>
+        <el-form-item label="鍏ュ洯浜嬬敱" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�"></el-input>
+        </el-form-item>
+        <el-form-item label="鎬昏繍杈撻噺" prop="name">
+          <el-input v-model="param.aaa" placeholder="璇疯緭鍏�" class="w300"></el-input>
+          <span class="ml10">涓囨敮</span>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="isShowEdit = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="handleSub">纭畾</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/common/Pagination'
+import QueryForm from '@/components/common/QueryForm'
+export default {
+  components: {
+    Pagination,
+    QueryForm
+  },
+  data () {
+    return {
+      loading: false,
+      pagination: {
+        capacity: 10,
+        page: 1
+      },
+      filters: {},
+      list: [],
+      total: 0,
+      isShowEdit: false,
+      param: {},
+      rules: {},
+      queryFormConfig: {
+        formItems: [
+          {
+            filed: 'aaaa',
+            type: 'input',
+            label: '杞︾墝鍙�'
+          },
+          {
+            filed: 'bbb',
+            type: 'input',
+            label: '椹鹃┒鍛�'
+          },
+          {
+            filed: 'cc',
+            type: 'input',
+            label: '杩愯緭鍗曞彿'
+          },
+          {
+            filed: 'selDate',
+            type: 'daterange',
+            label: '鎿嶄綔鏃堕棿'
+          }
+        ],
+        online: true
+      },
+    }
+  },
+  methods: {
+    handleSub () {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          alert('submit!')
+        }
+      })
+    },
+    getList (page) { },
+    clear () { },
+    handleEdit (row) {
+      this.isShowEdit = true
+    },
+    handleDel () { },
+    handleSizeChange (capacity) {
+      this.pagination.capacity = capacity
+    }
+  }
+}
+</script>
+
+<style>
+</style>
diff --git a/admin/src/views/platform/set/center.vue b/admin/src/views/platform/set/application.vue
similarity index 66%
rename from admin/src/views/platform/set/center.vue
rename to admin/src/views/platform/set/application.vue
index b0558c4..caba2c0 100644
--- a/admin/src/views/platform/set/center.vue
+++ b/admin/src/views/platform/set/application.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="main_app">
+    <div class="main_app">
     <el-form
       :model="param"
       :rules="rules"
@@ -9,7 +9,7 @@
     >
       <el-form-item label="甯傚叕鍙稿鎵逛汉">
         <el-select v-model="param.aa" class="w400" placeholder="璇烽�夋嫨锛屽閫�">
-          <el-option></el-option>
+          <!-- <el-option></el-option> -->
         </el-select>
       </el-form-item>
       <el-form-item label="甯傚叕鍙告棩浣滀笟閲�">
@@ -17,24 +17,26 @@
         <span>涓囨敮</span>
       </el-form-item>
       <el-form-item label="鐗╂祦杞﹂绾︽寚鍗�">
-        <Editor v-if="param.content" v-model="param.content" :defaultConfig="{ readOnly : true }" />
+        <RichEditor v-model="param.context" style="width: 900px" :default="param.context" />
       </el-form-item>
       <el-form-item label="鐗╂祦杞﹀洯鍖哄瑙堝浘">
-        <Editor v-if="param.content" v-model="param.content" :defaultConfig="{ readOnly : true }" />
+        <RichEditor v-model="param.context" style="width: 900px" placeholder="璇疯緭鍏ュ唴瀹�" :default="param.context" />
       </el-form-item>
     </el-form>
   </div>
 </template>
 
 <script>
-import { Editor } from '@wangeditor/editor-for-vue'
+import RichEditor from '@/components/common/RichEditor'
 export default {
   components: {
-    Editor
+    RichEditor: RichEditor
   },
   data () {
     return {
-      param: {},
+      param: {
+        context: 'qqq'
+      },
       rules: {}
     }
   }
diff --git a/admin/src/views/statistics/platformRecord.vue b/admin/src/views/statistics/platformRecord.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/admin/src/views/statistics/platformRecord.vue
diff --git a/admin/src/views/statistics/platformStatic.vue b/admin/src/views/statistics/platformStatic.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/admin/src/views/statistics/platformStatic.vue

--
Gitblit v1.9.3