From c2a5a159564d17b982e3903455c20c7b9f65e9bb Mon Sep 17 00:00:00 2001
From: echofly <36875450+echofly@users.noreply.github.com>
Date: Wed, 18 Mar 2020 19:22:38 +0800
Subject: [PATCH 01/23] fix[profile/UserCard]: fixed wrong key name (#3056)

roles => role
---
 src/views/profile/components/UserCard.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/views/profile/components/UserCard.vue b/src/views/profile/components/UserCard.vue
index b9a383d6..2476f04a 100644
--- a/src/views/profile/components/UserCard.vue
+++ b/src/views/profile/components/UserCard.vue
@@ -65,7 +65,7 @@ export default {
           name: '',
           email: '',
           avatar: '',
-          roles: ''
+          role: ''
         }
       }
     }

From 776f10e19720039d39593064663b618fbdb0e837 Mon Sep 17 00:00:00 2001
From: Aisen60 <1147319086@qq.com>
Date: Fri, 20 Mar 2020 21:24:31 +0800
Subject: [PATCH 02/23] fix:fixed parseTime bug in ie and safari(#3066)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* /src/utils/index.js parseTime 添加IE浏览器(版本10以下,包括版本10)兼容。

* perf: update

Co-authored-by: aisen60 <aisen60@qq.com>
Co-authored-by: 花裤衩 <panfree23@gmail.com>
---
 src/utils/index.js                 | 12 ++++++++++--
 tests/unit/utils/parseTime.spec.js |  5 +++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/utils/index.js b/src/utils/index.js
index 2684e3c2..eb760d5e 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -17,9 +17,17 @@ export function parseTime(time, cFormat) {
   if (typeof time === 'object') {
     date = time
   } else {
-    if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
-      time = parseInt(time)
+    if ((typeof time === 'string')) {
+      if ((/^[0-9]+$/.test(time))) {
+        // support "1548221490638"
+        time = parseInt(time)
+      } else {
+        // support safari
+        // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
+        time = time.replace(new RegExp(/-/gm), '/')
+      }
     }
+
     if ((typeof time === 'number') && (time.toString().length === 10)) {
       time = time * 1000
     }
diff --git a/tests/unit/utils/parseTime.spec.js b/tests/unit/utils/parseTime.spec.js
index 77ecb9d5..bc61d1ac 100644
--- a/tests/unit/utils/parseTime.spec.js
+++ b/tests/unit/utils/parseTime.spec.js
@@ -4,6 +4,11 @@ describe('Utils:parseTime', () => {
   it('timestamp', () => {
     expect(parseTime(d)).toBe('2018-07-13 17:54:01')
   })
+
+  it('timestamp string', () => {
+    expect(parseTime((d + ''))).toBe('2018-07-13 17:54:01')
+  })
+
   it('ten digits timestamp', () => {
     expect(parseTime((d / 1000).toFixed(0))).toBe('2018-07-13 17:54:01')
   })

From 9e0435ac85da58b74692594be7770c0920cc707d Mon Sep 17 00:00:00 2001
From: echofly <36875450+echofly@users.noreply.github.com>
Date: Tue, 24 Mar 2020 10:17:18 +0800
Subject: [PATCH 03/23] perf: format component names as PascalCase (#3074)

format: component names should be PascalCase
---
 src/views/tab/index.vue | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/views/tab/index.vue b/src/views/tab/index.vue
index 862a160f..2a35fa58 100644
--- a/src/views/tab/index.vue
+++ b/src/views/tab/index.vue
@@ -13,11 +13,11 @@
 </template>
 
 <script>
-import tabPane from './components/TabPane'
+import TabPane from './components/TabPane'
 
 export default {
   name: 'Tab',
-  components: { tabPane },
+  components: { TabPane },
   data() {
     return {
       tabMapOptions: [

From 993a6c72e8c25d8c70ef5ec79e432a1e20c56328 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Fri, 27 Mar 2020 11:57:40 +0800
Subject: [PATCH 04/23] docs: add smallsticker

---
 README.zh-CN.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/README.zh-CN.md b/README.zh-CN.md
index bbb94a48..a5de8db3 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -221,6 +221,10 @@ Detailed changes for each release are documented in the [release notes](https://
 
 [Buy me a coffee](https://www.buymeacoffee.com/Pan)
 
+## 购买贴纸
+
+你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,我们将获得 2 元的捐赠。
+
 ## Browsers support
 
 Modern browsers and Internet Explorer 10+.

From f7a9d211094c11600d812f8bbd1f8b5f32fa66b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Fri, 27 Mar 2020 12:32:30 +0800
Subject: [PATCH 05/23] Update README.zh-CN.md

---
 README.zh-CN.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.zh-CN.md b/README.zh-CN.md
index a5de8db3..3df8b8ea 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -223,7 +223,7 @@ Detailed changes for each release are documented in the [release notes](https://
 
 ## 购买贴纸
 
-你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,我们将获得 2 元的捐赠。
+你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,本项目将获得 2 元的捐赠。
 
 ## Browsers support
 

From 6eccffeb2f9037e873591944e119d0246139ffc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Sat, 28 Mar 2020 11:16:41 +0800
Subject: [PATCH 06/23] fix: svg support old broswer (#3085)

---
 src/components/SvgIcon/index.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
index 9a3318e5..b07ded2a 100644
--- a/src/components/SvgIcon/index.vue
+++ b/src/components/SvgIcon/index.vue
@@ -1,7 +1,7 @@
 <template>
   <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
   <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
-    <use :href="iconName" />
+    <use :xlink:href="iconName" />
   </svg>
 </template>
 

From 9d8c7edf91d73bf543d8034a0871f179536774be Mon Sep 17 00:00:00 2001
From: Alex S <50220345+sabatale@users.noreply.github.com>
Date: Sat, 4 Apr 2020 03:53:26 -0400
Subject: [PATCH 07/23] fixed typo (#3091)

---
 src/views/dashboard/admin/components/RaddarChart.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/views/dashboard/admin/components/RaddarChart.vue b/src/views/dashboard/admin/components/RaddarChart.vue
index 6823af31..52c8f9fb 100644
--- a/src/views/dashboard/admin/components/RaddarChart.vue
+++ b/src/views/dashboard/admin/components/RaddarChart.vue
@@ -70,7 +70,7 @@ export default {
           indicator: [
             { name: 'Sales', max: 10000 },
             { name: 'Administration', max: 20000 },
-            { name: 'Information Techology', max: 20000 },
+            { name: 'Information Technology', max: 20000 },
             { name: 'Customer Support', max: 20000 },
             { name: 'Development', max: 20000 },
             { name: 'Marketing', max: 20000 }

From d4405464ceb53513bff7ec6caf07113623e95383 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Wed, 22 Apr 2020 10:31:46 +0800
Subject: [PATCH 08/23] fix: use vue-cli default source-map (#3097)

cheap-module-eval-source-map
---
 vue.config.js | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/vue.config.js b/vue.config.js
index 1ec990ea..ba5be418 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -80,12 +80,6 @@ module.exports = {
       })
       .end()
 
-    config
-      // https://webpack.js.org/configuration/devtool/#development
-      .when(process.env.NODE_ENV === 'development',
-        config => config.devtool('cheap-source-map')
-      )
-
     config
       .when(process.env.NODE_ENV !== 'development',
         config => {

From 1b8f726529b6d2b6384ee55db44b24daadc3dfa8 Mon Sep 17 00:00:00 2001
From: Aisen <caixusheng60@gmail.com>
Date: Tue, 28 Apr 2020 10:10:58 +0800
Subject: [PATCH 09/23] perf[Tinymce]: editor try to keep these URLs intact
 (#3141)

---
 src/components/Tinymce/index.vue | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue
index 0c6174c4..c0f486f0 100644
--- a/src/components/Tinymce/index.vue
+++ b/src/components/Tinymce/index.vue
@@ -147,7 +147,11 @@ export default {
           editor.on('FullscreenStateChanged', (e) => {
             _this.fullscreen = e.state
           })
-        }
+        },
+        //it will try to keep these URLs intact
+        //https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
+        //https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
+        convert_urls: false
         // 整合七牛上传
         // images_dataimg_filter(img) {
         //   setTimeout(() => {

From 9580c43a8ee2ce9c71c1db6011941c7338bebfe2 Mon Sep 17 00:00:00 2001
From: ntnyq <ntnyq13@gmail.com>
Date: Tue, 28 Apr 2020 18:26:34 +0800
Subject: [PATCH 10/23] fix[element-variables]: missing space in
 element-variables (#3144)

---
 src/styles/element-variables.scss | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/styles/element-variables.scss b/src/styles/element-variables.scss
index 30a0e6bc..5bdc4dad 100644
--- a/src/styles/element-variables.scss
+++ b/src/styles/element-variables.scss
@@ -6,7 +6,7 @@
 /* theme color */
 $--color-primary: #1890ff;
 $--color-success: #13ce66;
-$--color-warning: #FFBA00;
+$--color-warning: #ffba00;
 $--color-danger: #ff4949;
 // $--color-info: #1E1E1E;
 
@@ -17,10 +17,10 @@ $--button-font-weight: 400;
 $--border-color-light: #dfe4ed;
 $--border-color-lighter: #e6ebf5;
 
-$--table-border:1px solid#dfe6ec;
+$--table-border: 1px solid #dfe6ec;
 
 /* icon font path, required */
-$--font-path: '~element-ui/lib/theme-chalk/fonts';
+$--font-path: "~element-ui/lib/theme-chalk/fonts";
 
 @import "~element-ui/packages/theme-chalk/src/index";
 

From fc26c3106fefda7ff80afdc8bcad06f0b1ef2909 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Mon, 4 May 2020 21:30:58 +0800
Subject: [PATCH 11/23] fix: compatibility with vetur (#1700)

---
 src/components/Tinymce/index.vue       |  6 +++---
 src/layout/components/Sidebar/Link.vue | 25 ++++++++++++++++---------
 2 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue
index c0f486f0..b3538c25 100644
--- a/src/components/Tinymce/index.vue
+++ b/src/components/Tinymce/index.vue
@@ -148,9 +148,9 @@ export default {
             _this.fullscreen = e.state
           })
         },
-        //it will try to keep these URLs intact
-        //https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
-        //https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
+        // it will try to keep these URLs intact
+        // https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
+        // https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
         convert_urls: false
         // 整合七牛上传
         // images_dataimg_filter(img) {
diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue
index eb4dd107..530b3d5b 100644
--- a/src/layout/components/Sidebar/Link.vue
+++ b/src/layout/components/Sidebar/Link.vue
@@ -1,7 +1,5 @@
-
 <template>
-  <!-- eslint-disable vue/require-component-is -->
-  <component v-bind="linkProps(to)">
+  <component :is="type" v-bind="linkProps(to)">
     <slot />
   </component>
 </template>
@@ -16,19 +14,28 @@ export default {
       required: true
     }
   },
+  computed: {
+    isExternal() {
+      return isExternal(this.to)
+    },
+    type() {
+      if (this.isExternal) {
+        return 'a'
+      }
+      return 'router-link'
+    }
+  },
   methods: {
-    linkProps(url) {
-      if (isExternal(url)) {
+    linkProps(to) {
+      if (this.isExternal) {
         return {
-          is: 'a',
-          href: url,
+          href: to,
           target: '_blank',
           rel: 'noopener'
         }
       }
       return {
-        is: 'router-link',
-        to: url
+        to: to
       }
     }
   }

From a2784dd6ef2e11c9c1242b451fdc3241df1ec70e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ph=E1=BA=A1m=20Ng=E1=BB=8Dc=20H=C3=B2a?=
 <thaycacac@gmail.com>
Date: Mon, 4 May 2020 20:51:21 +0700
Subject: [PATCH 12/23] perf: change default element-ui language to english
 (#2741)

---
 src/main.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/main.js b/src/main.js
index 1049d762..b5fa135d 100644
--- a/src/main.js
+++ b/src/main.js
@@ -6,6 +6,7 @@ import 'normalize.css/normalize.css' // a modern alternative to CSS resets
 
 import Element from 'element-ui'
 import './styles/element-variables.scss'
+import enLang from 'element-ui/lib/locale/lang/en'// 如果使用中文语言包请默认支持,无需额外引入,请删除该依赖
 
 import '@/styles/index.scss' // global css
 
@@ -33,7 +34,8 @@ if (process.env.NODE_ENV === 'production') {
 }
 
 Vue.use(Element, {
-  size: Cookies.get('size') || 'medium' // set element-ui default size
+  size: Cookies.get('size') || 'medium', // set element-ui default size
+  locale: enLang // 如果使用中文,无需设置,请删除
 })
 
 // register global utility filters

From 6dacb783b2c58190e568603e6125883f071528d4 Mon Sep 17 00:00:00 2001
From: garethx <gareth.wilson@gmail.com>
Date: Mon, 4 May 2020 16:05:29 +0100
Subject: [PATCH 13/23] feat: add option to try project on CodeSandbox (#2976)

---
 README.es.md    | 2 ++
 README.ja.md    | 2 ++
 README.md       | 2 ++
 README.zh-CN.md | 2 ++
 4 files changed, 8 insertions(+)

diff --git a/README.es.md b/README.es.md
index 396556f5..3e054ce9 100644
--- a/README.es.md
+++ b/README.es.md
@@ -62,6 +62,8 @@ Vue Element Admin es una solución práctica basada en la nueva plataforma de de
 Necesita instalar [node](https://nodejs.org/) y [git](https://git-scm.com/) localmente. El proyecto es basado en [ES2015+](https://es6.ruanyifeng.com/), [vue](https://cn.vuejs.org/index.html), [vuex](https://vuex.vuejs.org/zh-cn/), [vue-router](https://router.vuejs.org/zh-cn/), [vue-cli](https://github.com/vuejs/vue-cli) , [axios](https://github.com/axios/axios) and [element-ui](https://github.com/ElemeFE/element), toda la solicitud de datos simulada se realiza a través de [Mock.js](https://github.com/nuysoft/Mock).
 Entendiendo y aprendiendo esto pudiera ayudarle con su proyecto.
 
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
+
  <p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
diff --git a/README.ja.md b/README.ja.md
index 0c49685b..a20a4d71 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -59,6 +59,8 @@
 
 **バグ修正や新規機能追加のissue と pull requestは大歓迎です。**
 
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
+
  <p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
diff --git a/README.md b/README.md
index a6a10447..458ae970 100644
--- a/README.md
+++ b/README.md
@@ -62,6 +62,8 @@ English | [简体中文](./README.zh-CN.md) | [日本語](./README.ja.md) | [Spa
 You need to install [node](https://nodejs.org/) and [git](https://git-scm.com/) locally. The project is based on [ES2015+](https://es6.ruanyifeng.com/), [vue](https://cn.vuejs.org/index.html), [vuex](https://vuex.vuejs.org/zh-cn/), [vue-router](https://router.vuejs.org/zh-cn/), [vue-cli](https://github.com/vuejs/vue-cli) , [axios](https://github.com/axios/axios) and [element-ui](https://github.com/ElemeFE/element), all request data is simulated using [Mock.js](https://github.com/nuysoft/Mock).
 Understanding and learning this knowledge in advance will greatly help the use of this project.
 
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
+
  <p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 3df8b8ea..e8424111 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -77,6 +77,8 @@
 
 **如有问题请先看上述使用文档和文章,若不能满足,欢迎 issue 和 pr**
 
+[![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
+
  <p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>

From e692876c289a227b92476b13b355987a18b59422 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Tue, 5 May 2020 11:06:51 +0800
Subject: [PATCH 14/23] docs: add tips

---
 src/permission.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/permission.js b/src/permission.js
index 750aeab6..ff5eaad2 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -24,7 +24,7 @@ router.beforeEach(async(to, from, next) => {
     if (to.path === '/login') {
       // if is logged in, redirect to the home page
       next({ path: '/' })
-      NProgress.done()
+      NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
     } else {
       // determine whether the user has obtained his permission roles through getInfo
       const hasRoles = store.getters.roles && store.getters.roles.length > 0

From 29b4ff636b36d8a3b4fc2707251e671e995ba9b4 Mon Sep 17 00:00:00 2001
From: AiMe1991 <sxd.08@163.com>
Date: Tue, 5 May 2020 12:55:22 +0800
Subject: [PATCH 15/23] perf: when tags-view scroll close the right-menu

---
 src/layout/components/TagsView/ScrollPane.vue | 9 +++++++++
 src/layout/components/TagsView/index.vue      | 5 ++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
index 0ec76e72..34a7e55f 100644
--- a/src/layout/components/TagsView/ScrollPane.vue
+++ b/src/layout/components/TagsView/ScrollPane.vue
@@ -19,12 +19,21 @@ export default {
       return this.$refs.scrollContainer.$refs.wrap
     }
   },
+  mounted() {
+    this.scrollWrapper.addEventListener('scroll', this.emitScroll, true)
+  },
+  beforeDestroy() {
+    this.scrollWrapper.removeEventListener('scroll', this.emitScroll)
+  },
   methods: {
     handleScroll(e) {
       const eventDelta = e.wheelDelta || -e.deltaY * 40
       const $scrollWrapper = this.scrollWrapper
       $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4
     },
+    emitScroll() {
+      this.$emit('scroll')
+    },
     moveToTarget(currentTag) {
       const $container = this.$refs.scrollContainer.$el
       const $containerWidth = $container.offsetWidth
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
index 642b4f42..d2a56e70 100644
--- a/src/layout/components/TagsView/index.vue
+++ b/src/layout/components/TagsView/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div id="tags-view-container" class="tags-view-container">
-    <scroll-pane ref="scrollPane" class="tags-view-wrapper">
+    <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
       <router-link
         v-for="tag in visitedViews"
         ref="tag"
@@ -189,6 +189,9 @@ export default {
     },
     closeMenu() {
       this.visible = false
+    },
+    handleScroll() {
+      this.closeMenu()
     }
   }
 }

From 5890499077589db1c04c7a72c4dacaa97a58f87c Mon Sep 17 00:00:00 2001
From: cooper <1322849632@qq.com>
Date: Tue, 5 May 2020 13:21:51 +0800
Subject: [PATCH 16/23] fix[parseTime]: fixed when pass null (#3038)

---
 src/utils/index.js                 | 2 +-
 tests/unit/utils/parseTime.spec.js | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/utils/index.js b/src/utils/index.js
index eb760d5e..96ee6e7f 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -9,7 +9,7 @@
  * @returns {string | null}
  */
 export function parseTime(time, cFormat) {
-  if (arguments.length === 0) {
+  if (arguments.length === 0 || !time) {
     return null
   }
   const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
diff --git a/tests/unit/utils/parseTime.spec.js b/tests/unit/utils/parseTime.spec.js
index bc61d1ac..3e138d00 100644
--- a/tests/unit/utils/parseTime.spec.js
+++ b/tests/unit/utils/parseTime.spec.js
@@ -1,4 +1,5 @@
 import { parseTime } from '@/utils/index.js'
+
 describe('Utils:parseTime', () => {
   const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01"
   it('timestamp', () => {
@@ -29,4 +30,8 @@ describe('Utils:parseTime', () => {
   it('empty argument', () => {
     expect(parseTime()).toBeNull()
   })
+
+  it('null', () => {
+    expect(parseTime(null)).toBeNull()
+  })
 })

From 6f80263b4251fa72e04ac3d6a11f147b2d45aeea Mon Sep 17 00:00:00 2001
From: Nickbing Lao <giscafer@outlook.com>
Date: Fri, 8 May 2020 11:43:39 +0800
Subject: [PATCH 17/23] fix[css]: min btn width (#3164)

---
 src/styles/element-ui.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
index 955d3cab..49474de3 100644
--- a/src/styles/element-ui.scss
+++ b/src/styles/element-ui.scss
@@ -31,7 +31,7 @@
 .fixed-width {
   .el-button--mini {
     padding: 7px 10px;
-    width: 60px;
+    min-width: 60px;
   }
 }
 

From 0ae5079b2a330ceb4b14c16962256eed21335456 Mon Sep 17 00:00:00 2001
From: Edwin Betancourt <EdwinBetanc0urt@hotmail.com>
Date: Fri, 5 Jun 2020 01:32:15 -0400
Subject: [PATCH 18/23] docs: Improve read me files and changes in Spanish.
 (#3234)

---
 README.es.md    | 27 +++++++++++++++------------
 README.ja.md    |  9 ++++++---
 README.md       |  9 ++++++---
 README.zh-CN.md |  9 ++++++---
 4 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/README.es.md b/README.es.md
index 3e054ce9..472adb60 100644
--- a/README.es.md
+++ b/README.es.md
@@ -51,11 +51,11 @@ Vue Element Admin es una solución práctica basada en la nueva plataforma de de
 - Plantilla de Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Créditos: [@Armour](https://github.com/Armour))
 - [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
 
-**Después de la versión `v4.1.0+`, la rama por defecto master no tendrá soporte para i18n. Por favor use [i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), los cambios serán incluidos en la rama master**
+**Después de la versión `v4.1.0+`, la rama por defecto master no tendrá soporte para i18n. Por favor utilice la rama [i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), los cambios serán incluidos en la rama master**
 
 **la versión actual es `v4.0+` construida con `vue-cli`. Si encuentra algún problema, por favor coloque un [issue](https://github.com/PanJiaChen/vue-element-admin/issues/new). Si desea usar la versión anterior, puede cambiar de rama a [tag/3.11.0](https://github.com/PanJiaChen/vue-element-admin/tree/tag/3.11.0), no relacionado con `vue-cli`**
 
-**Este proyecto no está soportado para versiones muy viejas de navegadores (e.g. IE).**
+**Este proyecto no está soportado para versiones antigüas de navegadores (ej. IE).**
 
 ## Preparación
 
@@ -64,13 +64,13 @@ Entendiendo y aprendiendo esto pudiera ayudarle con su proyecto.
 
 [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
 
- <p align="center">
+<p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
 
 ## Patrocinantes
 
-Se un patrocinante y pon tu logo en nuestro README on GitHub con un enlace directo a tu sitio web. [[Se un Patrocinante]](https://www.patreon.com/panjiachen)
+Sea un patrocinante y coloque su logo en nuestro LEEME en GitHub con un enlace directo a su sitio web. [[Se un Patrocinante]](https://www.patreon.com/panjiachen)
 
 <a href="https://flatlogic.com/admin-dashboards?from=vue-element-admin"><img width="150px" src="https://wpimg.wallstcn.com/9c0b719b-5551-4c1e-b776-63994632d94a.png" /></a><p>Plantilla de Dashboard de administración hecha con Vue, React y Angular.</p>
 
@@ -79,25 +79,28 @@ Se un patrocinante y pon tu logo en nuestro README on GitHub con un enlace direc
 ```
 - Iniciar / Cerrar Sesión
 
-- Permisos de Authentication
+- Permisos de Autenticación
   - Página de Permisos
   - Directivas de permisos
   - Página de configuración de permisos
   - Autenticación por dos pasos
 
 - Construcción Multi-entorno
-  - dev sit stage  producción
+  - Desarrollo (dev)
+  - sit
+  - Escenario de pruebas (stage),
+  - Producción (prod)
 
 - Características Globales
   - I18n
   - Temas dinámicos
-  - Dynamic sidebar (soporte a rutas multi-nivel)
+  - Menu lateral dinámico (soporte a rutas multi-nivel)
   - Barra de rutas dinámica
-  - Tags-view (Tab page Support right-click operation)
+  - Tags-view (Pestañas de página, Soporta operación de clic derecho)
   - Svg Sprite
   - Datos de simulación con Mock
   - Pantalla completa
-  - Responsive Sidebar
+  - Menu lateral responsivo
 
 - Editor
   - Editor de Texto Enriquecido
@@ -108,7 +111,7 @@ Se un patrocinante y pon tu logo en nuestro README on GitHub con un enlace direc
   - Exportación a Excel
   - Carga de Excel
   - Visualización de Excel
-  - Exportación como zip
+  - Exportación como ZIP
 
 - Tabla
   - Tabla Dinámica
@@ -137,7 +140,7 @@ Se un patrocinante y pon tu logo en nuestro README on GitHub con un enlace direc
 - Página de Guías
 - ECharts (Gráficos)
 - Portapapeles
-- Convertidor de Markdown a html
+- Convertidor de Markdown a HTML
 ```
 
 ## Iniciando
@@ -210,7 +213,7 @@ Navegadores modernos e Internet Explorer 10+.
 
 | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Safari |
 | --------- | --------- | --------- | --------- |
-| IE10, IE11, Edge| últimas 2 versiones| últimas 2 versiones| últimas 2 versiones
+| IE10, IE11, Edge | últimas 2 versiones | últimas 2 versiones | últimas 2 versiones |
 
 ## Licencia
 
diff --git a/README.ja.md b/README.ja.md
index a20a4d71..28ed674c 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -61,7 +61,7 @@
 
 [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
 
- <p align="center">
+<p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
 
@@ -83,7 +83,10 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
   - 外部IDでログイン
 
 - 複数環境デプロイ
-  - dev sit stage prod
+  - dev
+  - sit
+  - stage
+  - prod
 
 - 共通機能
   - 多言語切替
@@ -206,7 +209,7 @@ Modern browsers and Internet Explorer 10+.
 
 | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Safari |
 | --------- | --------- | --------- | --------- |
-| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
+| IE10, IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
 
 ## License
 
diff --git a/README.md b/README.md
index 458ae970..5067b8d3 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ Understanding and learning this knowledge in advance will greatly help the use o
 
 [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
 
- <p align="center">
+<p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
 
@@ -86,7 +86,10 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
   - Two-step login
 
 - Multi-environment build
-  - dev sit stage prod
+  - Develop (dev)
+  - sit
+  - Stage Test (stage)
+  - Production (prod)
 
 - Global Features
   - I18n
@@ -210,7 +213,7 @@ Modern browsers and Internet Explorer 10+.
 
 | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Safari |
 | --------- | --------- | --------- | --------- |
-| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
+| IE10, IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
 
 ## License
 
diff --git a/README.zh-CN.md b/README.zh-CN.md
index e8424111..d429b91e 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -79,7 +79,7 @@
 
 [![Edit on CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/PanJiaChen/vue-element-admin/tree/CodeSandbox)
 
- <p align="center">
+<p align="center">
   <img width="900" src="https://wpimg.wallstcn.com/a5894c1b-f6af-456e-82df-1151da0839bf.png">
 </p>
 
@@ -101,7 +101,10 @@ Become a sponsor and get your logo on our README on GitHub with a link to your s
   - 二步登录
 
 - 多环境发布
-  - dev sit stage prod
+  - dev
+  - sit
+  - stage
+  - prod
 
 - 全局功能
   - 国际化多语言
@@ -233,7 +236,7 @@ Modern browsers and Internet Explorer 10+.
 
 | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>IE / Edge | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Firefox | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Chrome | [<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](https://godban.github.io/browsers-support-badges/)</br>Safari |
 | --------- | --------- | --------- | --------- |
-| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions
+| IE10, IE11, Edge | last 2 versions | last 2 versions | last 2 versions |
 
 ## License
 

From f1feb2a86d35b7e78ee6db18bd99c584e0a4cad3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Mon, 8 Jun 2020 19:38:55 +0800
Subject: [PATCH 19/23] [release] 4.2.2

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 448d1ec3..f191198b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "vue-element-admin",
-  "version": "4.2.1",
+  "version": "4.2.2",
   "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
   "author": "Pan <panfree23@gmail.com>",
   "license": "MIT",

From 534cd5bc269261408d74c6bb743cec8b20dfd8cd Mon Sep 17 00:00:00 2001
From: Cat73 <Cat7373@users.noreply.github.com>
Date: Mon, 8 Jun 2020 20:41:46 +0800
Subject: [PATCH 20/23] chore: change node-sass to dart-sass (#3040)

---
 package.json                                      | 2 +-
 src/components/HeaderSearch/index.vue             | 2 +-
 src/components/Tinymce/components/EditorImage.vue | 2 +-
 src/layout/components/TagsView/ScrollPane.vue     | 2 +-
 src/views/dashboard/admin/components/BoxCard.vue  | 2 +-
 src/views/example/components/ArticleDetail.vue    | 2 +-
 src/views/permission/directive.vue                | 6 +++---
 7 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/package.json b/package.json
index f191198b..ec2eb417 100644
--- a/package.json
+++ b/package.json
@@ -92,9 +92,9 @@
     "husky": "1.3.1",
     "lint-staged": "8.1.5",
     "mockjs": "1.0.1-beta3",
-    "node-sass": "^4.9.0",
     "plop": "2.3.0",
     "runjs": "^4.3.2",
+    "sass": "^1.26.2",
     "sass-loader": "^7.1.0",
     "script-ext-html-webpack-plugin": "2.1.3",
     "serve-static": "^1.13.2",
diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue
index af047168..6026ebb4 100644
--- a/src/components/HeaderSearch/index.vue
+++ b/src/components/HeaderSearch/index.vue
@@ -159,7 +159,7 @@ export default {
     display: inline-block;
     vertical-align: middle;
 
-    /deep/ .el-input__inner {
+    ::v-deep .el-input__inner {
       border-radius: 0;
       border: 0;
       padding-left: 0;
diff --git a/src/components/Tinymce/components/EditorImage.vue b/src/components/Tinymce/components/EditorImage.vue
index d4a98e84..07d48e6c 100644
--- a/src/components/Tinymce/components/EditorImage.vue
+++ b/src/components/Tinymce/components/EditorImage.vue
@@ -104,7 +104,7 @@ export default {
 <style lang="scss" scoped>
 .editor-slide-upload {
   margin-bottom: 20px;
-  /deep/ .el-upload--picture-card {
+  ::v-deep .el-upload--picture-card {
     width: 100%;
   }
 }
diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
index 34a7e55f..bb753a12 100644
--- a/src/layout/components/TagsView/ScrollPane.vue
+++ b/src/layout/components/TagsView/ScrollPane.vue
@@ -82,7 +82,7 @@ export default {
   position: relative;
   overflow: hidden;
   width: 100%;
-  /deep/ {
+  ::v-deep {
     .el-scrollbar__bar {
       bottom: 0px;
     }
diff --git a/src/views/dashboard/admin/components/BoxCard.vue b/src/views/dashboard/admin/components/BoxCard.vue
index dff8462a..4bd0532d 100644
--- a/src/views/dashboard/admin/components/BoxCard.vue
+++ b/src/views/dashboard/admin/components/BoxCard.vue
@@ -101,7 +101,7 @@ export default {
     background-color: #fff;
     margin: auto;
     box-shadow: none!important;
-    /deep/ .pan-info {
+    ::v-deep .pan-info {
       box-shadow: none!important;
     }
   }
diff --git a/src/views/example/components/ArticleDetail.vue b/src/views/example/components/ArticleDetail.vue
index 8aa97339..157497b2 100644
--- a/src/views/example/components/ArticleDetail.vue
+++ b/src/views/example/components/ArticleDetail.vue
@@ -277,7 +277,7 @@ export default {
   }
 }
 
-.article-textarea /deep/ {
+.article-textarea ::v-deep {
   textarea {
     padding-right: 40px;
     resize: none;
diff --git a/src/views/permission/directive.vue b/src/views/permission/directive.vue
index 85478895..4a497928 100644
--- a/src/views/permission/directive.vue
+++ b/src/views/permission/directive.vue
@@ -91,7 +91,7 @@ export default {
 
 <style lang="scss" scoped>
 .app-container {
-  /deep/ .permission-alert {
+  ::v-deep .permission-alert {
     width: 320px;
     margin-top: 15px;
     background-color: #f0f9eb;
@@ -100,10 +100,10 @@ export default {
     border-radius: 4px;
     display: inline-block;
   }
-  /deep/ .permission-sourceCode {
+  ::v-deep .permission-sourceCode {
     margin-left: 15px;
   }
-  /deep/ .permission-tag {
+  ::v-deep .permission-tag {
     background-color: #ecf5ff;
   }
 }

From c5abe7532ce24ac2b3c26a92ab76c95e67b02477 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Mon, 8 Jun 2020 20:39:45 +0800
Subject: [PATCH 21/23] perf: change >>> ::v-deep

---
 src/components/DragSelect/index.vue | 20 ++++++++++++--------
 src/components/JsonEditor/index.vue | 29 +++++++++++++++++------------
 src/components/Tinymce/index.vue    | 15 ++++++++++++---
 3 files changed, 41 insertions(+), 23 deletions(-)

diff --git a/src/components/DragSelect/index.vue b/src/components/DragSelect/index.vue
index 28256a8b..47f42474 100644
--- a/src/components/DragSelect/index.vue
+++ b/src/components/DragSelect/index.vue
@@ -48,14 +48,18 @@ export default {
 }
 </script>
 
-<style scoped>
-.drag-select >>> .sortable-ghost {
-  opacity: .8;
-  color: #fff!important;
-  background: #42b983!important;
-}
+<style lang="scss" scoped>
+.drag-select {
+  ::v-deep {
+    .sortable-ghost {
+      opacity: .8;
+      color: #fff !important;
+      background: #42b983 !important;
+    }
 
-.drag-select >>> .el-tag {
-  cursor: pointer;
+    .el-tag {
+      cursor: pointer;
+    }
+  }
 }
 </style>
diff --git a/src/components/JsonEditor/index.vue b/src/components/JsonEditor/index.vue
index 07b282e4..c05b090c 100644
--- a/src/components/JsonEditor/index.vue
+++ b/src/components/JsonEditor/index.vue
@@ -54,19 +54,24 @@ export default {
 }
 </script>
 
-<style scoped>
-.json-editor{
+<style lang="scss" scoped>
+.json-editor {
   height: 100%;
   position: relative;
-}
-.json-editor >>> .CodeMirror {
-  height: auto;
-  min-height: 300px;
-}
-.json-editor >>> .CodeMirror-scroll{
-  min-height: 300px;
-}
-.json-editor >>> .cm-s-rubyblue span.cm-string {
-  color: #F08047;
+
+  ::v-deep {
+    .CodeMirror {
+      height: auto;
+      min-height: 300px;
+    }
+
+    .CodeMirror-scroll {
+      min-height: 300px;
+    }
+
+    .cm-s-rubyblue span.cm-string {
+      color: #F08047;
+    }
+  }
 }
 </style>
diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue
index b3538c25..0cd4e9cd 100644
--- a/src/components/Tinymce/index.vue
+++ b/src/components/Tinymce/index.vue
@@ -213,28 +213,37 @@ export default {
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 .tinymce-container {
   position: relative;
   line-height: normal;
 }
-.tinymce-container>>>.mce-fullscreen {
-  z-index: 10000;
+
+.tinymce-container {
+  ::v-deep {
+    .mce-fullscreen {
+      z-index: 10000;
+    }
+  }
 }
+
 .tinymce-textarea {
   visibility: hidden;
   z-index: -1;
 }
+
 .editor-custom-btn-container {
   position: absolute;
   right: 4px;
   top: 4px;
   /*z-index: 2005;*/
 }
+
 .fullscreen .editor-custom-btn-container {
   z-index: 10000;
   position: fixed;
 }
+
 .editor-upload-btn {
   display: inline-block;
 }

From f14805d0cdd4e2ebe1ddbe74d0710f03fd79e437 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Mon, 8 Jun 2020 21:35:01 +0800
Subject: [PATCH 22/23] [release] 4.3.0

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index ec2eb417..22ebe91e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "vue-element-admin",
-  "version": "4.2.2",
+  "version": "4.3.0",
   "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
   "author": "Pan <panfree23@gmail.com>",
   "license": "MIT",

From 2ef49493c33e97092de8fc4bf46bad68a375713f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= <panfree23@gmail.com>
Date: Tue, 9 Jun 2020 10:51:27 +0800
Subject: [PATCH 23/23] docs: fix wrong link

---
 src/views/components-demo/tinymce.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/views/components-demo/tinymce.vue b/src/views/components-demo/tinymce.vue
index c70179fa..f03389a0 100644
--- a/src/views/components-demo/tinymce.vue
+++ b/src/views/components-demo/tinymce.vue
@@ -2,7 +2,7 @@
   <div class="components-container">
     <aside>
       Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.
-      <a target="_blank" class="link-type" href="https://panjiachen.github.io/vue-element-admin-site/component/rich-editor.html">Documentation</a>
+      <a target="_blank" class="link-type" href="https://panjiachen.github.io/vue-element-admin-site/feature/component/rich-editor.html">Documentation</a>
     </aside>
     <div>
       <tinymce v-model="content" :height="300" />