mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-06 00:18:51 +08:00
118 lines
2.3 KiB
TypeScript
118 lines
2.3 KiB
TypeScript
import dayjs from "dayjs";
|
|
import { message } from "@/utils/message";
|
|
import { getOnlineLogsList } from "@/api/system";
|
|
import { reactive, ref, onMounted, toRaw } from "vue";
|
|
import type { PaginationProps } from "@pureadmin/table";
|
|
|
|
export function useRole() {
|
|
const form = reactive({
|
|
username: ""
|
|
});
|
|
const dataList = ref([]);
|
|
const loading = ref(true);
|
|
const pagination = reactive<PaginationProps>({
|
|
total: 0,
|
|
pageSize: 10,
|
|
currentPage: 1,
|
|
background: true
|
|
});
|
|
const columns: TableColumnList = [
|
|
{
|
|
label: "序号",
|
|
prop: "id",
|
|
minWidth: 60
|
|
},
|
|
{
|
|
label: "用户名",
|
|
prop: "username",
|
|
minWidth: 100
|
|
},
|
|
{
|
|
label: "登录 IP",
|
|
prop: "ip",
|
|
minWidth: 140
|
|
},
|
|
{
|
|
label: "登录地点",
|
|
prop: "address",
|
|
minWidth: 140
|
|
},
|
|
{
|
|
label: "操作系统",
|
|
prop: "system",
|
|
minWidth: 100
|
|
},
|
|
{
|
|
label: "浏览器类型",
|
|
prop: "browser",
|
|
minWidth: 100
|
|
},
|
|
{
|
|
label: "登录时间",
|
|
prop: "loginTime",
|
|
minWidth: 180,
|
|
formatter: ({ loginTime }) =>
|
|
dayjs(loginTime).format("YYYY-MM-DD HH:mm:ss")
|
|
},
|
|
{
|
|
label: "操作",
|
|
fixed: "right",
|
|
slot: "operation"
|
|
}
|
|
];
|
|
|
|
function handleSizeChange(val: number) {
|
|
console.log(`${val} items per page`);
|
|
}
|
|
|
|
function handleCurrentChange(val: number) {
|
|
console.log(`current page: ${val}`);
|
|
}
|
|
|
|
function handleSelectionChange(val) {
|
|
console.log("handleSelectionChange", val);
|
|
}
|
|
|
|
function handleOffline(row) {
|
|
message(`${row.username}已被强制下线`, { type: "success" });
|
|
onSearch();
|
|
}
|
|
|
|
async function onSearch() {
|
|
loading.value = true;
|
|
const { data } = await getOnlineLogsList(toRaw(form));
|
|
dataList.value = data.list;
|
|
pagination.total = data.total;
|
|
pagination.pageSize = data.pageSize;
|
|
pagination.currentPage = data.currentPage;
|
|
|
|
setTimeout(() => {
|
|
loading.value = false;
|
|
}, 500);
|
|
}
|
|
|
|
const resetForm = formEl => {
|
|
if (!formEl) return;
|
|
formEl.resetFields();
|
|
onSearch();
|
|
};
|
|
|
|
onMounted(() => {
|
|
onSearch();
|
|
});
|
|
|
|
return {
|
|
form,
|
|
loading,
|
|
columns,
|
|
dataList,
|
|
pagination,
|
|
onSearch,
|
|
resetForm,
|
|
handleOffline,
|
|
handleSizeChange,
|
|
handleCurrentChange,
|
|
handleSelectionChange
|
|
};
|
|
}
|