Skip to content

Commit 0badeb8

Browse files
committed
refactor: user group
1 parent fef2357 commit 0badeb8

File tree

2 files changed

+39
-27
lines changed

2 files changed

+39
-27
lines changed

ui/src/api/type/systemChatUser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ interface ChatUserGroupUserItem {
2525
is_active: boolean,
2626
create_time: string,
2727
update_time: string,
28+
user_group_relation_id: string,
2829
}
29-
export type { ChatUserGroupUserItem, ChatUserItem }
30+
export type { ChatUserGroupUserItem, ChatUserItem }

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

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,18 @@
1414
<div class="user-left border-r p-16">
1515
<div class="user-left_title flex-between">
1616
<h4 class="medium">{{ $t('views.chatUser.group.title') }}</h4>
17-
<el-tooltip effect="dark" :content="`${$t('common.create')}${$t('views.chatUser.group.title')}`"
18-
placement="top">
17+
<el-tooltip effect="dark"
18+
:content="`${$t('common.create')}${$t('views.chatUser.group.title')}`"
19+
placement="top">
1920
<el-button type="primary" text @click="createOrUpdate()">
2021
<AppIcon iconName="app-copy"></AppIcon>
2122
</el-button>
2223
</el-tooltip>
2324
</div>
2425

2526
<div class="p-8">
26-
<el-input v-model="filterText" :placeholder="$t('common.search')" prefix-icon="Search" clearable />
27+
<el-input v-model="filterText" :placeholder="$t('common.search')" prefix-icon="Search"
28+
clearable/>
2729
</div>
2830
<div class="list-height-left">
2931
<el-scrollbar v-loading="loading">
@@ -34,7 +36,7 @@
3436
<el-dropdown :teleported="false">
3537
<el-button text>
3638
<el-icon class="color-secondary">
37-
<MoreFilled />
39+
<MoreFilled/>
3840
</el-icon>
3941
</el-button>
4042
<template #dropdown>
@@ -68,8 +70,9 @@
6870
<div class="user-right" v-loading="rightLoading">
6971
<div class="flex align-center">
7072
<h4 class="medium">{{ current?.name }}</h4>
71-
<el-divider direction="vertical" class="mr-8 ml-8" />
72-
<AppIcon iconName="app-wordspace" style="font-size: 16px" class="color-input-placeholder"></AppIcon>
73+
<el-divider direction="vertical" class="mr-8 ml-8"/>
74+
<AppIcon iconName="app-wordspace" style="font-size: 16px"
75+
class="color-input-placeholder"></AppIcon>
7376
<span class="color-input-placeholder ml-4">
7477
{{ paginationConfig.total }}
7578
</span>
@@ -86,18 +89,22 @@
8689
</div>
8790
<div class="flex-between complex-search">
8891
<el-select class="complex-search__left" v-model="searchType" style="width: 120px">
89-
<el-option :label="$t('views.login.loginForm.username.label')" value="username" />
92+
<el-option :label="$t('views.login.loginForm.username.label')" value="username"/>
9093
</el-select>
91-
<el-input v-if="searchType === 'username'" v-model="searchForm.username" @change="getList"
92-
:placeholder="$t('common.searchBar.placeholder')" style="width: 220px" clearable />
94+
<el-input v-if="searchType === 'username'" v-model="searchForm.username"
95+
@change="getList"
96+
:placeholder="$t('common.searchBar.placeholder')" style="width: 220px"
97+
clearable/>
9398
</div>
9499
</div>
95100

