refactor: ♻️ aPI 文件根据模块划分
This commit is contained in:
148
src/api/dict.ts
148
src/api/dict.ts
@@ -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;
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export default {
|
||||
// 路由国际化
|
||||
// 菜单国际化
|
||||
route: {
|
||||
dashboard: "Dashboard",
|
||||
document: "Document",
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 "偷偷向银河要了一把碎星,只等你闭上眼睛撒入你的梦中,晚安🌛!";
|
||||
}
|
||||
|
||||
@@ -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> = {
|
||||
|
||||
@@ -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> = {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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"
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>({});
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user