diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..d5408027 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# These are supported funding model platforms + +patreon: panjiachen +custom: https://panjiachen.github.io/vue-element-admin-site/donate 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: diff --git a/package.json b/package.json index 774ab589..af6e5d2d 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", @@ -81,6 +81,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", 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 } } } diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue index 29988026..eda5feaf 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/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 } diff --git a/src/views/dashboard/admin/components/BarChart.vue b/src/views/dashboard/admin/components/BarChart.vue index fa265ef6..be0af34f 100644 --- a/src/views/dashboard/admin/components/BarChart.vue +++ b/src/views/dashboard/admin/components/BarChart.vue @@ -5,11 +5,12 @@