update 优化代码 统一store用法

This commit is contained in:
疯狂的狮子Li 2025-03-12 12:08:23 +08:00
parent 98728828ad
commit 7feead9afc
36 changed files with 59 additions and 60 deletions

View File

@ -5,9 +5,9 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import { handleThemeStyle } from '@/utils/theme'; import { handleThemeStyle } from '@/utils/theme';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
const appStore = useAppStore(); const appStore = useAppStore();

View File

@ -11,7 +11,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { RouteLocationMatched } from 'vue-router'; import { RouteLocationMatched } from 'vue-router';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();

View File

@ -21,7 +21,7 @@
import Fuse from 'fuse.js'; import Fuse from 'fuse.js';
import { getNormalPath } from '@/utils/ruoyi'; import { getNormalPath } from '@/utils/ruoyi';
import { isHttp } from '@/utils/validate'; import { isHttp } from '@/utils/validate';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router'; import { RouteRecordRaw } from 'vue-router';
type Router = Array<{ type Router = Array<{

View File

@ -16,7 +16,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
const appStore = useAppStore(); const appStore = useAppStore();
const size = computed(() => appStore.size); const size = computed(() => appStore.size);

View File

@ -22,9 +22,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { constantRoutes } from '@/router'; import { constantRoutes } from '@/router';
import { isHttp } from '@/utils/validate'; import { isHttp } from '@/utils/validate';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router'; import { RouteRecordRaw } from 'vue-router';
// //

View File

@ -1,5 +1,5 @@
import { Directive, DirectiveBinding } from 'vue'; import { Directive, DirectiveBinding } from 'vue';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
/** /**
* *
*/ */

View File

@ -15,8 +15,8 @@
</template> </template>
<script setup name="AppMain" lang="ts"> <script setup name="AppMain" lang="ts">
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import useTagsViewStore from '@/store/modules/tagsView'; import { useTagsViewStore } from '@/store/modules/tagsView';
import IframeToggle from './IframeToggle/index.vue'; import IframeToggle from './IframeToggle/index.vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;

View File

@ -11,7 +11,7 @@
<script setup lang="ts"> <script setup lang="ts">
import InnerLink from '../InnerLink/index.vue'; import InnerLink from '../InnerLink/index.vue';
import useTagsViewStore from '@/store/modules/tagsView'; import { useTagsViewStore } from '@/store/modules/tagsView';
const route = useRoute(); const route = useRoute();
const tagsViewStore = useTagsViewStore(); const tagsViewStore = useTagsViewStore();

View File

@ -90,10 +90,10 @@
<script setup lang="ts"> <script setup lang="ts">
import SearchMenu from './TopBar/search.vue'; import SearchMenu from './TopBar/search.vue';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import useNoticeStore from '@/store/modules/notice'; import { useNoticeStore } from '@/store/modules/notice';
import { getTenantList } from '@/api/login'; import { getTenantList } from '@/api/login';
import { dynamicClear, dynamicTenant } from '@/api/system/tenant'; import { dynamicClear, dynamicTenant } from '@/api/system/tenant';
import { TenantVO } from '@/api/types'; import { TenantVO } from '@/api/types';

View File

@ -89,9 +89,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { useDynamicTitle } from '@/utils/dynamicTitle'; import { useDynamicTitle } from '@/utils/dynamicTitle';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { handleThemeStyle } from '@/utils/theme'; import { handleThemeStyle } from '@/utils/theme';
import { SideThemeEnum } from '@/enums/SideThemeEnum'; import { SideThemeEnum } from '@/enums/SideThemeEnum';
import defaultSettings from '@/settings'; import defaultSettings from '@/settings';

View File

@ -24,7 +24,7 @@
<script setup lang="ts"> <script setup lang="ts">
import variables from '@/assets/styles/variables.module.scss'; import variables from '@/assets/styles/variables.module.scss';
import logo from '@/assets/logo/logo.png'; import logo from '@/assets/logo/logo.png';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
defineProps({ defineProps({

View File

@ -24,9 +24,9 @@
import Logo from './Logo.vue'; import Logo from './Logo.vue';
import SidebarItem from './SidebarItem.vue'; import SidebarItem from './SidebarItem.vue';
import variables from '@/assets/styles/variables.module.scss'; import variables from '@/assets/styles/variables.module.scss';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router'; import { RouteRecordRaw } from 'vue-router';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;

View File

@ -6,7 +6,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { RouteLocationNormalized } from 'vue-router'; import { RouteLocationNormalized } from 'vue-router';
import useTagsViewStore from '@/store/modules/tagsView'; import { useTagsViewStore } from '@/store/modules/tagsView';
const tagAndTagSpacing = ref(4); const tagAndTagSpacing = ref(4);

View File

@ -32,9 +32,9 @@
<script setup lang="ts"> <script setup lang="ts">
import ScrollPane from './ScrollPane.vue'; import ScrollPane from './ScrollPane.vue';
import { getNormalPath } from '@/utils/ruoyi'; import { getNormalPath } from '@/utils/ruoyi';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import useTagsViewStore from '@/store/modules/tagsView'; import { useTagsViewStore } from '@/store/modules/tagsView';
import { RouteRecordRaw, RouteLocationNormalized } from 'vue-router'; import { RouteRecordRaw, RouteLocationNormalized } from 'vue-router';
const visible = ref(false); const visible = ref(false);

View File

@ -28,7 +28,7 @@
<script setup lang="ts" name="layoutBreadcrumbSearch"> <script setup lang="ts" name="layoutBreadcrumbSearch">
import { getNormalPath } from '@/utils/ruoyi'; import { getNormalPath } from '@/utils/ruoyi';
import { isHttp } from '@/utils/validate'; import { isHttp } from '@/utils/validate';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router'; import { RouteRecordRaw } from 'vue-router';
type Router = Array<{ type Router = Array<{
path: string; path: string;

View File

@ -25,7 +25,7 @@
<script setup lang="ts" name="layoutBreadcrumbUserNews"> <script setup lang="ts" name="layoutBreadcrumbUserNews">
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import useNoticeStore from '@/store/modules/notice'; import { useNoticeStore } from '@/store/modules/notice';
const noticeStore = storeToRefs(useNoticeStore()); const noticeStore = storeToRefs(useNoticeStore());
const { readAll } = useNoticeStore(); const { readAll } = useNoticeStore();

View File

@ -24,8 +24,8 @@
<script setup lang="ts"> <script setup lang="ts">
import SideBar from './components/Sidebar/index.vue'; import SideBar from './components/Sidebar/index.vue';
import { AppMain, Navbar, Settings, TagsView } from './components'; import { AppMain, Navbar, Settings, TagsView } from './components';
import useAppStore from '@/store/modules/app'; import { useAppStore } from '@/store/modules/app';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import { initWebSocket } from '@/utils/websocket'; import { initWebSocket } from '@/utils/websocket';
import { initSSE } from '@/utils/sse'; import { initSSE } from '@/utils/sse';

View File

@ -5,9 +5,10 @@ import 'nprogress/nprogress.css';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { isHttp, isPathMatch } from '@/utils/validate'; import { isHttp, isPathMatch } from '@/utils/validate';
import { isRelogin } from '@/utils/request'; import { isRelogin } from '@/utils/request';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import useSettingsStore from '@/store/modules/settings'; import { useSettingsStore } from '@/store/modules/settings';
import usePermissionStore from '@/store/modules/permission'; import { usePermissionStore } from '@/store/modules/permission';
import { ElMessage } from 'element-plus/es';
NProgress.configure({ showSpinner: false }); NProgress.configure({ showSpinner: false });
const whiteList = ['/login', '/register', '/social-callback', '/register*', '/register/*']; const whiteList = ['/login', '/register', '/social-callback', '/register*', '/register/*'];

View File

@ -1,4 +1,4 @@
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
const authPermission = (permission: string): boolean => { const authPermission = (permission: string): boolean => {
const all_permission = '*:*:*'; const all_permission = '*:*:*';

View File

@ -1,6 +1,6 @@
import router from '@/router'; import router from '@/router';
import { RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw } from 'vue-router'; import { RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw } from 'vue-router';
import useTagsViewStore from '@/store/modules/tagsView'; import { useTagsViewStore } from '@/store/modules/tagsView';
export default { export default {
/** /**

View File

@ -1,3 +1,5 @@
import { createPinia } from "pinia";
const store = createPinia(); const store = createPinia();
export default store; export default store;

View File

@ -1,5 +1,8 @@
import zhCN from 'element-plus/es/locale/lang/zh-cn'; import zhCN from 'element-plus/es/locale/lang/zh-cn';
import enUS from 'element-plus/es/locale/lang/en'; import enUS from 'element-plus/es/locale/lang/en';
import { defineStore } from 'pinia';
import { useStorage } from '@vueuse/core';
import { ref, reactive, computed } from 'vue';
export const useAppStore = defineStore('app', () => { export const useAppStore = defineStore('app', () => {
const sidebarStatus = useStorage('sidebarStatus', '1'); const sidebarStatus = useStorage('sidebarStatus', '1');
@ -68,5 +71,3 @@ export const useAppStore = defineStore('app', () => {
toggleSideBarHide toggleSideBarHide
}; };
}); });
export default useAppStore;

View File

@ -1,3 +1,5 @@
import { defineStore } from 'pinia';
export const useDictStore = defineStore('dict', () => { export const useDictStore = defineStore('dict', () => {
const dict = ref<Map<string, DictDataOption[]>>(new Map()); const dict = ref<Map<string, DictDataOption[]>>(new Map());
@ -61,5 +63,3 @@ export const useDictStore = defineStore('dict', () => {
cleanDict cleanDict
}; };
}); });
export default useDictStore;

View File

@ -1,4 +1,5 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { reactive } from 'vue';
interface NoticeItem { interface NoticeItem {
title?: string; title?: string;
@ -38,5 +39,3 @@ export const useNoticeStore = defineStore('notice', () => {
clearNotice clearNotice
}; };
}); });
export default useNoticeStore;

View File

@ -4,11 +4,10 @@ import store from '@/store';
import { getRouters } from '@/api/menu'; import { getRouters } from '@/api/menu';
import auth from '@/plugins/auth'; import auth from '@/plugins/auth';
import { RouteRecordRaw } from 'vue-router'; import { RouteRecordRaw } from 'vue-router';
import Layout from '@/layout/index.vue'; import Layout from '@/layout/index.vue';
import ParentView from '@/components/ParentView/index.vue'; import ParentView from '@/components/ParentView/index.vue';
import InnerLink from '@/layout/components/InnerLink/index.vue'; import InnerLink from '@/layout/components/InnerLink/index.vue';
import { ref } from 'vue';
import { createCustomNameComponent } from '@/utils/createCustomNameComponent'; import { createCustomNameComponent } from '@/utils/createCustomNameComponent';
// 匹配views里面所有的.vue文件 // 匹配views里面所有的.vue文件
@ -206,5 +205,3 @@ function duplicateRouteChecker(localRoutes: Route[], routes: Route[]) {
nameList.push(route.name.toString()); nameList.push(route.name.toString());
}); });
} }
export default usePermissionStore;

View File

@ -1,6 +1,8 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import defaultSettings from '@/settings'; import defaultSettings from '@/settings';
import { useDynamicTitle } from '@/utils/dynamicTitle'; import { useDynamicTitle } from '@/utils/dynamicTitle';
import { useStorage } from '@vueuse/core';
import { ref } from 'vue';
export const useSettingsStore = defineStore('setting', () => { export const useSettingsStore = defineStore('setting', () => {
const storageSetting = useStorage<LayoutSetting>('layout-setting', { const storageSetting = useStorage<LayoutSetting>('layout-setting', {
@ -43,5 +45,3 @@ export const useSettingsStore = defineStore('setting', () => {
setTitle setTitle
}; };
}); });
export default useSettingsStore;

View File

@ -1,4 +1,6 @@
import { RouteLocationNormalized } from 'vue-router'; import { RouteLocationNormalized } from 'vue-router';
import { defineStore } from 'pinia';
import { ref } from 'vue';
export const useTagsViewStore = defineStore('tagsView', () => { export const useTagsViewStore = defineStore('tagsView', () => {
const visitedViews = ref<RouteLocationNormalized[]>([]); const visitedViews = ref<RouteLocationNormalized[]>([]);
@ -230,4 +232,3 @@ export const useTagsViewStore = defineStore('tagsView', () => {
delIframeView delIframeView
}; };
}); });
export default useTagsViewStore;

View File

@ -3,7 +3,7 @@ import { getToken, removeToken, setToken } from '@/utils/auth';
import { login as loginApi, logout as logoutApi, getInfo as getUserInfo } from '@/api/login'; import { login as loginApi, logout as logoutApi, getInfo as getUserInfo } from '@/api/login';
import { LoginData } from '@/api/types'; import { LoginData } from '@/api/types';
import defAva from '@/assets/images/profile.jpg'; import defAva from '@/assets/images/profile.jpg';
import store from '@/store'; import { ref } from 'vue';
export const useUserStore = defineStore('user', () => { export const useUserStore = defineStore('user', () => {
const token = ref(getToken()); const token = ref(getToken());
@ -83,5 +83,3 @@ export const useUserStore = defineStore('user', () => {
setAvatar setAvatar
}; };
}); });
export default useUserStore;

View File

@ -1,4 +1,4 @@
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
/** /**
* *

View File

@ -1,6 +1,6 @@
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { ElNotification } from 'element-plus'; import { ElNotification } from 'element-plus';
import useNoticeStore from '@/store/modules/notice'; import { useNoticeStore } from '@/store/modules/notice';
// 初始化 // 初始化
export const initSSE = (url: any) => { export const initSSE = (url: any) => {

View File

@ -1,6 +1,6 @@
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { ElNotification } from 'element-plus'; import { ElNotification } from 'element-plus';
import useNoticeStore from '@/store/modules/notice'; import { useNoticeStore } from '@/store/modules/notice';
// 初始化socket // 初始化socket
export const initWebSocket = (url: any) => { export const initWebSocket = (url: any) => {

View File

@ -126,7 +126,7 @@
</template> </template>
<script setup name="Data" lang="ts"> <script setup name="Data" lang="ts">
import useDictStore from '@/store/modules/dict'; import { useDictStore } from '@/store/modules/dict';
import { optionselect as getDictOptionselect, getType } from '@/api/system/dict/type'; import { optionselect as getDictOptionselect, getType } from '@/api/system/dict/type';
import { listData, getData, delData, addData, updateData } from '@/api/system/dict/data'; import { listData, getData, delData, addData, updateData } from '@/api/system/dict/data';
import { DictTypeVO } from '@/api/system/dict/type/types'; import { DictTypeVO } from '@/api/system/dict/type/types';

View File

@ -108,7 +108,7 @@
</template> </template>
<script setup name="Dict" lang="ts"> <script setup name="Dict" lang="ts">
import useDictStore from '@/store/modules/dict'; import { useDictStore } from '@/store/modules/dict';
import { listType, getType, delType, addType, updateType, refreshCache } from '@/api/system/dict/type'; import { listType, getType, delType, addType, updateType, refreshCache } from '@/api/system/dict/type';
import { DictTypeForm, DictTypeQuery, DictTypeVO } from '@/api/system/dict/type/types'; import { DictTypeForm, DictTypeQuery, DictTypeVO } from '@/api/system/dict/type/types';

View File

@ -155,7 +155,7 @@ import {
syncTenantDict syncTenantDict
} from '@/api/system/tenant'; } from '@/api/system/tenant';
import { selectTenantPackage } from '@/api/system/tenantPackage'; import { selectTenantPackage } from '@/api/system/tenantPackage';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import { TenantForm, TenantQuery, TenantVO } from '@/api/system/tenant/types'; import { TenantForm, TenantQuery, TenantVO } from '@/api/system/tenant/types';
import { TenantPkgVO } from '@/api/system/tenantPackage/types'; import { TenantPkgVO } from '@/api/system/tenantPackage/types';

View File

@ -58,7 +58,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { authUnlock, authBinding } from '@/api/system/social/auth'; import { authUnlock, authBinding } from '@/api/system/social/auth';
import { propTypes } from '@/utils/propTypes'; import { propTypes } from '@/utils/propTypes';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;

View File

@ -59,7 +59,7 @@
import 'vue-cropper/dist/index.css'; import 'vue-cropper/dist/index.css';
import { VueCropper } from 'vue-cropper'; import { VueCropper } from 'vue-cropper';
import { uploadAvatar } from '@/api/system/user'; import { uploadAvatar } from '@/api/system/user';
import useUserStore from '@/store/modules/user'; import { useUserStore } from '@/store/modules/user';
import { UploadRawFile } from 'element-plus'; import { UploadRawFile } from 'element-plus';
interface Options { interface Options {