mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-12 06:57:13 +08:00
重构:🔥 基于阿里巴巴 Java 开发手册(黄山版)重构各表基本结构(简化列名)
1.MySQL数据库>建表规约>第9条: 【强制】表必备三字段:id,create_time,update_time。 说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为 1。create_time,update_time 的类型均为datetime 类型,如果要记录时区信息,那么类型设置为 timestamp。 个人理解:简化列名的目的是为了后续能抽取更多公共能力 2.MySQL数据库>SQL语句>第10条: 【推荐】SQL 语句中表的别名前加 as,并且以 t1、t2、t3、...的顺序依次命名。 说明: 1)别名可以是表的简称,或者是依照表在 SQL 语句中出现的顺序,以 t1、t2、t3 的方式命名。 2)别名前加 as 使别名更容易识别。 正例:select t1.name from first_table as t1 , second_table as t2 where t1.id = t2.id;
This commit is contained in:
@@ -4,7 +4,7 @@ import qs from 'query-string';
|
||||
const BASE_URL = '/monitor/log';
|
||||
|
||||
export interface LogRecord {
|
||||
logId?: string;
|
||||
id?: string;
|
||||
clientIp: string;
|
||||
location: string;
|
||||
browser: string;
|
||||
|
@@ -4,11 +4,11 @@ import qs from 'query-string';
|
||||
const BASE_URL = '/system/dept';
|
||||
|
||||
export interface DeptRecord {
|
||||
deptId?: string;
|
||||
deptName: string;
|
||||
id?: string;
|
||||
name: string;
|
||||
parentId?: string;
|
||||
description?: string;
|
||||
deptSort: number;
|
||||
sort: number;
|
||||
status?: number;
|
||||
createUserString?: string;
|
||||
createTime?: string;
|
||||
@@ -19,7 +19,7 @@ export interface DeptRecord {
|
||||
}
|
||||
|
||||
export interface DeptParam {
|
||||
deptName?: string;
|
||||
name?: string;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
|
@@ -4,10 +4,10 @@ import qs from 'query-string';
|
||||
const BASE_URL = '/system/menu';
|
||||
|
||||
export interface MenuRecord {
|
||||
menuId?: string;
|
||||
menuName: string;
|
||||
id?: string;
|
||||
title: string;
|
||||
parentId?: string;
|
||||
menuType: number;
|
||||
type: number;
|
||||
path?: string;
|
||||
name?: string;
|
||||
component?: string;
|
||||
@@ -16,7 +16,7 @@ export interface MenuRecord {
|
||||
isCache: boolean;
|
||||
isHidden: boolean;
|
||||
permission?: string;
|
||||
menuSort: number;
|
||||
sort: number;
|
||||
status?: number;
|
||||
createUserString?: string;
|
||||
createTime?: string;
|
||||
@@ -27,7 +27,7 @@ export interface MenuRecord {
|
||||
}
|
||||
|
||||
export interface MenuParam {
|
||||
menuName?: string;
|
||||
name?: string;
|
||||
status?: number;
|
||||
}
|
||||
|
||||
|
@@ -4,10 +4,10 @@ import qs from 'query-string';
|
||||
const BASE_URL = '/system/role';
|
||||
|
||||
export interface RoleRecord {
|
||||
roleId?: string;
|
||||
roleName: string;
|
||||
roleCode?: string;
|
||||
roleSort?: number;
|
||||
id?: string;
|
||||
name: string;
|
||||
code?: string;
|
||||
sort?: number;
|
||||
description?: string;
|
||||
menuIds?: Array<string>;
|
||||
dataScope: number;
|
||||
@@ -21,7 +21,7 @@ export interface RoleRecord {
|
||||
}
|
||||
|
||||
export interface RoleParam {
|
||||
roleName?: string;
|
||||
name?: string;
|
||||
status?: number;
|
||||
page?: number;
|
||||
size?: number;
|
||||
|
@@ -4,7 +4,7 @@ import qs from 'query-string';
|
||||
const BASE_URL = '/system/user';
|
||||
|
||||
export interface UserRecord {
|
||||
userId?: string;
|
||||
id?: string;
|
||||
username: string;
|
||||
nickname: string;
|
||||
gender: number;
|
||||
|
@@ -13,7 +13,7 @@ import useAppStore from '../app';
|
||||
|
||||
const useLoginStore = defineStore('user', {
|
||||
state: (): UserState => ({
|
||||
userId: '',
|
||||
id: '',
|
||||
username: '',
|
||||
nickname: '',
|
||||
gender: 0,
|
||||
|
@@ -1,5 +1,5 @@
|
||||
export interface UserState {
|
||||
userId: string;
|
||||
id: string;
|
||||
username: string;
|
||||
nickname: string;
|
||||
gender: number;
|
||||
|
@@ -36,7 +36,7 @@
|
||||
<!-- 列表区域 -->
|
||||
<a-table
|
||||
ref="tableRef"
|
||||
row-key="logId"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:pagination="{
|
||||
showTotal: true,
|
||||
@@ -113,12 +113,14 @@
|
||||
*/
|
||||
const getList = (params: LoginLogParam = { ...queryParams.value }) => {
|
||||
loading.value = true;
|
||||
listLoginLog(params).then((res) => {
|
||||
loginLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
listLoginLog(params)
|
||||
.then((res) => {
|
||||
loginLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
getList();
|
||||
|
||||
|
@@ -45,7 +45,7 @@
|
||||
<!-- 列表区域 -->
|
||||
<a-table
|
||||
ref="tableRef"
|
||||
row-key="logId"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:pagination="{
|
||||
showTotal: true,
|
||||
|
@@ -27,7 +27,7 @@
|
||||
<!-- 列表区域 -->
|
||||
<a-table
|
||||
ref="tableRef"
|
||||
row-key="logId"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:pagination="{
|
||||
showTotal: true,
|
||||
@@ -74,7 +74,7 @@
|
||||
<a-table-column title="创建时间" data-index="createTime" />
|
||||
<a-table-column title="操作" align="center">
|
||||
<template #cell="{ record }">
|
||||
<a-button type="text" size="small" title="查看详情" @click="toDetail(record.logId)">
|
||||
<a-button type="text" size="small" title="查看详情" @click="toDetail(record.id)">
|
||||
<template #icon><icon-eye /></template>详情
|
||||
</a-button>
|
||||
<a-button v-if="record.exceptionDetail" type="text" size="small" title="查看异常详情" @click="toExceptionDetail(record)">
|
||||
@@ -285,12 +285,14 @@
|
||||
*/
|
||||
const getList = (params: SystemLogParam = { ...queryParams.value }) => {
|
||||
loading.value = true;
|
||||
listSystemLog(params).then((res) => {
|
||||
systemLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
listSystemLog(params)
|
||||
.then((res) => {
|
||||
systemLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
getList();
|
||||
|
||||
@@ -302,11 +304,13 @@
|
||||
const toDetail = async (id: string) => {
|
||||
visible.value = true;
|
||||
loading.value = true;
|
||||
getSystemLog(id).then((res) => {
|
||||
systemLog.value = res.data;
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
getSystemLog(id)
|
||||
.then((res) => {
|
||||
systemLog.value = res.data;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -314,7 +318,7 @@
|
||||
*/
|
||||
const handleCancel = () => {
|
||||
visible.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 查看异常详情
|
||||
@@ -332,7 +336,7 @@
|
||||
const handleExceptionDetailCancel = () => {
|
||||
exceptionDetail.value = '';
|
||||
exceptionDetailVisible.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询
|
||||
|
@@ -7,9 +7,9 @@
|
||||
<!-- 搜索栏 -->
|
||||
<div v-if="showQuery" class="header-query">
|
||||
<a-form ref="queryRef" :model="queryParams" layout="inline">
|
||||
<a-form-item field="deptName" hide-label>
|
||||
<a-form-item field="name" hide-label>
|
||||
<a-input
|
||||
v-model="queryParams.deptName"
|
||||
v-model="queryParams.name"
|
||||
placeholder="输入部门名称搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -102,7 +102,7 @@
|
||||
:pagination="false"
|
||||
:default-expand-all-rows="true"
|
||||
:hide-expand-button-on-empty="true"
|
||||
row-key="deptId"
|
||||
row-key="id"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
:loading="loading"
|
||||
@@ -111,17 +111,17 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<template #columns>
|
||||
<a-table-column title="部门名称" data-index="deptName">
|
||||
<a-table-column title="部门名称">
|
||||
<template #cell="{ record }">
|
||||
<a-link @click="toDetail(record.deptId)">{{
|
||||
record.deptName
|
||||
<a-link @click="toDetail(record.id)">{{
|
||||
record.name
|
||||
}}</a-link>
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column
|
||||
title="部门排序"
|
||||
align="center"
|
||||
data-index="deptSort"
|
||||
data-index="sort"
|
||||
/>
|
||||
<a-table-column title="状态" align="center" data-index="status">
|
||||
<template #cell="{ record }">
|
||||
@@ -144,14 +144,14 @@
|
||||
type="text"
|
||||
size="small"
|
||||
title="修改"
|
||||
@click="toUpdate(record.deptId)"
|
||||
@click="toUpdate(record.id)"
|
||||
>
|
||||
<template #icon><icon-edit /></template>修改
|
||||
</a-button>
|
||||
<a-popconfirm
|
||||
content="确定要删除当前选中的数据吗?如果存在下级部门则一并删除,此操作不能撤销!"
|
||||
type="warning"
|
||||
@ok="handleDelete([record.deptId])"
|
||||
@ok="handleDelete([record.id])"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:dept:delete']"
|
||||
@@ -189,12 +189,12 @@
|
||||
:fallback-option="false"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="部门名称" field="deptName">
|
||||
<a-input v-model="form.deptName" placeholder="请输入部门名称" />
|
||||
<a-form-item label="部门名称" field="name">
|
||||
<a-input v-model="form.name" placeholder="请输入部门名称" />
|
||||
</a-form-item>
|
||||
<a-form-item label="部门排序" field="deptSort">
|
||||
<a-form-item label="部门排序" field="sort">
|
||||
<a-input-number
|
||||
v-model="form.deptSort"
|
||||
v-model="form.sort"
|
||||
placeholder="请输入部门排序"
|
||||
:min="1"
|
||||
mode="button"
|
||||
@@ -229,7 +229,7 @@
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else>{{ dept.deptName }}</span>
|
||||
<span v-else>{{ dept.name }}</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="上级部门">
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
@@ -250,7 +250,7 @@
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else>{{ dept.deptSort }}</span>
|
||||
<span v-else>{{ dept.sort }}</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="创建人">
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
@@ -308,8 +308,8 @@
|
||||
|
||||
const deptList = ref<DeptRecord[]>([]);
|
||||
const dept = ref<DeptRecord>({
|
||||
deptName: '',
|
||||
deptSort: 0,
|
||||
name: '',
|
||||
sort: 0,
|
||||
description: '',
|
||||
status: 1,
|
||||
createUserString: '',
|
||||
@@ -333,16 +333,16 @@
|
||||
const data = reactive({
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
deptName: undefined,
|
||||
name: undefined,
|
||||
status: undefined,
|
||||
sort: ['parentId,asc', 'deptSort,asc', 'createTime,desc'],
|
||||
sort: ['parentId,asc', 'sort,asc', 'createTime,desc'],
|
||||
},
|
||||
// 表单数据
|
||||
form: {} as DeptRecord,
|
||||
// 表单验证规则
|
||||
rules: {
|
||||
deptName: [{ required: true, message: '请输入部门名称' }],
|
||||
deptSort: [{ required: true, message: '请输入部门排序' }],
|
||||
name: [{ required: true, message: '请输入部门名称' }],
|
||||
sort: [{ required: true, message: '请输入部门排序' }],
|
||||
},
|
||||
});
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
@@ -402,11 +402,11 @@
|
||||
*/
|
||||
const reset = () => {
|
||||
form.value = {
|
||||
deptId: undefined,
|
||||
deptName: '',
|
||||
id: undefined,
|
||||
name: '',
|
||||
parentId: undefined,
|
||||
description: '',
|
||||
deptSort: 999,
|
||||
sort: 999,
|
||||
status: 1,
|
||||
};
|
||||
proxy.$refs.formRef?.resetFields();
|
||||
@@ -426,7 +426,7 @@
|
||||
const handleOk = () => {
|
||||
proxy.$refs.formRef.validate((valid: any) => {
|
||||
if (!valid) {
|
||||
if (form.value.deptId !== undefined) {
|
||||
if (form.value.id !== undefined) {
|
||||
updateDept(form.value).then((res) => {
|
||||
handleCancel();
|
||||
getList();
|
||||
@@ -507,8 +507,8 @@
|
||||
if (rowKeys.find((key: any) => key === rowKey)) {
|
||||
if (record.children) {
|
||||
record.children.forEach((r) => {
|
||||
proxy.$refs.tableRef.select(r.deptId);
|
||||
rowKeys.push(r.deptId);
|
||||
proxy.$refs.tableRef.select(r.id);
|
||||
rowKeys.push(r.id);
|
||||
if (r.children) {
|
||||
handleSelect(rowKeys, rowKey, r);
|
||||
}
|
||||
@@ -516,8 +516,8 @@
|
||||
}
|
||||
} else if (record.children) {
|
||||
record.children.forEach((r) => {
|
||||
rowKeys.splice(rowKeys.findIndex((key: number | undefined) => key === r.deptId), 1);
|
||||
proxy.$refs.tableRef.select(r.deptId, false);
|
||||
rowKeys.splice(rowKeys.findIndex((key: number | undefined) => key === r.id), 1);
|
||||
proxy.$refs.tableRef.select(r.id, false);
|
||||
if (r.children) {
|
||||
handleSelect(rowKeys, rowKey, r);
|
||||
}
|
||||
|
@@ -7,10 +7,10 @@
|
||||
<!-- 搜索栏 -->
|
||||
<div v-if="showQuery" class="header-query">
|
||||
<a-form ref="queryRef" :model="queryParams" layout="inline">
|
||||
<a-form-item field="menuName" hide-label>
|
||||
<a-form-item field="title" hide-label>
|
||||
<a-input
|
||||
v-model="queryParams.menuName"
|
||||
placeholder="输入菜单名称搜索"
|
||||
v-model="queryParams.title"
|
||||
placeholder="输入菜单标题搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@press-enter="handleQuery"
|
||||
@@ -105,7 +105,7 @@
|
||||
:pagination="false"
|
||||
:default-expand-all-rows="true"
|
||||
:hide-expand-button-on-empty="true"
|
||||
row-key="menuId"
|
||||
row-key="id"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
:loading="loading"
|
||||
@@ -114,13 +114,13 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<template #columns>
|
||||
<a-table-column title="菜单名称" data-index="menuName" />
|
||||
<a-table-column title="菜单标题" data-index="title" />
|
||||
<a-table-column title="图标" align="center">
|
||||
<template #cell="{ record }">
|
||||
<svg-icon :icon-class="record.icon ? record.icon : ''" />
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="排序" align="center" data-index="menuSort" />
|
||||
<a-table-column title="排序" align="center" data-index="sort" />
|
||||
<a-table-column title="权限标识" data-index="permission" />
|
||||
<a-table-column title="组件路径" data-index="component" />
|
||||
<a-table-column title="状态" align="center">
|
||||
@@ -160,14 +160,14 @@
|
||||
type="text"
|
||||
size="small"
|
||||
title="修改"
|
||||
@click="toUpdate(record.menuId)"
|
||||
@click="toUpdate(record.id)"
|
||||
>
|
||||
<template #icon><icon-edit /></template>修改
|
||||
</a-button>
|
||||
<a-popconfirm
|
||||
content="确定要删除当前选中的数据吗?如果存在下级菜单则一并删除,此操作不能撤销!"
|
||||
type="warning"
|
||||
@ok="handleDelete([record.menuId])"
|
||||
@ok="handleDelete([record.id])"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:menu:delete']"
|
||||
@@ -202,14 +202,14 @@
|
||||
:label-col-style="{ width: '85px' }"
|
||||
size="large"
|
||||
>
|
||||
<a-form-item label="菜单类型" field="menuType" lab>
|
||||
<a-radio-group v-model="form.menuType" type="button">
|
||||
<a-form-item label="菜单类型" field="type" lab>
|
||||
<a-radio-group v-model="form.type" type="button">
|
||||
<a-radio :value="1" style="width: 57px">目录</a-radio>
|
||||
<a-radio :value="2" style="width: 57px">菜单</a-radio>
|
||||
<a-radio :value="3" style="width: 57px">按钮</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item v-if="form.menuType !== 3" label="菜单图标" field="icon">
|
||||
<a-form-item v-if="form.type !== 3" label="菜单图标" field="icon">
|
||||
<a-popover
|
||||
v-model:popup-visible="showChooseIcon"
|
||||
position="bottom"
|
||||
@@ -236,16 +236,16 @@
|
||||
</template>
|
||||
</a-popover>
|
||||
</a-form-item>
|
||||
<a-form-item label="菜单名称" field="menuName">
|
||||
<a-form-item label="菜单标题" field="title">
|
||||
<a-input
|
||||
v-model="form.menuName"
|
||||
placeholder="请输入菜单名称"
|
||||
v-model="form.title"
|
||||
placeholder="请输入菜单标题"
|
||||
style="width: 182px"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="菜单排序" field="menuSort">
|
||||
<a-form-item label="菜单排序" field="sort">
|
||||
<a-input-number
|
||||
v-model="form.menuSort"
|
||||
v-model="form.sort"
|
||||
placeholder="请输入菜单排序"
|
||||
:min="1"
|
||||
mode="button"
|
||||
@@ -253,7 +253,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="form.menuType !== 1"
|
||||
v-if="form.type !== 1"
|
||||
label="权限标识"
|
||||
field="permission"
|
||||
>
|
||||
@@ -263,7 +263,7 @@
|
||||
style="width: 182px"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item v-if="form.menuType !== 3" label="路由地址" field="path">
|
||||
<a-form-item v-if="form.type !== 3" label="路由地址" field="path">
|
||||
<a-input
|
||||
v-model="form.path"
|
||||
placeholder="请输入路由地址"
|
||||
@@ -271,7 +271,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="!form.isExternal && form.menuType === 2"
|
||||
v-if="!form.isExternal && form.type === 2"
|
||||
label="组件名称"
|
||||
field="name"
|
||||
>
|
||||
@@ -282,7 +282,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="!form.isExternal && form.menuType === 2"
|
||||
v-if="!form.isExternal && form.type === 2"
|
||||
label="组件路径"
|
||||
field="component"
|
||||
>
|
||||
@@ -294,7 +294,7 @@
|
||||
</a-form-item>
|
||||
<br />
|
||||
<a-form-item
|
||||
v-if="form.menuType !== 3"
|
||||
v-if="form.type !== 3"
|
||||
label="是否外链"
|
||||
field="isExternal"
|
||||
>
|
||||
@@ -304,7 +304,7 @@
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="form.menuType === 2"
|
||||
v-if="form.type === 2"
|
||||
label="是否缓存"
|
||||
field="isCache"
|
||||
>
|
||||
@@ -314,7 +314,7 @@
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
v-if="form.menuType !== 3"
|
||||
v-if="form.type !== 3"
|
||||
label="是否隐藏"
|
||||
field="isHidden"
|
||||
>
|
||||
@@ -375,20 +375,20 @@
|
||||
const data = reactive({
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
menuName: undefined,
|
||||
title: undefined,
|
||||
status: undefined,
|
||||
sort: ['parentId,asc', 'menuSort,asc', 'createTime,desc'],
|
||||
sort: ['parentId,asc', 'sort,asc', 'createTime,desc'],
|
||||
},
|
||||
// 表单数据
|
||||
form: {} as MenuRecord,
|
||||
// 表单验证规则
|
||||
rules: {
|
||||
menuName: [{ required: true, message: '请输入菜单名称' }],
|
||||
title: [{ required: true, message: '请输入菜单标题' }],
|
||||
path: [{ required: true, message: '请输入路由地址' }],
|
||||
name: [{ required: true, message: '请输入组件名称' }],
|
||||
component: [{ required: true, message: '请输入组件路径' }],
|
||||
permission: [{ required: true, message: '请输入权限标识' }],
|
||||
menuSort: [{ required: true, message: '请输入菜单排序' }],
|
||||
sort: [{ required: true, message: '请输入菜单排序' }],
|
||||
},
|
||||
});
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
@@ -445,10 +445,10 @@
|
||||
*/
|
||||
const reset = () => {
|
||||
form.value = {
|
||||
menuId: undefined,
|
||||
menuName: '',
|
||||
id: undefined,
|
||||
title: '',
|
||||
parentId: undefined,
|
||||
menuType: 1,
|
||||
type: 1,
|
||||
path: undefined,
|
||||
name: undefined,
|
||||
component: undefined,
|
||||
@@ -457,7 +457,7 @@
|
||||
isCache: false,
|
||||
isHidden: false,
|
||||
permission: undefined,
|
||||
menuSort: 999,
|
||||
sort: 999,
|
||||
status: 1,
|
||||
};
|
||||
proxy.$refs.formRef?.resetFields();
|
||||
@@ -477,7 +477,7 @@
|
||||
const handleOk = () => {
|
||||
proxy.$refs.formRef.validate((valid: any) => {
|
||||
if (!valid) {
|
||||
if (form.value.menuId !== undefined) {
|
||||
if (form.value.id !== undefined) {
|
||||
updateMenu(form.value).then((res) => {
|
||||
handleCancel();
|
||||
getList();
|
||||
@@ -533,8 +533,8 @@
|
||||
if (rowKeys.find((key: any) => key === rowKey)) {
|
||||
if (record.children) {
|
||||
record.children.forEach((r) => {
|
||||
proxy.$refs.tableRef.select(r.menuId);
|
||||
rowKeys.push(r.menuId);
|
||||
proxy.$refs.tableRef.select(r.id);
|
||||
rowKeys.push(r.id);
|
||||
if (r.children) {
|
||||
handleSelect(rowKeys, rowKey, r);
|
||||
}
|
||||
@@ -543,10 +543,10 @@
|
||||
} else if (record.children) {
|
||||
record.children.forEach((r) => {
|
||||
rowKeys.splice(
|
||||
rowKeys.findIndex((key: number | undefined) => key === r.menuId),
|
||||
rowKeys.findIndex((key: number | undefined) => key === r.id),
|
||||
1
|
||||
);
|
||||
proxy.$refs.tableRef.select(r.menuId, false);
|
||||
proxy.$refs.tableRef.select(r.id, false);
|
||||
if (r.children) {
|
||||
handleSelect(rowKeys, rowKey, r);
|
||||
}
|
||||
|
@@ -7,9 +7,9 @@
|
||||
<!-- 搜索栏 -->
|
||||
<div v-if="showQuery" class="header-query">
|
||||
<a-form ref="queryRef" :model="queryParams" layout="inline">
|
||||
<a-form-item field="roleName" hide-label>
|
||||
<a-form-item field="name" hide-label>
|
||||
<a-input
|
||||
v-model="queryParams.roleName"
|
||||
v-model="queryParams.name"
|
||||
placeholder="输入角色名称搜索"
|
||||
allow-clear
|
||||
style="width: 150px"
|
||||
@@ -105,7 +105,7 @@
|
||||
total: total,
|
||||
current: queryParams.page,
|
||||
}"
|
||||
row-key="roleId"
|
||||
row-key="id"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
:loading="loading"
|
||||
@@ -115,15 +115,15 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<template #columns>
|
||||
<a-table-column title="ID" data-index="roleId" />
|
||||
<a-table-column title="角色名称" data-index="roleName">
|
||||
<a-table-column title="ID" data-index="id" />
|
||||
<a-table-column title="角色名称" data-index="name">
|
||||
<template #cell="{ record }">
|
||||
<a-link @click="toDetail(record.roleId)">{{
|
||||
record.roleName
|
||||
<a-link @click="toDetail(record.id)">{{
|
||||
record.name
|
||||
}}</a-link>
|
||||
</template>
|
||||
</a-table-column>
|
||||
<a-table-column title="角色编码" data-index="roleCode" />
|
||||
<a-table-column title="角色编码" data-index="code" />
|
||||
<a-table-column title="数据权限">
|
||||
<template #cell="{ record }">
|
||||
<span v-if="record.dataScope === 1">全部数据权限</span>
|
||||
@@ -136,7 +136,7 @@
|
||||
<a-table-column
|
||||
title="角色排序"
|
||||
align="center"
|
||||
data-index="roleSort"
|
||||
data-index="sort"
|
||||
/>
|
||||
<a-table-column title="状态" align="center" data-index="status">
|
||||
<template #cell="{ record }">
|
||||
@@ -160,14 +160,14 @@
|
||||
size="small"
|
||||
title="修改"
|
||||
:disabled="record.disabled"
|
||||
@click="toUpdate(record.roleId)"
|
||||
@click="toUpdate(record.id)"
|
||||
>
|
||||
<template #icon><icon-edit /></template>修改
|
||||
</a-button>
|
||||
<a-popconfirm
|
||||
content="确定要删除当前选中的数据吗?"
|
||||
type="warning"
|
||||
@ok="handleDelete([record.roleId])"
|
||||
@ok="handleDelete([record.id])"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:role:delete']"
|
||||
@@ -198,15 +198,15 @@
|
||||
<a-form ref="formRef" :model="form" :rules="rules" size="large">
|
||||
<fieldset>
|
||||
<legend>基础信息</legend>
|
||||
<a-form-item label="角色名称" field="roleName">
|
||||
<a-input v-model="form.roleName" placeholder="请输入角色名称" />
|
||||
<a-form-item label="角色名称" field="name">
|
||||
<a-input v-model="form.name" placeholder="请输入角色名称" />
|
||||
</a-form-item>
|
||||
<a-form-item label="角色编码" field="roleCode">
|
||||
<a-input v-model="form.roleCode" placeholder="请输入角色编码" />
|
||||
<a-form-item label="角色编码" field="code">
|
||||
<a-input v-model="form.code" placeholder="请输入角色编码" />
|
||||
</a-form-item>
|
||||
<a-form-item label="角色排序" field="roleSort">
|
||||
<a-form-item label="角色排序" field="sort">
|
||||
<a-input-number
|
||||
v-model="form.roleSort"
|
||||
v-model="form.sort"
|
||||
placeholder="请输入角色排序"
|
||||
:min="1"
|
||||
mode="button"
|
||||
@@ -294,13 +294,13 @@
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else>{{ role.roleName }}</span>
|
||||
<span v-else>{{ role.name }}</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="角色编码">
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else>{{ role.roleCode }}</span>
|
||||
<span v-else>{{ role.code }}</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="状态">
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
@@ -406,8 +406,8 @@
|
||||
|
||||
const roleList = ref<RoleRecord[]>([]);
|
||||
const role = ref<RoleRecord>({
|
||||
roleName: '',
|
||||
roleCode: '',
|
||||
name: '',
|
||||
code: '',
|
||||
status: 1,
|
||||
dataScope: 1,
|
||||
createUserString: '',
|
||||
@@ -443,7 +443,7 @@
|
||||
const data = reactive({
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
roleName: undefined,
|
||||
name: undefined,
|
||||
status: undefined,
|
||||
page: 1,
|
||||
size: 10,
|
||||
@@ -453,9 +453,9 @@
|
||||
form: {} as RoleRecord,
|
||||
// 表单验证规则
|
||||
rules: {
|
||||
roleName: [{ required: true, message: '请输入角色名称' }],
|
||||
name: [{ required: true, message: '请输入角色名称' }],
|
||||
dataScope: [{ required: true, message: '请选择数据权限' }],
|
||||
roleSort: [{ required: true, message: '请输入角色排序' }],
|
||||
sort: [{ required: true, message: '请输入角色排序' }],
|
||||
},
|
||||
});
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
@@ -552,12 +552,12 @@
|
||||
proxy.$refs.menuRef?.expandAll(menuExpandAll.value);
|
||||
proxy.$refs.deptRef?.expandAll(deptExpandAll.value);
|
||||
form.value = {
|
||||
roleId: undefined,
|
||||
roleName: '',
|
||||
roleCode: undefined,
|
||||
id: undefined,
|
||||
name: '',
|
||||
code: undefined,
|
||||
dataScope: 4,
|
||||
description: '',
|
||||
roleSort: 999,
|
||||
sort: 999,
|
||||
status: 1,
|
||||
menuIds: [],
|
||||
deptIds: [],
|
||||
@@ -618,7 +618,7 @@
|
||||
const handleOk = () => {
|
||||
proxy.$refs.formRef.validate((valid: any) => {
|
||||
if (!valid) {
|
||||
if (form.value.roleId !== undefined) {
|
||||
if (form.value.id !== undefined) {
|
||||
form.value.menuIds = getMenuAllCheckedKeys();
|
||||
form.value.deptIds = getDeptAllCheckedKeys();
|
||||
updateRole(form.value).then((res) => {
|
||||
|
@@ -3,14 +3,14 @@
|
||||
<!-- 列表区域 -->
|
||||
<a-table
|
||||
ref="tableRef"
|
||||
row-key="logId"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:pagination="{
|
||||
showTotal: true,
|
||||
showPageSize: true,
|
||||
total: total,
|
||||
current: queryParams.page,
|
||||
}"
|
||||
showTotal: true,
|
||||
showPageSize: true,
|
||||
total: total,
|
||||
current: queryParams.page,
|
||||
}"
|
||||
:data="operationLogList"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
@@ -70,7 +70,7 @@
|
||||
const data = reactive({
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
uid: loginStore.userId,
|
||||
uid: loginStore.id,
|
||||
page: 1,
|
||||
size: 10,
|
||||
sort: ['createTime,desc'],
|
||||
@@ -85,12 +85,14 @@
|
||||
*/
|
||||
const getList = (params: OperationLogParam = { ...queryParams.value }) => {
|
||||
loading.value = true;
|
||||
listOperationLog(params).then((res) => {
|
||||
operationLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
listOperationLog(params)
|
||||
.then((res) => {
|
||||
operationLogList.value = res.data.list;
|
||||
total.value = res.data.total;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
getList();
|
||||
|
||||
|
@@ -51,10 +51,10 @@
|
||||
<div v-else>{{ $t('userCenter.panel.unknown') }}</div>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item :label="$t('userCenter.panel.label.phone')">{{
|
||||
loginStore.phone
|
||||
loginStore.phone || '暂无'
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item :label="$t('userCenter.panel.label.email')">{{
|
||||
loginStore.email
|
||||
loginStore.email || '暂无'
|
||||
}}</a-descriptions-item>
|
||||
<a-descriptions-item :label="$t('userCenter.panel.label.deptName')">{{
|
||||
loginStore.deptName
|
||||
|
@@ -125,7 +125,7 @@
|
||||
total: total,
|
||||
current: queryParams.page,
|
||||
}"
|
||||
row-key="userId"
|
||||
row-key="id"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
:loading="loading"
|
||||
@@ -138,10 +138,10 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<template #columns>
|
||||
<a-table-column title="ID" data-index="userId" />
|
||||
<a-table-column title="ID" data-index="id" />
|
||||
<a-table-column title="用户名">
|
||||
<template #cell="{ record }">
|
||||
<a-link @click="toDetail(record.userId)">{{
|
||||
<a-link @click="toDetail(record.id)">{{
|
||||
record.username
|
||||
}}</a-link>
|
||||
</template>
|
||||
@@ -197,14 +197,14 @@
|
||||
type="text"
|
||||
size="small"
|
||||
title="修改"
|
||||
@click="toUpdate(record.userId)"
|
||||
@click="toUpdate(record.id)"
|
||||
>
|
||||
<template #icon><icon-edit /></template>
|
||||
</a-button>
|
||||
<a-popconfirm
|
||||
content="确定要删除当前选中的数据吗?"
|
||||
type="warning"
|
||||
@ok="handleDelete([record.userId])"
|
||||
@ok="handleDelete([record.id])"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:user:delete']"
|
||||
@@ -219,7 +219,7 @@
|
||||
<a-popconfirm
|
||||
content="确定要重置当前用户的密码吗?"
|
||||
type="warning"
|
||||
@ok="handleResetPassword(record.userId)"
|
||||
@ok="handleResetPassword(record.id)"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:user:password:reset']"
|
||||
@@ -235,7 +235,7 @@
|
||||
type="text"
|
||||
size="small"
|
||||
title="分配角色"
|
||||
@click="toUpdateRole(record.userId)"
|
||||
@click="toUpdateRole(record.id)"
|
||||
>
|
||||
<template #icon><svg-icon icon-class="reference" /></template>
|
||||
</a-button>
|
||||
@@ -492,8 +492,8 @@
|
||||
username: '',
|
||||
nickname: '',
|
||||
gender: 1,
|
||||
email: undefined,
|
||||
phone: undefined,
|
||||
email: undefined,
|
||||
status: 1,
|
||||
pwdResetTime: '',
|
||||
createUserString: '',
|
||||
@@ -552,7 +552,7 @@
|
||||
* @param name 名称
|
||||
*/
|
||||
const getDeptTree = (name: string) => {
|
||||
listDeptTree({ deptName: name }).then((res) => {
|
||||
listDeptTree({ name }).then((res) => {
|
||||
deptTree.value = res.data;
|
||||
setTimeout(() => {
|
||||
proxy.$refs.deptTreeRef.expandAll();
|
||||
@@ -656,7 +656,7 @@
|
||||
*/
|
||||
const reset = () => {
|
||||
form.value = {
|
||||
userId: undefined,
|
||||
id: undefined,
|
||||
username: '',
|
||||
nickname: '',
|
||||
gender: 1,
|
||||
@@ -686,7 +686,7 @@
|
||||
const handleOk = () => {
|
||||
proxy.$refs.formRef.validate((valid: any) => {
|
||||
if (!valid) {
|
||||
if (form.value.userId !== undefined) {
|
||||
if (form.value.id !== undefined) {
|
||||
updateUser(form.value).then((res) => {
|
||||
handleCancel();
|
||||
getList();
|
||||
@@ -708,8 +708,8 @@
|
||||
*/
|
||||
const handleUpdateRole = () => {
|
||||
proxy.$refs.userRoleFormRef.validate((valid: any) => {
|
||||
if (!valid && form.value.userId !== undefined) {
|
||||
updateUserRole({ roleIds: form.value.roleIds }, form.value.userId).then(
|
||||
if (!valid && form.value.id !== undefined) {
|
||||
updateUserRole({ roleIds: form.value.roleIds }, form.value.id).then(
|
||||
(res) => {
|
||||
handleCancel();
|
||||
getList();
|
||||
|
Reference in New Issue
Block a user