From 0358667a736cf179baaf23a466f053df1d819ece Mon Sep 17 00:00:00 2001
From: MaYuanhai <414199639@qq.com>
Date: Mon, 8 Apr 2019 14:13:07 +0800
Subject: [PATCH 01/27] perf[Login]: password input add caps tooltip (#1845)
---
src/views/login/index.vue | 53 ++++++++++++++++++++++++++-------------
1 file changed, 35 insertions(+), 18 deletions(-)
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 979cfcb4..b9cba35f 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -23,24 +23,28 @@
/>
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
{{ $t('login.logIn') }}
@@ -107,6 +111,7 @@ export default {
password: [{ required: true, trigger: 'blur', validator: validatePassword }]
},
passwordType: 'password',
+ capsTooltip: false,
loading: false,
showDialog: false,
redirect: undefined
@@ -134,6 +139,18 @@ export default {
// window.removeEventListener('storage', this.afterQRScan)
},
methods: {
+ checkCapslock({ shiftKey, key } = {}) {
+ if (key && key.length === 1) {
+ if (shiftKey && (key >= 'a' && key <= 'z') || !shiftKey && (key >= 'A' && key <= 'Z')) {
+ this.capsTooltip = true
+ } else {
+ this.capsTooltip = false
+ }
+ }
+ if (key === 'CapsLock' && this.capsTooltip === true) {
+ this.capsTooltip = false
+ }
+ },
showPwd() {
if (this.passwordType === 'password') {
this.passwordType = ''
From afb62edc58b61cc190ff07214c4ac37486c80850 Mon Sep 17 00:00:00 2001
From: Pan
Date: Mon, 8 Apr 2019 18:10:41 +0800
Subject: [PATCH 02/27] fix[Sidebar]: fixed sidebar background css bug
---
src/styles/sidebar.scss | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss
index e0accb83..525a65b9 100644
--- a/src/styles/sidebar.scss
+++ b/src/styles/sidebar.scss
@@ -12,6 +12,7 @@
.sidebar-container {
transition: width 0.28s;
width: $sideBarWidth !important;
+ background-color: $menuBg;
height: 100%;
position: fixed;
font-size: 0px;
From c833cb6efabdef7f2d1241d1b204e2701f8a04c1 Mon Sep 17 00:00:00 2001
From: Pan
Date: Mon, 8 Apr 2019 21:45:10 +0800
Subject: [PATCH 03/27] perf[Chore]: optimization.splitChunks adapt cnpm module
name
---
build/index.js | 2 +-
vue.config.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/build/index.js b/build/index.js
index baf3807a..0c57de2a 100644
--- a/build/index.js
+++ b/build/index.js
@@ -26,7 +26,7 @@ if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
app.listen(port, function () {
console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
if (report) {
- console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}/report.html`))
+ console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
}
})
diff --git a/vue.config.js b/vue.config.js
index d3a08991..d5fede2b 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -114,7 +114,7 @@ module.exports = {
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
- test: /[\\/]node_modules[\\/]element-ui[\\/]/
+ test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
From 342b7b428a7e87951a03228bc2ee750cbb551eb9 Mon Sep 17 00:00:00 2001
From: Pan
Date: Mon, 8 Apr 2019 22:05:10 +0800
Subject: [PATCH 04/27] fix[Chore]: add @vue/cli-plugin-eslint
---
package.json | 1 +
vue.config.js | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index f8f98543..1b59855b 100644
--- a/package.json
+++ b/package.json
@@ -75,6 +75,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-unit-jest": "3.5.3",
"@vue/cli-service": "3.5.3",
"@vue/test-utils": "1.0.0-beta.29",
diff --git a/vue.config.js b/vue.config.js
index d5fede2b..cbd79510 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -21,7 +21,7 @@ module.exports = {
publicPath: '/',
outputDir: 'dist',
assetsDir: 'static',
- lintOnSave: process.env.NODE_ENV === 'development' ? 'error' : false,
+ lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false,
devServer: {
port: port,
From 8f45dbe328fd032b4914f6b4f6d4be63975f96b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?=
Date: Tue, 9 Apr 2019 09:58:08 +0800
Subject: [PATCH 05/27] feature[Icons]: add element-ui icons demo (#1865)
---
src/views/svg-icons/element-icon.json | 1 +
src/views/svg-icons/index.vue | 64 ++++++++++++++++++---------
src/views/svg-icons/requireIcons.js | 1 -
3 files changed, 43 insertions(+), 23 deletions(-)
create mode 100644 src/views/svg-icons/element-icon.json
diff --git a/src/views/svg-icons/element-icon.json b/src/views/svg-icons/element-icon.json
new file mode 100644
index 00000000..15072a4c
--- /dev/null
+++ b/src/views/svg-icons/element-icon.json
@@ -0,0 +1 @@
+["info","error","success","warning","question","back","arrow-left","arrow-down","arrow-right","arrow-up","caret-left","caret-bottom","caret-top","caret-right","d-arrow-left","d-arrow-right","minus","plus","remove","circle-plus","remove-outline","circle-plus-outline","close","check","circle-close","circle-check","circle-close-outline","circle-check-outline","zoom-out","zoom-in","d-caret","sort","sort-down","sort-up","tickets","document","goods","sold-out","news","message","date","printer","time","bell","mobile-phone","service","view","menu","more","more-outline","star-on","star-off","location","location-outline","phone","phone-outline","picture","picture-outline","delete","search","edit","edit-outline","rank","refresh","share","setting","upload","upload2","download","loading"]
diff --git a/src/views/svg-icons/index.vue b/src/views/svg-icons/index.vue
index b14d4be6..665b1d03 100644
--- a/src/views/svg-icons/index.vue
+++ b/src/views/svg-icons/index.vue
@@ -4,37 +4,57 @@
Add and use
-
-
-
-
- {{ generateIconCode(item) }}
-
-
-
- {{ item }}
-
-
-
-
+
+
+
+
+
+ {{ generateIconCode(item) }}
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+ {{ generateElementIconCode(item) }}
+
+
+
+ {{ item }}
+
+
+
+
+
diff --git a/src/filters/index.js b/src/filters/index.js
index b164513a..86e768d8 100644
--- a/src/filters/index.js
+++ b/src/filters/index.js
@@ -1,6 +1,12 @@
// set function parseTime,formatTime to filter
export { parseTime, formatTime } from '@/utils'
+/**
+ * Show plural label if time is plural number
+ * @param {number} time
+ * @param {string} label
+ * @return {string}
+ */
function pluralize(time, label) {
if (time === 1) {
return time + label
@@ -8,6 +14,9 @@ function pluralize(time, label) {
return time + label + 's'
}
+/**
+ * @param {number} time
+ */
export function timeAgo(time) {
const between = Date.now() / 1000 - Number(time)
if (between < 3600) {
@@ -19,7 +28,12 @@ export function timeAgo(time) {
}
}
-/* 数字 格式化*/
+/**
+ * Number formatting
+ * like 10000 => 10k
+ * @param {number} num
+ * @param {number} digits
+ */
export function numberFormatter(num, digits) {
const si = [
{ value: 1E18, symbol: 'E' },
@@ -37,6 +51,10 @@ export function numberFormatter(num, digits) {
return num.toString()
}
+/**
+ * 10000 => "10,000"
+ * @param {number} num
+ */
export function toThousandFilter(num) {
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}
diff --git a/src/layout/components/index.js b/src/layout/components/index.js
index e9f79ddd..104bd3ac 100644
--- a/src/layout/components/index.js
+++ b/src/layout/components/index.js
@@ -1,5 +1,5 @@
+export { default as AppMain } from './AppMain'
export { default as Navbar } from './Navbar'
+export { default as Settings } from './Settings'
export { default as Sidebar } from './Sidebar/index.vue'
export { default as TagsView } from './TagsView/index.vue'
-export { default as AppMain } from './AppMain'
-export { default as Settings } from './Settings'
diff --git a/src/layout/index.vue b/src/layout/index.vue
index ec6df90c..965bcd1b 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -17,19 +17,19 @@
From a6be6af46db8ae9887c84237d28ec122b6bcf6ca Mon Sep 17 00:00:00 2001
From: Pan
Date: Fri, 12 Apr 2019 10:53:12 +0800
Subject: [PATCH 14/27] perf: set private property names for vue
https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
---
src/components/Charts/mixins/resize.js | 12 +++++++-----
src/layout/mixin/ResizeHandler.js | 14 ++++++++------
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/src/components/Charts/mixins/resize.js b/src/components/Charts/mixins/resize.js
index c4c432f4..dccaf1a8 100644
--- a/src/components/Charts/mixins/resize.js
+++ b/src/components/Charts/mixins/resize.js
@@ -3,7 +3,7 @@ import { debounce } from '@/utils'
export default {
data() {
return {
- sidebarElm: null
+ $_sidebarElm: null
}
},
mounted() {
@@ -14,16 +14,18 @@ export default {
}, 100)
window.addEventListener('resize', this.__resizeHandler)
- this.sidebarElm = document.getElementsByClassName('sidebar-container')[0]
- this.sidebarElm && this.sidebarElm.addEventListener('transitionend', this.sidebarResizeHandler)
+ this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
+ this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)
},
beforeDestroy() {
window.removeEventListener('resize', this.__resizeHandler)
- this.sidebarElm && this.sidebarElm.removeEventListener('transitionend', this.sidebarResizeHandler)
+ this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)
},
methods: {
- sidebarResizeHandler(e) {
+ // use $_ for mixins properties
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
+ $_sidebarResizeHandler(e) {
if (e.propertyName === 'width') {
this.__resizeHandler()
}
diff --git a/src/layout/mixin/ResizeHandler.js b/src/layout/mixin/ResizeHandler.js
index 65879d16..e8d0df8c 100644
--- a/src/layout/mixin/ResizeHandler.js
+++ b/src/layout/mixin/ResizeHandler.js
@@ -12,26 +12,28 @@ export default {
}
},
beforeMount() {
- window.addEventListener('resize', this.resizeHandler)
+ window.addEventListener('resize', this.$_resizeHandler)
},
beforeDestroy() {
- window.removeEventListener('resize', this.resizeHandler)
+ window.removeEventListener('resize', this.$_resizeHandler)
},
mounted() {
- const isMobile = this.isMobile()
+ const isMobile = this.$_isMobile()
if (isMobile) {
store.dispatch('app/toggleDevice', 'mobile')
store.dispatch('app/closeSideBar', { withoutAnimation: true })
}
},
methods: {
- isMobile() {
+ // use $_ for mixins properties
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
+ $_isMobile() {
const rect = body.getBoundingClientRect()
return rect.width - 1 < WIDTH
},
- resizeHandler() {
+ $_resizeHandler() {
if (!document.hidden) {
- const isMobile = this.isMobile()
+ const isMobile = this.$_isMobile()
store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')
if (isMobile) {
From fdea6c684ab438b4505e0b0d68b24d16040667b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?=
Date: Fri, 12 Apr 2019 17:13:27 +0800
Subject: [PATCH 15/27] refactor: standardized files name (#1884)
style-guide: https://panjiachen.github.io/vue-element-admin-site/guide/advanced/style-guide.html#style-guide
---
mock/index.js | 2 +-
mock/{remoteSearch.js => remote-search.js} | 0
mock/role/routes.js | 40 +++++++++----------
src/api/{remoteSearch.js => remote-search.js} | 0
.../Charts/{keyboard.vue => Keyboard.vue} | 0
.../Charts/{lineMarker.vue => LineMarker.vue} | 0
.../Charts/{mixChart.vue => MixChart.vue} | 0
.../{defaultOptions.js => default-options.js} | 0
src/components/MarkdownEditor/index.vue | 2 +-
src/components/Pagination/index.vue | 2 +-
.../{dropdownMenu.vue => DropdownMenu.vue} | 0
.../{editorImage.vue => EditorImage.vue} | 0
src/components/Tinymce/index.vue | 2 +-
.../{singleImage.vue => SingleImage.vue} | 0
.../{singleImage2.vue => SingleImage2.vue} | 0
.../{singleImage3.vue => SingleImage3.vue} | 0
.../{el-dragDialog => el-drag-dialog}/drag.js | 0
.../index.js | 0
src/main.js | 2 +-
src/router/index.js | 20 +++++-----
src/router/modules/charts.js | 4 +-
src/router/modules/components.js | 20 +++++-----
src/router/modules/table.js | 8 ++--
src/utils/{errorLog.js => error-log.js} | 0
src/utils/{openWindow.js => open-window.js} | 0
src/utils/{scrollTo.js => scroll-to.js} | 0
src/views/charts/keyboard.vue | 2 +-
src/views/charts/line.vue | 2 +-
.../charts/{mixChart.vue => mix-chart.vue} | 2 +-
.../{avatarUpload.vue => avatar-upload.vue} | 0
.../{backToTop.vue => back-to-top.vue} | 0
.../{countTo.vue => count-to.vue} | 0
.../{dndList.vue => dnd-list.vue} | 0
.../{dragDialog.vue => drag-dialog.vue} | 2 +-
.../{dragKanban.vue => drag-kanban.vue} | 0
.../{dragSelect.vue => drag-select.vue} | 0
.../{jsonEditor.vue => json-editor.vue} | 0
src/views/components-demo/mixin.vue | 2 +-
.../{splitpane.vue => split-pane.vue} | 0
.../admin/components/TransactionTable.vue | 2 +-
src/views/documentation/index.vue | 2 +-
.../components/ErrorTestA.vue} | 0
.../components/ErrorTestB.vue} | 0
src/views/{errorLog => error-log}/index.vue | 10 ++---
src/views/{errorPage => error-page}/401.vue | 0
src/views/{errorPage => error-page}/404.vue | 0
.../example/components/ArticleDetail.vue | 4 +-
.../{exportExcel.vue => export-excel.vue} | 0
.../{mergeHeader.vue => merge-header.vue} | 0
.../{selectExcel.vue => select-excel.vue} | 0
.../{uploadExcel.vue => upload-excel.vue} | 0
src/views/guide/index.vue | 5 +--
src/views/guide/{defineSteps.js => steps.js} | 0
.../{authRedirect.vue => auth-redirect.vue} | 0
.../SocialSignin.vue} | 2 +-
src/views/login/index.vue | 2 +-
src/views/svg-icons/index.vue | 2 +-
.../{requireIcons.js => require-icons.js} | 0
.../components/{tabPane.vue => TabPane.vue} | 0
src/views/tab/index.vue | 2 +-
.../{complexTable.vue => complex-table.vue} | 0
.../table/{dragTable.vue => drag-table.vue} | 0
.../components/FixedThead.vue} | 0
.../components/UnfixedThead.vue} | 0
.../{dynamicTable => dynamic-table}/index.vue | 6 +--
...ineEditTable.vue => inline-edit-table.vue} | 0
66 files changed, 74 insertions(+), 75 deletions(-)
rename mock/{remoteSearch.js => remote-search.js} (100%)
rename src/api/{remoteSearch.js => remote-search.js} (100%)
rename src/components/Charts/{keyboard.vue => Keyboard.vue} (100%)
rename src/components/Charts/{lineMarker.vue => LineMarker.vue} (100%)
rename src/components/Charts/{mixChart.vue => MixChart.vue} (100%)
rename src/components/MarkdownEditor/{defaultOptions.js => default-options.js} (100%)
rename src/components/Share/{dropdownMenu.vue => DropdownMenu.vue} (100%)
rename src/components/Tinymce/components/{editorImage.vue => EditorImage.vue} (100%)
rename src/components/Upload/{singleImage.vue => SingleImage.vue} (100%)
rename src/components/Upload/{singleImage2.vue => SingleImage2.vue} (100%)
rename src/components/Upload/{singleImage3.vue => SingleImage3.vue} (100%)
rename src/directive/{el-dragDialog => el-drag-dialog}/drag.js (100%)
rename src/directive/{el-dragDialog => el-drag-dialog}/index.js (100%)
rename src/utils/{errorLog.js => error-log.js} (100%)
rename src/utils/{openWindow.js => open-window.js} (100%)
rename src/utils/{scrollTo.js => scroll-to.js} (100%)
rename src/views/charts/{mixChart.vue => mix-chart.vue} (86%)
rename src/views/components-demo/{avatarUpload.vue => avatar-upload.vue} (100%)
rename src/views/components-demo/{backToTop.vue => back-to-top.vue} (100%)
rename src/views/components-demo/{countTo.vue => count-to.vue} (100%)
rename src/views/components-demo/{dndList.vue => dnd-list.vue} (100%)
rename src/views/components-demo/{dragDialog.vue => drag-dialog.vue} (95%)
rename src/views/components-demo/{dragKanban.vue => drag-kanban.vue} (100%)
rename src/views/components-demo/{dragSelect.vue => drag-select.vue} (100%)
rename src/views/components-demo/{jsonEditor.vue => json-editor.vue} (100%)
rename src/views/components-demo/{splitpane.vue => split-pane.vue} (100%)
rename src/views/{errorLog/errorTestA.vue => error-log/components/ErrorTestA.vue} (100%)
rename src/views/{errorLog/errorTestB.vue => error-log/components/ErrorTestB.vue} (100%)
rename src/views/{errorLog => error-log}/index.vue (81%)
rename src/views/{errorPage => error-page}/401.vue (100%)
rename src/views/{errorPage => error-page}/404.vue (100%)
rename src/views/excel/{exportExcel.vue => export-excel.vue} (100%)
rename src/views/excel/{mergeHeader.vue => merge-header.vue} (100%)
rename src/views/excel/{selectExcel.vue => select-excel.vue} (100%)
rename src/views/excel/{uploadExcel.vue => upload-excel.vue} (100%)
rename src/views/guide/{defineSteps.js => steps.js} (100%)
rename src/views/login/{authRedirect.vue => auth-redirect.vue} (100%)
rename src/views/login/{socialSignin.vue => components/SocialSignin.vue} (97%)
rename src/views/svg-icons/{requireIcons.js => require-icons.js} (100%)
rename src/views/tab/components/{tabPane.vue => TabPane.vue} (100%)
rename src/views/table/{complexTable.vue => complex-table.vue} (100%)
rename src/views/table/{dragTable.vue => drag-table.vue} (100%)
rename src/views/table/{dynamicTable/fixedThead.vue => dynamic-table/components/FixedThead.vue} (100%)
rename src/views/table/{dynamicTable/unfixedThead.vue => dynamic-table/components/UnfixedThead.vue} (100%)
rename src/views/table/{dynamicTable => dynamic-table}/index.vue (70%)
rename src/views/table/{inlineEditTable.vue => inline-edit-table.vue} (100%)
diff --git a/mock/index.js b/mock/index.js
index 08cdc471..6907e861 100644
--- a/mock/index.js
+++ b/mock/index.js
@@ -4,7 +4,7 @@ import { param2Obj } from '../src/utils'
import user from './user'
import role from './role'
import article from './article'
-import search from './remoteSearch'
+import search from './remote-search'
const mocks = [
...user,
diff --git a/mock/remoteSearch.js b/mock/remote-search.js
similarity index 100%
rename from mock/remoteSearch.js
rename to mock/remote-search.js
diff --git a/mock/role/routes.js b/mock/role/routes.js
index 14413d48..62a09d01 100644
--- a/mock/role/routes.js
+++ b/mock/role/routes.js
@@ -19,17 +19,17 @@ export const constantRoutes = [
},
{
path: '/auth-redirect',
- component: 'views/login/authRedirect',
+ component: 'views/login/auth-redirect',
hidden: true
},
{
path: '/404',
- component: 'views/errorPage/404',
+ component: 'views/error-page/404',
hidden: true
},
{
path: '/401',
- component: 'views/errorPage/401',
+ component: 'views/error-page/401',
hidden: true
},
{
@@ -150,19 +150,19 @@ export const asyncRoutes = [
},
{
path: 'json-editor',
- component: 'views/components-demo/jsonEditor',
+ component: 'views/components-demo/json-editor',
name: 'JsonEditorDemo',
meta: { title: 'jsonEditor' }
},
{
- path: 'splitpane',
- component: 'views/components-demo/splitpane',
+ path: 'split-pane',
+ component: 'views/components-demo/split-pane',
name: 'SplitpaneDemo',
meta: { title: 'splitPane' }
},
{
path: 'avatar-upload',
- component: 'views/components-demo/avatarUpload',
+ component: 'views/components-demo/avatar-upload',
name: 'AvatarUploadDemo',
meta: { title: 'avatarUpload' }
},
@@ -180,7 +180,7 @@ export const asyncRoutes = [
},
{
path: 'count-to',
- component: 'views/components-demo/countTo',
+ component: 'views/components-demo/count-to',
name: 'CountToDemo',
meta: { title: 'countTo' }
},
@@ -192,31 +192,31 @@ export const asyncRoutes = [
},
{
path: 'back-to-top',
- component: 'views/components-demo/backToTop',
+ component: 'views/components-demo/back-to-top',
name: 'BackToTopDemo',
meta: { title: 'backToTop' }
},
{
path: 'drag-dialog',
- component: 'views/components-demo/dragDialog',
+ component: 'views/components-demo/drag-dialog',
name: 'DragDialogDemo',
meta: { title: 'dragDialog' }
},
{
path: 'drag-select',
- component: 'views/components-demo/dragSelect',
+ component: 'views/components-demo/drag-select',
name: 'DragSelectDemo',
meta: { title: 'dragSelect' }
},
{
path: 'dnd-list',
- component: 'views/components-demo/dndList',
+ component: 'views/components-demo/dnd-list',
name: 'DndListDemo',
meta: { title: 'dndList' }
},
{
path: 'drag-kanban',
- component: 'views/components-demo/dragKanban',
+ component: 'views/components-demo/drag-kanban',
name: 'DragKanbanDemo',
meta: { title: 'dragKanban' }
}
@@ -370,13 +370,13 @@ export const asyncRoutes = [
children: [
{
path: '401',
- component: 'views/errorPage/401',
+ component: 'views/error-page/401',
name: 'Page401',
meta: { title: 'page401', noCache: true }
},
{
path: '404',
- component: 'views/errorPage/404',
+ component: 'views/error-page/404',
name: 'Page404',
meta: { title: 'page404', noCache: true }
}
@@ -390,7 +390,7 @@ export const asyncRoutes = [
children: [
{
path: 'log',
- component: 'views/errorLog/index',
+ component: 'views/error-log/index',
name: 'ErrorLog',
meta: { title: 'errorLog', icon: 'bug' }
}
@@ -409,25 +409,25 @@ export const asyncRoutes = [
children: [
{
path: 'export-excel',
- component: 'views/excel/exportExcel',
+ component: 'views/excel/export-excel',
name: 'ExportExcel',
meta: { title: 'exportExcel' }
},
{
path: 'export-selected-excel',
- component: 'views/excel/selectExcel',
+ component: 'views/excel/select-excel',
name: 'SelectExcel',
meta: { title: 'selectExcel' }
},
{
path: 'export-merge-header',
- component: 'views/excel/mergeHeader',
+ component: 'views/excel/merge-header',
name: 'MergeHeader',
meta: { title: 'mergeHeader' }
},
{
path: 'upload-excel',
- component: 'views/excel/uploadExcel',
+ component: 'views/excel/upload-excel',
name: 'UploadExcel',
meta: { title: 'uploadExcel' }
}
diff --git a/src/api/remoteSearch.js b/src/api/remote-search.js
similarity index 100%
rename from src/api/remoteSearch.js
rename to src/api/remote-search.js
diff --git a/src/components/Charts/keyboard.vue b/src/components/Charts/Keyboard.vue
similarity index 100%
rename from src/components/Charts/keyboard.vue
rename to src/components/Charts/Keyboard.vue
diff --git a/src/components/Charts/lineMarker.vue b/src/components/Charts/LineMarker.vue
similarity index 100%
rename from src/components/Charts/lineMarker.vue
rename to src/components/Charts/LineMarker.vue
diff --git a/src/components/Charts/mixChart.vue b/src/components/Charts/MixChart.vue
similarity index 100%
rename from src/components/Charts/mixChart.vue
rename to src/components/Charts/MixChart.vue
diff --git a/src/components/MarkdownEditor/defaultOptions.js b/src/components/MarkdownEditor/default-options.js
similarity index 100%
rename from src/components/MarkdownEditor/defaultOptions.js
rename to src/components/MarkdownEditor/default-options.js
diff --git a/src/components/MarkdownEditor/index.vue b/src/components/MarkdownEditor/index.vue
index 9ed7a584..3d6794b5 100644
--- a/src/components/MarkdownEditor/index.vue
+++ b/src/components/MarkdownEditor/index.vue
@@ -9,7 +9,7 @@ import 'tui-editor/dist/tui-editor.css' // editor ui
import 'tui-editor/dist/tui-editor-contents.css' // editor content
import Editor from 'tui-editor'
-import defaultOptions from './defaultOptions'
+import defaultOptions from './default-options'
export default {
name: 'MarddownEditor',
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index a4962964..c815e132 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -15,7 +15,7 @@
diff --git a/src/views/errorPage/401.vue b/src/views/error-page/401.vue
similarity index 100%
rename from src/views/errorPage/401.vue
rename to src/views/error-page/401.vue
diff --git a/src/views/errorPage/404.vue b/src/views/error-page/404.vue
similarity index 100%
rename from src/views/errorPage/404.vue
rename to src/views/error-page/404.vue
diff --git a/src/views/example/components/ArticleDetail.vue b/src/views/example/components/ArticleDetail.vue
index 2213e927..58574ab0 100644
--- a/src/views/example/components/ArticleDetail.vue
+++ b/src/views/example/components/ArticleDetail.vue
@@ -76,12 +76,12 @@
diff --git a/src/views/table/inlineEditTable.vue b/src/views/table/inline-edit-table.vue
similarity index 100%
rename from src/views/table/inlineEditTable.vue
rename to src/views/table/inline-edit-table.vue
From 14580da5b31384f407f8d7db6f687081816907a1 Mon Sep 17 00:00:00 2001
From: linfei
Date: Mon, 15 Apr 2019 10:31:06 +0800
Subject: [PATCH 16/27] perf[Breadcrumb]: revise the breadcrumb navigation of
permission and zip (#1908)
---
src/router/index.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/router/index.js b/src/router/index.js
index 393e8e88..d04a64be 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -118,8 +118,9 @@ export const asyncRoutes = [
{
path: '/permission',
component: Layout,
- redirect: '/permission/index',
+ redirect: '/permission/page',
alwaysShow: true, // will always show the root menu
+ name: 'Permission',
meta: {
title: 'permission',
icon: 'lock',
@@ -301,6 +302,7 @@ export const asyncRoutes = [
component: Layout,
redirect: '/zip/download',
alwaysShow: true,
+ name: 'Zip',
meta: { title: 'zip', icon: 'zip' },
children: [
{
From 26d0f40df21fa5e5583a20cb3df14ae9d475bb3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=9D=9E=E7=A9=BA?=
Date: Mon, 15 Apr 2019 11:58:43 +0800
Subject: [PATCH 17/27] feature: change page title when route change (#1910)
---
src/components/ThemePicker/index.vue | 14 ++++++++++++--
src/permission.js | 4 ++++
src/settings.js | 6 ++----
src/store/modules/settings.js | 6 ++++--
src/utils/get-page-title.js | 13 +++++++++++++
vue.config.js | 4 ++--
6 files changed, 37 insertions(+), 10 deletions(-)
create mode 100644 src/utils/get-page-title.js
diff --git a/src/components/ThemePicker/index.vue b/src/components/ThemePicker/index.vue
index 0a556248..90c03311 100644
--- a/src/components/ThemePicker/index.vue
+++ b/src/components/ThemePicker/index.vue
@@ -11,16 +11,26 @@
const version = require('element-ui/package.json').version // element-ui version from node_modules
const ORIGINAL_THEME = '#409EFF' // default color
-import defaultSettings from '@/settings'
export default {
data() {
return {
chalk: '', // content of theme-chalk css
- theme: defaultSettings.theme
+ theme: ''
+ }
+ },
+ computed: {
+ defaultTheme() {
+ return this.$store.state.settings.theme
}
},
watch: {
+ defaultTheme: {
+ handler: function(val, oldVal) {
+ this.theme = val
+ },
+ immediate: true
+ },
async theme(val) {
const oldVal = this.chalk ? this.theme : ORIGINAL_THEME
if (typeof val !== 'string') return
diff --git a/src/permission.js b/src/permission.js
index 7cc2a5cf..750aeab6 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -4,6 +4,7 @@ import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import { getToken } from '@/utils/auth' // get token from cookie
+import getPageTitle from '@/utils/get-page-title'
NProgress.configure({ showSpinner: false }) // NProgress Configuration
@@ -13,6 +14,9 @@ router.beforeEach(async(to, from, next) => {
// start progress bar
NProgress.start()
+ // set page title
+ document.title = getPageTitle(to.meta.title)
+
// determine whether the user has logged in
const hasToken = getToken()
diff --git a/src/settings.js b/src/settings.js
index e7ad4e1d..1ebc7f29 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -1,7 +1,5 @@
-import variables from '@/styles/element-variables.scss'
-
-export default {
- theme: variables.theme,
+module.exports = {
+ title: 'Vue Element Admin',
/**
* @type {boolean} true | false
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
index 8522a5aa..e389af79 100644
--- a/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -1,8 +1,10 @@
+import variables from '@/styles/element-variables.scss'
import defaultSettings from '@/settings'
-const { showSettings, tagsView, fixedHeader, sidebarLogo, theme } = defaultSettings
+
+const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings
const state = {
- theme: theme,
+ theme: variables.theme,
showSettings: showSettings,
tagsView: tagsView,
fixedHeader: fixedHeader,
diff --git a/src/utils/get-page-title.js b/src/utils/get-page-title.js
new file mode 100644
index 00000000..4b6604cd
--- /dev/null
+++ b/src/utils/get-page-title.js
@@ -0,0 +1,13 @@
+import defaultSettings from '@/settings'
+import i18n from '@/lang'
+
+const title = defaultSettings.title || 'Vue Element Admin'
+
+export default function getPageTitle(key) {
+ const hasKey = i18n.te(`route.${key}`)
+ if (hasKey) {
+ const pageName = i18n.t(`route.${key}`)
+ return `${pageName} - ${title}`
+ }
+ return `${title}`
+}
diff --git a/vue.config.js b/vue.config.js
index cbd79510..0306b27c 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,12 +1,12 @@
'use strict'
const path = require('path')
-const pkg = require('./package.json')
+const defaultSettings = require('./src/settings.js')
function resolve(dir) {
return path.join(__dirname, dir)
}
-const name = pkg.name || 'vue-element-admin' // page title
+const name = defaultSettings.title || 'vue Element Admin' // page title
const port = 9527 // dev port
// All configuration item explanations can be find in https://cli.vuejs.org/config/
From be7ec4c0ff8c462ab0e45e1bab640bd2e72767b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?=
Date: Tue, 16 Apr 2019 11:20:13 +0800
Subject: [PATCH 18/27] docs: improve code comments (#1911)
---
mock/article.js | 2 +-
src/components/BackToTop/index.vue | 7 +---
src/components/JsonEditor/index.vue | 4 +--
src/components/Kanban/index.vue | 1 +
src/components/ThemePicker/index.vue | 1 -
.../Tinymce/components/EditorImage.vue | 10 +++---
src/components/Upload/SingleImage.vue | 1 -
src/directive/el-table/adaptive.js | 1 -
src/directive/el-table/index.js | 1 -
src/directive/permission/permission.js | 1 -
src/filters/index.js | 2 +-
src/lang/en.js | 3 ++
src/lang/es.js | 3 ++
src/lang/zh.js | 3 ++
src/main.js | 18 ++++++----
src/router/modules/components.js | 2 +-
src/router/modules/nested.js | 2 +-
src/router/modules/table.js | 2 +-
src/store/modules/permission.js | 4 +--
src/styles/element-ui.scss | 2 +-
src/styles/index.scss | 28 +++++----------
src/styles/sidebar.scss | 6 ++--
src/styles/transition.scss | 8 ++---
src/styles/variables.scss | 4 +--
src/utils/error-log.js | 4 +--
src/utils/request.js | 36 ++++++++++---------
src/views/components-demo/avatar-upload.vue | 4 +--
src/views/components-demo/back-to-top.vue | 8 ++---
src/views/components-demo/count-to.vue | 8 ++---
src/views/components-demo/dnd-list.vue | 4 +--
src/views/components-demo/dropzone.vue | 4 +--
src/views/components-demo/json-editor.vue | 4 +--
src/views/components-demo/markdown.vue | 4 +--
src/views/components-demo/split-pane.vue | 4 +--
src/views/components-demo/sticky.vue | 2 +-
src/views/components-demo/tinymce.vue | 4 +--
src/views/error-log/index.vue | 4 +--
.../example/components/ArticleDetail.vue | 20 +++++------
.../example/components/Dropdown/Comment.vue | 6 ++--
.../example/components/Dropdown/Platform.vue | 2 +-
.../example/components/Dropdown/SourceUrl.vue | 6 ++--
src/views/example/components/Warning.vue | 9 +++--
src/views/guide/index.vue | 4 +--
src/views/pdf/index.vue | 2 +-
src/views/permission/directive.vue | 4 +--
src/views/svg-icons/index.vue | 4 +--
src/views/table/complex-table.vue | 6 ++--
src/views/theme/index.vue | 2 +-
vue.config.js | 1 +
49 files changed, 134 insertions(+), 138 deletions(-)
diff --git a/mock/article.js b/mock/article.js
index 45b75296..bc236eb9 100644
--- a/mock/article.js
+++ b/mock/article.js
@@ -3,7 +3,7 @@ import Mock from 'mockjs'
const List = []
const count = 100
-const baseContent = '我是测试数据我是测试数据

'
+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++) {
diff --git a/src/components/BackToTop/index.vue b/src/components/BackToTop/index.vue
index c094037f..36522f4a 100644
--- a/src/components/BackToTop/index.vue
+++ b/src/components/BackToTop/index.vue
@@ -1,12 +1,7 @@
diff --git a/src/components/JsonEditor/index.vue b/src/components/JsonEditor/index.vue
index 81715f5d..07b282e4 100644
--- a/src/components/JsonEditor/index.vue
+++ b/src/components/JsonEditor/index.vue
@@ -25,8 +25,8 @@ export default {
},
watch: {
value(value) {
- const editor_value = this.jsonEditor.getValue()
- if (value !== editor_value) {
+ const editorValue = this.jsonEditor.getValue()
+ if (value !== editorValue) {
this.jsonEditor.setValue(JSON.stringify(this.value, null, 2))
}
}
diff --git a/src/components/Kanban/index.vue b/src/components/Kanban/index.vue
index c2cb4691..82f7dd7e 100644
--- a/src/components/Kanban/index.vue
+++ b/src/components/Kanban/index.vue
@@ -15,6 +15,7 @@
+