refactor: ♻️ aPI 文件根据模块划分

This commit is contained in:
ray
2024-10-18 22:28:02 +08:00
parent 0cc300a032
commit af460b5dc3
43 changed files with 150 additions and 297 deletions

View File

@@ -1,148 +0,0 @@
import request from "@/utils/request";
const DICT_BASE_URL = "/api/v1/dict";
const DictAPI = {
/**
* 获取字典分页列表
*
* @param queryParams 查询参数
* @returns 字典分页结果
*/
getPage(queryParams: DictPageQuery) {
return request<any, PageResult<DictPageVO[]>>({
url: `${DICT_BASE_URL}/page`,
method: "get",
params: queryParams,
});
},
/**
* 获取字典表单数据
*
* @param id 字典ID
* @returns 字典表单数据
*/
getFormData(id: number) {
return request<any, ResponseData<DictForm>>({
url: `${DICT_BASE_URL}/${id}/form`,
method: "get",
});
},
/**
* 新增字典
*
* @param data 字典表单数据
*/
add(data: DictForm) {
return request({
url: `${DICT_BASE_URL}`,
method: "post",
data: data,
});
},
/**
* 修改字典
*
* @param id 字典ID
* @param data 字典表单数据
*/
update(id: number, data: DictForm) {
return request({
url: `${DICT_BASE_URL}/${id}`,
method: "put",
data: data,
});
},
/**
* 删除字典
*
* @param ids 字典ID多个以英文逗号(,)分隔
*/
deleteByIds(ids: string) {
return request({
url: `${DICT_BASE_URL}/${ids}`,
method: "delete",
});
},
/**
* 获取字典列表
*
* @returns 字典列表
*/
getList() {
return request<any, OptionType[]>({
url: `${DICT_BASE_URL}/list`,
method: "get",
});
},
};
export default DictAPI;
/**
* 字典查询参数
*/
export interface DictPageQuery extends PageQuery {
/**
* 关键字(字典名称/编码)
*/
keywords?: string;
/**
* 字典状态1:启用0:禁用)
*/
status?: number;
}
/**
* 字典分页对象
*/
export interface DictPageVO {
/**
* 字典ID
*/
id: number;
/**
* 字典名称
*/
name: string;
/**
* 字典编码
*/
dictCode: string;
/**
* 字典状态1:启用0:禁用)
*/
status: number;
}
/**
* 字典
*/
export interface DictForm {
/**
* 字典ID
*/
id?: number;
/**
* 字典名称
*/
name?: string;
/**
* 字典编码
*/
dictCode?: string;
/**
* 字典状态1-启用0-禁用)
*/
status?: number;
/**
* 备注
*/
remark?: string;
}

View File

@@ -184,7 +184,7 @@
</template>
<script setup lang="ts">
import NoticeAPI, { NoticePageVO } from "@/api/notice";
import NoticeAPI, { NoticePageVO } from "@/api/system/notice";
import WebSocketManager from "@/utils/websocket";
import router from "@/router";

View File

