Skip to content

Commit 63b783c

Browse files
committed
feat: systemChatUserGroup
1 parent e4a8f37 commit 63b783c

File tree

10 files changed

+454
-231
lines changed

10 files changed

+454
-231
lines changed

ui/src/api/chat-user/chat-user.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ const getUserGroupUserList: (
1919
resource: ChatUserResourceParams,
2020
user_group_id: string,
2121
page: pageRequest,
22-
param: any,
22+
username_or_nickname: string,
2323
loading?: Ref<boolean>,
24-
) => Promise<Result<PageList<ChatUserGroupUserItem[]>>> = (resource, user_group_id, page, param, loading) => {
24+
) => Promise<Result<PageList<ChatUserGroupUserItem[]>>> = (resource, user_group_id, page, username_or_nickname, loading) => {
2525
return get(
2626
`${prefix}/${resource.resource_type}/${resource.resource_id}/user_group_id/${user_group_id}/${page.current_page}/${page.page_size}`,
27-
param,
27+
username_or_nickname ? { username_or_nickname } : undefined,
2828
loading,
2929
)
3030
}

ui/src/api/system/chat-user.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
import { Result } from '@/request/Result'
22
import { get, put, post, del } from '@/request/index'
33
import type { pageRequest } from '@/api/type/common'
4+
import type { ChatUserItem } from '@/api/type/systemChatUser'
45
import type { Ref } from 'vue'
5-
66
const prefix = '/system/chat_user'
7+
8+
9+
/**
10+
* 用户列表
11+
*/
12+
const getChatUserList: (loading?: Ref<boolean>) => Promise<Result<ChatUserItem[]>> = (loading) => {
13+
return get(`${prefix}/list`, undefined, loading)
14+
}
15+
716
/**
817
* 用户分页列表
918
* @query 参数
@@ -71,4 +80,5 @@ export default {
7180
delUserManage,
7281
postUserManage,
7382
putUserManagePassword,
83+
getChatUserList
7484
}

ui/src/api/system/user-group.ts

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
import {Result} from '@/request/Result'
2-
import {get, post, del, put} from '@/request/index'
3-
import type {Ref} from 'vue'
1+
import { Result } from '@/request/Result'
2+
import { get, post, del } from '@/request/index'
3+
import type { Ref } from 'vue'
4+
import type { ChatUserGroupUserItem, } from '@/api/type/systemChatUser'
5+
import type { pageRequest, PageList, ListItem } from '@/api/type/common'
46

57
const prefix = '/system/group'
68

79
/**
810
* 获取用户组列表
911
*/
10-
const getUserGroup: (loading?: Ref<boolean>) => Promise<Result<any[]>> = () => {
12+
const getUserGroup: (loading?: Ref<boolean>) => Promise<Result<ListItem[]>> = () => {
1113
return get(`${prefix}`)
1214
}
1315

@@ -19,7 +21,7 @@ const getUserGroup: (loading?: Ref<boolean>) => Promise<Result<any[]>> = () => {
1921
"name": "string"
2022
}
2123
*/
22-
const postUserGroup: (data: any, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
24+
const postUserGroup: (data: ListItem, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
2325
data,
2426
loading,
2527
) => {
@@ -30,7 +32,7 @@ const postUserGroup: (data: any, loading?: Ref<boolean>) => Promise<Result<boole
3032
* 删除用户组
3133
* @param 参数 user_group_id
3234
*/
33-
const delUserGroup: (user_group_id: String, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
35+
const delUserGroup: (user_group_id: string, loading?: Ref<boolean>) => Promise<Result<boolean>> = (
3436
user_group_id,
3537
loading,
3638
) => {
@@ -48,7 +50,7 @@ const delUserGroup: (user_group_id: String, loading?: Ref<boolean>) => Promise<R
4850
*/
4951
const postAddMember: (
5052
user_group_id: string,
51-
body: any,
53+
body: Record<string, any>,
5254
loading?: Ref<boolean>,
5355
) => Promise<Result<any>> = (user_group_id, body, loading) => {
5456
return post(`${prefix}/${user_group_id}/add_member`, body, {}, loading)
@@ -64,16 +66,32 @@ const postAddMember: (
6466
*/
6567
const postRemoveMember: (
6668
user_group_id: string,
67-
body: any,
69+
body: Record<string, any>,
6870
loading?: Ref<boolean>,
6971
) => Promise<Result<any>> = (user_group_id, body, loading) => {
70-
return post(`${prefix}/${user_group_id}`, body, {}, loading)
72+
return post(`${prefix}/${user_group_id}/remove_member`, body, {}, loading)
7173
}
7274

75+
/**
76+
* 获取用户组的成员列表
77+
*/
78+
const getUserListByGroup: (
79+
user_group_id: string,
80+
page: pageRequest,
81+
username: string,
82+
loading?: Ref<boolean>,
83+
) => Promise<Result<PageList<ChatUserGroupUserItem[]>>> = (user_group_id, page, username, loading) => {
84+
return get(
85+
`${prefix}/${user_group_id}/user_list/${page.current_page}/${page.page_size}`,
86+
username ? { username } : undefined,
87+
loading,
88+
)
89+
}
7390
export default {
7491
getUserGroup,
7592
postUserGroup,
7693
delUserGroup,
7794
postAddMember,
7895
postRemoveMember,
96+
getUserListByGroup
7997
}

ui/src/api/type/common.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,8 @@ interface PageList<T> {
1818
records: T
1919
}
2020

21-
export type { KeyValue, Dict, pageRequest, PageList }
21+
interface ListItem {
22+
name: string,
23+
id?: string,
24+
}
25+
export type { KeyValue, Dict, pageRequest, PageList, ListItem }

ui/src/api/type/systemChatUser.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
interface ChatUserItem {
2+
create_time: string,
3+
email: string,
4+
id: string,
5+
nick_name: string,
6+
phone: string,
7+
source: string,
8+
update_time: string,
9+
username: string,
10+
is_active: boolean,
11+
user_group_ids?: string[],
12+
user_group_names?: string[],
13+
}
14+
15+
// TODO
16+
interface ChatUserGroupUserItem {
17+
id: string,
18+
is_auth: boolean,
19+
email: string,
20+
phone: string,
21+
nick_name: string,
22+
username: string,
23+
password: string,
24+
source: string,
25+
is_active: boolean,
26+
create_time: string,
27+
update_time: string,
28+
}
29+
export type { ChatUserGroupUserItem, ChatUserItem }

ui/src/locales/lang/zh-CN/views/chat-user.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,10 @@ export default {
66
authorization: '授权',
77
group: {
88
title: '用户组',
9+
name: '用户组名称',
10+
delete: {
11+
confirmTitle: '是否删除用户组:',
12+
confirmMessage: '删除后,该用户组下的成员将全部移除,请谨慎操作!',
13+
},
914
}
1015
}

ui/src/views/chat-user/index.vue

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
<el-divider direction="vertical" class="mr-8 ml-8" />
3838
<AppIcon iconName="app-wordspace" style="font-size: 16px" class="color-input-placeholder"></AppIcon>
3939
<span class="color-input-placeholder ml-4">
40-
{{ current?.user_count }}
40+
{{ paginationConfig.total }}
4141
</span>
4242
</div>
4343
<el-button type="primary" @click="handleSave">
@@ -48,9 +48,9 @@
4848
<div class="flex-between mb-16" style="margin-top: 18px;">
4949
<div class="flex complex-search">
5050
<el-select class="complex-search__left" v-model="searchType" style="width: 120px">
51-
<el-option :label="$t('views.login.loginForm.username.label')" value="username_or_nickname" />
51+
<el-option :label="$t('views.login.loginForm.username.label')" value="name" />
5252
</el-select>
53-
<el-input v-if="searchType === 'username_or_nickname'" v-model="searchForm.username_or_nickname"
53+
<el-input v-if="searchType === 'name'" v-model="searchForm.name"
5454
@change="getList" :placeholder="$t('common.inputPlaceholder')" style="width: 220px" clearable />
5555
</div>
5656
<div class="flex align-center">
@@ -60,7 +60,7 @@
6060
</div>
6161

6262
<app-table :data="tableData" :pagination-config="paginationConfig" @sizeChange="handleSizeChange"
63-
@changePage="getList" v-loading="rightLoading">
63+
@changePage="getList">
6464
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
6565
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
6666
<el-table-column prop="source" :label="$t('views.userManage.source.label')">
@@ -150,9 +150,9 @@ function clickUserGroup(item: ChatUserGroupItem) {
150150
151151
const rightLoading = ref(false)
152152
153-
const searchType = ref('username_or_nickname')
153+
const searchType = ref('name')
154154
const searchForm = ref<Record<string, any>>({
155-
username_or_nickname: '',
155+
name: '',
156156
})
157157
const automaticAuthorization = ref(false)
158158
const paginationConfig = reactive({
@@ -166,10 +166,7 @@ const tableData = ref<ChatUserGroupUserItem[]>([])
166166
async function getList() {
167167
if (!current.value?.id) return
168168
try {
169-
const params = {
170-
[searchType.value]: searchForm.value[searchType.value],
171-
}
172-
const res = await ChatUserApi.getUserGroupUserList(resource, current.value?.id, paginationConfig, params, rightLoading)
169+
const res = await ChatUserApi.getUserGroupUserList(resource, current.value?.id, paginationConfig, searchForm.value.name, rightLoading)
173170
tableData.value = res.data.records
174171
paginationConfig.total = res.data.total
175172
} catch (error) {

ui/src/views/system-chat-user/group/component/CreateGroupDialog.vue

Lines changed: 0 additions & 122 deletions
This file was deleted.

0 commit comments

Comments
 (0)