96-
<app-table :data="tableData" :pagination-config="paginationConfig" @sizeChange="handleSizeChange"
97-
@changePage="getList" @selection-change="handleSelectionChange">
98-
<el-table-column type="selection" width="55" />
99-
<el-table-column prop="nick_name" :label="$t('views.userManage.userForm.nick_name.label')" />
100-
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')" />
101+
<app-table :data="tableData" :pagination-config="paginationConfig"
102+
@sizeChange="handleSizeChange"
103+
@changePage="getList" @selection-change="handleSelectionChange">
104+
<el-table-column type="selection" width="55"/>
105+
<el-table-column prop="nick_name"
106+
:label="$t('views.userManage.userForm.nick_name.label')"/>
107+
<el-table-column prop="username" :label="$t('views.login.loginForm.username.label')"/>
101108
<el-table-column prop="source" :label="$t('views.userManage.source.label')">
102109
<template #default="{ row }">
103110
{{
@@ -117,10 +124,11 @@
117124
</el-table-column>
118125
<el-table-column :label="$t('common.operation')" width="100" fixed="right">
119126
<template #default="{ row }">
120-
<el-tooltip effect="dark" :content="`${$t('views.role.member.delete.button')}`" placement="top">
127+
<el-tooltip effect="dark" :content="`${$t('views.role.member.delete.button')}`"
128+
placement="top">
121129
<el-button type="primary" text @click.stop="handleDeleteUser(row)">
122130
<el-icon>
123-
<EditPen />
131+
<EditPen/>
124132
</el-icon>
125133
</el-button>
126134
</el-tooltip>
@@ -131,20 +139,20 @@
131139
</div>
132140
</el-card>
133141
</ContentContainer>
134-
<CreateOrUpdateGroupDialog ref="createOrUpdateGroupDialogRef" @refresh="refresh" />
135-
<CreateGroupUserDialog ref="createGroupUserDialogRef" @refresh="getList" />
142+
<CreateOrUpdateGroupDialog ref="createOrUpdateGroupDialogRef" @refresh="refresh"/>
143+
<CreateGroupUserDialog ref="createGroupUserDialogRef" @refresh="getList"/>
136144
</template>
137145

138146
<script lang="ts" setup>
139-
import { onMounted, ref, watch, reactive } from 'vue'
147+
import {onMounted, ref, watch, reactive} from 'vue'
140148
import SystemGroupApi from '@/api/system/user-group'
141-
import { t } from '@/locales'
142-
import type { ChatUserGroupUserItem } from '@/api/type/systemChatUser'
149+
import {t} from '@/locales'
150+
import type {ChatUserGroupUserItem} from '@/api/type/systemChatUser'
143151
import iconMap from '@/components/app-icon/icons/common'
144152
import CreateOrUpdateGroupDialog from './component/CreateOrUpdateGroupDialog.vue'
145153
import CreateGroupUserDialog from './component/CreateGroupUserDialog.vue'
146-
import type { ListItem } from '@/api/type/common'
147-
import { MsgSuccess, MsgConfirm } from '@/utils/message'
154+
import type {ListItem} from '@/api/type/common'
155+
import {MsgSuccess, MsgConfirm} from '@/utils/message'
148156
149157
const filterText = ref('')
150158
const loading = ref(false)
@@ -187,6 +195,7 @@ function clickUserGroup(item: ListItem) {
187195
}
188196
189197
const createOrUpdateGroupDialogRef = ref<InstanceType<typeof CreateOrUpdateGroupDialog>>()
198+
190199
function createOrUpdate(item?: ListItem) {
191200
createOrUpdateGroupDialogRef.value?.open(item);
192201
}
@@ -252,26 +261,28 @@ watch(() => current.value?.id, () => {
252261
})
253262
254263
const createGroupUserDialogRef = ref<InstanceType<typeof CreateGroupUserDialog>>()
264+
255265
function createUser() {
256266
createGroupUserDialogRef.value?.open(current.value?.id);
257267
}
258268
259269
const multipleSelection = ref<any[]>([])
270+
260271
function handleSelectionChange(val: any[]) {
261272
multipleSelection.value = val
262273
}
263274
264275
function handleDeleteUser(item?: ChatUserGroupUserItem) {
265276
MsgConfirm(
266-
item ? `${t('views.workspace.member.delete.confirmTitle')}${item.nick_name} ?` : t('views.chatUser.group.batchDeleteMember', { count: multipleSelection.value.length }),
277+
item ? `${t('views.workspace.member.delete.confirmTitle')}${item.nick_name} ?` : t('views.chatUser.group.batchDeleteMember', {count: multipleSelection.value.length}),
267278
'',
268279
{
269280
confirmButtonText: t('common.confirm'),
270281
confirmButtonClass: 'danger',
271282
},
272283
)
273284
.then(() => {
274-
SystemGroupApi.postRemoveMember(current.value?.id as string, { group_relation_ids: item ? [item.id] : multipleSelection.value.map(item => (item.id)) }, loading).then(async () => {
285+
SystemGroupApi.postRemoveMember(current.value?.id as string, {group_relation_ids: item ? [item.user_group_relation_id] : multipleSelection.value.map(item => (item.user_group_relation_id))}, loading).then(async () => {
275286
MsgSuccess(t('common.deleteSuccess'))
276287
await getList()
277288
})
@@ -324,4 +335,4 @@ function handleDeleteUser(item?: ChatUserGroupUserItem) {
324335
flex-direction: column;
325336
padding: 24px;
326337
}
327-
</style>
338+
</style>

0 commit comments

Comments
 (0)