feat: 新增工具接口调试

This commit is contained in:
wanglihui 2023-07-08 21:49:20 +08:00
parent 1b5937445f
commit 0adb7f13b0
7 changed files with 168 additions and 309 deletions

10
src/api/report.ts Normal file
View File

@ -0,0 +1,10 @@
import request from '@/utils/axios';
// 举报列表
export function reportListGet(params: any) {
return request({
url: '/manager/report/list',
method: 'get',
params
});
}

19
src/api/tool.ts Normal file
View File

@ -0,0 +1,19 @@
import request from '@/utils/axios';
// APP列表
export function commonAppversionListGet(params: any) {
return request({
url: '/common/appversion/list',
method: 'get',
params
});
}
// 系统机器人菜单列表
export function robotMenusGet(params: any) {
return request({
url: '/manager/robot/menus',
method: 'get',
params
});
}

View File

@ -6,16 +6,7 @@
<div class="bd-title-left"> <div class="bd-title-left">
<p class="m-0 font-600">举报群聊</p> <p class="m-0 font-600">举报群聊</p>
</div> </div>
<div class="flex items-center h-50px"> <div class="flex items-center h-50px"></div>
<el-form inline>
<el-form-item class="mb-0 !mr-16px">
<el-input v-model="queryFrom.keyword" placeholder="uid/手机号/用户名" clearable />
</el-form-item>
<el-form-item class="mb-0 !mr-0">
<el-button type="primary" @click="getUserList">查询</el-button>
</el-form-item>
</el-form>
</div>
</div> </div>
<div class="flex-1 overflow-hidden p-12px"> <div class="flex-1 overflow-hidden p-12px">
<el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%"> <el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%">
@ -63,86 +54,70 @@ meta:
</route> </route>
<script lang="tsx" setup> <script lang="tsx" setup>
import { ElButton, ElSpace, ElAvatar } from 'element-plus'; import { ElAvatar } from 'element-plus';
import { BU_DOU_CONFIG } from '@/config'; import { BU_DOU_CONFIG } from '@/config';
// API // API
import { userListGet } from '@/api/user'; import { reportListGet } from '@/api/report';
/** /**
* 表格 * 表格
*/ */
const column = reactive([ const column = reactive<Column.ColumnOptions[]>([
{ {
prop: 'name', prop: 'name',
label: '用户名', label: '举报者名称',
fixed: 'left',
width: 140 width: 140
}, },
{ {
prop: 'phone', prop: 'uid',
label: '手机号', label: '举报者ID',
fixed: 'left',
width: 120 width: 120
}, },
{ {
prop: 'avatar', prop: 'channel_name',
label: '头像', label: '被举报群名称',
width: 200
},
{
prop: 'channel_avatar',
label: '被举报群头像',
align: 'center', align: 'center',
width: 80, width: 130,
render: (scope: any) => { render: (scope: any) => {
let img_url = ''; let img_url = '';
if (scope.row['uid']) { if (scope.row['channel_id']) {
img_url = `${BU_DOU_CONFIG.APP_URL}users/${scope.row['uid']}/avatar`; img_url = `${BU_DOU_CONFIG.APP_URL}groups/${scope.row['channel_id']}/avatar`;
} }
return ( return (
<ElAvatar src={img_url} size={54}> <ElAvatar src={img_url} size={54}>
{scope.row['name']} {scope.row['channel_name']}
</ElAvatar> </ElAvatar>
); );
} }
}, },
{ {
prop: 'uid', prop: 'channel_id',
label: '用户ID', label: '被举报群ID',
minWidth: 300 width: 200
}, },
{ {
prop: 'short_no', prop: 'imgs',
label: '悟空号' label: '举报图片',
minWidth: 120
}, },
{ {
prop: 'sex', prop: 'category_name',
label: '性别', label: '举报原因',
width: 60, minWidth: 180
formatter(row: any) {
return row.sex === 1 ? '男' : '女';
}
}, },
{ {
prop: 'register_time', prop: 'remark',
label: '注册时间', label: '举报说明',
minWidth: 170
},
{
prop: 'create_at',
label: '举报时间',
width: 170 width: 170
},
{
prop: 'last_online_time',
label: '封禁日期',
width: 150
},
{
prop: 'operation',
label: '操作',
align: 'center',
fixed: 'right',
width: 180,
render: (scope: any) => {
return (
<ElSpace>
<ElButton type="primary" onClick={() => aa(scope.row)}>
发消息
</ElButton>
<ElButton>更多</ElButton>
</ElSpace>
);
}
} }
]); ]);
const tableData = ref<any[]>([]); const tableData = ref<any[]>([]);
@ -152,14 +127,14 @@ const total = ref(0);
// //
const queryFrom = reactive({ const queryFrom = reactive({
keyword: '', channel_type: '2',
page_size: 15, page_size: 15,
page_index: 1 page_index: 1
}); });
const getUserList = () => { const getTableList = () => {
loadTable.value = true; loadTable.value = true;
userListGet(queryFrom).then((res: any) => { reportListGet(queryFrom).then((res: any) => {
loadTable.value = false; loadTable.value = false;
tableData.value = res.list; tableData.value = res.list;
total.value = res.count; total.value = res.count;
@ -169,22 +144,18 @@ const getUserList = () => {
// page-size // page-size
const onSizeChange = (size: number) => { const onSizeChange = (size: number) => {
queryFrom.page_size = size; queryFrom.page_size = size;
getUserList(); getTableList();
}; };
// page-size // page-size
const onCurrentChange = (current: number) => { const onCurrentChange = (current: number) => {
queryFrom.page_index = current; queryFrom.page_index = current;
getUserList(); getTableList();
};
const aa = (a: any) => {
console.log(a);
}; };
// //
onMounted(() => { onMounted(() => {
getUserList(); getTableList();
}); });
</script> </script>

View File

@ -6,16 +6,7 @@
<div class="bd-title-left"> <div class="bd-title-left">
<p class="m-0 font-600">举报用户</p> <p class="m-0 font-600">举报用户</p>
</div> </div>
<div class="flex items-center h-50px"> <div class="flex items-center h-50px"></div>
<el-form inline>
<el-form-item class="mb-0 !mr-16px">
<el-input v-model="queryFrom.keyword" placeholder="uid/手机号/用户名" clearable />
</el-form-item>
<el-form-item class="mb-0 !mr-0">
<el-button type="primary" @click="getUserList">查询</el-button>
</el-form-item>
</el-form>
</div>
</div> </div>
<div class="flex-1 overflow-hidden p-12px"> <div class="flex-1 overflow-hidden p-12px">
<el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%"> <el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%">
@ -63,86 +54,70 @@ meta:
</route> </route>
<script lang="tsx" setup> <script lang="tsx" setup>
import { ElButton, ElSpace, ElAvatar } from 'element-plus'; import { ElAvatar } from 'element-plus';
import { BU_DOU_CONFIG } from '@/config'; import { BU_DOU_CONFIG } from '@/config';
// API // API
import { userListGet } from '@/api/user'; import { reportListGet } from '@/api/report';
/** /**
* 表格 * 表格
*/ */
const column = reactive([ const column = reactive<Column.ColumnOptions[]>([
{ {
prop: 'name', prop: 'name',
label: '用户名', label: '举报者名称',
fixed: 'left',
width: 140 width: 140
}, },
{ {
prop: 'phone', prop: 'uid',
label: '手机号', label: '举报者ID',
fixed: 'left',
width: 120 width: 120
}, },
{ {
prop: 'avatar', prop: 'channel_name',
label: '头像', label: '被举报用户名称',
width: 200
},
{
prop: 'channel_avatar',
label: '被举报用户头像',
align: 'center', align: 'center',
width: 80, width: 130,
render: (scope: any) => { render: (scope: any) => {
let img_url = ''; let img_url = '';
if (scope.row['uid']) { if (scope.row['channel_id']) {
img_url = `${BU_DOU_CONFIG.APP_URL}users/${scope.row['uid']}/avatar`; img_url = `${BU_DOU_CONFIG.APP_URL}users/${scope.row['channel_id']}/avatar`;
} }
return ( return (
<ElAvatar src={img_url} size={54}> <ElAvatar src={img_url} size={54}>
{scope.row['name']} {scope.row['channel_name']}
</ElAvatar> </ElAvatar>
); );
} }
}, },
{ {
prop: 'uid', prop: 'channel_id',
label: '用户ID', label: '被举报用户ID',
minWidth: 300 width: 200
}, },
{ {
prop: 'short_no', prop: 'imgs',
label: '悟空号' label: '举报图片',
minWidth: 120
}, },
{ {
prop: 'sex', prop: 'category_name',
label: '性别', label: '举报原因',
width: 60, minWidth: 180
formatter(row: any) {
return row.sex === 1 ? '男' : '女';
}
}, },
{ {
prop: 'register_time', prop: 'remark',
label: '注册时间', label: '举报说明',
minWidth: 170
},
{
prop: 'create_at',
label: '举报时间',
width: 170 width: 170
},
{
prop: 'last_online_time',
label: '封禁日期',
width: 150
},
{
prop: 'operation',
label: '操作',
align: 'center',
fixed: 'right',
width: 180,
render: (scope: any) => {
return (
<ElSpace>
<ElButton type="primary" onClick={() => aa(scope.row)}>
发消息
</ElButton>
<ElButton>更多</ElButton>
</ElSpace>
);
}
} }
]); ]);
const tableData = ref<any[]>([]); const tableData = ref<any[]>([]);
@ -152,14 +127,14 @@ const total = ref(0);
// //
const queryFrom = reactive({ const queryFrom = reactive({
keyword: '', channel_type: '1',
page_size: 15, page_size: 15,
page_index: 1 page_index: 1
}); });
const getUserList = () => { const getTableList = () => {
loadTable.value = true; loadTable.value = true;
userListGet(queryFrom).then((res: any) => { reportListGet(queryFrom).then((res: any) => {
loadTable.value = false; loadTable.value = false;
tableData.value = res.list; tableData.value = res.list;
total.value = res.count; total.value = res.count;
@ -169,22 +144,18 @@ const getUserList = () => {
// page-size // page-size
const onSizeChange = (size: number) => { const onSizeChange = (size: number) => {
queryFrom.page_size = size; queryFrom.page_size = size;
getUserList(); getTableList();
}; };
// page-size // page-size
const onCurrentChange = (current: number) => { const onCurrentChange = (current: number) => {
queryFrom.page_index = current; queryFrom.page_index = current;
getUserList(); getTableList();
};
const aa = (a: any) => {
console.log(a);
}; };
// //
onMounted(() => { onMounted(() => {
getUserList(); getTableList();
}); });
</script> </script>

View File

@ -8,11 +8,8 @@
</div> </div>
<div class="flex items-center h-50px"> <div class="flex items-center h-50px">
<el-form inline> <el-form inline>
<el-form-item class="mb-0 !mr-16px">
<el-input v-model="queryFrom.keyword" placeholder="uid/手机号/用户名" clearable />
</el-form-item>
<el-form-item class="mb-0 !mr-0"> <el-form-item class="mb-0 !mr-0">
<el-button type="primary" @click="getUserList">查询</el-button> <el-button type="primary">新增版本</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -63,86 +60,36 @@ meta:
</route> </route>
<script lang="tsx" setup> <script lang="tsx" setup>
import { ElButton, ElSpace, ElAvatar } from 'element-plus'; import { ElButton } from 'element-plus';
import { BU_DOU_CONFIG } from '@/config';
// API // API
import { userListGet } from '@/api/user'; import { commonAppversionListGet } from '@/api/tool';
/** /**
* 表格 * 表格
*/ */
const column = reactive([ const column = reactive<Column.ColumnOptions[]>([
{ {
prop: 'name', prop: 'os',
label: '用户名', label: '升级平台',
fixed: 'left',
width: 140 width: 140
}, },
{ {
prop: 'phone', prop: 'app_version',
label: '手机号', label: '升级版本号',
fixed: 'left',
width: 120 width: 120
}, },
{ {
prop: 'avatar', prop: 'is_force',
label: '头像', label: '是否强制更新',
align: 'center', width: 220
width: 80,
render: (scope: any) => {
let img_url = '';
if (scope.row['uid']) {
img_url = `${BU_DOU_CONFIG.APP_URL}users/${scope.row['uid']}/avatar`;
}
return (
<ElAvatar src={img_url} size={54}>
{scope.row['name']}
</ElAvatar>
);
}
}, },
{ {
prop: 'uid', prop: 'update_desc',
label: '用户ID', label: '升级说明'
minWidth: 300
}, },
{ {
prop: 'short_no', prop: 'created_at',
label: '悟空号' label: '发布时间',
},
{
prop: 'sex',
label: '性别',
width: 60,
formatter(row: any) {
return row.sex === 1 ? '男' : '女';
}
},
{
prop: 'register_time',
label: '注册时间',
width: 170 width: 170
},
{
prop: 'last_online_time',
label: '封禁日期',
width: 150
},
{
prop: 'operation',
label: '操作',
align: 'center',
fixed: 'right',
width: 180,
render: (scope: any) => {
return (
<ElSpace>
<ElButton type="primary" onClick={() => aa(scope.row)}>
发消息
</ElButton>
<ElButton>更多</ElButton>
</ElSpace>
);
}
} }
]); ]);
const tableData = ref<any[]>([]); const tableData = ref<any[]>([]);
@ -152,14 +99,13 @@ const total = ref(0);
// //
const queryFrom = reactive({ const queryFrom = reactive({
keyword: '',
page_size: 15, page_size: 15,
page_index: 1 page_index: 1
}); });
const getUserList = () => { const getTableList = () => {
loadTable.value = true; loadTable.value = true;
userListGet(queryFrom).then((res: any) => { commonAppversionListGet(queryFrom).then((res: any) => {
loadTable.value = false; loadTable.value = false;
tableData.value = res.list; tableData.value = res.list;
total.value = res.count; total.value = res.count;
@ -169,22 +115,18 @@ const getUserList = () => {
// page-size // page-size
const onSizeChange = (size: number) => { const onSizeChange = (size: number) => {
queryFrom.page_size = size; queryFrom.page_size = size;
getUserList(); getTableList();
}; };
// page-size // page-size
const onCurrentChange = (current: number) => { const onCurrentChange = (current: number) => {
queryFrom.page_index = current; queryFrom.page_index = current;
getUserList(); getTableList();
};
const aa = (a: any) => {
console.log(a);
}; };
// //
onMounted(() => { onMounted(() => {
getUserList(); getTableList();
}); });
</script> </script>

View File

@ -6,16 +6,7 @@
<div class="bd-title-left"> <div class="bd-title-left">
<p class="m-0 font-600">系统机器人菜单列表</p> <p class="m-0 font-600">系统机器人菜单列表</p>
</div> </div>
<div class="flex items-center h-50px"> <div class="flex items-center h-50px"></div>
<el-form inline>
<el-form-item class="mb-0 !mr-16px">
<el-input v-model="queryFrom.keyword" placeholder="uid/手机号/用户名" clearable />
</el-form-item>
<el-form-item class="mb-0 !mr-0">
<el-button type="primary" @click="getUserList">查询</el-button>
</el-form-item>
</el-form>
</div>
</div> </div>
<div class="flex-1 overflow-hidden p-12px"> <div class="flex-1 overflow-hidden p-12px">
<el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%"> <el-table v-loading="loadTable" :data="tableData" :border="true" style="width: 100%; height: 100%">
@ -39,19 +30,6 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="bd-card-footer pl-12px pr-12px mb-12px flex items-center justify-between">
<div></div>
<el-pagination
v-model:current-page="queryFrom.page_index"
v-model:page-size="queryFrom.page_size"
:page-sizes="[15, 20, 30, 50, 100]"
:background="true"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="onSizeChange"
@current-change="onCurrentChange"
/>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -63,83 +41,65 @@ meta:
</route> </route>
<script lang="tsx" setup> <script lang="tsx" setup>
import { ElButton, ElSpace, ElAvatar } from 'element-plus'; import { ElSpace, ElButton, ElTag, ElText } from 'element-plus';
import { BU_DOU_CONFIG } from '@/config';
// API // API
import { userListGet } from '@/api/user'; import { robotMenusGet } from '@/api/tool';
/** /**
* 表格 * 表格
*/ */
const column = reactive([ const column = reactive<Column.ColumnOptions[]>([
{ {
prop: 'name', prop: 'cmd',
label: '用户名', label: '命令',
fixed: 'left', width: 140,
width: 140
},
{
prop: 'phone',
label: '手机号',
fixed: 'left',
width: 120
},
{
prop: 'avatar',
label: '头像',
align: 'center',
width: 80,
render: (scope: any) => { render: (scope: any) => {
let img_url = '';
if (scope.row['uid']) {
img_url = `${BU_DOU_CONFIG.APP_URL}users/${scope.row['uid']}/avatar`;
}
return ( return (
<ElAvatar src={img_url} size={54}> <ElText type="primary" class={'cursor-pointer'}>
{scope.row['name']} {scope.row['cmd']}
</ElAvatar> </ElText>
); );
} }
}, },
{ {
prop: 'uid', prop: 'robot_id',
label: '用户ID', label: '机器人ID',
minWidth: 300 width: 140
}, },
{ {
prop: 'short_no', prop: 'remark',
label: '悟空号' label: '说明'
}, },
{ {
prop: 'sex', prop: 'type',
label: '性别', label: '类型',
width: 60, align: 'center',
formatter(row: any) { width: 80,
return row.sex === 1 ? '男' : '女'; render: (scope: any) => {
return <ElTag>{scope.row['type']}</ElTag>;
} }
}, },
{ {
prop: 'register_time', prop: 'created_at',
label: '注册时间', label: '创建时间',
width: 170 width: 170
}, },
{ {
prop: 'last_online_time', prop: 'updated_at',
label: '封禁日期', label: '更新时间',
width: 150 width: 170
}, },
{ {
prop: 'operation', prop: 'operation',
label: '操作', label: '操作',
align: 'center', align: 'center',
fixed: 'right', fixed: 'right',
width: 180, width: 120,
render: (scope: any) => { render: (scope: any) => {
return ( return (
<ElSpace> <ElSpace>
<ElButton type="primary" onClick={() => aa(scope.row)}> <ElButton type="danger" onClick={() => aa(scope.row)}>
发消息 删除
</ElButton> </ElButton>
<ElButton>更多</ElButton>
</ElSpace> </ElSpace>
); );
} }
@ -147,44 +107,29 @@ const column = reactive([
]); ]);
const tableData = ref<any[]>([]); const tableData = ref<any[]>([]);
const loadTable = ref<boolean>(false); const loadTable = ref<boolean>(false);
//
const total = ref(0);
// //
const queryFrom = reactive({ const queryFrom = reactive({
keyword: '', robot_id: 'u_10000',
page_size: 15, page_size: 15,
page_index: 1 page_index: 1
}); });
const getUserList = () => { const getTableList = () => {
loadTable.value = true; loadTable.value = true;
userListGet(queryFrom).then((res: any) => { robotMenusGet(queryFrom).then((res: any) => {
loadTable.value = false; loadTable.value = false;
tableData.value = res.list; tableData.value = res;
total.value = res.count;
}); });
}; };
// page-size
const onSizeChange = (size: number) => {
queryFrom.page_size = size;
getUserList();
};
// page-size
const onCurrentChange = (current: number) => {
queryFrom.page_index = current;
getUserList();
};
const aa = (a: any) => { const aa = (a: any) => {
console.log(a); console.log(a);
}; };
// //
onMounted(() => { onMounted(() => {
getUserList(); getTableList();
}); });
</script> </script>

View File

@ -82,10 +82,11 @@ declare namespace Column {
interface ColumnOptions { interface ColumnOptions {
prop: string; prop: string;
label: string; label: string;
fixed?: string; type?: 'selection' | 'index' | 'expand';
width?: number; fixed?: true | 'left' | 'right';
minWidth?: number; width?: string | number;
align?: string; minWidth?: string | number;
align?: 'left' | 'center' | 'right';
formatter?: (scope: any) => void; formatter?: (scope: any) => void;
render?: (scope: any) => VNode; render?: (scope: any) => VNode;
} }