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>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import NoticeAPI, { NoticePageVO } from "@/api/notice";
|
import NoticeAPI, { NoticePageVO } from "@/api/system/notice";
|
||||||
import WebSocketManager from "@/utils/websocket";
|
import WebSocketManager from "@/utils/websocket";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
export default {
|
export default {
|
||||||
// 路由国际化
|
// 菜单国际化
|
||||||
route: {
|
route: {
|
||||||
dashboard: "Dashboard",
|
dashboard: "Dashboard",
|
||||||
document: "Document",
|
document: "Document",
|
||||||
|
|||||||
@@ -13,4 +13,5 @@ export * from "./modules/permission";
|
|||||||
export * from "./modules/settings";
|
export * from "./modules/settings";
|
||||||
export * from "./modules/tagsView";
|
export * from "./modules/tagsView";
|
||||||
export * from "./modules/user";
|
export * from "./modules/user";
|
||||||
|
export * from "./modules/dict";
|
||||||
export { store };
|
export { store };
|
||||||
|
|||||||
@@ -8,12 +8,8 @@ function setToken(token: string) {
|
|||||||
return localStorage.setItem(TOKEN_KEY, token);
|
return localStorage.setItem(TOKEN_KEY, token);
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeToken() {
|
function clearToken() {
|
||||||
return localStorage.removeItem(TOKEN_KEY);
|
return localStorage.removeItem(TOKEN_KEY);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isLogin(): boolean {
|
export { getToken, setToken, clearToken };
|
||||||
return !!getToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
export { getToken, setToken, removeToken, isLogin };
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import axios, {
|
|||||||
type InternalAxiosRequestConfig,
|
type InternalAxiosRequestConfig,
|
||||||
type AxiosResponse,
|
type AxiosResponse,
|
||||||
} from "axios";
|
} from "axios";
|
||||||
|
import qs from "qs";
|
||||||
import { useUserStoreHook } from "@/store/modules/user";
|
import { useUserStoreHook } from "@/store/modules/user";
|
||||||
import { ResultEnum } from "@/enums/ResultEnum";
|
import { ResultEnum } from "@/enums/ResultEnum";
|
||||||
import { getToken } from "@/utils/auth";
|
import { getToken } from "@/utils/auth";
|
||||||
import qs from "qs";
|
|
||||||
|
|
||||||
// 创建 axios 实例
|
// 创建 axios 实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
@@ -51,7 +51,7 @@ service.interceptors.response.use(
|
|||||||
return Promise.reject(new Error(msg || "Error"));
|
return Promise.reject(new Error(msg || "Error"));
|
||||||
},
|
},
|
||||||
(error: any) => {
|
(error: any) => {
|
||||||
// 异常处理
|
// 异常处理 非 2xx 状态码 会进入这里
|
||||||
if (error.response.data) {
|
if (error.response.data) {
|
||||||
const { code, msg } = error.response.data;
|
const { code, msg } = error.response.data;
|
||||||
if (code === ResultEnum.TOKEN_INVALID) {
|
if (code === ResultEnum.TOKEN_INVALID) {
|
||||||
@@ -61,7 +61,7 @@ service.interceptors.response.use(
|
|||||||
type: "info",
|
type: "info",
|
||||||
});
|
});
|
||||||
useUserStoreHook()
|
useUserStoreHook()
|
||||||
.resetToken()
|
.clearUserSession()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
@@ -73,5 +73,4 @@ service.interceptors.response.use(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// 导出 axios 实例
|
|
||||||
export default service;
|
export default service;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item prop="keywords" label="关键字">
|
<el-form-item prop="keywords" label="关键字">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -461,8 +461,8 @@ import GeneratorAPI, {
|
|||||||
FieldConfig,
|
FieldConfig,
|
||||||
} from "@/api/codegen";
|
} from "@/api/codegen";
|
||||||
|
|
||||||
import DictAPI from "@/api/dict";
|
import DictAPI from "@/api/system/dict";
|
||||||
import MenuAPI from "@/api/menu";
|
import MenuAPI from "@/api/system/menu";
|
||||||
|
|
||||||
interface TreeNode {
|
interface TreeNode {
|
||||||
label: string;
|
label: string;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import * as echarts from "echarts";
|
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 dataRange = ref(1);
|
||||||
const chart: Ref<echarts.ECharts | null> = ref(null);
|
const chart: Ref<echarts.ECharts | null> = ref(null);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<div class="flex h-full items-center">
|
<div class="flex h-full items-center">
|
||||||
<img
|
<img
|
||||||
class="w-20 h-20 mr-5 rounded-full"
|
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>
|
<div>
|
||||||
<p>{{ greetings }}</p>
|
<p>{{ greetings }}</p>
|
||||||
@@ -195,12 +195,14 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
import VisitTrend from "./components/VisitTrend.vue";
|
||||||
|
|
||||||
import WebSocketManager from "@/utils/websocket";
|
import WebSocketManager from "@/utils/websocket";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
|
|
||||||
import { useUserStore } from "@/store/modules/user";
|
import { useUserStore } from "@/store/modules/user";
|
||||||
import StatsAPI, { VisitStatsVO } from "@/api/log";
|
import StatsAPI, { VisitStatsVO } from "@/api/system/log";
|
||||||
import NoticeAPI, { NoticePageVO } from "@/api/notice";
|
import NoticeAPI, { NoticePageVO } from "@/api/system/notice";
|
||||||
|
|
||||||
const noticeDetailRef = ref();
|
const noticeDetailRef = ref();
|
||||||
|
|
||||||
@@ -211,11 +213,11 @@ const greetings = computed(() => {
|
|||||||
if (hours >= 6 && hours < 8) {
|
if (hours >= 6 && hours < 8) {
|
||||||
return "晨起披衣出草堂,轩窗已自喜微凉🌅!";
|
return "晨起披衣出草堂,轩窗已自喜微凉🌅!";
|
||||||
} else if (hours >= 8 && hours < 12) {
|
} else if (hours >= 8 && hours < 12) {
|
||||||
return "上午好," + userStore.user.nickname + "!";
|
return "上午好," + userStore.userInfo.nickname + "!";
|
||||||
} else if (hours >= 12 && hours < 18) {
|
} else if (hours >= 12 && hours < 18) {
|
||||||
return "下午好," + userStore.user.nickname + "!";
|
return "下午好," + userStore.userInfo.nickname + "!";
|
||||||
} else if (hours >= 18 && hours < 24) {
|
} else if (hours >= 18 && hours < 24) {
|
||||||
return "晚上好," + userStore.user.nickname + "!";
|
return "晚上好," + userStore.userInfo.nickname + "!";
|
||||||
} else {
|
} else {
|
||||||
return "偷偷向银河要了一把碎星,只等你闭上眼睛撒入你的梦中,晚安🌛!";
|
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";
|
import type { IModalConfig } from "@/components/CURD/types";
|
||||||
|
|
||||||
const modalConfig: IModalConfig<UserForm> = {
|
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 RoleAPI from "@/api/role";
|
||||||
import type { UserPageQuery } from "@/api/user";
|
import type { UserPageQuery } from "@/api/system/user";
|
||||||
import type { IContentConfig } from "@/components/CURD/types";
|
import type { IContentConfig } from "@/components/CURD/types";
|
||||||
|
|
||||||
const contentConfig: IContentConfig<UserPageQuery> = {
|
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 type { IModalConfig } from "@/components/CURD/types";
|
||||||
import { DeviceEnum } from "@/enums/DeviceEnum";
|
import { DeviceEnum } from "@/enums/DeviceEnum";
|
||||||
import { useAppStore } from "@/store";
|
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";
|
import type { ISearchConfig } from "@/components/CURD/types";
|
||||||
|
|
||||||
const searchConfig: ISearchConfig = {
|
const searchConfig: ISearchConfig = {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
@submit-click="handleSubmitClick"
|
@submit-click="handleSubmitClick"
|
||||||
>
|
>
|
||||||
<template #gender="scope">
|
<template #gender="scope">
|
||||||
<dictionary v-model="scope.formData[scope.prop]" code="gender" />
|
<Dict v-model="scope.formData[scope.prop]" code="gender" />
|
||||||
</template>
|
</template>
|
||||||
</page-modal>
|
</page-modal>
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
@submit-click="handleSubmitClick"
|
@submit-click="handleSubmitClick"
|
||||||
>
|
>
|
||||||
<template #gender="scope">
|
<template #gender="scope">
|
||||||
<dictionary v-model="scope.formData[scope.prop]" code="gender" />
|
<Dict v-model="scope.formData[scope.prop]" code="gender" />
|
||||||
</template>
|
</template>
|
||||||
</page-modal>
|
</page-modal>
|
||||||
</template>
|
</template>
|
||||||
@@ -89,9 +89,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import UserAPI from "@/api/user";
|
import UserAPI from "@/api/system/user";
|
||||||
import DeptAPI from "@/api/dept";
|
import DeptAPI from "@/api/system/dept";
|
||||||
import RoleAPI from "@/api/role";
|
import RoleAPI from "@/api/system/role";
|
||||||
import type { IObject, IOperatData } from "@/components/CURD/types";
|
import type { IObject, IOperatData } from "@/components/CURD/types";
|
||||||
import usePage from "@/components/CURD/usePage";
|
import usePage from "@/components/CURD/usePage";
|
||||||
import addModalConfig from "./config/add";
|
import addModalConfig from "./config/add";
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const iconName = ref("edit");
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-link
|
<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"
|
type="primary"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="mb-10"
|
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";
|
import type { ISelectConfig } from "@/components/TableSelect/index.vue";
|
||||||
|
|
||||||
const selectConfig: ISelectConfig = {
|
const selectConfig: ISelectConfig = {
|
||||||
|
|||||||
@@ -1,8 +1,56 @@
|
|||||||
<!-- 文件上传组件示例 -->
|
<!-- 文件上传组件示例 -->
|
||||||
<script setup lang="ts">
|
<template>
|
||||||
import ImageUpload from "@/components/Upload/ImageUpload.vue";
|
<div class="app-container">
|
||||||
import FileUpload from "@/components/Upload/FileUpload.vue";
|
<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");
|
const picUrl = ref("https://s2.loli.net/2023/05/24/yNsxFC8rLHMZQcK.jpg");
|
||||||
|
|
||||||
@@ -16,11 +64,11 @@ const singleImageUploadArgData = [
|
|||||||
{
|
{
|
||||||
argsName: "size",
|
argsName: "size",
|
||||||
type: "String",
|
type: "String",
|
||||||
default: "148px",
|
default: "150px",
|
||||||
desc: "图片上传组件的尺寸大小",
|
desc: "图片上传组件的尺寸大小",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
argsName: "maxSize",
|
argsName: "max-size",
|
||||||
type: "Number",
|
type: "Number",
|
||||||
default: "10",
|
default: "10",
|
||||||
desc: "单个图片上传大小限制(单位M)",
|
desc: "单个图片上传大小限制(单位M)",
|
||||||
@@ -92,10 +140,10 @@ const imageUploadArgData = [
|
|||||||
desc: "是否显示上传按钮",
|
desc: "是否显示上传按钮",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
argsName: "upload-max-size",
|
argsName: "max-size",
|
||||||
type: "Number",
|
type: "Number",
|
||||||
default: "2 * 1024 * 1024",
|
default: "10",
|
||||||
desc: "单个图片上传大小限制(单位byte)",
|
desc: "单个图片上传大小限制(单位MB)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
argsName: "accept",
|
argsName: "accept",
|
||||||
@@ -148,10 +196,10 @@ const fileUploadArgData = [
|
|||||||
desc: "是否显示上传按钮",
|
desc: "是否显示上传按钮",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
argsName: "upload-max-size",
|
argsName: "max-size",
|
||||||
type: "Number",
|
type: "Number",
|
||||||
default: "2 * 1024 * 1024",
|
default: "10",
|
||||||
desc: "单个文件上传大小限制(单位byte)",
|
desc: "单个文件上传大小限制(单位MB)",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
argsName: "accept",
|
argsName: "accept",
|
||||||
@@ -203,53 +251,3 @@ const fileUploadArgData = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
</script>
|
</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="{
|
:class="{
|
||||||
'tip-message': message.type === 'tip',
|
'tip-message': message.type === 'tip',
|
||||||
message: message.type !== 'tip',
|
message: message.type !== 'tip',
|
||||||
'message--sent': message.sender === userStore.user.username,
|
'message--sent': message.sender === userStore.userInfo.username,
|
||||||
'message--received': message.sender !== userStore.user.username,
|
'message--received':
|
||||||
|
message.sender !== userStore.userInfo.username,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div v-if="message.type != 'tip'" class="message-content">
|
<div v-if="message.type != 'tip'" class="message-content">
|
||||||
<div
|
<div
|
||||||
:class="{
|
:class="{
|
||||||
'message-sender':
|
'message-sender':
|
||||||
message.sender === userStore.user.username,
|
message.sender === userStore.userInfo.username,
|
||||||
'message-receiver':
|
'message-receiver':
|
||||||
message.sender !== userStore.user.username,
|
message.sender !== userStore.userInfo.username,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
{{ message.sender }}
|
{{ message.sender }}
|
||||||
@@ -131,7 +132,7 @@ const queneMessage = ref(
|
|||||||
"hi , " +
|
"hi , " +
|
||||||
receiver.value +
|
receiver.value +
|
||||||
" , 我是" +
|
" , 我是" +
|
||||||
userStore.user.username +
|
userStore.userInfo.username +
|
||||||
" , 想和你交个朋友 ! "
|
" , 想和你交个朋友 ! "
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -206,7 +207,7 @@ function sendToAll() {
|
|||||||
body: topicMessage.value,
|
body: topicMessage.value,
|
||||||
});
|
});
|
||||||
messages.value.push({
|
messages.value.push({
|
||||||
sender: userStore.user.username,
|
sender: userStore.userInfo.username,
|
||||||
content: topicMessage.value,
|
content: topicMessage.value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -219,7 +220,7 @@ function sendToUser() {
|
|||||||
body: queneMessage.value,
|
body: queneMessage.value,
|
||||||
});
|
});
|
||||||
messages.value.push({
|
messages.value.push({
|
||||||
sender: userStore.user.username,
|
sender: userStore.userInfo.username,
|
||||||
content: queneMessage.value,
|
content: queneMessage.value,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,7 @@
|
|||||||
<el-input v-model="userProfileForm.nickname" />
|
<el-input v-model="userProfileForm.nickname" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别">
|
<el-form-item label="性别">
|
||||||
<dictionary v-model="userProfileForm.gender" code="gender" />
|
<Dict v-model="userProfileForm.gender" code="gender" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
@@ -300,7 +300,7 @@ import UserAPI, {
|
|||||||
MobileBindingForm,
|
MobileBindingForm,
|
||||||
EmailBindingForm,
|
EmailBindingForm,
|
||||||
UserProfileForm,
|
UserProfileForm,
|
||||||
} from "@/api/user";
|
} from "@/api/system/user";
|
||||||
|
|
||||||
import FileAPI from "@/api/file";
|
import FileAPI from "@/api/file";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!-- 系统配置 -->
|
<!-- 系统配置 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['sys:config:add']"
|
v-hasPerm="['sys:config:add']"
|
||||||
@@ -187,7 +187,7 @@ import ConfigAPI, {
|
|||||||
ConfigPageVO,
|
ConfigPageVO,
|
||||||
ConfigForm,
|
ConfigForm,
|
||||||
ConfigPageQuery,
|
ConfigPageQuery,
|
||||||
} from "@/api/config";
|
} from "@/api/system/config";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
const dataFormRef = ref(ElForm);
|
const dataFormRef = ref(ElForm);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['sys:dept:add']"
|
v-hasPerm="['sys:dept:add']"
|
||||||
@@ -186,7 +186,7 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import DeptAPI, { DeptVO, DeptForm, DeptQuery } from "@/api/dept";
|
import DeptAPI, { DeptVO, DeptForm, DeptQuery } from "@/api/system/dept";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
const deptFormRef = ref(ElForm);
|
const deptFormRef = ref(ElForm);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!-- 字典数据 -->
|
<!-- 字典数据 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<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 ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -176,7 +176,7 @@ import DictDataAPI, {
|
|||||||
DictDataPageQuery,
|
DictDataPageQuery,
|
||||||
DictDataPageVO,
|
DictDataPageVO,
|
||||||
DictDataForm,
|
DictDataForm,
|
||||||
} from "@/api/dict-data";
|
} from "@/api/system/dict-data";
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!-- 字典 -->
|
<!-- 字典 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -172,7 +172,11 @@ defineOptions({
|
|||||||
inherititems: false,
|
inherititems: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import DictAPI, { DictPageQuery, DictPageVO, DictForm } from "@/api/dict";
|
import DictAPI, {
|
||||||
|
DictPageQuery,
|
||||||
|
DictPageVO,
|
||||||
|
DictForm,
|
||||||
|
} from "@/api/system/dict";
|
||||||
|
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item prop="keywords" label="关键字">
|
<el-form-item prop="keywords" label="关键字">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -84,7 +84,7 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/log";
|
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/system/log";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['sys:menu:add']"
|
v-hasPerm="['sys:menu:add']"
|
||||||
@@ -463,7 +463,7 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import MenuAPI, { MenuQuery, MenuForm, MenuVO } from "@/api/menu";
|
import MenuAPI, { MenuQuery, MenuForm, MenuVO } from "@/api/system/menu";
|
||||||
import { MenuTypeEnum } from "@/enums/MenuTypeEnum";
|
import { MenuTypeEnum } from "@/enums/MenuTypeEnum";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import NoticeAPI, { NoticeDetailVO } from "@/api/notice";
|
import NoticeAPI, { NoticeDetailVO } from "@/api/system/notice";
|
||||||
|
|
||||||
const visible = ref(false);
|
const visible = ref(false);
|
||||||
const notice = ref<NoticeDetailVO>({});
|
const notice = ref<NoticeDetailVO>({});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form
|
<el-form
|
||||||
ref="queryFormRef"
|
ref="queryFormRef"
|
||||||
:model="queryParams"
|
:model="queryParams"
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['sys:notice:add']"
|
v-hasPerm="['sys:notice:add']"
|
||||||
@@ -222,18 +222,10 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="通知类型" prop="type">
|
<el-form-item label="通知类型" prop="type">
|
||||||
<dictionary
|
<Dict v-model="formData.type" type="button" code="notice_type" />
|
||||||
v-model="formData.type"
|
|
||||||
type="button"
|
|
||||||
code="notice_type"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="通知等级" prop="level">
|
<el-form-item label="通知等级" prop="level">
|
||||||
<dictionary
|
<Dict v-model="formData.level" type="button" code="notice_level" />
|
||||||
v-model="formData.level"
|
|
||||||
type="button"
|
|
||||||
code="notice_level"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="目标类型" prop="targetType">
|
<el-form-item label="目标类型" prop="targetType">
|
||||||
<el-radio-group v-model="formData.targetType">
|
<el-radio-group v-model="formData.targetType">
|
||||||
@@ -283,8 +275,8 @@ import NoticeAPI, {
|
|||||||
NoticePageVO,
|
NoticePageVO,
|
||||||
NoticeForm,
|
NoticeForm,
|
||||||
NoticePageQuery,
|
NoticePageQuery,
|
||||||
} from "@/api/notice";
|
} from "@/api/system/notice";
|
||||||
import UserAPI from "@/api/user";
|
import UserAPI from "@/api/system/user";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
const dataFormRef = ref(ElForm);
|
const dataFormRef = ref(ElForm);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="通知标题" prop="title">
|
<el-form-item label="通知标题" prop="title">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<el-table
|
<el-table
|
||||||
ref="dataTableRef"
|
ref="dataTableRef"
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
@@ -105,7 +105,7 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import NoticeAPI, { NoticePageVO, NoticePageQuery } from "@/api/notice";
|
import NoticeAPI, { NoticePageVO, NoticePageQuery } from "@/api/system/notice";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
const noticeDetailRef = ref();
|
const noticeDetailRef = ref();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item prop="keywords" label="关键字">
|
<el-form-item prop="keywords" label="关键字">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-button type="success" @click="handleOpenDialog()">
|
<el-button type="success" @click="handleOpenDialog()">
|
||||||
<template #icon><Plus /></template>
|
<template #icon><Plus /></template>
|
||||||
@@ -237,8 +237,12 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import RoleAPI, { RolePageVO, RoleForm, RolePageQuery } from "@/api/role";
|
import RoleAPI, {
|
||||||
import MenuAPI from "@/api/menu";
|
RolePageVO,
|
||||||
|
RoleForm,
|
||||||
|
RolePageQuery,
|
||||||
|
} from "@/api/system/role";
|
||||||
|
import MenuAPI from "@/api/system/menu";
|
||||||
|
|
||||||
const queryFormRef = ref(ElForm);
|
const queryFormRef = ref(ElForm);
|
||||||
const roleFormRef = ref(ElForm);
|
const roleFormRef = ref(ElForm);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import DeptAPI from "@/api/dept";
|
import DeptAPI from "@/api/system/dept";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: {
|
modelValue: {
|
||||||
type: [Number],
|
type: [Number],
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { type UploadUserFile } from "element-plus";
|
import { type UploadUserFile } from "element-plus";
|
||||||
|
|
||||||
import UserAPI from "@/api/user";
|
import UserAPI from "@/api/system/user";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
visible: {
|
visible: {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
<!-- 用户列表 -->
|
<!-- 用户列表 -->
|
||||||
<el-col :lg="20" :xs="24">
|
<el-col :lg="20" :xs="24">
|
||||||
<div class="search-container">
|
<div class="search-bar">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keywords">
|
<el-form-item label="关键字" prop="keywords">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-card shadow="never" class="table-container">
|
<el-card shadow="never" class="table-wrapper">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="flex-x-between">
|
<div class="flex-x-between">
|
||||||
<div>
|
<div>
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="性别" prop="gender">
|
<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>
|
||||||
|
|
||||||
<el-form-item label="角色" prop="roleIds">
|
<el-form-item label="角色" prop="roleIds">
|
||||||
@@ -302,9 +302,13 @@ defineOptions({
|
|||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
import UserAPI, { UserForm, UserPageQuery, UserPageVO } from "@/api/user";
|
import UserAPI, {
|
||||||
import DeptAPI from "@/api/dept";
|
UserForm,
|
||||||
import RoleAPI from "@/api/role";
|
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 DeptTree from "./dept-tree.vue";
|
||||||
import UserImport from "./import.vue";
|
import UserImport from "./import.vue";
|
||||||
|
|||||||
Reference in New Issue
Block a user