diff --git a/src/components/AutoDataTable/index.vue b/src/components/AutoDataTable/index.vue index 60d91690e..d19895812 100644 --- a/src/components/AutoDataTable/index.vue +++ b/src/components/AutoDataTable/index.vue @@ -59,7 +59,8 @@ export default { label: this.$tc('Actions'), align: 'center', formatter: ActionsFormatter, - width: '150px' + width: '150px', + actions: this.config.actions || {} } break case 'is_valid': diff --git a/src/i18n/langs/cn.js b/src/i18n/langs/cn.js index 437ada97d..598060505 100644 --- a/src/i18n/langs/cn.js +++ b/src/i18n/langs/cn.js @@ -104,7 +104,8 @@ const cn = { 'PasswordChangeLog': '改密日志', 'Settings': '系统设置', 'UserCreate': '创建用户', - 'UserGroupCreate': '创建用户组' + 'UserGroupCreate': '创建用户组', + 'UserUpdate': '更新用户' }, // 用户模块翻译 users: { diff --git a/src/layout/components/GenericCreateUpdatePage/index.vue b/src/layout/components/GenericCreateUpdatePage/index.vue index a00bba07c..07ba0bc1a 100644 --- a/src/layout/components/GenericCreateUpdatePage/index.vue +++ b/src/layout/components/GenericCreateUpdatePage/index.vue @@ -1,7 +1,7 @@ @@ -18,10 +18,6 @@ export default { type: String, required: true }, - method: { - type: String, - default: 'post' - }, fields: { type: Array, default: () => { @@ -35,6 +31,28 @@ export default { onSubmit: { type: Function, default: null + }, + getMethod: { + type: Function, + default: function() { + const params = this.$route.params + if (params.id) { + return 'put' + } else { + return 'post' + } + } + }, + getUrl: { + type: Function, + default: function() { + const params = this.$route.params + let url = this.url + if (params.id) { + url = `${url}/${params.id}/` + } + return url + } } }, data() { @@ -42,14 +60,14 @@ export default { } }, computed: { + method() { + return this.getMethod() + }, + totalUrl() { + return this.getUrl() + } }, methods: { - getFormRef(comp) { - if (comp.$refs.form) { - return this.getFormRef(comp.$refs.form) - } - return comp - }, handleSubmit(values, form) { let handler = this.onSubmit || this.defaultOnSubmit handler = handler.bind(this) @@ -58,8 +76,11 @@ export default { console.log('form.fields', fields) return handler(values, form) }, + defaultPerformSubmit(validValues) { + return this.$axios[this.method](this.totalUrl, validValues) + }, defaultOnSubmit(validValues, form) { - this.$axios.post(this.url, validValues).then(() => { + this.defaultPerformSubmit(validValues).then(() => { const msg = this.$tc('Create success') this.$message.success(msg) this.$router.push({ name: 'UserList' }) diff --git a/src/layout/components/BaseDetailPage/index.vue b/src/layout/components/GenericDetailPage/index.vue similarity index 98% rename from src/layout/components/BaseDetailPage/index.vue rename to src/layout/components/GenericDetailPage/index.vue index f47f12c5d..58d61f83f 100644 --- a/src/layout/components/BaseDetailPage/index.vue +++ b/src/layout/components/GenericDetailPage/index.vue @@ -25,7 +25,7 @@ import Page from '../Page/' import ActionsGroup from '@/components/ActionsGroup' export default { - name: 'BaseDetailPage', + name: 'GenericDetailPage', components: { Page, ActionsGroup diff --git a/src/layout/components/index.js b/src/layout/components/index.js index 62c228747..3d96c0b63 100644 --- a/src/layout/components/index.js +++ b/src/layout/components/index.js @@ -3,7 +3,7 @@ export { default as NavHeader } from './NavHeader' export { default as AppMain } from './AppMain' export { default as Page } from './Page' export { default as TagsView } from './TagsView' -export { default as BaseDetailPage } from './BaseDetailPage' +export { default as GenericDetailPage } from './GenericDetailPage' export { default as SubMenuPage } from './SubMenuPage' export { default as Footer } from './Footer' export { default as IBox } from './IBox' diff --git a/src/router/index.js b/src/router/index.js index f2d37a8be..c25be6536 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -73,11 +73,11 @@ export const constantRoutes = [ meta: { title: 'UserCreate', activeMenu: '/users/users' } }, { - path: 'users/update/:id', + path: 'users/:id/update', component: () => import('@/views/users/UserCreateUpdate.vue'), // Parent router-view - name: 'UserEdit', + name: 'UserUpdate', hidden: true, - meta: { title: 'UserEdit' } + meta: { title: 'UserUpdate' } }, { path: 'users/detail/:id', diff --git a/src/views/users/UserGroupDetail/index.vue b/src/views/users/UserGroupDetail/index.vue index 8dfa51667..da789c9eb 100644 --- a/src/views/users/UserGroupDetail/index.vue +++ b/src/views/users/UserGroupDetail/index.vue @@ -1,5 +1,5 @@