From 2584dcce1684a17620dd69468d9719bcc70778a4 Mon Sep 17 00:00:00 2001 From: Pan Date: Mon, 27 May 2019 10:37:00 +0800 Subject: [PATCH 01/26] update github ISSUE_TEMPLATE --- .github/ISSUE_TEMPLATE/question.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 96be4532..76083546 100755 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -12,3 +12,24 @@ about: Asking questions about use Before asking a question, please make sure that you have tried your best to solve this problem. If it's a code-related issue, please don't just take screenshots. Please provide an online demo to save each other's time. --> + +#### Steps to reproduce(问题复现步骤) + + +#### Screenshot or Gif(截图或动态图) + + +#### Link to minimal reproduction(最小可在线还原demo) + + + +#### Other relevant information(格外信息) +- Your OS: +- Node.js version: +- vue-element-admin version: From 5b943d71e974a81d1b5fa7c770db65ba8ebb4b1c Mon Sep 17 00:00:00 2001 From: bpzhang Date: Mon, 27 May 2019 15:04:04 +0800 Subject: [PATCH 02/26] chore: add autoprefixer to devDependencies --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index cd1369b8..5ea4a26f 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "@vue/cli-plugin-unit-jest": "3.5.3", "@vue/cli-service": "3.5.3", "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "^9.5.1", "babel-core": "7.0.0-bridge.0", "babel-eslint": "10.0.1", "babel-jest": "23.6.0", From e28701cde4646f7224c3a8dd1a7999546bf5d20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= Date: Mon, 27 May 2019 15:04:34 +0800 Subject: [PATCH 03/26] perf[Tinymce]: add language option (#2159) --- src/components/Tinymce/index.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue index a46b37d6..0c6174c4 100644 --- a/src/components/Tinymce/index.vue +++ b/src/components/Tinymce/index.vue @@ -64,7 +64,9 @@ export default { fullscreen: false, languageTypeList: { 'en': 'en', - 'zh': 'zh_CN' + 'zh': 'zh_CN', + 'es': 'es_MX', + 'ja': 'ja' } } }, @@ -114,6 +116,7 @@ export default { const _this = this window.tinymce.init({ selector: `#${this.tinymceId}`, + language: this.languageTypeList['en'], height: this.height, body_class: 'panel-body ', object_resizing: false, From f891202706e389e539fd15b24a9480bbb2794907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= Date: Mon, 27 May 2019 15:35:07 +0800 Subject: [PATCH 04/26] fix[Tinymce]: fixed bug when init multiple tinymces at the same time (#2152) --- src/components/Tinymce/dynamicLoadScript.js | 34 ++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/components/Tinymce/dynamicLoadScript.js b/src/components/Tinymce/dynamicLoadScript.js index 46a93290..185f58dc 100644 --- a/src/components/Tinymce/dynamicLoadScript.js +++ b/src/components/Tinymce/dynamicLoadScript.js @@ -1,3 +1,11 @@ +let callbacks = [] + +function loadedTinymce() { + // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144 + // check is successfully downloaded script + return window.tinymce +} + const dynamicLoadScript = (src, callback) => { const existingScript = document.getElementById(src) const cb = callback || function() {} @@ -7,19 +15,28 @@ const dynamicLoadScript = (src, callback) => { script.src = src // src url for the third-party library being loaded. script.id = src document.body.appendChild(script) - + callbacks.push(cb) const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd - onEnd(script, cb) + onEnd(script) } - if (existingScript && cb) cb(null, existingScript) + if (existingScript && cb) { + if (loadedTinymce()) { + cb(null, existingScript) + } else { + callbacks.push(cb) + } + } - function stdOnEnd(script, cb) { + function stdOnEnd(script) { script.onload = function() { // this.onload = null here is necessary // because even IE9 works not like others this.onerror = this.onload = null - cb(null, script) + for (const cb of callbacks) { + cb(null, script) + } + callbacks = null } script.onerror = function() { this.onerror = this.onload = null @@ -27,11 +44,14 @@ const dynamicLoadScript = (src, callback) => { } } - function ieOnEnd(script, cb) { + function ieOnEnd(script) { script.onreadystatechange = function() { if (this.readyState !== 'complete' && this.readyState !== 'loaded') return this.onreadystatechange = null - cb(null, script) // there is no way to catch loading errors in IE8 + for (const cb of callbacks) { + cb(null, script) // there is no way to catch loading errors in IE8 + } + callbacks = null } } } From e8837d161ee2a4793bdf5add1503d472857f6f42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= Date: Mon, 27 May 2019 15:48:45 +0800 Subject: [PATCH 05/26] feat: add tab url demo (#2114) --- src/layout/components/AppMain.vue | 2 +- src/views/tab/index.vue | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue index 9e12c662..a8976380 100644 --- a/src/layout/components/AppMain.vue +++ b/src/layout/components/AppMain.vue @@ -16,7 +16,7 @@ export default { return this.$store.state.tagsView.cachedViews }, key() { - return this.$route.fullPath + return this.$route.path } } } diff --git a/src/views/tab/index.vue b/src/views/tab/index.vue index e5746580..6438a47a 100644 --- a/src/views/tab/index.vue +++ b/src/views/tab/index.vue @@ -30,6 +30,18 @@ export default { createdTimes: 0 } }, + watch: { + activeName(val) { + this.$router.push(`${this.$route.path}?tab=${val}`) + } + }, + created() { + // init the default selected tab + const tab = this.$route.query.tab + if (tab) { + this.activeName = tab + } + }, methods: { showCreatedTimes() { this.createdTimes = this.createdTimes + 1 From ac8c12c82d1ceb15d78454fbdc0fc98458393304 Mon Sep 17 00:00:00 2001 From: Serge Date: Mon, 27 May 2019 16:24:47 +0800 Subject: [PATCH 06/26] perf[request.js]: refine error reject (#2160) --- src/utils/request.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/request.js b/src/utils/request.js index bc346a8c..71d5ea4b 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -48,7 +48,7 @@ service.interceptors.response.use( // if the custom code is not 20000, it is judged as an error. if (res.code !== 20000) { Message({ - message: res.message || 'error', + message: res.message || 'Error', type: 'error', duration: 5 * 1000 }) @@ -66,7 +66,7 @@ service.interceptors.response.use( }) }) } - return Promise.reject(res.message || 'error') + return Promise.reject(new Error(res.message || 'Error')) } else { return res } From 054ed40e076dc6fa6e707e7020698643b407b9f2 Mon Sep 17 00:00:00 2001 From: Pan Date: Mon, 27 May 2019 16:25:37 +0800 Subject: [PATCH 07/26] [release] 4.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5ea4a26f..8fbbf88e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-element-admin", - "version": "4.2.0", + "version": "4.2.1", "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 ", "license": "MIT", From 9538d1b766ab897f0fb3cc38d05be6884be7e6e2 Mon Sep 17 00:00:00 2001 From: Pan Date: Tue, 28 May 2019 11:09:00 +0800 Subject: [PATCH 08/26] perf: default not set withCredentials --- src/utils/request.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/request.js b/src/utils/request.js index 71d5ea4b..2fb95ac0 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -6,7 +6,7 @@ import { getToken } from '@/utils/auth' // create an axios instance const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url - withCredentials: true, // send cookies when cross-domain requests + // withCredentials: true, // send cookies when cross-domain requests timeout: 5000 // request timeout }) From a0793dbeab6eac29863ad9aef7de77710600bb37 Mon Sep 17 00:00:00 2001 From: MaYuanhai <414199639@qq.com> Date: Tue, 28 May 2019 15:10:37 +0800 Subject: [PATCH 09/26] fix[ImageCropper]: removeEventListener when destroyed(#2169) --- src/components/ImageCropper/index.vue | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/ImageCropper/index.vue b/src/components/ImageCropper/index.vue index c30c5b18..c2688e99 100644 --- a/src/components/ImageCropper/index.vue +++ b/src/components/ImageCropper/index.vue @@ -839,16 +839,20 @@ export default { that.$emit('crop-upload-fail', err, field, ki) } }) + }, + closeHandler(e) { + if (this.value && (e.key == 'Escape' || e.keyCode == 27)) { + this.off() + } } }, created() { // 绑定按键esc隐藏此插件事件 - document.addEventListener('keyup', (e) => { - if (this.value && (e.key == 'Escape' || e.keyCode == 27)) { - this.off() - } - }) - } + document.addEventListener('keyup', this.closeHandler) + }, + destroyed() { + document.removeEventListener('keyup', this.closeHandler) + }, } From 8e9f2e14799a61a9baf0e346eb8038e57e3e3fcd Mon Sep 17 00:00:00 2001 From: Jessynt Date: Tue, 28 May 2019 16:18:25 +0800 Subject: [PATCH 10/26] docs: fix typo (#2170) --- src/views/example/components/ArticleDetail.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/example/components/ArticleDetail.vue b/src/views/example/components/ArticleDetail.vue index ae090738..ef0f1df9 100644 --- a/src/views/example/components/ArticleDetail.vue +++ b/src/views/example/components/ArticleDetail.vue @@ -7,7 +7,7 @@ - Publush + Publish Draft @@ -36,7 +36,7 @@ - From 4bd8f7f670219db02e4c29781788f602c27ffa1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E6=95=8F?= <392716797@qq.com> Date: Sun, 2 Jun 2019 16:08:23 +0800 Subject: [PATCH 11/26] fix: input attribute autocomplete error (#2191) --- src/components/MDinput/index.vue | 12 ++++++------ src/views/login/index.vue | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/MDinput/index.vue b/src/components/MDinput/index.vue index 013462fa..c59ea34a 100644 --- a/src/components/MDinput/index.vue +++ b/src/components/MDinput/index.vue @@ -9,7 +9,7 @@ :placeholder="fillPlaceHolder" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :required="required" type="email" class="material-input" @@ -24,7 +24,7 @@ :placeholder="fillPlaceHolder" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :required="required" type="url" class="material-input" @@ -40,7 +40,7 @@ :step="step" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :max="max" :min="min" :minlength="minlength" @@ -59,7 +59,7 @@ :placeholder="fillPlaceHolder" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :max="max" :min="min" :required="required" @@ -76,7 +76,7 @@ :placeholder="fillPlaceHolder" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :required="required" type="tel" class="material-input" @@ -91,7 +91,7 @@ :placeholder="fillPlaceHolder" :readonly="readonly" :disabled="disabled" - :autoComplete="autoComplete" + :autocomplete="autoComplete" :minlength="minlength" :maxlength="maxlength" :required="required" diff --git a/src/views/login/index.vue b/src/views/login/index.vue index d991457c..5fb3f6e3 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,6 +1,6 @@ @@ -52,7 +53,8 @@ export default { .pan-thumb { width: 100%; height: 100%; - background-size: 100%; + background-position: center center; + background-size: cover; border-radius: 50%; overflow: hidden; position: absolute; @@ -60,7 +62,7 @@ export default { transition: all 0.3s ease-in-out; } -.pan-thumb:after { +/* .pan-thumb:after { content: ''; width: 8px; height: 8px; @@ -71,7 +73,7 @@ export default { margin: -4px 0 0 -4px; background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%); box-shadow: 0 0 1px rgba(255, 255, 255, 0.9); -} +} */ .pan-info { position: absolute; From 35adfcef3fd251a389ea0884b12eb3545e1d78c5 Mon Sep 17 00:00:00 2001 From: TinaryTree Date: Thu, 27 Jun 2019 23:15:48 +0800 Subject: [PATCH 13/26] docs: fix typo README.zh-CN.md (#2283) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改错别字 --- 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 31bbe351..82b8908c 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -164,7 +164,7 @@ cd vue-element-admin # 安装依赖 npm install -# 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 +# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 npm install --registry=https://registry.npm.taobao.org # 启动服务 From ef167ff064373ceff7002ae0f586b8d2730ea4b9 Mon Sep 17 00:00:00 2001 From: MaYuanhai <414199639@qq.com> Date: Sun, 30 Jun 2019 11:09:19 +0800 Subject: [PATCH 14/26] perf[clipboard.js]: remove redundant code (#2307) --- src/utils/clipboard.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/utils/clipboard.js b/src/utils/clipboard.js index e916a44d..cf5b07a1 100644 --- a/src/utils/clipboard.js +++ b/src/utils/clipboard.js @@ -22,14 +22,10 @@ export default function handleClipboard(text, event) { }) clipboard.on('success', () => { clipboardSuccess() - clipboard.off('error') - clipboard.off('success') clipboard.destroy() }) clipboard.on('error', () => { clipboardError() - clipboard.off('error') - clipboard.off('success') clipboard.destroy() }) clipboard.onClick(event) From 018c20a3f6f695be9de28aa651d2c1cc64c13cee Mon Sep 17 00:00:00 2001 From: Pan Date: Sun, 30 Jun 2019 16:07:54 +0800 Subject: [PATCH 15/26] bump: update axios for security vulnerability --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8fbbf88e..a57d8c89 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "url": "https://github.com/PanJiaChen/vue-element-admin/issues" }, "dependencies": { - "axios": "0.18.0", + "axios": "0.18.1", "clipboard": "2.0.4", "codemirror": "5.45.0", "driver.js": "0.9.5", From 1909018dbdd57588a480b9d69753cbbd6a78093d Mon Sep 17 00:00:00 2001 From: itsccn Date: Thu, 4 Jul 2019 14:38:31 +0800 Subject: [PATCH 16/26] bump: update @vue/cli-plugin-eslint version (#2327) FIx cannot find module '.../node_modules/eslint/lib/api.js/package.json' bug,see https://github.com/vuejs/vue-cli/issues/4231. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a57d8c89..9942fbac 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@babel/core": "7.0.0", "@babel/register": "7.0.0", "@vue/cli-plugin-babel": "3.5.3", - "@vue/cli-plugin-eslint": "3.5.1", + "@vue/cli-plugin-eslint": "^3.9.1", "@vue/cli-plugin-unit-jest": "3.5.3", "@vue/cli-service": "3.5.3", "@vue/test-utils": "1.0.0-beta.29", From c8039a5ce3d065eb7e1972d76cf9c57d487124bb Mon Sep 17 00:00:00 2001 From: Pan Date: Thu, 4 Jul 2019 16:41:44 +0800 Subject: [PATCH 17/26] chore: allow dynamic set port --- vue.config.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vue.config.js b/vue.config.js index 4a5cd438..7b8f3a5d 100644 --- a/vue.config.js +++ b/vue.config.js @@ -7,10 +7,13 @@ function resolve(dir) { } const name = defaultSettings.title || 'vue Element Admin' // page title + // If your port is set to 80, // use administrator privileges to execute the command line. // For example, Mac: sudo npm run -const port = 9527 // dev port +// You can change the port by the following method: +// port = 9527 npm run dev OR npm run dev --port = 9527 +const port = process.env.port || process.env.npm_config_port || 9527 // dev port // All configuration item explanations can be find in https://cli.vuejs.org/config/ module.exports = { From 46cc375d0d91261a7962715dd48e66e10e8c5872 Mon Sep 17 00:00:00 2001 From: why Date: Tue, 16 Jul 2019 17:12:26 +0800 Subject: [PATCH 18/26] fix[complex-table]: form header sort icon is out of sync (#2382) --- src/views/table/complex-table.vue | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/views/table/complex-table.vue b/src/views/table/complex-table.vue index fe266465..3d61f6c6 100644 --- a/src/views/table/complex-table.vue +++ b/src/views/table/complex-table.vue @@ -35,7 +35,7 @@ style="width: 100%;" @sort-change="sortChange" > - + @@ -375,6 +375,14 @@ export default { return v[j] } })) + }, + getSortClass: function(key) { + const sort = this.listQuery.sort + return sort === `+${key}` + ? 'ascending' + : sort === `-${key}` + ? 'descending' + : '' } } } From 12c8d8587345e07bfc084cb2663d0822b9526a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?= Date: Tue, 27 Aug 2019 20:57:51 +0800 Subject: [PATCH 19/26] fix: fixed missing icons --- src/views/clipboard/index.vue | 4 ++-- src/views/components-demo/avatar-upload.vue | 2 +- src/views/components-demo/mixin.vue | 2 +- src/views/error-page/401.vue | 2 +- src/views/excel/export-excel.vue | 2 +- src/views/excel/merge-header.vue | 2 +- src/views/excel/select-excel.vue | 2 +- src/views/tab/index.vue | 2 +- src/views/zip/index.vue | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/views/clipboard/index.vue b/src/views/clipboard/index.vue index e78c6359..4a6bdd1e 100644 --- a/src/views/clipboard/index.vue +++ b/src/views/clipboard/index.vue @@ -3,13 +3,13 @@ - + copy - + copy diff --git a/src/views/components-demo/avatar-upload.vue b/src/views/components-demo/avatar-upload.vue index 41bb9bc7..5cb20a56 100644 --- a/src/views/components-demo/avatar-upload.vue +++ b/src/views/components-demo/avatar-upload.vue @@ -7,7 +7,7 @@ - + Change Avatar diff --git a/src/views/components-demo/mixin.vue b/src/views/components-demo/mixin.vue index c64a073a..425cf4fb 100644 --- a/src/views/components-demo/mixin.vue +++ b/src/views/components-demo/mixin.vue @@ -49,7 +49,7 @@
- + 标题 diff --git a/src/views/error-page/401.vue b/src/views/error-page/401.vue index 032e808f..a52ed23b 100644 --- a/src/views/error-page/401.vue +++ b/src/views/error-page/401.vue @@ -1,6 +1,6 @@