feat: 操作日志添加按钮级权限管理

This commit is contained in:
2025-02-22 23:27:31 +08:00
parent f89c42ef61
commit 73856ad1cb
4 changed files with 262 additions and 77 deletions

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import dayjs from "dayjs";
import { ref, reactive, computed } from "vue";
import { useOperation } from "./hook";
import { useOperation } from "./utils/hook";
import { getPickerShortcuts } from "../utils";
import { PureTableBar } from "@/components/RePureTableBar";
import { useRenderIcon } from "@/components/ReIcon/src/hooks";
@@ -12,7 +12,7 @@ import View from "@iconify-icons/ep/view";
import Delete from "@iconify-icons/ep/delete";
import Refresh from "@iconify-icons/ep/refresh";
import { OperationLogInfo } from "types/monitor";
import { hasAuth } from "@/utils/auth";
defineOptions({
name: "OperationLog"
});
@@ -86,11 +86,12 @@ const {
dataList,
pagination,
selectedNum,
departments,
onSearch,
clearAll,
resetForm,
onbatchDel,
getOperationName,
handleDelete,
handleSizeChange,
onSelectionCancel,
handleCurrentChange,
@@ -106,33 +107,89 @@ const {
:model="form"
class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto"
>
<el-form-item label="所属模块" prop="module">
<el-form-item label="操作名称" prop="name">
<el-input
v-model="form.module"
placeholder="请输入所属模块"
v-model="form.name"
placeholder="请输入操作名称"
clearable
class="!w-[170px]"
class="!w-[200px]"
/>
</el-form-item>
<el-form-item label="操作类型" prop="type">
<el-select
v-model="form.type"
placeholder="请选择操作类型~"
clearable
class="!w-[200px]"
>
<el-option label="查询" :value="1" />
<el-option label="新增" :value="2" />
<el-option label="修改" :value="3" />
<el-option label="删除" :value="4" />
<el-option label="授权" :value="5" />
<el-option label="导出" :value="6" />
<el-option label="导入" :value="7" />
<el-option label="强退" :value="8" />
</el-select>
</el-form-item>
<el-form-item label="用户账号" prop="username">
<el-input
v-model="form.username"
placeholder="请输入用户账号~"
clearable
class="!w-[200px]"
/>
</el-form-item>
<el-form-item label="用户名称" prop="nickname">
<el-input
v-model="form.nickname"
placeholder="请输入用户名称~"
clearable
class="!w-[200px]"
/>
</el-form-item>
<el-form-item label="操作状态" prop="status">
<el-select
v-model="form.status"
placeholder="请选择"
placeholder="请选择操作状态~"
clearable
class="!w-[150px]"
class="!w-[200px]"
>
<el-option label="成功" value="1" />
<el-option label="失败" value="0" />
<el-option label="成功" :value="1" />
<el-option label="失败" :value="0" />
</el-select>
</el-form-item>
<el-form-item label="所属部门:" prop="department_id">
<el-cascader
v-model="form.department_id"
class="!w-[200px]"
:options="departments"
:props="{
value: 'id',
label: 'name',
emitPath: false,
checkStrictly: true
}"
clearable
filterable
placeholder="请选择所属部门~"
>
<template #default="{ node, data }">
<span>{{ data.name }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</template>
</el-cascader>
</el-form-item>
<el-form-item label="操作时间" prop="operatingTime">
<el-date-picker
v-model="form.operatingTime"
v-model="form.operationTime"
:shortcuts="getPickerShortcuts()"
type="datetimerange"
range-separator=""
start-placeholder="开始日期时间"
end-placeholder="结束日期时间"
value-format="x"
unlink-panels
/>
</el-form-item>
<el-form-item>
@@ -151,15 +208,6 @@ const {
</el-form>
<PureTableBar title="操作日志" :columns="columns" @refresh="onSearch">
<template #buttons>
<!-- <el-popconfirm title="确定要删除所有日志数据吗?" @confirm="clearAll">
<template #reference>
<el-button type="danger" :icon="useRenderIcon(Delete)">
清空日志
</el-button>
</template>
</el-popconfirm> -->
</template>
<template v-slot="{ size, dynamicColumns }">
<div
v-if="selectedNum > 0"
@@ -177,9 +225,18 @@ const {
{{ t("buttons:Deselect") }}
</el-button>
</div>
<el-popconfirm title="是否确认删除?" @confirm="onbatchDel">
<el-popconfirm
v-if="hasAuth('operation:btn:delete')"
title="是否确认删除?"
@confirm="onbatchDel"
>
<template #reference>
<el-button type="danger" text class="mr-1">
<el-button
type="danger"
text
class="mr-1"
:disabled="selectedNum < 0 || !hasAuth('operation:btn:delete')"
>
{{ t("buttons:DeleteInBatches") }}
</el-button>
</template>
@@ -211,11 +268,29 @@ const {
link
type="primary"
:size="size"
:disabled="!hasAuth('operation:btn:info')"
:icon="useRenderIcon(View)"
@click="onDetailHandle(row)"
>
{{ t("buttons:Details") }}
</el-button>
<el-popconfirm
:title="`是否删除这条操作记录?`"
@confirm="handleDelete(row)"
>
<template #reference>
<el-button
class="reset-margin"
link
type="danger"
:disabled="!hasAuth('operation:btn:delete')"
:size="size"
:icon="useRenderIcon(Delete)"
>
{{ t("buttons:Delete") }}
</el-button>
</template>
</el-popconfirm>
</template>
</pure-table>
</template>