mirror of
https://github.com/TangSengDaoDao/TangSengDaoDaoManager
synced 2025-06-05 00:28:11 +00:00
feat: ✨添加用户
This commit is contained in:
parent
87ae166e1f
commit
69bc60f7aa
@ -35,3 +35,19 @@ export function groupBlacklistGet(params: any, groupNo: string) {
|
||||
params
|
||||
});
|
||||
}
|
||||
|
||||
// 禁言/解除禁言
|
||||
export function groupForbiddenPut(params: any) {
|
||||
return request({
|
||||
url: `/manager/groups/${params.groupNo}/forbidden/${params.forbidden}`,
|
||||
method: 'put'
|
||||
});
|
||||
}
|
||||
|
||||
// 封禁/解禁
|
||||
export function groupLiftbanPut(params: any) {
|
||||
return request({
|
||||
url: `/manager/group/liftban/${params.groupNo}/${params.status}`,
|
||||
method: 'put'
|
||||
});
|
||||
}
|
||||
|
@ -1,5 +1,14 @@
|
||||
import request from '@/utils/axios';
|
||||
|
||||
// 添加用户
|
||||
export function userAddPost(data: any) {
|
||||
return request({
|
||||
url: '/manager/user/add',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 用户列表
|
||||
export function userListGet(params: any) {
|
||||
return request({
|
||||
|
@ -9,13 +9,7 @@
|
||||
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu class="w-180px">
|
||||
<el-dropdown-item>
|
||||
<el-icon>
|
||||
<i-bd-gold-medal-two theme="outline" size="24" />
|
||||
</el-icon>
|
||||
当前积分
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item>
|
||||
<el-dropdown-item @click="onChangePassword">
|
||||
<el-icon>
|
||||
<i-bd-lock theme="outline" size="24" />
|
||||
</el-icon>
|
||||
@ -42,6 +36,13 @@ const username = computed(() => {
|
||||
return userStore.userInfo.name;
|
||||
});
|
||||
|
||||
// 修改密码
|
||||
const onChangePassword = () => {
|
||||
router.push({
|
||||
path: '/setting/updatepwd'
|
||||
});
|
||||
};
|
||||
|
||||
// 退出登录
|
||||
const onLogoutClick = () => {
|
||||
// 1.清除 Token
|
||||
|
@ -21,7 +21,7 @@
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<el-aside :style="{ width: isCollapse ? '65px' : '210px' }">
|
||||
<el-aside :class="{ 'not-aside': !subMenuList.length }" :style="{ width: isCollapse ? '65px' : '210px' }">
|
||||
<div class="logo flex-center">
|
||||
<span class="logo-text">
|
||||
{{ isCollapse ? APP_TITLE_SHORT : APP_TITLE }}
|
||||
|
@ -11,36 +11,6 @@ const home: Menu.MenuOptions = {
|
||||
isLink: '',
|
||||
index: 1,
|
||||
title: '首页'
|
||||
},
|
||||
children: [
|
||||
{
|
||||
component: '/home/aa',
|
||||
name: 'HomeAa',
|
||||
path: '/home/aa',
|
||||
meta: {
|
||||
icon: 'HomeFilled',
|
||||
isAffix: false,
|
||||
isFull: false,
|
||||
isHide: false,
|
||||
isKeepAlive: true,
|
||||
isLink: '',
|
||||
title: 'AA标题'
|
||||
}
|
||||
},
|
||||
{
|
||||
component: '/home/bb',
|
||||
name: 'HomeBb',
|
||||
path: '/home/bb',
|
||||
meta: {
|
||||
icon: 'i-bd-off-screen-one',
|
||||
isAffix: false,
|
||||
isFull: false,
|
||||
isHide: false,
|
||||
isKeepAlive: true,
|
||||
isLink: '',
|
||||
title: 'BB标题'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
export default home;
|
||||
|
@ -63,10 +63,10 @@ meta:
|
||||
</route>
|
||||
|
||||
<script lang="tsx" setup>
|
||||
import { ElButton, ElSpace, ElAvatar } from 'element-plus';
|
||||
import { ElButton, ElSpace, ElAvatar, ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { BU_DOU_CONFIG } from '@/config';
|
||||
// API 接口
|
||||
import { groupDisablelistGet } from '@/api/group';
|
||||
import { groupDisablelistGet, groupLiftbanPut } from '@/api/group';
|
||||
/**
|
||||
* 表格
|
||||
*/
|
||||
@ -101,11 +101,11 @@ const column = reactive<Column.ColumnOptions[]>([
|
||||
label: '群人数'
|
||||
},
|
||||
{
|
||||
prop: 'short_no',
|
||||
prop: 'create_name',
|
||||
label: '群主名称'
|
||||
},
|
||||
{
|
||||
prop: 'register_time',
|
||||
prop: 'create_at',
|
||||
label: '创建时间'
|
||||
},
|
||||
{
|
||||
@ -117,7 +117,7 @@ const column = reactive<Column.ColumnOptions[]>([
|
||||
render: (scope: any) => {
|
||||
return (
|
||||
<ElSpace>
|
||||
<ElButton type="primary" onClick={() => aa(scope.row)}>
|
||||
<ElButton type="primary" onClick={() => onLiftban(scope.row)}>
|
||||
解禁
|
||||
</ElButton>
|
||||
</ElSpace>
|
||||
@ -157,9 +157,40 @@ const onCurrentChange = (current: number) => {
|
||||
queryFrom.page_index = current;
|
||||
getTableList();
|
||||
};
|
||||
|
||||
const aa = (a: any) => {
|
||||
console.log(a);
|
||||
// 封禁/解封操作
|
||||
const onLiftban = (item: any) => {
|
||||
const text = item.status == 1 ? '封禁' : '解禁';
|
||||
ElMessageBox.confirm(`确定要对群组${item.name}${text}吗?`, `${text}群组`, {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
closeOnClickModal: false,
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
const fromLiftban = {
|
||||
groupNo: item.group_no,
|
||||
status: item.status == 1 ? 0 : 1
|
||||
};
|
||||
groupLiftbanPut(fromLiftban)
|
||||
.then((_res: any) => {
|
||||
getTableList();
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: `${text}群组成功!`
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.status == 400) {
|
||||
ElMessage.error(err.msg);
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
ElMessage({
|
||||
type: 'info',
|
||||
message: '取消成功!'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 初始化
|
||||
|
@ -12,7 +12,7 @@
|
||||
<el-input v-model="queryFrom.keyword" placeholder="群名称/群编号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item class="mb-0 !mr-0">
|
||||
<el-button type="primary" @click="getUserList">查询</el-button>
|
||||
<el-button type="primary" @click="getTableList">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -64,10 +64,10 @@ meta:
|
||||
|
||||
<script lang="tsx" setup>
|
||||
import { useRouter } from 'vue-router';
|
||||
import { ElButton, ElSpace, ElAvatar, ElDropdown, ElDropdownMenu, ElDropdownItem } from 'element-plus';
|
||||
import { ElButton, ElSpace, ElAvatar, ElDropdown, ElDropdownMenu, ElDropdownItem, ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { BU_DOU_CONFIG } from '@/config';
|
||||
// API 接口
|
||||
import { groupListGet } from '@/api/group';
|
||||
import { groupListGet, groupForbiddenPut, groupLiftbanPut } from '@/api/group';
|
||||
|
||||
const router = useRouter();
|
||||
/**
|
||||
@ -147,11 +147,26 @@ const column = reactive<Column.ColumnOptions[]>([
|
||||
dropdown: () => {
|
||||
return (
|
||||
<ElDropdownMenu>
|
||||
<ElDropdownItem onClick={() => onGroupdisablelist(scope.row)}>群成员</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onRcord(scope.row)}>聊天记录</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onBlackList(scope.row)}>黑名单成员</ElDropdownItem>
|
||||
<ElDropdownItem>{scope.row.forbidden === 1 ? '禁言中' : '禁言'}</ElDropdownItem>
|
||||
<ElDropdownItem>{scope.row.status === 1 ? '封禁' : '解禁'}</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onGroupdisablelist(scope.row)}>
|
||||
<i-bd-every-user class={'mr-4px'} />
|
||||
群成员
|
||||
</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onRcord(scope.row)}>
|
||||
<i-bd-log class={'mr-4px'} />
|
||||
聊天记录
|
||||
</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onBlackList(scope.row)}>
|
||||
<i-bd-people-unknown class={'mr-4px'} />
|
||||
黑名单成员
|
||||
</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onForbidden(scope.row)}>
|
||||
<i-bd-forbid class={'mr-4px'} />
|
||||
{scope.row.forbidden === 1 ? '禁言中' : '禁言'}
|
||||
</ElDropdownItem>
|
||||
<ElDropdownItem onClick={() => onLiftban(scope.row)}>
|
||||
<i-bd-info class={'mr-4px'} />
|
||||
{scope.row.status === 1 ? '封禁' : '解禁'}
|
||||
</ElDropdownItem>
|
||||
</ElDropdownMenu>
|
||||
);
|
||||
}
|
||||
@ -174,7 +189,7 @@ const queryFrom = reactive({
|
||||
page_index: 1
|
||||
});
|
||||
|
||||
const getUserList = () => {
|
||||
const getTableList = () => {
|
||||
loadTable.value = true;
|
||||
groupListGet(queryFrom).then((res: any) => {
|
||||
loadTable.value = false;
|
||||
@ -186,13 +201,18 @@ const getUserList = () => {
|
||||
// 分页page-size
|
||||
const onSizeChange = (size: number) => {
|
||||
queryFrom.page_size = size;
|
||||
getUserList();
|
||||
getTableList();
|
||||
};
|
||||
|
||||
// 分页page-size
|
||||
const onCurrentChange = (current: number) => {
|
||||
queryFrom.page_index = current;
|
||||
getUserList();
|
||||
getTableList();
|
||||
};
|
||||
|
||||
// 发消息
|
||||
const aa = (a: any) => {
|
||||
console.log(a);
|
||||
};
|
||||
|
||||
// 群成员
|
||||
@ -228,13 +248,80 @@ const onBlackList = (item: any) => {
|
||||
});
|
||||
};
|
||||
|
||||
const aa = (a: any) => {
|
||||
console.log(a);
|
||||
// 禁言/解除禁言操作
|
||||
const onForbidden = (item: any) => {
|
||||
const text = item.forbidden == 1 ? '禁言' : '解除禁言';
|
||||
ElMessageBox.confirm(`确定要对群组${item.name}${text}吗?`, `${text}群组`, {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
closeOnClickModal: false,
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
const fromLiftban = {
|
||||
groupNo: item.group_no,
|
||||
forbidden: item.forbidden == 1 ? 0 : 1
|
||||
};
|
||||
groupForbiddenPut(fromLiftban)
|
||||
.then((_res: any) => {
|
||||
getTableList();
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: `${text}群组成功!`
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.status == 400) {
|
||||
ElMessage.error(err.msg);
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
ElMessage({
|
||||
type: 'info',
|
||||
message: '取消成功!'
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// 封禁/解封操作
|
||||
const onLiftban = (item: any) => {
|
||||
const text = item.status == 1 ? '封禁' : '解禁';
|
||||
ElMessageBox.confirm(`确定要对群组${item.name}${text}吗?`, `${text}群组`, {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
closeOnClickModal: false,
|
||||
type: 'warning'
|
||||
})
|
||||
.then(() => {
|
||||
const fromLiftban = {
|
||||
groupNo: item.group_no,
|
||||
status: item.status == 1 ? 0 : 1
|
||||
};
|
||||
groupLiftbanPut(fromLiftban)
|
||||
.then((_res: any) => {
|
||||
getTableList();
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: `${text}群组成功!`
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
if (err.status == 400) {
|
||||
ElMessage.error(err.msg);
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {
|
||||
ElMessage({
|
||||
type: 'info',
|
||||
message: '取消成功!'
|
||||
});
|
||||
});
|
||||
};
|
||||
// 初始化
|
||||
onMounted(() => {
|
||||
getUserList();
|
||||
getTableList();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -1,20 +1,84 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="wh-full flex-col">
|
||||
<!-- 布局 -->
|
||||
添加用户
|
||||
<div class="flex-1 el-card border-none flex-col box-border overflow-hidden">
|
||||
<div class="h-50px pl-12px pr-12px box-border flex items-center justify-between bd-title">
|
||||
<div class="bd-title-left">
|
||||
<p class="m-0 font-600">添加用户</p>
|
||||
</div>
|
||||
<div class="flex items-center h-50px"></div>
|
||||
</div>
|
||||
<div class="flex-1 overflow-hidden p-12px">
|
||||
<div class="w-540px">
|
||||
<el-form :model="formData" label-width="120px">
|
||||
<el-form-item label="区号:">
|
||||
<el-select v-model="formData.zone" class="!w-100%">
|
||||
<el-option label="0086" value="0086" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号:">
|
||||
<el-input v-model="formData.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别:">
|
||||
<el-radio-group v-model="formData.sex">
|
||||
<el-radio :label="1">男</el-radio>
|
||||
<el-radio :label="0">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户昵称:">
|
||||
<el-input v-model="formData.name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="登录密码:">
|
||||
<el-input v-model="formData.password" type="password" show-password />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loginButLoading" class="!w-100%" type="primary" @click="onSaveClick">保存</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<route lang="yaml">
|
||||
meta:
|
||||
title: 添加用户
|
||||
isAffix: false
|
||||
</route>
|
||||
|
||||
<script lang="ts" setup>
|
||||
// 逻辑代码
|
||||
import { ElMessage } from 'element-plus';
|
||||
// API 接口
|
||||
import { userAddPost } from '@/api/user';
|
||||
// 表单
|
||||
const formData = reactive({
|
||||
name: '',
|
||||
zone: '0086',
|
||||
sex: 1,
|
||||
phone: '',
|
||||
password: ''
|
||||
});
|
||||
|
||||
// 更新通用设置
|
||||
const loginButLoading = ref(false);
|
||||
const onSaveClick = () => {
|
||||
loginButLoading.value = true;
|
||||
userAddPost(formData)
|
||||
.then((_res: any) => {
|
||||
loginButLoading.value = false;
|
||||
ElMessage.success('添加成功');
|
||||
})
|
||||
.catch(err => {
|
||||
loginButLoading.value = false;
|
||||
if (err.status == 400) {
|
||||
ElMessage.error(err.msg);
|
||||
}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 样式
|
||||
.bd-title {
|
||||
border-bottom: 1px solid var(--el-card-border-color);
|
||||
}
|
||||
</style>
|
||||
|
Loading…
x
Reference in New Issue
Block a user