!62 style: 格式化系统配置与字典模块代码
Merge pull request !62 from Mickeywaugh/master
This commit is contained in:
@@ -8,7 +8,6 @@ import type {
|
||||
DictItemForm,
|
||||
DictItemOption,
|
||||
} from "./types";
|
||||
import type { OptionItem } from "@/api/common";
|
||||
|
||||
const DICT_BASE_URL = "/api/v1/dicts";
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@ export interface DictItem {
|
||||
status: number;
|
||||
/** 排序 */
|
||||
sort?: number;
|
||||
/** 标签类型(后端返回的原始码) */
|
||||
tagType?: unknown;
|
||||
}
|
||||
|
||||
/** 字典项表单对象 */
|
||||
|
||||
41
src/types/api/index.ts
Normal file
41
src/types/api/index.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
export interface PageQueryParams {
|
||||
pageNum: number;
|
||||
pageSize: number;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
export interface OptionItem {
|
||||
label: string;
|
||||
value: string | number;
|
||||
meta?: any;
|
||||
children?: OptionItem[];
|
||||
}
|
||||
|
||||
export interface ExcelResult {
|
||||
/** 状态码 */
|
||||
code: number;
|
||||
/** 无效数据条数 */
|
||||
invalidCount: number;
|
||||
/** 有效数据条数 */
|
||||
validCount: number;
|
||||
/** 错误信息 */
|
||||
messageList: Array<string>;
|
||||
}
|
||||
|
||||
export interface PageResult<T> {
|
||||
total: number;
|
||||
list: T[];
|
||||
params: PageQueryParams;
|
||||
}
|
||||
|
||||
export interface ApiResponse<T = any> {
|
||||
code: number | string;
|
||||
msg: string;
|
||||
data: T;
|
||||
}
|
||||
|
||||
export interface BaseEntity {
|
||||
id: number;
|
||||
createTime: string;
|
||||
updateTime: string;
|
||||
}
|
||||
@@ -34,7 +34,7 @@ http.interceptors.request.use(
|
||||
|
||||
// 响应拦截器
|
||||
http.interceptors.response.use(
|
||||
(response: AxiosResponse<ApiResponse>) => {
|
||||
(response: AxiosResponse<ApiResponse>): any => {
|
||||
const { responseType } = response.config;
|
||||
|
||||
// 二进制数据直接返回
|
||||
@@ -64,8 +64,8 @@ http.interceptors.response.use(
|
||||
|
||||
// Token 过期:尝试刷新 token 后自动重试一次
|
||||
if (code === ApiCodeEnum.ACCESS_TOKEN_INVALID) {
|
||||
// 已重试过,直接跳登录
|
||||
if (retriedConfigs.has(config)) {
|
||||
// config 不存在时无法重试,直接跳登录
|
||||
if (!config || retriedConfigs.has(config)) {
|
||||
await redirectToLogin("登录已过期,请重新登录");
|
||||
return Promise.reject(new Error("Token Invalid"));
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item label="关键字" prop="keywords">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="请输入配置键\配置名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -43,7 +43,7 @@
|
||||
<el-table
|
||||
ref="dataTableRef"
|
||||
v-loading="loading"
|
||||
:data="pageData"
|
||||
:data="tableData.list"
|
||||
highlight-current-row
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
@@ -80,10 +80,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -138,7 +138,7 @@ defineOptions({
|
||||
});
|
||||
|
||||
import ConfigAPI from "@/api/system/config";
|
||||
import type { ConfigItem, ConfigForm, ConfigQueryParams } from "@/api/system/config";
|
||||
import type { ConfigItem, ConfigForm } from "@/api/system/config";
|
||||
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "element-plus";
|
||||
import { useDebounceFn } from "@vueuse/core";
|
||||
|
||||
@@ -146,19 +146,21 @@ import { useDebounceFn } from "@vueuse/core";
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
const dataFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<ConfigQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const pageData = ref<ConfigItem[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const selectIds = ref<string[]>([]);
|
||||
|
||||
const tableData = reactive<PageResult<ConfigItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
title: "",
|
||||
@@ -186,10 +188,10 @@ const rules: FormRules = {
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
ConfigAPI.getPage(queryParams)
|
||||
ConfigAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
pageData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -200,7 +202,7 @@ function fetchData(): void {
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -209,7 +211,7 @@ function handleQuery(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item label="关键字" prop="keywords">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="字典标签/字典值"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -36,7 +36,7 @@
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
:data="tableData"
|
||||
:data="tableData.list"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
@@ -77,10 +77,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import DictAPI from "@/api/system/dict";
|
||||
import type { DictItemQueryParams, DictItem, DictItemForm } from "@/api/system/dict";
|
||||
import type { DictItem, DictItemForm } from "@/api/system/dict";
|
||||
import type { FormInstance, FormRules } from "element-plus";
|
||||
|
||||
const route = useRoute();
|
||||
@@ -165,18 +165,22 @@ const dictCode = ref(route.query.dictCode as string);
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
const dataFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<DictItemQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const tableData = ref<DictItem[]>();
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const ids = ref<string[]>([]);
|
||||
|
||||
const tableData = reactive<PageResult<DictItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
dictCode: undefined,
|
||||
keywords: undefined,
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
title: "",
|
||||
@@ -204,10 +208,10 @@ const rules: FormRules = {
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
DictAPI.getDictItemPage(dictCode.value, queryParams)
|
||||
.then((data) => {
|
||||
tableData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
DictAPI.getDictItemPage(dictCode.value, tableData.params)
|
||||
.then((data: any) => {
|
||||
tableData.list = data.list;
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -218,7 +222,7 @@ function fetchData(): void {
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -227,7 +231,7 @@ function handleQuery(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item label="关键字" prop="keywords">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="字典名称/编码"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -36,7 +36,7 @@
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
:data="tableData"
|
||||
:data="tableData.list"
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
@@ -82,10 +82,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -134,7 +134,7 @@ defineOptions({
|
||||
});
|
||||
|
||||
import DictAPI from "@/api/system/dict";
|
||||
import type { DictTypeQueryParams, DictTypeItem, DictTypeForm } from "@/api/system/dict";
|
||||
import type { DictTypeItem, DictTypeForm } from "@/api/system/dict";
|
||||
import type { FormInstance, FormRules } from "element-plus";
|
||||
import router from "@/router";
|
||||
|
||||
@@ -142,17 +142,18 @@ import router from "@/router";
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
const dataFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<DictTypeQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const tableData = ref<DictTypeItem[]>();
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const ids = ref<string[]>([]);
|
||||
const tableData = reactive<PageResult<DictTypeItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
@@ -176,10 +177,10 @@ const rules: FormRules = {
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
DictAPI.getPage(queryParams)
|
||||
DictAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
tableData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -190,7 +191,7 @@ function fetchData(): void {
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -199,7 +200,7 @@ function handleQuery(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="auto">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true" label-width="auto">
|
||||
<el-form-item prop="keywords" label="关键字">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="IP/操作人"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<el-form-item prop="createTime" label="操作时间">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
v-model="tableData.params.createTime"
|
||||
:editable="false"
|
||||
type="daterange"
|
||||
range-separator="~"
|
||||
@@ -32,7 +32,7 @@
|
||||
</el-card>
|
||||
|
||||
<el-card class="page-content" shadow="never">
|
||||
<el-table v-loading="loading" :data="pageData" highlight-current-row border>
|
||||
<el-table v-loading="loading" :data="tableData.list" highlight-current-row border>
|
||||
<el-table-column label="操作标题" prop="title" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column label="状态" prop="status" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
@@ -61,10 +61,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -111,7 +111,7 @@ defineOptions({
|
||||
});
|
||||
|
||||
import LogAPI from "@/api/system/log";
|
||||
import type { LogItem, LogQueryParams } from "@/api/system/log";
|
||||
import type { LogItem } from "@/api/system/log";
|
||||
import type { FormInstance, TagProps } from "element-plus";
|
||||
|
||||
function getMethodTagType(method: string): TagProps["type"] {
|
||||
@@ -128,29 +128,29 @@ function getMethodTagType(method: string): TagProps["type"] {
|
||||
// 表单引用
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<LogQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
createTime: undefined as [string, string] | undefined,
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const pageData = ref<LogItem[]>();
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
|
||||
const tableData = reactive<PageResult<LogItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
createTime: undefined as [string, string] | undefined,
|
||||
},
|
||||
});
|
||||
// 详情弹窗
|
||||
const detailVisible = ref(false);
|
||||
const detailData = ref<Partial<LogItem>>({});
|
||||
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
LogAPI.getPage(queryParams)
|
||||
LogAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
pageData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -158,14 +158,14 @@ function fetchData(): void {
|
||||
}
|
||||
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
queryParams.createTime = undefined;
|
||||
tableData.params.pageNum = 1;
|
||||
tableData.params.createTime = undefined;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-suffix=":">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true" label-suffix=":">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input
|
||||
v-model="queryParams.title"
|
||||
v-model="tableData.params.title"
|
||||
placeholder="标题"
|
||||
clearable
|
||||
@keyup.enter="handleQuery()"
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<el-form-item label="发布状态" prop="publishStatus">
|
||||
<el-select
|
||||
v-model="queryParams.publishStatus"
|
||||
v-model="tableData.params.publishStatus"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
style="width: 100px"
|
||||
@@ -57,7 +57,7 @@
|
||||
<el-table
|
||||
ref="dataTableRef"
|
||||
v-loading="loading"
|
||||
:data="pageData"
|
||||
:data="tableData.list"
|
||||
highlight-current-row
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
@@ -155,10 +155,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData()"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -277,7 +277,7 @@ defineOptions({
|
||||
});
|
||||
|
||||
import NoticeAPI from "@/api/system/notice";
|
||||
import type { NoticeItem, NoticeForm, NoticeQueryParams, NoticeDetail } from "@/api/system/notice";
|
||||
import type { NoticeItem, NoticeForm, NoticeDetail } from "@/api/system/notice";
|
||||
import UserAPI from "@/api/system/user";
|
||||
import type { FormInstance, FormRules } from "element-plus";
|
||||
|
||||
@@ -285,19 +285,23 @@ import type { FormInstance, FormRules } from "element-plus";
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
const dataFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<NoticeQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const pageData = ref<NoticeItem[]>([]);
|
||||
const userOptions = ref<OptionItem[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const selectIds = ref<number[]>([]);
|
||||
|
||||
const tableData = reactive<PageResult<NoticeItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
title: "",
|
||||
publishStatus: undefined,
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
title: "",
|
||||
@@ -341,7 +345,7 @@ const currentNotice = ref<NoticeDetail>({});
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -350,10 +354,10 @@ function handleQuery(): void {
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
NoticeAPI.getPage(queryParams)
|
||||
NoticeAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
pageData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -365,7 +369,7 @@ function fetchData(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
<div class="page-container">
|
||||
<!-- 搜索区域 -->
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item prop="keywords" label="关键字">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="角色名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -37,7 +37,7 @@
|
||||
<el-table
|
||||
ref="dataTableRef"
|
||||
v-loading="loading"
|
||||
:data="roleList"
|
||||
:data="tableData.list"
|
||||
highlight-current-row
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
@@ -92,10 +92,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchList"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -233,7 +233,7 @@ import { useAppStore } from "@/stores/app";
|
||||
import { DeviceEnum } from "@/enums/settings";
|
||||
|
||||
import RoleAPI from "@/api/system/role";
|
||||
import type { RoleItem, RoleForm, RoleQueryParams } from "@/api/system/role";
|
||||
import type { RoleItem, RoleForm } from "@/api/system/role";
|
||||
import MenuAPI from "@/api/system/menu";
|
||||
import DeptAPI from "@/api/system/dept";
|
||||
|
||||
@@ -250,15 +250,17 @@ const permTreeRef = ref();
|
||||
|
||||
const loading = ref(false);
|
||||
const ids = ref<number[]>([]);
|
||||
const total = ref(0);
|
||||
|
||||
const queryParams = reactive<RoleQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
const tableData = reactive<PageResult<RoleItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
},
|
||||
});
|
||||
|
||||
// 角色表格数据
|
||||
const roleList = ref<RoleItem[]>();
|
||||
// 菜单权限下拉
|
||||
const menuPermOptions = ref<OptionItem[]>([]);
|
||||
// 部门下拉选项
|
||||
@@ -305,9 +307,9 @@ const parentChildLinked = ref(true);
|
||||
async function fetchList(): Promise<void> {
|
||||
loading.value = true;
|
||||
try {
|
||||
const data = await RoleAPI.getPage(queryParams);
|
||||
roleList.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
const data = await RoleAPI.getPage(tableData.params);
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
@@ -315,7 +317,7 @@ async function fetchList(): Promise<void> {
|
||||
|
||||
// 查询(重置页码后获取数据)
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchList();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item prop="keywords" label="关键字">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="租户名称/租户编码/域名"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -12,7 +12,12 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="status" label="状态">
|
||||
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 120px">
|
||||
<el-select
|
||||
v-model="tableData.params.status"
|
||||
placeholder="全部"
|
||||
clearable
|
||||
style="width: 120px"
|
||||
>
|
||||
<el-option label="正常" :value="1" />
|
||||
<el-option label="禁用" :value="0" />
|
||||
</el-select>
|
||||
@@ -50,7 +55,7 @@
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="pageData"
|
||||
:data="tableData.list"
|
||||
highlight-current-row
|
||||
border
|
||||
@selection-change="handleSelectionChange"
|
||||
@@ -143,10 +148,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -360,12 +365,7 @@ import { hasPerm } from "@/utils/auth";
|
||||
import TenantAPI from "@/api/system/tenant";
|
||||
import TenantPlanAPI from "@/api/system/tenant-plan";
|
||||
import MenuAPI from "@/api/system/menu";
|
||||
import type {
|
||||
TenantCreateForm,
|
||||
TenantForm,
|
||||
TenantQueryParams,
|
||||
TenantItem,
|
||||
} from "@/api/system/tenant";
|
||||
import type { TenantCreateForm, TenantForm, TenantItem } from "@/api/system/tenant";
|
||||
import type { OptionItem } from "@/api/common";
|
||||
import { MenuScopeEnum } from "@/enums/business";
|
||||
import { isPlatformTenantId } from "@/utils/tenant";
|
||||
@@ -376,21 +376,23 @@ const dataFormRef = ref<FormInstance>();
|
||||
const menuTreeRef = ref();
|
||||
const planPreviewTreeRef = ref();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<TenantQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const pageData = ref<TenantItem[]>([]);
|
||||
const menuPermOptions = ref<OptionItem[]>([]);
|
||||
const planOptions = ref<OptionItem[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const ids = ref<number[]>([]);
|
||||
|
||||
const tableData = reactive<PageResult<TenantItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
title: "",
|
||||
@@ -484,13 +486,13 @@ function resolvePlanLabel(planId?: number): string {
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
TenantAPI.getPage(queryParams)
|
||||
TenantAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
pageData.value = data.list.map((item: TenantItem) => ({
|
||||
tableData.list = data.list.map((item: TenantItem) => ({
|
||||
...item,
|
||||
planId: item.planId != null ? Number(item.planId) : undefined,
|
||||
}));
|
||||
total.value = data.total ?? 0;
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -822,7 +824,7 @@ function applyMenuOptionsDisabled(options: OptionItem[], disabled: boolean): Opt
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -831,7 +833,7 @@ function handleQuery(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="page-container">
|
||||
<el-card class="page-search" shadow="never">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true">
|
||||
<el-form-item label="关键字" prop="keywords">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="套餐名称/套餐编码"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -12,7 +12,12 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 120px">
|
||||
<el-select
|
||||
v-model="tableData.params.status"
|
||||
placeholder="全部"
|
||||
clearable
|
||||
style="width: 120px"
|
||||
>
|
||||
<el-option label="启用" :value="1" />
|
||||
<el-option label="停用" :value="0" />
|
||||
</el-select>
|
||||
@@ -42,7 +47,7 @@
|
||||
<el-table
|
||||
ref="dataTableRef"
|
||||
v-loading="loading"
|
||||
:data="pageData"
|
||||
:data="tableData.list"
|
||||
highlight-current-row
|
||||
border
|
||||
>
|
||||
@@ -95,10 +100,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchData"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -218,11 +223,7 @@ import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "elem
|
||||
import { useDebounceFn } from "@vueuse/core";
|
||||
import MenuAPI from "@/api/system/menu";
|
||||
import TenantPlanAPI from "@/api/system/tenant-plan";
|
||||
import type {
|
||||
TenantPlanForm,
|
||||
TenantPlanItem,
|
||||
TenantPlanQueryParams,
|
||||
} from "@/api/system/tenant-plan";
|
||||
import type { TenantPlanForm, TenantPlanItem } from "@/api/system/tenant-plan";
|
||||
import type { OptionItem } from "@/api/common";
|
||||
import { MenuScopeEnum } from "@/enums/business";
|
||||
|
||||
@@ -232,19 +233,21 @@ const dataFormRef = ref<FormInstance>();
|
||||
const dataTableRef = ref();
|
||||
const menuTreeRef = ref();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<TenantPlanQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const pageData = ref<TenantPlanItem[]>([]);
|
||||
const menuPermOptions = ref<OptionItem[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
|
||||
const tableData = reactive<PageResult<TenantPlanItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
keywords: "",
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
title: "",
|
||||
@@ -280,10 +283,10 @@ const menuParentChildLinked = ref(true);
|
||||
*/
|
||||
function fetchData(): void {
|
||||
loading.value = true;
|
||||
TenantPlanAPI.getPage(queryParams)
|
||||
TenantPlanAPI.getPage(tableData.params)
|
||||
.then((data) => {
|
||||
pageData.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
})
|
||||
.finally(() => {
|
||||
loading.value = false;
|
||||
@@ -294,7 +297,7 @@ function fetchData(): void {
|
||||
* 查询按钮点击事件
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
@@ -303,7 +306,7 @@ function handleQuery(): void {
|
||||
*/
|
||||
function handleResetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchData();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
<el-row :gutter="20">
|
||||
<!-- 部门树 -->
|
||||
<el-col :lg="4" :xs="24" class="page-aside">
|
||||
<UserDeptTree v-model="queryParams.deptId" @node-click="handleQuery" />
|
||||
<UserDeptTree v-model="tableData.params.deptId" @node-click="handleQuery" />
|
||||
</el-col>
|
||||
|
||||
<!-- 用户列表 -->
|
||||
<el-col :lg="20" :xs="24" class="page-main">
|
||||
<!-- 搜索区域 -->
|
||||
<el-card shadow="never" class="page-search">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="auto">
|
||||
<el-form ref="queryFormRef" :model="tableData.params" :inline="true" label-width="auto">
|
||||
<el-form-item label="关键字" prop="keywords">
|
||||
<el-input
|
||||
v-model="queryParams.keywords"
|
||||
v-model="tableData.params.keywords"
|
||||
placeholder="用户名/昵称/手机号"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select
|
||||
v-model="queryParams.status"
|
||||
v-model="tableData.params.status"
|
||||
placeholder="全部"
|
||||
clearable
|
||||
style="width: 100px"
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="queryParams.createTime"
|
||||
v-model="tableData.params.createTime"
|
||||
:editable="false"
|
||||
type="daterange"
|
||||
range-separator="~"
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="userList"
|
||||
:data="tableData.list"
|
||||
border
|
||||
stripe
|
||||
highlight-current-row
|
||||
@@ -150,10 +150,10 @@
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
v-if="tableData.total > 0"
|
||||
v-model:total="tableData.total"
|
||||
v-model:page="tableData.params.pageNum"
|
||||
v-model:limit="tableData.params.pageSize"
|
||||
@pagination="fetchList"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -244,7 +244,7 @@
|
||||
import { computed, onMounted, reactive, ref } from "vue";
|
||||
import { useDebounceFn } from "@vueuse/core";
|
||||
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from "element-plus";
|
||||
import type { UserForm, UserQueryParams, UserItem } from "@/api/system/user";
|
||||
import type { UserForm, UserItem } from "@/api/system/user";
|
||||
import { downloadFile } from "@/utils";
|
||||
import UserAPI from "@/api/system/user";
|
||||
import DeptAPI from "@/api/system/dept";
|
||||
@@ -267,17 +267,18 @@ const userStore = useUserStore();
|
||||
const queryFormRef = ref<FormInstance>();
|
||||
const userFormRef = ref<FormInstance>();
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive<UserQueryParams>({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
});
|
||||
|
||||
// 列表数据
|
||||
const userList = ref<UserItem[]>([]);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
|
||||
const tableData = reactive<PageResult<UserItem>>({
|
||||
list: [],
|
||||
total: 0,
|
||||
params: {
|
||||
//查询参数
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
});
|
||||
|
||||
// 弹窗状态
|
||||
const dialogState = reactive({
|
||||
visible: false,
|
||||
@@ -317,9 +318,9 @@ const rules: FormRules = {
|
||||
async function fetchList(): Promise<void> {
|
||||
loading.value = true;
|
||||
try {
|
||||
const data = await UserAPI.getPage(queryParams);
|
||||
userList.value = data.list;
|
||||
total.value = data.total ?? 0;
|
||||
const data = await UserAPI.getPage(tableData.params);
|
||||
tableData.list = data.list ?? [];
|
||||
tableData.total = data.total ?? 0;
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
@@ -341,7 +342,7 @@ const { selectedIds, hasSelection, handleSelectionChange } = useTableSelection<U
|
||||
* 执行查询(重置页码)
|
||||
*/
|
||||
function handleQuery(): void {
|
||||
queryParams.pageNum = 1;
|
||||
tableData.params.pageNum = 1;
|
||||
fetchList();
|
||||
}
|
||||
|
||||
@@ -350,8 +351,8 @@ function handleQuery(): void {
|
||||
*/
|
||||
function resetQuery(): void {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.deptId = undefined;
|
||||
queryParams.createTime = undefined;
|
||||
tableData.params.deptId = undefined;
|
||||
tableData.params.createTime = undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -512,7 +513,7 @@ function handleDelete(id?: string): void {
|
||||
* 导出用户列表
|
||||
*/
|
||||
async function exportUsers(): Promise<void> {
|
||||
const response = await UserAPI.export(queryParams);
|
||||
const response = await UserAPI.export(tableData.params);
|
||||
downloadFile(response);
|
||||
ElMessage.success("导出成功");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user