refactor: user group

This commit is contained in:
wxg0103 2025-06-17 19:13:42 +08:00
parent 62d0089c9e
commit f2f6f82240
3 changed files with 22 additions and 110 deletions

View File

@ -1,94 +0,0 @@
import {Result} from '@/request/Result.ts'
import {get, post} from '@/request'
import type {LoginRequest} from '@/api/type/login.ts'
import type {Ref} from 'vue'
/**
*
* @param request
* @param loading
* @returns
*/
const login: (accessToken: string, request: LoginRequest, loading?: Ref<boolean>) => Promise<Result<any>> = (
accessToken: string,
request,
loading,
) => {
return post('/chat_user/login/' + accessToken, request, undefined, loading)
}
const ldapLogin: (accessToken: string, request: LoginRequest, loading?: Ref<boolean>) => Promise<Result<any>> = (
accessToken: string,
request,
loading,
) => {
return post('/chat_user/ldap/login/' + accessToken, request, undefined, loading)
}
/**
*
* @param loading
*/
const getCaptcha: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
return get('/user/captcha', undefined, loading)
}
/**
*
*/
const getAuthType: (accessToken: string, loading?: Ref<boolean>) => Promise<Result<any>> = (accessToken, loading) => {
return get('chat_user/auth/types/' + accessToken, undefined, loading)
}
/**
*
*/
const getQrType: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
return get('qr_type', undefined, loading)
}
const getQrSource: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
return get('qr_type/source', undefined, loading)
}
const getDingCallback: (code: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
code,
loading
) => {
return get('dingtalk', {code}, loading)
}
const getDingOauth2Callback: (code: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
code,
loading
) => {
return get('dingtalk/oauth2', {code}, loading)
}
const getWecomCallback: (code: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
code,
loading
) => {
return get('wecom', {code}, loading)
}
const getLarkCallback: (code: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
code,
loading
) => {
return get('lark/oauth2', {code}, loading)
}
export default {
login,
getCaptcha,
getAuthType,
getDingCallback,
getQrType,
getWecomCallback,
getDingOauth2Callback,
getLarkCallback,
getQrSource,
ldapLogin
}

View File

@ -44,7 +44,7 @@ const delUserGroup: (user_group_id: string, loading?: Ref<boolean>) => Promise<R
*/ */
const postAddMember: ( const postAddMember: (
user_group_id: string, user_group_id: string,
body: string[], body: any,
loading?: Ref<boolean>, loading?: Ref<boolean>,
) => Promise<Result<any>> = (user_group_id, body, loading) => { ) => Promise<Result<any>> = (user_group_id, body, loading) => {
return post(`${prefix}/${user_group_id}/add_member`, body, {}, loading) return post(`${prefix}/${user_group_id}/add_member`, body, {}, loading)

View File

@ -1,11 +1,15 @@
<template> <template>
<el-dialog :title="$t('views.role.member.add')" v-model="dialogVisible" :close-on-click-modal="false" <el-dialog :title="$t('views.role.member.add')" v-model="dialogVisible"
:close-on-press-escape="false" :destroy-on-close="true"> :close-on-click-modal="false"
<el-form label-position="top" ref="formRef" :rules="rules" :model="form" require-asterisk-position="right"> :close-on-press-escape="false" :destroy-on-close="true">
<el-form label-position="top" ref="formRef" :rules="rules" :model="form"
require-asterisk-position="right">
<el-form-item :label="$t('views.chatUser.group.usernameOrName')" prop="user"> <el-form-item :label="$t('views.chatUser.group.usernameOrName')" prop="user">
<el-select v-model="form.user" multiple filterable :placeholder="$t('common.selectPlaceholder')" <el-select v-model="form.user" multiple filterable
:loading="optionLoading"> :placeholder="$t('common.selectPlaceholder')"
<el-option v-for="item in chatUserList" :key="item.id" :label="item.nick_name" :value="item.id"> :loading="optionLoading">
<el-option v-for="item in chatUserList" :key="item.id" :label="item.nick_name"
:value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -22,13 +26,13 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onBeforeMount } from 'vue' import {ref, reactive, onBeforeMount} from 'vue'
import type { FormInstance } from 'element-plus' import type {FormInstance} from 'element-plus'
import { MsgSuccess } from '@/utils/message' import {MsgSuccess} from '@/utils/message'
import { t } from '@/locales' import {t} from '@/locales'
import SystemGroupApi from '@/api/system/user-group' import SystemGroupApi from '@/api/system/user-group'
import userManageApi from '@/api/system/chat-user' import userManageApi from '@/api/system/chat-user'
import type { ChatUserItem } from '@/api/type/systemChatUser' import type {ChatUserItem} from '@/api/type/systemChatUser'
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'refresh'): void; (e: 'refresh'): void;
@ -44,6 +48,7 @@ const form = ref<{ user: string[] }>({
const optionLoading = ref(false) const optionLoading = ref(false)
const chatUserList = ref<ChatUserItem[]>([]) const chatUserList = ref<ChatUserItem[]>([])
async function getChatUserList() { async function getChatUserList() {
try { try {
const res = await userManageApi.getChatUserList(optionLoading) const res = await userManageApi.getChatUserList(optionLoading)
@ -58,8 +63,9 @@ onBeforeMount(() => {
}) })
const groupId = ref(''); const groupId = ref('');
function open(id: string) { function open(id: string) {
form.value = { ...defaultForm } form.value = {...defaultForm}
groupId.value = id groupId.value = id
dialogVisible.value = true dialogVisible.value = true
} }
@ -67,7 +73,7 @@ function open(id: string) {
const formRef = ref<FormInstance>(); const formRef = ref<FormInstance>();
const rules = reactive({ const rules = reactive({
user: [{ required: true, message: t('common.selectPlaceholder'), trigger: 'blur' }], user: [{required: true, message: t('common.selectPlaceholder'), trigger: 'blur'}],
}) })
const loading = ref<boolean>(false) const loading = ref<boolean>(false)
@ -75,7 +81,7 @@ const submit = async (formEl: FormInstance | undefined) => {
if (!formEl) return if (!formEl) return
await formEl.validate((valid) => { await formEl.validate((valid) => {
if (valid) { if (valid) {
SystemGroupApi.postAddMember(groupId.value, form.value.user, loading).then(() => { SystemGroupApi.postAddMember(groupId.value, {"user_ids": form.value.user}, loading).then(() => {
MsgSuccess(t('common.createSuccess')) MsgSuccess(t('common.createSuccess'))
emit('refresh') emit('refresh')
dialogVisible.value = false dialogVisible.value = false
@ -84,5 +90,5 @@ const submit = async (formEl: FormInstance | undefined) => {
}) })
} }
defineExpose({ open }) defineExpose({open})
</script> </script>