1
1
<script setup lang="ts">
2
2
import { type User , useUserStore } from ' @base/stores/admin/user'
3
+ import { type Role , useRoleStore } from ' @base/stores/admin/role'
3
4
import { DRAWER_ACTION_TYPES } from ' ~/constant/organization'
4
5
import type { DrawerConfig } from ' ~/utils/types'
5
6
@@ -39,6 +40,10 @@ const userStore = useUserStore()
39
40
const { userList, userDetail, totalUsers } = storeToRefs (userStore )
40
41
const { fetchUserList, fetchUserDetail, updateUser, deleteUser, createUser } = userStore
41
42
43
+ const roleStore = useRoleStore ()
44
+ const { roleList } = storeToRefs (roleStore )
45
+ const { fetchRoles } = roleStore
46
+
42
47
const currentUserId = ref <string >(' ' )
43
48
const currentUserData = ref <Partial <User >>({
44
49
id: ' ' ,
@@ -207,7 +212,14 @@ async function handleConfirmDeleteUser(isConfirm: boolean) {
207
212
208
213
useLazyAsyncData (
209
214
async () => {
210
- await fetchUserList ()
215
+ await fetchUserList ({
216
+ // limit: itemsPerPage.value,
217
+ // page: page.value,
218
+ // keyword: searchQuery.value,
219
+ // page: page.value,
220
+ // sortBy: sortBy.value,
221
+ })
222
+ await fetchRoles ()
211
223
},
212
224
)
213
225
</script >
@@ -218,91 +230,6 @@ useLazyAsyncData(
218
230
<h1 class =" text-center" >
219
231
Test user
220
232
</h1 >
221
-
222
- <div >
223
- <h2 class =" mb-2" >
224
- user list:
225
- </h2 >
226
- <div v-if =" userList.length > 0" >
227
- <p >
228
- Total users: {{ totalUsers }}
229
- </p >
230
- <br >
231
-
232
- <ul >
233
- <li
234
- v-for =" user in userList"
235
- :key =" user.id"
236
- >
237
- <div class =" d-flex align-center justify-space-between" >
238
- <p >
239
- {{ user.full_name }}
240
- </p >
241
-
242
- <div class =" d-flex align-center gap-2" >
243
- <VBtn @click =" handleOpenEditDrawer(user.id)" >
244
- Edit
245
- </VBtn >
246
-
247
- <VBtn @click =" handleOpenDeleteDialog(user.id)" >
248
- Delete
249
- </VBtn >
250
- </div >
251
- </div >
252
- </li >
253
- </ul >
254
- </div >
255
- <div v-else >
256
- No users
257
- </div >
258
- </div >
259
-
260
- <div >
261
- <h2 class =" mb-2 mt-8 d-flex align-center" >
262
- user detail:
263
- </h2 >
264
-
265
- <div class =" mb-2 d-flex align-center gap-2" >
266
- <VTextField
267
- v-model =" currentUserId"
268
- label =" User ID"
269
- />
270
-
271
- <VBtn
272
- @click =" fetchUserDetail(currentUserId)"
273
- >
274
- Fetch User
275
- </VBtn >
276
- </div >
277
-
278
- <div v-if =" userDetail" >
279
- <p >
280
- ID: {{ userDetail.id }}
281
- </p >
282
- <p >
283
- Name: {{ userDetail.full_name }}
284
- </p >
285
- <p >
286
- Email: {{ userDetail.email }}
287
- </p >
288
- </div >
289
-
290
- <div v-else >
291
- Not found
292
- </div >
293
- </div >
294
-
295
- <div >
296
- <h2 class =" mb-2 mt-8 d-flex align-center" >
297
- user create:
298
- </h2 >
299
-
300
- <VBtn
301
- @click =" handleOpenAddDrawer()"
302
- >
303
- Create User
304
- </VBtn >
305
- </div >
306
233
</div >
307
234
308
235
<VCard class =" mb-6" >
@@ -492,6 +419,7 @@ useLazyAsyncData(
492
419
@update:model-value =" handleUserChange"
493
420
/>
494
421
422
+ <!-- 👉 Delete User Dialog -->
495
423
<AppDialog
496
424
:is-dialog-visible =" isDeleteDialogVisible"
497
425
title =" Delete user"
@@ -504,5 +432,7 @@ useLazyAsyncData(
504
432
</template >
505
433
506
434
<style lang="scss" scoped>
507
-
435
+ .app-user-search-filter {
436
+ inline-size : 15.625rem ;
437
+ }
508
438
</style >
0 commit comments