feat(角色管理): 添加获取全部角色接口并优化角色排序逻辑
- 新增getRoleAllApi接口用于获取所有角色数据 - 在角色列表查询中使用新接口并添加排序逻辑,将base角色置顶,admin角色置底 - 添加空值检查防止角色信息未找到时出错 - 在企业微信余额模块中,将总余额显示拆分为总借呗和已用借呗,并更新相关接口返回类型
This commit is contained in:
parent
9862f8bff8
commit
dd957140e4
|
@ -4,6 +4,13 @@ import { UserDTO } from "../system/user";
|
|||
/**
|
||||
* 企业微信用户信息
|
||||
*/
|
||||
export interface QyUserStatsDTO {
|
||||
/** 用户余额 */
|
||||
balance?: number;
|
||||
/** 已使用余额 */
|
||||
useBalance?: number;
|
||||
}
|
||||
|
||||
export interface QyUserDTO {
|
||||
/** 用户ID(导出列:用户ID) */
|
||||
id?: number;
|
||||
|
@ -131,7 +138,7 @@ export const getQyUserDetailApi = (id: number) => {
|
|||
};
|
||||
|
||||
export const getTotalBalanceApi = (corpid: string) => {
|
||||
return http.request<ResponseData<number>>("get", `/qywx/users/getTotalBalance`, {
|
||||
return http.request<ResponseData<QyUserStatsDTO>>("get", `/qywx/users/getTotalBalance`, {
|
||||
params: { corpid }
|
||||
});
|
||||
};
|
|
@ -30,6 +30,16 @@ export function getRoleListApi(params: RoleQuery) {
|
|||
);
|
||||
}
|
||||
|
||||
export function getRoleAllApi(params: RoleQuery) {
|
||||
return http.request<ResponseData<RoleDTO[]>>(
|
||||
"get",
|
||||
"/system/role/all",
|
||||
{
|
||||
params
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export function getRoleInfoApi(roleId: number) {
|
||||
return http.request<ResponseData<RoleDTO>>("get", "/system/role/" + roleId);
|
||||
}
|
||||
|
|
|
@ -34,13 +34,13 @@ const pagination = ref({
|
|||
|
||||
const loading = ref(false);
|
||||
const dataList = ref<QyUserDTO[]>([]);
|
||||
const totalBalance = ref(0);
|
||||
|
||||
const balanceData = ref([
|
||||
{
|
||||
name: '用户总余额', value:
|
||||
totalBalance.value.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
||||
+ '元'
|
||||
name: '用户总借呗', value: '0元',
|
||||
},
|
||||
{
|
||||
name: '已用总借呗', value: '0元',
|
||||
},
|
||||
]);
|
||||
|
||||
|
@ -93,8 +93,10 @@ const handlePaginationChange = () => getList();
|
|||
const getTotalBalance = async () => {
|
||||
try {
|
||||
const { data } = await getTotalBalanceApi(wxStore.corpid);
|
||||
totalBalance.value = data;
|
||||
balanceData.value[0].value = data.toLocaleString('en-US',
|
||||
balanceData.value[0].value = data.balance.toLocaleString('en-US',
|
||||
{ minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
||||
+ '元';
|
||||
balanceData.value[1].value = data.useBalance.toLocaleString('en-US',
|
||||
{ minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
||||
+ '元';
|
||||
} catch (error) {
|
||||
|
@ -156,8 +158,16 @@ getList().then(() => getTotalBalance());
|
|||
<el-table ref="tableRef" v-loading="loading" :data="dataList" border>
|
||||
<el-table-column label="用户ID" prop="id" width="80" />
|
||||
<el-table-column label="姓名" prop="name" width="200" />
|
||||
<el-table-column label="余额" prop="balance" width="230">
|
||||
<template #default="{ row }">{{ row.balance.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 2 }) || 0 }}元</template>
|
||||
<el-table-column label="借呗" prop="balance" width="230">
|
||||
<template #default="{ row }">{{ row.balance.toLocaleString('en-US', { minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2 }) || 0 }}元</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="已用借呗" prop="balance" width="230">
|
||||
<template #default="{ row }">{{ row.useBalance.toLocaleString('en-US', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2
|
||||
}) || 0 }}元
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="手机号" prop="mobile" />
|
||||
<!-- <el-table-column label="所属部门" prop="department" /> -->
|
||||
|
|
|
@ -81,6 +81,9 @@ const rules: FormRules = {
|
|||
watch(activeTab, async (val) => {
|
||||
console.log("activeTab", val); // 输出当前选中的标签的 key 或其他标识符
|
||||
opRow.value = dataList.value.find(item => item.roleKey == val);
|
||||
if (!opRow.value) {
|
||||
return;
|
||||
}
|
||||
await getRoleInfo("update", opRow.value);
|
||||
Object.assign(formData, opRow.value);
|
||||
formData.menuIds = opRow.value.selectedMenuList;
|
||||
|
@ -154,6 +157,7 @@ async function handleConfirm() {
|
|||
try {
|
||||
await formRef.value?.validate();
|
||||
loading.value = true;
|
||||
console.log("opType", opType.value);
|
||||
if (opType.value === 'add') {
|
||||
await addRoleApi(formData as AddRoleCommand);
|
||||
} else {
|
||||
|
|
|
@ -2,6 +2,7 @@ import dayjs from "dayjs";
|
|||
import { message } from "@/utils/message";
|
||||
import {
|
||||
deleteRoleApi,
|
||||
getRoleAllApi,
|
||||
getRoleListApi,
|
||||
RoleDTO,
|
||||
RoleQuery
|
||||
|
@ -150,10 +151,16 @@ export function useRole() {
|
|||
async function onSearch() {
|
||||
try {
|
||||
loading.value = true;
|
||||
const { data } = await getRoleListApi(toRaw(form));
|
||||
const { data } = await getRoleAllApi(toRaw(form));
|
||||
console.log("role list", data);
|
||||
dataList.value = data.rows;
|
||||
pagination.total = data.total;
|
||||
// 重新排序:base排第一,admin排最后
|
||||
dataList.value = data.sort((a, b) => {
|
||||
if (a.roleKey === 'base') return -1;
|
||||
if (b.roleKey === 'base') return 1;
|
||||
if (a.roleKey === 'admin') return 1;
|
||||
if (b.roleKey === 'admin') return -1;
|
||||
return 0;
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
ElMessage.error((e as Error)?.message || "加载失败");
|
||||
|
@ -190,7 +197,7 @@ export function useRole() {
|
|||
form,
|
||||
loading,
|
||||
columns,
|
||||
dataList,
|
||||
dataList,
|
||||
activeTab,
|
||||
pagination,
|
||||
onSearch,
|
||||
|
|
Loading…
Reference in New Issue