完善日志管理
This commit is contained in:
@@ -10,6 +10,10 @@ export function doGetlogList(params?: Api.SystemManage.UserSearchParams) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function doDeleteLog(userId: any) {
|
export function doDeleteLog(userId: any) {
|
||||||
console.log(userId,+userId.join(','));
|
|
||||||
return request({ url: `/system/operlog/${userId.join(',')}`, method: 'delete' });
|
return request({ url: `/system/operlog/${userId.join(',')}`, method: 'delete' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function doExportLog() {
|
||||||
|
return request({ url: `/system/operlog/export`, method: 'post', responseType: 'blob'});
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
<script setup lang="tsx">
|
<script setup lang="tsx">
|
||||||
import { Button, Popconfirm, Tag } from 'ant-design-vue';
|
import { message, Modal, Tag } from 'ant-design-vue';
|
||||||
import type { Key } from 'ant-design-vue/es/_util/type';
|
import type { Key } from 'ant-design-vue/es/_util/type';
|
||||||
import { useTable, useTableOperate } from '@/hooks/common/table';
|
import { useTable, useTableOperate } from '@/hooks/common/table';
|
||||||
import { SimpleScrollbar } from '~/packages/materials/src';
|
import { SimpleScrollbar } from '~/packages/materials/src';
|
||||||
import logSearch from './modules/log-search.vue';
|
import logSearch from './modules/log-search.vue';
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
|
import { saveAs } from 'file-saver';
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
|
||||||
@@ -113,24 +114,6 @@ const { columns, columnChecks, data, loading, getData, mobilePagination, searchP
|
|||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// key: 'operate',
|
|
||||||
// title: t('common.operate'),
|
|
||||||
// align: 'center',
|
|
||||||
// width: 200,
|
|
||||||
// customRender: ({ record }: any) =>
|
|
||||||
// !record.admin && (
|
|
||||||
// <div class="flex justify-around gap-8px">
|
|
||||||
// {isShowBtn('system:user:remove') && (
|
|
||||||
// <Popconfirm onConfirm={() => handleDelete(record.operId)} title={t('common.confirmDelete')} >
|
|
||||||
// <Button danger size="small" >
|
|
||||||
// {t('common.delete')}
|
|
||||||
// </Button>
|
|
||||||
// </Popconfirm>
|
|
||||||
// )}
|
|
||||||
// </div>
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -138,7 +121,6 @@ const {
|
|||||||
handleAdd,
|
handleAdd,
|
||||||
checkedRowKeys,
|
checkedRowKeys,
|
||||||
onBatchDeleted,
|
onBatchDeleted,
|
||||||
onDeleted
|
|
||||||
// closeDrawer
|
// closeDrawer
|
||||||
} = useTableOperate(data, { getData, idKey: 'operId' });
|
} = useTableOperate(data, { getData, idKey: 'operId' });
|
||||||
const deptTreeData = ref<Api.Common.CommonTree>([]);
|
const deptTreeData = ref<Api.Common.CommonTree>([]);
|
||||||
@@ -154,31 +136,12 @@ async function handleBatchDelete() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function handleDelete(id: number) {
|
|
||||||
const { error } = await doDeleteLog([id]);
|
|
||||||
if (!error) {
|
|
||||||
onDeleted();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function handleUserSelectChange(selectedRowKeys: Key[], selectedRows: any[]) {
|
function handleUserSelectChange(selectedRowKeys: Key[], selectedRows: any[]) {
|
||||||
checkedRowKeys.value = selectedRowKeys as number[];
|
checkedRowKeys.value = selectedRowKeys as number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
function fnTest() {
|
|
||||||
searchParams.value = {
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
resetSearchParams();
|
|
||||||
// 使用 nextTick 确保视图更新后检查
|
|
||||||
nextTick(() => {
|
|
||||||
console.log('视图更新后:', { ...searchParams.value });
|
|
||||||
console.log(searchParams.value);
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function getUserDeptTree() {
|
async function getUserDeptTree() {
|
||||||
const { error, data: tree } = await doGetUserDeptTree();
|
const { error, data: tree } = await doGetUserDeptTree();
|
||||||
@@ -186,18 +149,41 @@ async function getUserDeptTree() {
|
|||||||
deptTreeData.value = tree;
|
deptTreeData.value = tree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleExport() {
|
||||||
|
Modal.confirm({
|
||||||
|
title: t('common.tipTitle'),
|
||||||
|
content: t('common.exportTip'),
|
||||||
|
onOk() {
|
||||||
|
const key = 'exportJob';
|
||||||
|
message.loading({ content: t('common.loading'), key });
|
||||||
|
doExportLog().then(res => {
|
||||||
|
if (!res.error) {
|
||||||
|
message.success({
|
||||||
|
content: t('common.exportOk'),
|
||||||
|
key,
|
||||||
|
duration: 2,
|
||||||
|
});
|
||||||
|
saveAs(res.data, `oper_${Date.now()}.xlsx`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<SimpleScrollbar>
|
<SimpleScrollbar>
|
||||||
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
|
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
|
||||||
<logSearch v-model:model="searchParams" :dept-tree-data="deptTreeData" @reset="fnTest" @search="getData" />
|
<logSearch v-model:model="searchParams" :dept-tree-data="deptTreeData" @reset="resetSearchParams"
|
||||||
|
@search="getData" />
|
||||||
<ACard :title="t('page.manage.user.title')" :bordered="false" :body-style="{ flex: 1, overflow: 'hidden' }"
|
<ACard :title="t('page.manage.user.title')" :bordered="false" :body-style="{ flex: 1, overflow: 'hidden' }"
|
||||||
class="flex-col-stretch sm:flex-1-hidden card-wrapper">
|
class="flex-col-stretch sm:flex-1-hidden card-wrapper">
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<TableHeaderOperation v-model:columns="columnChecks" :disabled-delete="checkedRowKeys.length === 0"
|
<TableHeaderOperation v-model:columns="columnChecks" :disabled-delete="checkedRowKeys.length === 0"
|
||||||
:loading="loading" :show-delete="true" @add="handleAdd" @delete="handleBatchDelete" @refresh="getData"
|
:loading="loading" :show-delete="true" @add="handleAdd" @delete="handleBatchDelete" @export="handleExport"
|
||||||
:not-show-add="true" />
|
@refresh="getData" :not-show-add="true" :show-export="true" />
|
||||||
</template>
|
</template>
|
||||||
<ATable ref="wrapperEl" row-key="operId" :columns="columns" :data-source="data" :loading="loading"
|
<ATable ref="wrapperEl" row-key="operId" :columns="columns" :data-source="data" :loading="loading"
|
||||||
:row-selection="{
|
:row-selection="{
|
||||||
|
|||||||
Reference in New Issue
Block a user