@@ -1,5 +1,5 @@
export default {
// 路由国际化
// 菜单国际化
route: {
dashboard: "Dashboard",
document: "Document",

View File

@@ -13,4 +13,5 @@ export * from "./modules/permission";
export * from "./modules/settings";
export * from "./modules/tagsView";
export * from "./modules/user";
export * from "./modules/dict";
export { store };

View File

@@ -8,12 +8,8 @@ function setToken(token: string) {
return localStorage.setItem(TOKEN_KEY, token);
}
function removeToken() {
function clearToken() {
return localStorage.removeItem(TOKEN_KEY);
}
function isLogin(): boolean {
return !!getToken();
}
export { getToken, setToken, removeToken, isLogin };
export { getToken, setToken, clearToken };

View File

@@ -2,10 +2,10 @@ import axios, {
type InternalAxiosRequestConfig,
type AxiosResponse,
} from "axios";
import qs from "qs";
import { useUserStoreHook } from "@/store/modules/user";
import { ResultEnum } from "@/enums/ResultEnum";
import { getToken } from "@/utils/auth";
import qs from "qs";
// 创建 axios 实例
const service = axios.create({
@@ -51,7 +51,7 @@ service.interceptors.response.use(
return Promise.reject(new Error(msg || "Error"));
},
(error: any) => {
// 异常处理
// 异常处理 非 2xx 状态码 会进入这里
if (error.response.data) {
const { code, msg } = error.response.data;
if (code === ResultEnum.TOKEN_INVALID) {
@@ -61,7 +61,7 @@ service.interceptors.response.use(
type: "info",
});
useUserStoreHook()
.resetToken()
.clearUserSession()
.then(() => {
location.reload();
});
@@ -73,5 +73,4 @@ service.interceptors.response.use(
}
);
// 导出 axios 实例
export default service;

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item prop="keywords" label="关键字">
<el-input
@@ -461,8 +461,8 @@ import GeneratorAPI, {
FieldConfig,
} from "@/api/codegen";
import DictAPI from "@/api/dict";
import MenuAPI from "@/api/menu";
import DictAPI from "@/api/system/dict";
import MenuAPI from "@/api/system/menu";
interface TreeNode {
label: string;

View File

@@ -33,7 +33,7 @@
<script setup lang="ts">
import * as echarts from "echarts";
import LogAPI, { VisitTrendVO, VisitTrendQuery } from "@/api/log";
import LogAPI, { VisitTrendVO, VisitTrendQuery } from "@/api/system/log";
const dataRange = ref(1);
const chart: Ref<echarts.ECharts | null> = ref(null);

View File

@@ -8,7 +8,7 @@
<div class="flex h-full items-center">
<img
class="w-20 h-20 mr-5 rounded-full"
:src="userStore.user.avatar + '?imageView2/1/w/80/h/80'"
:src="userStore.userInfo.avatar + '?imageView2/1/w/80/h/80'"
/>
<div>
<p>{{ greetings }}</p>
@@ -195,12 +195,14 @@ defineOptions({
inheritAttrs: false,
});
import VisitTrend from "./components/VisitTrend.vue";
import WebSocketManager from "@/utils/websocket";
import router from "@/router";
import { useUserStore } from "@/store/modules/user";
import StatsAPI, { VisitStatsVO } from "@/api/log";
import NoticeAPI, { NoticePageVO } from "@/api/notice";
import StatsAPI, { VisitStatsVO } from "@/api/system/log";
import NoticeAPI, { NoticePageVO } from "@/api/system/notice";
const noticeDetailRef = ref();
@@ -211,11 +213,11 @@ const greetings = computed(() => {
if (hours >= 6 && hours < 8) {
return "晨起披衣出草堂,轩窗已自喜微凉🌅!";
} else if (hours >= 8 && hours < 12) {
return "上午好," + userStore.user.nickname + "";
return "上午好," + userStore.userInfo.nickname + "";
} else if (hours >= 12 && hours < 18) {
return "下午好," + userStore.user.nickname + "";
return "下午好," + userStore.userInfo.nickname + "";
} else if (hours >= 18 && hours < 24) {
return "晚上好," + userStore.user.nickname + "";
return "晚上好," + userStore.userInfo.nickname + "";
} else {
return "偷偷向银河要了一把碎星,只等你闭上眼睛撒入你的梦中,晚安🌛!";
}

View File

@@ -1,4 +1,4 @@
import UserAPI, { type UserForm } from "@/api/user";
import UserAPI, { type UserForm } from "@/api/system/user";
import type { IModalConfig } from "@/components/CURD/types";
const modalConfig: IModalConfig<UserForm> = {

View File

@@ -1,6 +1,6 @@
import UserAPI from "@/api/user";
import UserAPI from "@/api/system/user";
import RoleAPI from "@/api/role";
import type { UserPageQuery } from "@/api/user";
import type { UserPageQuery } from "@/api/system/user";
import type { IContentConfig } from "@/components/CURD/types";
const contentConfig: IContentConfig<UserPageQuery> = {

View File

@@ -1,4 +1,4 @@
import UserAPI, { type UserForm } from "@/api/user";
import UserAPI, { type UserForm } from "@/api/system/user";
import type { IModalConfig } from "@/components/CURD/types";
import { DeviceEnum } from "@/enums/DeviceEnum";
import { useAppStore } from "@/store";

View File

@@ -1,4 +1,4 @@
import DeptAPI from "@/api/dept";
import DeptAPI from "@/api/system/dept";
import type { ISearchConfig } from "@/components/CURD/types";
const searchConfig: ISearchConfig = {

View File

@@ -57,7 +57,7 @@
@submit-click="handleSubmitClick"
>
<template #gender="scope">
<dictionary v-model="scope.formData[scope.prop]" code="gender" />
<Dict v-model="scope.formData[scope.prop]" code="gender" />
</template>
</page-modal>
@@ -68,7 +68,7 @@
@submit-click="handleSubmitClick"
>
<template #gender="scope">
<dictionary v-model="scope.formData[scope.prop]" code="gender" />
<Dict v-model="scope.formData[scope.prop]" code="gender" />
</template>
</page-modal>
</template>
@@ -89,9 +89,9 @@
</template>
<script setup lang="ts">
import UserAPI from "@/api/user";
import DeptAPI from "@/api/dept";
import RoleAPI from "@/api/role";
import UserAPI from "@/api/system/user";
import DeptAPI from "@/api/system/dept";
import RoleAPI from "@/api/system/role";
import type { IObject, IOperatData } from "@/components/CURD/types";
import usePage from "@/components/CURD/usePage";
import addModalConfig from "./config/add";

View File

@@ -6,7 +6,7 @@ const iconName = ref("edit");
<template>
<div class="app-container">
<el-link
href="https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/icon-selector.vue"
href="https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/icon-select.vue"
type="primary"
target="_blank"
class="mb-10"

View File

@@ -1,4 +1,4 @@
import UserAPI from "@/api/user";
import UserAPI from "@/api/system/user";
import type { ISelectConfig } from "@/components/TableSelect/index.vue";
const selectConfig: ISelectConfig = {

View File

@@ -1,8 +1,56 @@
<!-- 文件上传组件示例 -->
<script setup lang="ts">
import ImageUpload from "@/components/Upload/ImageUpload.vue";
import FileUpload from "@/components/Upload/FileUpload.vue";
<template>
<div class="app-container">
<el-link
href="https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/upload.vue"
type="primary"
target="_blank"
class="mb-10"
>
示例源码 请点击>>>>
</el-link>
<el-form>
<el-form-item label="单图上传">
<SingleImageUpload v-model="picUrl" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="singleImageUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
<el-form-item label="多图上传">
<MultiImageUpload v-model="picUrls" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="imageUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
<el-form-item label="文件上传">
<FileUpload v-model="fileUrls" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="fileUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
</el-form>
</div>
</template>
<script setup lang="ts">
// 单图
const picUrl = ref("https://s2.loli.net/2023/05/24/yNsxFC8rLHMZQcK.jpg");
@@ -16,11 +64,11 @@ const singleImageUploadArgData = [
{
argsName: "size",
type: "String",
default: "148px",
default: "150px",
desc: "图片上传组件的尺寸大小",
},
{
argsName: "maxSize",
argsName: "max-size",
type: "Number",
default: "10",
desc: "单个图片上传大小限制(单位M)",
@@ -92,10 +140,10 @@ const imageUploadArgData = [
desc: "是否显示上传按钮",
},
{
argsName: "upload-max-size",
argsName: "max-size",
type: "Number",
default: "2 * 1024 * 1024",
desc: "单个图片上传大小限制(单位byte)",
default: "10",
desc: "单个图片上传大小限制(单位MB)",
},
{
argsName: "accept",
@@ -148,10 +196,10 @@ const fileUploadArgData = [
desc: "是否显示上传按钮",
},
{
argsName: "upload-max-size",
argsName: "max-size",
type: "Number",
default: "2 * 1024 * 1024",
desc: "单个文件上传大小限制(单位byte)",
default: "10",
desc: "单个文件上传大小限制(单位MB)",
},
{
argsName: "accept",
@@ -203,53 +251,3 @@ const fileUploadArgData = [
},
];
</script>
<template>
<div class="app-container">
<el-link
href="https://gitee.com/youlaiorg/vue3-element-admin/blob/master/src/views/demo/upload.vue"
type="primary"
target="_blank"
class="mb-10"
>
示例源码 请点击>>>>
</el-link>
<el-form>
<el-form-item label="单图上传">
<SingleImageUpload v-model="picUrl" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="singleImageUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
<el-form-item label="多图上传">
<image-upload v-model="picUrls" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="imageUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
<el-form-item label="文件上传">
<file-upload v-model="fileUrls" />
</el-form-item>
<el-form-item label="参数说明">
<el-table :data="fileUploadArgData" border>
<el-table-column prop="argsName" label="参数名称" width="300" />
<el-table-column prop="type" label="参数类型" width="200" />
<el-table-column prop="default" label="默认值" width="400" />
<el-table-column prop="desc" label="描述" width="300" />
</el-table>
</el-form-item>
</el-form>
</div>
</template>

View File

@@ -77,17 +77,18 @@
:class="{
'tip-message': message.type === 'tip',
message: message.type !== 'tip',
'message--sent': message.sender === userStore.user.username,
'message--received': message.sender !== userStore.user.username,
'message--sent': message.sender === userStore.userInfo.username,
'message--received':
message.sender !== userStore.userInfo.username,
}"
>
<div v-if="message.type != 'tip'" class="message-content">
<div
:class="{
'message-sender':
message.sender === userStore.user.username,
message.sender === userStore.userInfo.username,
'message-receiver':
message.sender !== userStore.user.username,
message.sender !== userStore.userInfo.username,
}"
>
{{ message.sender }}
@@ -131,7 +132,7 @@ const queneMessage = ref(
"hi , " +
receiver.value +
" , 我是" +
userStore.user.username +
userStore.userInfo.username +
" , 想和你交个朋友 ! "
);
@@ -206,7 +207,7 @@ function sendToAll() {
body: topicMessage.value,
});
messages.value.push({
sender: userStore.user.username,
sender: userStore.userInfo.username,
content: topicMessage.value,
});
}
@@ -219,7 +220,7 @@ function sendToUser() {
body: queneMessage.value,
});
messages.value.push({
sender: userStore.user.username,
sender: userStore.userInfo.username,
content: queneMessage.value,
});
}

View File

@@ -190,7 +190,7 @@
<el-input v-model="userProfileForm.nickname" />
</el-form-item>
<el-form-item label="性别">
<dictionary v-model="userProfileForm.gender" code="gender" />
<Dict v-model="userProfileForm.gender" code="gender" />
</el-form-item>
</el-form>
@@ -300,7 +300,7 @@ import UserAPI, {
MobileBindingForm,
EmailBindingForm,
UserProfileForm,
} from "@/api/user";
} from "@/api/system/user";
import FileAPI from "@/api/file";

View File

@@ -1,7 +1,7 @@
<!-- 系统配置 -->
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -28,7 +28,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<el-button
v-hasPerm="['sys:config:add']"
@@ -187,7 +187,7 @@ import ConfigAPI, {
ConfigPageVO,
ConfigForm,
ConfigPageQuery,
} from "@/api/config";
} from "@/api/system/config";
const queryFormRef = ref(ElForm);
const dataFormRef = ref(ElForm);

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -38,7 +38,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<el-button
v-hasPerm="['sys:dept:add']"
@@ -186,7 +186,7 @@ defineOptions({
inheritAttrs: false,
});
import DeptAPI, { DeptVO, DeptForm, DeptQuery } from "@/api/dept";
import DeptAPI, { DeptVO, DeptForm, DeptQuery } from "@/api/system/dept";
const queryFormRef = ref(ElForm);
const deptFormRef = ref(ElForm);

View File

@@ -1,7 +1,7 @@
<!-- 字典数据 -->
<template>
<div class="app-container">
<div class="search-container mt-5">
<div class="search-bar mt-5">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -176,7 +176,7 @@ import DictDataAPI, {
DictDataPageQuery,
DictDataPageVO,
DictDataForm,
} from "@/api/dict-data";
} from "@/api/system/dict-data";
const route = useRoute();

View File

@@ -1,7 +1,7 @@
<!-- 字典 -->
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -172,7 +172,11 @@ defineOptions({
inherititems: false,
});
import DictAPI, { DictPageQuery, DictPageVO, DictForm } from "@/api/dict";
import DictAPI, {
DictPageQuery,
DictPageVO,
DictForm,
} from "@/api/system/dict";
import router from "@/router";

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item prop="keywords" label="关键字">
<el-input
@@ -84,7 +84,7 @@ defineOptions({
inheritAttrs: false,
});
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/log";
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/system/log";
const queryFormRef = ref(ElForm);

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -23,7 +23,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<el-button
v-hasPerm="['sys:menu:add']"
@@ -463,7 +463,7 @@ defineOptions({
inheritAttrs: false,
});
import MenuAPI, { MenuQuery, MenuForm, MenuVO } from "@/api/menu";
import MenuAPI, { MenuQuery, MenuForm, MenuVO } from "@/api/system/menu";
import { MenuTypeEnum } from "@/enums/MenuTypeEnum";
const queryFormRef = ref(ElForm);

View File

@@ -53,7 +53,7 @@
</template>
<script setup lang="ts">
import NoticeAPI, { NoticeDetailVO } from "@/api/notice";
import NoticeAPI, { NoticeDetailVO } from "@/api/system/notice";
const visible = ref(false);
const notice = ref<NoticeDetailVO>({});

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form
ref="queryFormRef"
:model="queryParams"
@@ -40,7 +40,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<el-button
v-hasPerm="['sys:notice:add']"
@@ -222,18 +222,10 @@
/>
</el-form-item>
<el-form-item label="通知类型" prop="type">
<dictionary
v-model="formData.type"
type="button"
code="notice_type"
/>
<Dict v-model="formData.type" type="button" code="notice_type" />
</el-form-item>
<el-form-item label="通知等级" prop="level">
<dictionary
v-model="formData.level"
type="button"
code="notice_level"
/>
<Dict v-model="formData.level" type="button" code="notice_level" />
</el-form-item>
<el-form-item label="目标类型" prop="targetType">
<el-radio-group v-model="formData.targetType">
@@ -283,8 +275,8 @@ import NoticeAPI, {
NoticePageVO,
NoticeForm,
NoticePageQuery,
} from "@/api/notice";
import UserAPI from "@/api/user";
} from "@/api/system/notice";
import UserAPI from "@/api/system/user";
const queryFormRef = ref(ElForm);
const dataFormRef = ref(ElForm);

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="通知标题" prop="title">
<el-input
@@ -27,7 +27,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<el-table
ref="dataTableRef"
v-loading="loading"
@@ -105,7 +105,7 @@ defineOptions({
inheritAttrs: false,
});
import NoticeAPI, { NoticePageVO, NoticePageQuery } from "@/api/notice";
import NoticeAPI, { NoticePageVO, NoticePageQuery } from "@/api/system/notice";
const queryFormRef = ref(ElForm);
const noticeDetailRef = ref();

View File

@@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item prop="keywords" label="关键字">
<el-input
@@ -24,7 +24,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<el-button type="success" @click="handleOpenDialog()">
<template #icon><Plus /></template>
@@ -237,8 +237,12 @@ defineOptions({
inheritAttrs: false,
});
import RoleAPI, { RolePageVO, RoleForm, RolePageQuery } from "@/api/role";
import MenuAPI from "@/api/menu";
import RoleAPI, {
RolePageVO,
RoleForm,
RolePageQuery,
} from "@/api/system/role";
import MenuAPI from "@/api/system/menu";
const queryFormRef = ref(ElForm);
const roleFormRef = ref(ElForm);

View File

@@ -21,7 +21,7 @@
</template>
<script setup lang="ts">
import DeptAPI from "@/api/dept";
import DeptAPI from "@/api/system/dept";
const props = defineProps({
modelValue: {
type: [Number],

View File

@@ -65,7 +65,7 @@
<script lang="ts" setup>
import { type UploadUserFile } from "element-plus";
import UserAPI from "@/api/user";
import UserAPI from "@/api/system/user";
const props = defineProps({
visible: {

View File

@@ -9,7 +9,7 @@
<!-- 用户列表 -->
<el-col :lg="20" :xs="24">
<div class="search-container">
<div class="search-bar">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="关键字" prop="keywords">
<el-input
@@ -59,7 +59,7 @@
</el-form>
</div>
<el-card shadow="never" class="table-container">
<el-card shadow="never" class="table-wrapper">
<template #header>
<div class="flex-x-between">
<div>
@@ -238,7 +238,7 @@
</el-form-item>
<el-form-item label="性别" prop="gender">
<dictionary v-model="formData.gender" code="gender" />
<Dict v-model="formData.gender" code="gender" />
</el-form-item>
<el-form-item label="角色" prop="roleIds">
@@ -302,9 +302,13 @@ defineOptions({
inheritAttrs: false,
});
import UserAPI, { UserForm, UserPageQuery, UserPageVO } from "@/api/user";
import DeptAPI from "@/api/dept";
import RoleAPI from "@/api/role";
import UserAPI, {
UserForm,
UserPageQuery,
UserPageVO,
} from "@/api/system/user";
import DeptAPI from "@/api/system/dept";
import RoleAPI from "@/api/system/role";
import DeptTree from "./dept-tree.vue";
import UserImport from "./import.vue";