Skip to content

Commit b6b4561

Browse files
committed
Enable to edit member role
1 parent 6aa1847 commit b6b4561

File tree

5 files changed

+82
-23
lines changed

5 files changed

+82
-23
lines changed

frontend/components/containers/members/MemberList.vue

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,27 @@
2020
filled
2121
/>
2222
</template>
23-
<template v-slot:item.role="{ item }">
23+
<template v-slot:item.rolename="{ item }">
2424
<v-edit-dialog
25-
:return-value.sync="item.role"
25+
:return-value.sync="item"
2626
large
27-
persistent
28-
@save="updateRole({ id: item.id, role: newRole })"
27+
@save="updateRole({ id: item.id })"
2928
>
30-
<div>{{ item.role }}</div>
29+
<div>{{ item.rolename }}</div>
3130
<template v-slot:input>
3231
<div class="mt-4 title">
3332
Update Role
3433
</div>
3534
</template>
3635
<template v-slot:input>
3736
<v-select
38-
:value="item.role"
37+
:value="getRole(item)"
3938
:items="roles"
4039
:rules="roleRules"
40+
item-text="name"
41+
item-value="id"
4142
label="Role"
43+
return-object
4244
@input="setNewRole"
4345
/>
4446
</template>
@@ -48,16 +50,12 @@
4850
</template>
4951

5052
<script>
51-
import { mapState, mapActions, mapMutations } from 'vuex'
53+
import { mapState, mapActions, mapMutations, mapGetters } from 'vuex'
5254
import { roleRules } from '@/rules/index'
5355
5456
export default {
5557
data() {
5658
return {
57-
roles: [
58-
'Admin',
59-
'Member'
60-
],
6159
headers: [
6260
{
6361
text: 'Name',
@@ -67,7 +65,7 @@ export default {
6765
},
6866
{
6967
text: 'Role',
70-
value: 'role'
68+
value: 'rolename'
7169
}
7270
],
7371
search: '',
@@ -77,29 +75,40 @@ export default {
7775
},
7876
7977
computed: {
80-
...mapState('members', ['items', 'selected', 'loading'])
78+
...mapState('members', ['items', 'selected', 'loading']),
79+
...mapGetters('roles', ['roles'])
8180
},
8281
8382
created() {
8483
this.getMemberList({
8584
projectId: this.$route.params.id
8685
})
86+
this.getRoleList()
8787
},
8888
8989
methods: {
9090
...mapActions('members', ['getMemberList', 'updateMemberRole']),
9191
...mapMutations('members', ['updateSelected']),
92+
...mapActions('roles', ['getRoleList']),
93+
94+
getRole(item) {
95+
return {
96+
id: item.role,
97+
userId: item.user,
98+
mappingId: item.id
99+
}
100+
},
92101
93102
setNewRole(value) {
94103
this.newRole = value
95104
},
96105
97106
updateRole(payload) {
98-
const data = {
107+
this.updateMemberRole({
99108
projectId: this.$route.params.id,
100-
...payload
101-
}
102-
this.updateMemberRole(data)
109+
id: payload.id,
110+
role: this.newRole.id
111+
})
103112
}
104113
}
105114
}

frontend/services/member.service.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,26 @@ class MemberService {
66
}
77

88
getMemberList(projectId) {
9-
return this.request.get(`/projects/${projectId}/users`)
9+
return this.request.get(`/projects/${projectId}/roles`)
1010
}
1111

1212
addMember(projectId, userId, role) {
1313
const data = {
1414
id: userId,
1515
role
1616
}
17-
return this.request.post(`/projects/${projectId}/users`, data)
17+
return this.request.post(`/projects/${projectId}/roles`, data)
1818
}
1919

2020
deleteMember(projectId, userId) {
21-
return this.request.delete(`/projects/${projectId}/users/${userId}`)
21+
return this.request.delete(`/projects/${projectId}/roles/${userId}`)
2222
}
2323

24-
updateMemberRole(projectId, userId, role) {
24+
updateMemberRole(projectId, mappingId, role) {
2525
const data = {
2626
role
2727
}
28-
return this.request.patch(`/projects/${projectId}/users/${userId}`, data)
28+
return this.request.patch(`/projects/${projectId}/roles/${mappingId}`, data)
2929
}
3030
}
3131

frontend/services/role.service.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import ApiService from '@/services/api.service'
2+
3+
class RoleService {
4+
constructor() {
5+
this.request = ApiService
6+
}
7+
8+
getRoleList() {
9+
return this.request.get('/roles')
10+
}
11+
}
12+
13+
export default new RoleService()

frontend/store/members.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ export const actions = {
6161
})
6262
},
6363
updateMemberRole({ commit }, member) {
64-
MemberService.updateMemberRole(member.projectId, member.id, member.role) // Todo: replace project id
64+
MemberService.updateMemberRole(member.projectId, member.id, member.role)
6565
.then((response) => {
6666
commit('updateMember', response)
6767
})

frontend/store/roles.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import RoleService from '@/services/role.service'
2+
3+
export const state = () => ({
4+
items: [],
5+
loading: false
6+
})
7+
8+
export const getters = {
9+
roles(state) {
10+
return state.items
11+
}
12+
}
13+
14+
export const mutations = {
15+
setRoleList(state, payload) {
16+
state.items = payload
17+
},
18+
setLoading(state, payload) {
19+
state.loading = payload
20+
}
21+
}
22+
23+
export const actions = {
24+
getRoleList({ commit }) {
25+
commit('setLoading', true)
26+
return RoleService.getRoleList()
27+
.then((response) => {
28+
commit('setRoleList', response)
29+
})
30+
.catch((error) => {
31+
alert(error)
32+
})
33+
.finally(() => {
34+
commit('setLoading', false)
35+
})
36+
}
37+
}

0 commit comments

Comments
 (0)