Skip to content

Commit 44399cb

Browse files
authored
refactor(group): Migration to Vue3 (#420)
re #418
1 parent 2ea6a0b commit 44399cb

9 files changed

Lines changed: 118 additions & 115 deletions

File tree

package-lock.json

Lines changed: 0 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"@antv/g2plot": "^0.11.35",
1717
"@babel/polyfill": "^7.4.4",
1818
"@tinymce/tinymce-vue": "^2.0.0",
19-
"@vue/composition-api": "^0.5.0",
2019
"axios": "~0.18.0",
2120
"core-js": "^3.6.5",
2221
"element-plus": "^1.0.1-beta.19",

src/component/layout/menu-tab.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
<ul class="menu-tab">
55
<router-link :to="tab.path" v-for="tab in menuTabs" :key="tab.path" ref="menuTabs">
66
<li ref="tabList" class="menu-li">
7-
<!-- eslint-disable-next-line vue/no-deprecated-filter -->
8-
<i :class="tab.icon" /> <span class="title">{{ tab.title | filterTitle }}</span>
7+
<i :class="tab.icon" /> <span class="title">{{ $filters.filterTitle(tab.title) }}</span>
98
</li>
109
</router-link>
1110
</ul>

src/config/stage/admin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const adminRouter = {
4141
],
4242
},
4343
{
44-
route: '/admin/group',
44+
route: '/admin/group/list',
4545
name: null,
4646
title: '分组管理',
4747
type: 'tab', // 取 route 为默认加载页

src/view/admin/group/group-create.vue

Lines changed: 29 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
<el-col :lg="16" :md="20" :sm="24" :xs="24">
66
<div class="content">
77
<el-form
8+
ref="form"
89
status-icon
910
:rules="rules"
1011
:model="group"
11-
ref="form"
1212
label-position="right"
1313
label-width="100px"
1414
v-loading="loading"
@@ -21,12 +21,7 @@
2121
<el-input size="medium" clearable v-model="group.info"></el-input>
2222
</el-form-item>
2323
<el-form-item>
24-
<group-permissions
25-
@updatePermissions="updatePermissions"
26-
@updateAllPermissions="updateAllPermissions"
27-
ref="groupPermissions"
28-
title="分配权限"
29-
>
24+
<group-permissions title="分配权限" ref="groupPermissions" @updatePermissions="updatePermissions">
3025
</group-permissions>
3126
</el-form-item>
3227
<el-form-item class="submit">
@@ -41,6 +36,7 @@
4136
</template>
4237

4338
<script>
39+
import { useRouter } from 'vue-router'
4440
import { ref, reactive } from 'vue'
4541
import { ElMessage } from 'element-plus'
4642
import AdminModel from '@/lin/model/admin'
@@ -50,45 +46,38 @@ export default {
5046
components: {
5147
GroupPermissions,
5248
},
53-
inject: ['eventBus'],
54-
setup(props, ctx) {
49+
setup() {
5550
/**
5651
* 表单验证规则
5752
*/
58-
const checkName = (rule, value, callback) => {
59-
if (!value) {
60-
return callback(new Error('分组名称不能为空'))
61-
}
62-
callback()
63-
}
64-
const rules = {
65-
name: [{ validator: checkName, trigger: ['blur', 'change'], required: true }],
66-
info: [],
67-
}
53+
const { rules } = getRules()
6854
6955
// originally data properties
56+
const form = ref(null)
57+
const groupPermissions = ref(null)
58+
7059
const loading = ref(false)
60+
const router = useRouter()
7161
const permissions = ref([])
7262
const allPermissions = ref([])
73-
const { router } = ctx.root.$options
7463
const group = reactive({ name: '', info: '' })
7564
7665
/**
7766
* 重置表单
7867
*/
79-
const resetForm = formName => {
80-
ctx.refs[formName].resetFields()
81-
ctx.refs.groupPermissions.getGroupPermissions()
68+
const resetForm = () => {
69+
form.value.resetFields()
70+
groupPermissions.value.getGroupPermissions()
8271
}
8372
8473
/**
8574
* 提交表单
8675
* 添加新的分组
8776
*/
88-
const submitForm = async formName => {
89-
ctx.refs[formName].validate(async valid => {
77+
const submitForm = async () => {
78+
form.value.validate(async valid => {
9079
if (valid) {
91-
let res
80+
let res = {}
9281
const finalPermissions = permissions.value.filter(x => Object.keys(allPermissions.value).indexOf(x) < 0)
9382
try {
9483
loading.value = true
@@ -101,7 +90,7 @@ export default {
10190
loading.value = false
10291
ElMessage.success(`${res.message}`)
10392
router.push('/admin/group/list')
104-
resetForm('form')
93+
resetForm()
10594
} else {
10695
loading.value = false
10796
ElMessage.error(`${res.message}`)
@@ -119,23 +108,28 @@ export default {
119108
permissions.value = picked
120109
}
121110
122-
/**
123-
* 全部权限
124-
*/
125-
const updateAllPermissions = all => {
126-
allPermissions.value = all
127-
}
128-
129111
return {
112+
form,
130113
rules,
131114
group,
132115
resetForm,
133116
submitForm,
117+
groupPermissions,
134118
updatePermissions,
135-
updateAllPermissions,
136119
}
137120
},
138121
}
122+
123+
function getRules() {
124+
const checkName = (rule, value, callback) => {
125+
if (!value) {
126+
return callback(new Error('分组名称不能为空'))
127+
}
128+
callback()
129+
}
130+
const rules = { info: [], name: [{ validator: checkName, trigger: ['blur', 'change'], required: true }] }
131+
return { rules }
132+
}
139133
</script>
140134

141135
<style lang="scss" scoped>

src/view/admin/group/group-edit.vue

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
<script>
2929
import { ref } from 'vue'
30+
import { useRoute, useRouter } from 'vue-router'
3031
import { ElMessage } from 'element-plus'
3132
import AdminModel from '@/lin/model/admin'
3233
import GroupPermissions from './group-permission'
@@ -35,10 +36,12 @@ export default {
3536
components: {
3637
GroupPermissions,
3738
},
38-
setup(props, ctx) {
39+
setup() {
40+
const route = useRoute()
41+
const router = useRouter()
3942
// originally data properties
40-
const allPermissions = ref([])
4143
const permissions = ref([])
44+
const allPermissions = ref([])
4245
const cachePermissions = ref([])
4346
4447
/**
@@ -78,10 +81,10 @@ export default {
7881
.filter(v => !cachePermissions.value.includes(v))
7982
8083
if (addPermissions.length > 0) {
81-
addRes = await AdminModel.dispatchPermissions(ctx.root.$route.query.id, addPermissions)
84+
addRes = await AdminModel.dispatchPermissions(route.query.id, addPermissions)
8285
}
8386
if (deletePermissions.length > 0) {
84-
delRes = await AdminModel.removePermissions(ctx.root.$route.query.id, deletePermissions)
87+
delRes = await AdminModel.removePermissions(route.query.id, deletePermissions)
8588
}
8689
if (addRes.code < window.MAX_SUCCESS_CODE || delRes.code < window.MAX_SUCCESS_CODE) {
8790
ElMessage.success('权限修改成功')
@@ -93,14 +96,16 @@ export default {
9396
* 返回
9497
*/
9598
const back = () => {
96-
const { router } = ctx.root.$options
9799
router.go(-1)
98100
}
99101
100102
return {
101103
back,
104+
permissions,
102105
confirmEdit,
106+
allPermissions,
103107
getCacheAuthIds,
108+
cachePermissions,
104109
updatePermissions,
105110
updateAllPermissions,
106111
}

src/view/admin/group/group-list.vue

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,34 @@
22
<!-- 列表页面 -->
33
<div class="container">
44
<div class="title">分组列表信息</div>
5-
<el-table :data="tableData" v-loading="loading">
5+
<el-table :data="tableData" v-loading="loading" @row-dblclick="rowDoubleClick">
66
<el-table-column prop="name" label="名称"></el-table-column>
77
<el-table-column prop="info" label="分组描述"></el-table-column>
88
<el-table-column label="操作" fixed="right" width="275">
99
<template #default="scope">
10-
<el-button plain size="mini" type="primary" @click="handleEdit(scope.row.id)">信息</el-button>
10+
<el-button plain size="mini" type="primary" @click="handleEdit(scope.row)">信息</el-button>
1111
<el-button plain size="mini" type="info" @click="goToGroupEditPage(scope.row.id)">权限</el-button>
1212
<el-button plain size="mini" type="danger" @click="handleDelete(scope.row.id)">删除</el-button>
1313
</template>
1414
</el-table-column>
1515
</el-table>
16+
<!-- 分组信息 -->
1617
<el-dialog
1718
title="分组信息"
1819
:append-to-body="true"
19-
v-model:visible="dialogFormVisible"
20+
v-model="dialogFormVisible"
2021
:before-close="handleClose"
2122
class="groupListInfoDialog"
2223
>
2324
<div style="margin-top:-25px;">
2425
<el-form
25-
status-icon
26-
v-if="dialogFormVisible"
2726
ref="form"
28-
label-width="120px"
27+
status-icon
28+
:rules="rules"
2929
:model="group"
30+
label-width="120px"
31+
v-if="dialogFormVisible"
3032
label-position="labelPosition"
31-
:rules="rules"
3233
style="margin-left:-35px;margin-bottom:-35px;margin-top:15px;"
3334
>
3435
<el-form-item label="分组名称" prop="name">
@@ -42,18 +43,20 @@
4243
<template #footer>
4344
<div class="dialog-footer" style="padding-left:5px;">
4445
<el-button type="primary" @click="confirmEdit">确 定</el-button>
45-
<el-button @click="resetForm('form')">重 置</el-button>
46+
<el-button @click="resetForm">重 置</el-button>
4647
</div>
4748
</template>
4849
</el-dialog>
4950
</div>
5051
</template>
5152

5253
<script>
53-
import { useGroupList, useEditGroup } from './hook'
54+
import { useRouter } from 'vue-router'
55+
import { useGroupList, useEditGroup } from './use-group'
5456
5557
export default {
5658
setup(props, ctx) {
59+
const router = useRouter()
5760
/**
5861
* 分组列表所需数据
5962
*/
@@ -64,37 +67,38 @@ export default {
6467
*/
6568
const {
6669
id,
70+
form,
6771
rules,
6872
group,
69-
rowClick,
7073
resetForm,
7174
handleEdit,
7275
confirmEdit,
7376
handleClose,
77+
rowDoubleClick,
7478
dialogFormVisible,
7579
} = useEditGroup(ctx, getAllGroups)
7680
7781
/**
7882
* 前往修改分组权限页
7983
*/
80-
const goToGroupEditPage = val => {
81-
id.value = val.row.id
82-
const { router } = ctx.root.$options
83-
router.push({ path: '/admin/group/edit', query: { id: val.row.id } })
84+
const goToGroupEditPage = groupId => {
85+
id.value = groupId
86+
router.push({ path: '/admin/group/edit', query: { id: groupId } })
8487
}
8588
8689
return {
8790
id,
91+
form,
8892
rules,
8993
group,
9094
loading,
91-
rowClick,
9295
tableData,
9396
resetForm,
9497
handleEdit,
9598
confirmEdit,
9699
handleClose,
97100
handleDelete,
101+
rowDoubleClick,
98102
goToGroupEditPage,
99103
dialogFormVisible,
100104
}

0 commit comments

Comments
 (0)