diff --git a/mock/article.js b/mock/article.js
index 23d8ba51056..e60f79f1c88 100644
--- a/mock/article.js
+++ b/mock/article.js
@@ -1,16 +1,41 @@
 const Mock = require('mockjs')
+const Random = Mock.Random;
 
 const List = []
 const count = 100
 
 const baseContent = '
I am testing data, I am testing data.

'
 const image_uri = 'https://wpimg.wallstcn.com/e4558086-631c-425c-9430-56ffb46e70b3'
-
 for (let i = 0; i < count; i++) {
+  // List.push(Mock.mock({
+  //   id: '@increment',
+  //   timestamp: +Mock.Random.date('T'),
+  //   author: '@first',
+  //   reviewer: '@first',
+  //   title: '@title(5, 10)',
+  //   content_short: 'mock data',
+  //   content: baseContent,
+  //   forecast: '@float(0, 100, 2, 2)',
+  //   importance: '@integer(1, 3)',
+  //   'type|1': ['CN', 'US', 'JP', 'EU'],
+  //   'status|1': ['published', 'draft'],
+  //   display_time: '@datetime',
+  //   comment_disabled: true,
+  //   pageviews: '@integer(300, 5000)',
+  //   image_uri,
+  //   platforms: ['a-platform']
+  // }))
   List.push(Mock.mock({
     id: '@increment',
     timestamp: +Mock.Random.date('T'),
     author: '@first',
+    'location|1': ['丰县', '沛县', '睢宁县', '云龙区', '鼓楼区', '泉山区', '铜山区', '贾汪区'],
+    'name|1': ['拖拉机', '无人机', '推土机', '抽水机', '除草机器人'],
+    PurchaseDate: '@datetime',
+    'state|1': ['使用中', '维修中', '未使用', '已报废'],
+    'brand': '@id',
+    description: Random.sentence(),
+    owner: '@cname',
     reviewer: '@first',
     title: '@title(5, 10)',
     content_short: 'mock data',
diff --git a/package.json b/package.json
index 02f68e23764..e6c749c8020 100644
--- a/package.json
+++ b/package.json
@@ -15,10 +15,14 @@
     "test:ci": "npm run lint && npm run test:unit"
   },
   "dependencies": {
+    "@babel/core": "^7.21.0",
+    "@toast-ui/editor": "^3.1.3",
     "axios": "0.18.1",
+    "body-parser": "^1.20.2",
+    "cache-loader": "^4.1.0",
     "clipboard": "2.0.4",
     "codemirror": "5.45.0",
-    "core-js": "3.6.5",
+    "core-js": "^3.29.0",
     "driver.js": "0.9.5",
     "dropzone": "5.5.1",
     "echarts": "4.2.1",
@@ -31,19 +35,22 @@
     "normalize.css": "7.0.0",
     "nprogress": "0.2.0",
     "path-to-regexp": "2.4.0",
+    "regenerator-runtime": "^0.13.11",
     "screenfull": "4.2.0",
     "script-loader": "0.7.2",
     "sortablejs": "1.8.4",
-    "tui-editor": "1.3.3",
+    "svg-baker-runtime": "^1.4.7",
     "vue": "2.6.10",
     "vue-count-to": "1.0.13",
     "vue-router": "3.0.2",
     "vue-splitpane": "1.0.4",
+    "vue-style-loader": "^4.1.3",
     "vuedraggable": "2.20.0",
     "vuex": "3.1.0",
     "xlsx": "0.14.1"
   },
   "devDependencies": {
+    "@babel/runtime": "^7.21.0",
     "@vue/cli-plugin-babel": "4.4.4",
     "@vue/cli-plugin-eslint": "4.4.4",
     "@vue/cli-plugin-unit-jest": "4.4.4",
@@ -70,7 +77,8 @@
     "serve-static": "1.13.2",
     "svg-sprite-loader": "4.1.3",
     "svgo": "1.2.0",
-    "vue-template-compiler": "2.6.10"
+    "vue-template-compiler": "2.6.10",
+    "webpack": "^4.0.0"
   },
   "browserslist": [
     "> 1%",
diff --git a/src/components/MarkdownEditor/index.vue b/src/components/MarkdownEditor/index.vue
index 1a8a01ee767..d0eef636a8d 100644
--- a/src/components/MarkdownEditor/index.vue
+++ b/src/components/MarkdownEditor/index.vue
@@ -4,13 +4,18 @@
 
 
+
+
diff --git a/src/views/excel/components/BarChart.vue b/src/views/excel/components/BarChart.vue
new file mode 100644
index 00000000000..136936363c6
--- /dev/null
+++ b/src/views/excel/components/BarChart.vue
@@ -0,0 +1,111 @@
+
+  
+
+
+
diff --git a/src/views/excel/components/LineChart.vue b/src/views/excel/components/LineChart.vue
new file mode 100644
index 00000000000..767fda417bf
--- /dev/null
+++ b/src/views/excel/components/LineChart.vue
@@ -0,0 +1,138 @@
+
+  
+
+
+
diff --git a/src/views/excel/components/PieChart.vue b/src/views/excel/components/PieChart.vue
new file mode 100644
index 00000000000..c090f9254a0
--- /dev/null
+++ b/src/views/excel/components/PieChart.vue
@@ -0,0 +1,79 @@
+
+  
+
+
+
diff --git a/src/views/excel/components/RaddarChart.vue b/src/views/excel/components/RaddarChart.vue
new file mode 100644
index 00000000000..93ae4ee42f8
--- /dev/null
+++ b/src/views/excel/components/RaddarChart.vue
@@ -0,0 +1,125 @@
+
+  
+
+
+
diff --git a/src/views/excel/export-excel.vue b/src/views/excel/export-excel.vue
index b4d7500b49f..3628fb19e7a 100644
--- a/src/views/excel/export-excel.vue
+++ b/src/views/excel/export-excel.vue
@@ -1,116 +1,90 @@
 
-  
-
-    
-
-    
-      
-        
-          {{ scope.$index }}
-        
-      
-      
-        
-          {{ scope.row.title }}
-        
-      
-      
-        
-          {{ scope.row.author }}
-        
-      
-      
-        
-          {{ scope.row.pageviews }}
-        
-      
-      
-        
-          
-          {{ scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}') }}
-        
-      
-    
+  
+    
+      
+    
+    
+      
+        
+          
+        
+      
+      
+        
+          
+        
+      
+    
   
 
 
 
 
-
diff --git a/src/views/table/complex-table.vue b/src/views/table/complex-table.vue
index 295c5fc4964..225635720f2 100644
--- a/src/views/table/complex-table.vue
+++ b/src/views/table/complex-table.vue
@@ -20,9 +20,11 @@
       
         Export
       
+