refactor: store 目录扁平化重构为 stores(Pinia 推荐结构)

This commit is contained in:
Ray.Hao committed 2026-04-20 13:53:10 +08:00
1 parent f669e6951b
commit 33bde0eaf8
46 files changed
+71 -72

No files matched your search

+1 -1
View File
@@ -13,7 +13,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore, useSettingsStore } from "@/store"; import { useAppStore, useSettingsStore } from "@/stores";
import { appConfig } from "@/settings"; import { appConfig } from "@/settings";
import { ThemeMode, ComponentSize } from "@/enums"; import { ThemeMode, ComponentSize } from "@/enums";
@@ -4,7 +4,7 @@
import { ref, onMounted, onBeforeUnmount, toRaw } from "vue"; import { ref, onMounted, onBeforeUnmount, toRaw } from "vue";
import { RouteRecordRaw, LocationQueryRaw } from "vue-router"; import { RouteRecordRaw, LocationQueryRaw } from "vue-router";
import router from "@/router"; import router from "@/router";
import { usePermissionStore } from "@/store"; import { usePermissionStore } from "@/stores";
import { isExternal } from "@/utils"; import { isExternal } from "@/utils";
/** 搜索项类型 */ /** 搜索项类型 */
+1 -1
View File
@@ -42,7 +42,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useDictStore } from "@/store"; import { useDictStore } from "@/stores";
const dictStore = useDictStore(); const dictStore = useDictStore();
+1 -1
View File
@@ -8,7 +8,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useDictStore } from "@/store"; import { useDictStore } from "@/stores";
const props = defineProps({ const props = defineProps({
code: String, // 字典编码 code: String, // 字典编码
+1 -1
View File
@@ -5,7 +5,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useSettingsStore } from "@/store"; import { useSettingsStore } from "@/stores";
import { ThemeMode, SidebarColor, LayoutMode } from "@/enums/settings"; import { ThemeMode, SidebarColor, LayoutMode } from "@/enums/settings";
defineProps({ defineProps({
+1 -1
View File
@@ -17,7 +17,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore } from "@/store/modules/app"; import { useAppStore } from "@/stores/app";
import { LanguageEnum } from "@/enums/settings"; import { LanguageEnum } from "@/enums/settings";
defineProps({ defineProps({
+1 -1
View File
@@ -23,7 +23,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ComponentSize } from "@/enums/settings"; import { ComponentSize } from "@/enums/settings";
import { useAppStore } from "@/store/modules/app"; import { useAppStore } from "@/stores/app";
const { t } = useI18n(); const { t } = useI18n();
const sizeOptions = computed(() => { const sizeOptions = computed(() => {
+1 -1
View File
@@ -28,7 +28,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from "vue"; import { computed } from "vue";
import { ArrowDown } from "@element-plus/icons-vue"; import { ArrowDown } from "@element-plus/icons-vue";
import { useTenantStoreHook } from "@/store/modules/tenant"; import { useTenantStoreHook } from "@/stores/tenant";
const emit = defineEmits<{ const emit = defineEmits<{
(e: "change", tenantId: number): void; (e: "change", tenantId: number): void;
+1 -1
View File
@@ -21,7 +21,7 @@
</el-dropdown> </el-dropdown>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useSettingsStore } from "@/store"; import { useSettingsStore } from "@/stores";
import { ThemeMode } from "@/enums"; import { ThemeMode } from "@/enums";
import { Moon, Sunny, Monitor } from "@element-plus/icons-vue"; import { Moon, Sunny, Monitor } from "@element-plus/icons-vue";
+1 -1
View File
@@ -1,4 +1,4 @@
import { useDictStoreHook } from "@/store/modules/dict"; import { useDictStoreHook } from "@/stores/dict";
import { useSse } from "./useSse"; import { useSse } from "./useSse";
export interface DictChangeMessage { export interface DictChangeMessage {
+1 -1
View File
@@ -1,6 +1,6 @@
import type { Directive, DirectiveBinding } from "vue"; import type { Directive, DirectiveBinding } from "vue";
import { useUserStore } from "@/store"; import { useUserStore } from "@/stores";
import { ROLE_ROOT } from "@/constants"; import { ROLE_ROOT } from "@/constants";
/** /**
+1 -1
View File
@@ -1,6 +1,6 @@
import type { App } from "vue"; import type { App } from "vue";
import { createI18n } from "vue-i18n"; import { createI18n } from "vue-i18n";
import { useAppStoreHook } from "@/store/modules/app"; import { useAppStoreHook } from "@/stores/app";
// 本地语言包 // 本地语言包
import enLocale from "./package/en.json"; import enLocale from "./package/en.json";
import zhCnLocale from "./package/zh-cn.json"; import zhCnLocale from "./package/zh-cn.json";
+1 -1
View File
@@ -74,7 +74,7 @@
import type { LocationQueryRaw, RouteRecordRaw } from "vue-router"; import type { LocationQueryRaw, RouteRecordRaw } from "vue-router";
import { useWindowSize } from "@vueuse/core"; import { useWindowSize } from "@vueuse/core";
import { useLayout } from "./useLayout"; import { useLayout } from "./useLayout";
import { useAppStore, usePermissionStore, useSettingsStore } from "@/store"; import { useAppStore, usePermissionStore, useSettingsStore } from "@/stores";
import { isExternal } from "@/utils/index"; import { isExternal } from "@/utils/index";
import { translateRouteTitle } from "@/lang/utils"; import { translateRouteTitle } from "@/lang/utils";
import { SidebarColor } from "@/enums/settings"; import { SidebarColor } from "@/enums/settings";
+1 -1
View File
@@ -26,7 +26,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { useWindowSize } from "@vueuse/core"; import { useWindowSize } from "@vueuse/core";
import { useLayout } from "./useLayout"; import { useLayout } from "./useLayout";
import { usePermissionStore } from "@/store"; import { usePermissionStore } from "@/stores";
import BaseLayout from "./BaseLayout.vue"; import BaseLayout from "./BaseLayout.vue";
import LayoutLogo from "./components/LayoutLogo.vue"; import LayoutLogo from "./components/LayoutLogo.vue";
import LayoutSidebar from "./components/LayoutSidebar.vue"; import LayoutSidebar from "./components/LayoutSidebar.vue";
+1 -1
View File
@@ -19,7 +19,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { type RouteLocationNormalized } from "vue-router"; import { type RouteLocationNormalized } from "vue-router";
import { useSettingsStore, useTagsViewStore } from "@/store"; import { useSettingsStore, useTagsViewStore } from "@/stores";
import variables from "@/styles/variables.module.scss"; import variables from "@/styles/variables.module.scss";
import Error404 from "@/views/error/404.vue"; import Error404 from "@/views/error/404.vue";
+1 -1
View File
@@ -14,7 +14,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore } from "@/store"; import { useAppStore } from "@/stores";
import Hamburger from "@/components/Hamburger/index.vue"; import Hamburger from "@/components/Hamburger/index.vue";
import Breadcrumb from "@/components/Breadcrumb/index.vue"; import Breadcrumb from "@/components/Breadcrumb/index.vue";
+1 -1
View File
@@ -167,7 +167,7 @@ import { DocumentCopy, RefreshLeft, Check } from "@element-plus/icons-vue";
const { t } = useI18n(); const { t } = useI18n();
import { LayoutMode, PageSwitchingAnimationOptions, SidebarColor, ThemeMode } from "@/enums"; import { LayoutMode, PageSwitchingAnimationOptions, SidebarColor, ThemeMode } from "@/enums";
import { useSettingsStore } from "@/store"; import { useSettingsStore } from "@/stores";
import { themeColorPresets } from "@/settings"; import { themeColorPresets } from "@/settings";
// 页面切换动画选项 // 页面切换动画选项
+1 -1
View File
@@ -30,7 +30,7 @@ import path from "path-browserify";
import type { MenuInstance } from "element-plus"; import type { MenuInstance } from "element-plus";
import type { RouteRecordRaw } from "vue-router"; import type { RouteRecordRaw } from "vue-router";
import { SidebarColor } from "@/enums/settings"; import { SidebarColor } from "@/enums/settings";
import { useSettingsStore, useAppStore } from "@/store"; import { useSettingsStore, useAppStore } from "@/stores";
import { isExternal } from "@/utils/index"; import { isExternal } from "@/utils/index";
import LayoutSidebarItem from "./LayoutSidebarItem.vue"; import LayoutSidebarItem from "./LayoutSidebarItem.vue";
import variables from "@/styles/variables.module.scss"; import variables from "@/styles/variables.module.scss";
+1 -1
View File
@@ -71,7 +71,7 @@
import { useRoute, useRouter, type RouteRecordRaw } from "vue-router"; import { useRoute, useRouter, type RouteRecordRaw } from "vue-router";
import { resolve } from "path-browserify"; import { resolve } from "path-browserify";
import { translateRouteTitle } from "@/lang/utils"; import { translateRouteTitle } from "@/lang/utils";
import { usePermissionStore, useTagsViewStore } from "@/store"; import { usePermissionStore, useTagsViewStore } from "@/stores";
interface ContextMenu { interface ContextMenu {
visible: boolean; visible: boolean;
+2 -2
View File
@@ -71,7 +71,7 @@ import { useI18n } from "vue-i18n";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
import { defaults } from "@/settings"; import { defaults } from "@/settings";
import { DeviceEnum, SidebarColor, ThemeMode, LayoutMode } from "@/enums/settings"; import { DeviceEnum, SidebarColor, ThemeMode, LayoutMode } from "@/enums/settings";
import { useAppStore, useSettingsStore, useUserStore } from "@/store"; import { useAppStore, useSettingsStore, useUserStore } from "@/stores";
// 导入子组件 // 导入子组件
import CommandPalette from "@/components/CommandPalette/index.vue"; import CommandPalette from "@/components/CommandPalette/index.vue";
@@ -80,7 +80,7 @@ import SizeSelect from "@/components/SizeSelect/index.vue";
import LangSelect from "@/components/LangSelect/index.vue"; import LangSelect from "@/components/LangSelect/index.vue";
import NoticeDropdown from "@/components/NoticeDropdown/index.vue"; import NoticeDropdown from "@/components/NoticeDropdown/index.vue";
import TenantSwitcher from "@/components/TenantSwitcher/index.vue"; import TenantSwitcher from "@/components/TenantSwitcher/index.vue";
import { useTenantStoreHook } from "@/store/modules/tenant"; import { useTenantStoreHook } from "@/stores/tenant";
const { t } = useI18n(); const { t } = useI18n();
const appStore = useAppStore(); const appStore = useAppStore();
+1 -1
View File
@@ -5,7 +5,7 @@
*/ */
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useWindowSize } from "@vueuse/core"; import { useWindowSize } from "@vueuse/core";
import { useAppStore, usePermissionStore, useSettingsStore } from "@/store"; import { useAppStore, usePermissionStore, useSettingsStore } from "@/stores";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import { defaults } from "@/settings"; import { defaults } from "@/settings";
+1 -1
View File
@@ -20,7 +20,7 @@ import "animate.css";
import { setupDirective } from "@/directives"; import { setupDirective } from "@/directives";
import { setupI18n } from "@/lang"; import { setupI18n } from "@/lang";
import { setupRouter } from "@/router"; import { setupRouter } from "@/router";
import { setupStore } from "@/store"; import { setupStore } from "@/stores";
// ===== 全局组件 ===== // ===== 全局组件 =====
import * as ElementPlusIcons from "@element-plus/icons-vue"; import * as ElementPlusIcons from "@element-plus/icons-vue";
+2 -2
View File
@@ -1,8 +1,8 @@
import type { RouteRecordRaw } from "vue-router"; import type { RouteRecordRaw } from "vue-router";
import NProgress from "@/plugins/nprogress"; import NProgress from "@/plugins/nprogress";
import router from "@/router"; import router from "@/router";
import { usePermissionStore, useUserStore } from "@/store"; import { usePermissionStore, useUserStore } from "@/stores";
import { useTenantStoreHook } from "@/store/modules/tenant"; import { useTenantStoreHook } from "@/stores/tenant";
import { isTenantEnabled } from "@/utils/tenant"; import { isTenantEnabled } from "@/utils/tenant";
import { addRecentMenu } from "@/composables/useRecentMenus"; import { addRecentMenu } from "@/composables/useRecentMenus";
-18
View File
@@ -1,18 +0,0 @@
import type { App } from "vue";
import { createPinia } from "pinia";
const store = createPinia();
// 全局注册 store
export function setupStore(app: App<Element>) {
app.use(store);
}
export * from "./modules/app";
export * from "./modules/permission";
export * from "./modules/settings";
export * from "./modules/tags-view";
export * from "./modules/user";
export * from "./modules/dict";
export * from "./modules/tenant";
export { store };
@@ -1,6 +1,6 @@
import zhCn from "element-plus/es/locale/lang/zh-cn"; import zhCn from "element-plus/es/locale/lang/zh-cn";
import en from "element-plus/es/locale/lang/en"; import en from "element-plus/es/locale/lang/en";
import { store } from "@/store"; import { store } from "@/stores";
import { DeviceEnum, SidebarStatus } from "@/enums"; import { DeviceEnum, SidebarStatus } from "@/enums";
import { STORAGE_KEYS } from "@/constants"; import { STORAGE_KEYS } from "@/constants";
import { defaults } from "@/settings"; import { defaults } from "@/settings";
@@ -1,4 +1,4 @@
import { store } from "@/store"; import { store } from "@/stores";
import DictAPI from "@/api/system/dict"; import DictAPI from "@/api/system/dict";
import type { DictItemOption } from "@/api/system/dict"; import type { DictItemOption } from "@/api/system/dict";
import { STORAGE_KEYS } from "@/constants"; import { STORAGE_KEYS } from "@/constants";
+17
View File
@@ -0,0 +1,17 @@
import type { App } from "vue";
import { createPinia } from "pinia";
const store = createPinia();
export function setupStore(app: App<Element>) {
app.use(store);
}
export * from "./app";
export * from "./dict";
export * from "./permission";
export * from "./settings";
export * from "./tags-view";
export * from "./tenant";
export * from "./user";
export { store };
@@ -1,13 +1,13 @@
import type { RouteRecordRaw } from "vue-router"; import type { RouteRecordRaw } from "vue-router";
import { constantRoutes } from "@/router"; import { constantRoutes } from "@/router";
import { store } from "@/store"; import { store } from "@/stores";
import router from "@/router"; import router from "@/router";
import { useUserStoreHook } from "@/store/modules/user"; import { useUserStoreHook } from "@/stores/user";
import MenuAPI from "@/api/system/menu"; import MenuAPI from "@/api/system/menu";
import type { RouteItem } from "@/api/system/menu"; import type { RouteItem } from "@/api/system/menu";
const modules = import.meta.glob("../../views/**/**.vue"); const modules = import.meta.glob("../views/**/**.vue");
const Layout = () => import("../../layouts/index.vue"); const Layout = () => import("../layouts/index.vue");
function resolveViewComponent(componentPath: string) { function resolveViewComponent(componentPath: string) {
const normalized = componentPath const normalized = componentPath
@@ -15,9 +15,9 @@ function resolveViewComponent(componentPath: string) {
.replace(/^\/+/, "") .replace(/^\/+/, "")
.replace(/\.vue$/i, ""); .replace(/\.vue$/i, "");
return ( return (
modules[`../../views/${normalized}.vue`] || modules[`../views/${normalized}.vue`] ||
modules[`../../views/${normalized}/index.vue`] || modules[`../views/${normalized}/index.vue`] ||
modules[`../../views/error/404.vue`] modules[`../views/error/404.vue`]
); );
} }
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,4 @@
import { store } from "@/store"; import { store } from "@/stores";
import TenantAPI from "@/api/system/tenant"; import TenantAPI from "@/api/system/tenant";
import type { TenantInfo } from "@/api/system/tenant"; import type { TenantInfo } from "@/api/system/tenant";
import { STORAGE_KEYS } from "@/constants"; import { STORAGE_KEYS } from "@/constants";
@@ -1,4 +1,4 @@
import { store } from "@/store"; import { store } from "@/stores";
import AuthAPI from "@/api/auth"; import AuthAPI from "@/api/auth";
import UserAPI from "@/api/system/user"; import UserAPI from "@/api/system/user";
@@ -6,9 +6,9 @@ import type { LoginRequest } from "@/api/auth";
import type { UserInfo } from "@/api/system/user"; import type { UserInfo } from "@/api/system/user";
import { AuthStorage } from "@/utils/auth"; import { AuthStorage } from "@/utils/auth";
import { usePermissionStoreHook } from "@/store/modules/permission"; import { usePermissionStoreHook } from "@/stores/permission";
import { useDictStoreHook } from "@/store/modules/dict"; import { useDictStoreHook } from "@/stores/dict";
import { useTagsViewStore } from "@/store"; import { useTagsViewStore } from "@/stores";
import { cleanupSseServices } from "@/composables"; import { cleanupSseServices } from "@/composables";
export const useUserStore = defineStore("user", () => { export const useUserStore = defineStore("user", () => {
+1 -1
View File
@@ -1,6 +1,6 @@
import { Storage } from "./storage"; import { Storage } from "./storage";
import { STORAGE_KEYS, ROLE_ROOT } from "@/constants"; import { STORAGE_KEYS, ROLE_ROOT } from "@/constants";
import { useUserStoreHook } from "@/store/modules/user"; import { useUserStoreHook } from "@/stores/user";
import router from "@/router"; import router from "@/router";
// 负责本地凭证与偏好的读写 // 负责本地凭证与偏好的读写
+2 -2
View File
@@ -1,8 +1,8 @@
import axios, { type InternalAxiosRequestConfig, type AxiosResponse } from "axios"; import axios, { type InternalAxiosRequestConfig, type AxiosResponse } from "axios";
import qs from "qs"; import qs from "qs";
import { ApiCodeEnum } from "@/enums/api"; import { ApiCodeEnum } from "@/enums/api";
import { useUserStoreHook } from "@/store/modules/user"; import { useUserStoreHook } from "@/stores/user";
import { usePermissionStoreHook } from "@/store/modules/permission"; import { usePermissionStoreHook } from "@/stores/permission";
import { AuthStorage, redirectToLogin } from "@/utils/auth"; import { AuthStorage, redirectToLogin } from "@/utils/auth";
// 记录已重试的请求,防止无限循环 // 记录已重试的请求,防止无限循环
+1 -1
View File
@@ -384,7 +384,7 @@ import { ref } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import LogAPI from "@/api/system/log"; import LogAPI from "@/api/system/log";
import type { VisitOverviewDetail, VisitTrendDetail } from "@/api/system/log"; import type { VisitOverviewDetail, VisitTrendDetail } from "@/api/system/log";
import { useUserStore } from "@/store/modules/user"; import { useUserStore } from "@/stores/user";
import { formatGrowthRate } from "@/utils"; import { formatGrowthRate } from "@/utils";
import { useTransition, useDateFormat } from "@vueuse/core"; import { useTransition, useDateFormat } from "@vueuse/core";
import { Clock, Menu } from "@element-plus/icons-vue"; import { Clock, Menu } from "@element-plus/icons-vue";
+1 -1
View File
@@ -79,7 +79,7 @@ import RoleAPI from "@/api/system/role";
import type { UserForm, UserQueryParams, UserItem } from "@/api/system/user"; import type { UserForm, UserQueryParams, UserItem } from "@/api/system/user";
import type { IObject, IModalConfig, IContentConfig, ISearchConfig } from "@/components/CURD/types"; import type { IObject, IModalConfig, IContentConfig, ISearchConfig } from "@/components/CURD/types";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import { useAppStore } from "@/store"; import { useAppStore } from "@/stores";
import usePage from "@/components/CURD/usePage"; import usePage from "@/components/CURD/usePage";
defineOptions({ defineOptions({
+1 -1
View File
@@ -2,7 +2,7 @@ import UserAPI from "@/api/system/user";
import type { UserForm } from "@/api/system/user"; import type { UserForm } from "@/api/system/user";
import type { IModalConfig } from "@/components/CURD/types"; import type { IModalConfig } from "@/components/CURD/types";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import { useAppStore } from "@/store"; import { useAppStore } from "@/stores";
import { deptArr, roleArr } from "./options"; import { deptArr, roleArr } from "./options";
const modalConfig: IModalConfig<UserForm> = { const modalConfig: IModalConfig<UserForm> = {
+1 -1
View File
@@ -1,6 +1,6 @@
import type { IModalConfig } from "@/components/CURD/types"; import type { IModalConfig } from "@/components/CURD/types";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import { useAppStore } from "@/store"; import { useAppStore } from "@/stores";
const modalConfig: IModalConfig = { const modalConfig: IModalConfig = {
permPrefix: "sys:user", permPrefix: "sys:user",
+1 -1
View File
@@ -140,7 +140,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useDictStoreHook } from "@/store/modules/dict"; import { useDictStoreHook } from "@/stores/dict";
import { useDateFormat } from "@vueuse/core"; import { useDateFormat } from "@vueuse/core";
import DictAPI from "@/api/system/dict"; import DictAPI from "@/api/system/dict";
import type { DictItemForm } from "@/api/system/dict"; import type { DictItemForm } from "@/api/system/dict";
@@ -1,6 +1,6 @@
import router from "@/router"; import router from "@/router";
import { ElButton } from "element-plus"; import { ElButton } from "element-plus";
import { useTagsViewStore } from "@/store"; import { useTagsViewStore } from "@/stores";
export default defineComponent({ export default defineComponent({
name: "ToDetail", name: "ToDetail",
+1 -1
View File
@@ -24,7 +24,7 @@
<script setup lang="ts"> <script setup lang="ts">
import selectConfig from "./config/select"; import selectConfig from "./config/select";
import { useDictStore } from "@/store"; import { useDictStore } from "@/stores";
const dictStore = useDictStore(); const dictStore = useDictStore();
interface IUser { interface IUser {
id: string; id: string;
+1 -1
View File
@@ -120,7 +120,7 @@ import type { FormInstance } from "element-plus";
import AuthAPI from "@/api/auth"; import AuthAPI from "@/api/auth";
import type { LoginRequest } from "@/api/auth"; import type { LoginRequest } from "@/api/auth";
import router from "@/router"; import router from "@/router";
import { useUserStore } from "@/store"; import { useUserStore } from "@/stores";
import { AuthStorage } from "@/utils/auth"; import { AuthStorage } from "@/utils/auth";
const { t } = useI18n(); const { t } = useI18n();
+1 -1
View File
@@ -311,7 +311,7 @@ import type {
import { computed, onBeforeUnmount, onMounted, reactive, ref } from "vue"; import { computed, onBeforeUnmount, onMounted, reactive, ref } from "vue";
import FileAPI from "@/api/file"; import FileAPI from "@/api/file";
import { useUserStoreHook } from "@/store"; import { useUserStoreHook } from "@/stores";
import { redirectToLogin } from "@/utils/auth"; import { redirectToLogin } from "@/utils/auth";
import { import {
+1 -1
View File
@@ -357,7 +357,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore } from "@/store/modules/app"; import { useAppStore } from "@/stores/app";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import MenuAPI from "@/api/system/menu"; import MenuAPI from "@/api/system/menu";
import type { MenuQueryParams, MenuForm, MenuItem } from "@/api/system/menu"; import type { MenuQueryParams, MenuForm, MenuItem } from "@/api/system/menu";
+1 -1
View File
@@ -229,7 +229,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { useAppStore } from "@/store/modules/app"; import { useAppStore } from "@/stores/app";
import { DeviceEnum } from "@/enums/settings"; import { DeviceEnum } from "@/enums/settings";
import RoleAPI from "@/api/system/role"; import RoleAPI from "@/api/system/role";
+1 -1
View File
@@ -249,7 +249,7 @@ import { downloadFile } from "@/utils";
import UserAPI from "@/api/system/user"; import UserAPI from "@/api/system/user";
import DeptAPI from "@/api/system/dept"; import DeptAPI from "@/api/system/dept";
import RoleAPI from "@/api/system/role"; import RoleAPI from "@/api/system/role";
import { useUserStore, useAppStore } from "@/store"; import { useUserStore, useAppStore } from "@/stores";
import { DeviceEnum, DialogMode, CommonStatus } from "@/enums"; import { DeviceEnum, DialogMode, CommonStatus } from "@/enums";
import { useTableSelection } from "@/composables"; import { useTableSelection } from "@/composables";
import UserDeptTree from "./components/UserDeptTree.vue"; import UserDeptTree from "./components/UserDeptTree.vue";