diff --git a/src/pinia/base/index.ts b/src/pinia/base/index.ts new file mode 100644 index 0000000..e883bef --- /dev/null +++ b/src/pinia/base/index.ts @@ -0,0 +1,50 @@ +/* + * @Author: Jeremy Yu + * @Date: 2024-03-17 15:00:00 + * @Description: Base全局状态管理 + * @LastEditors: Jeremy Yu + * @LastEditTime: 2024-03-18 21:00:00 + */ + +import { defineStore } from 'pinia' + +// import actions from './actions' +// import _config from '@/config' + +type TStoreBaseState = { + loading: boolean | null + scroll: boolean + /** fonts */ + fonts: string[] + /** 抠图服务 */ + app: string | null +} + +type TUserAction = { + hideLoading: () => void + setFonts: (list: string[]) => void +} + +/** Base全局状态管理 */ +const useBaseStore = defineStore<'base', TStoreBaseState, {}, TUserAction>('base', { + state: () => ({ + loading: null, + scroll: true, + fonts: [], // 缓存字体列表 + app: null, // 抠图服务 + }), + actions: { + /** 隐藏loading */ + hideLoading() { + setTimeout(() => { + this.loading = false + }, 600) + }, + setFonts(list: string[]) { + this.fonts = list + }, + } +}) + +export default useBaseStore + diff --git a/src/store/modules/base/user.ts b/src/pinia/base/user.ts similarity index 95% rename from src/store/modules/base/user.ts rename to src/pinia/base/user.ts index 3544ff2..23b9d07 100644 --- a/src/store/modules/base/user.ts +++ b/src/pinia/base/user.ts @@ -3,7 +3,7 @@ * @Date: 2024-03-17 15:00:00 * @Description: User全局状态管理 * @LastEditors: Jeremy Yu - * @LastEditTime: 2024-03-17 15:00:00 + * @LastEditTime: 2024-03-18 21:00:00 */ import { defineStore } from "pinia" @@ -29,6 +29,7 @@ type TUserAction = { managerEdit: (status: boolean) => void } +/** User全局状态管理 */ const useUserStore = defineStore<'userStore', TUserStoreState, {}, TUserAction>('userStore', { state: () => ({ online: true, // 登录状态, diff --git a/src/pinia/design/page/index.ts b/src/pinia/design/page/index.ts new file mode 100644 index 0000000..1e78be9 --- /dev/null +++ b/src/pinia/design/page/index.ts @@ -0,0 +1,82 @@ +import { defineStore } from 'pinia' + +export type TPageStore = { + name: string + type: string + uuid: string + left: number + top: number + /** 画布宽度 */ + width: number + /** 画布高度 */ + height: number + /** 画布背景颜色 */ + backgroundColor: string + /** 画布背景图片 */ + backgroundImage: string + backgroundTransform: { + x?: number + y?: number + } + /** 透明度 */ + opacity: number + /** 强制刷新用 */ + tag: number + setting:{ + label: string + parentKey: string + value: boolean + }[] + record: Record +} + +type TPageGetter = { + dPage(state: TPageStore): TPageStore +} + +type TPageActions = { + updatePageData(data: { + key: T + value: TPageStore[T] + pushHistory: boolean + }): void +} + +export default defineStore<"pageStore", TPageStore, TPageGetter, TPageActions>("pageStore", { + state: () => ({ + name: '背景页面', + type: 'page', + uuid: '-1', + left: 0, + top: 0, + width: 1920, // 画布宽度 + height: 1080, // 画布高度 + backgroundColor: '#ffffff', // 画布背景颜色 + backgroundImage: '', // 画布背景图片 + backgroundTransform: {}, + opacity: 1, // 透明度 + tag: 0, // 强制刷新用 + setting: [ + { + label: '背景颜色', + parentKey: 'backgroundColor', + value: false, + }, + ], + record: {}, + }), + getters: { + dPage: (state) => state + }, + actions: { + /** 更新Page数据 */ + updatePageData({ key, value, pushHistory }) { + const data = this as TPageStore + if (data[key] !== value || pushHistory) { + data[key] = value + // 画布修改先不压入历史栈,因为替换模板后会重复压栈 + // store.dispatch('pushHistory', 'updatePageData') + } + }, + } +}) diff --git a/src/pinia/index.ts b/src/pinia/index.ts new file mode 100644 index 0000000..9a52a36 --- /dev/null +++ b/src/pinia/index.ts @@ -0,0 +1,17 @@ +/* + * @Author: Jeremy Yu + * @Date: 2024-03-18 21:00:00 + * @Description: 方法暴露 + * @LastEditors: Jeremy Yu + * @LastEditTime: 2024-03-18 21:00:00 + */ + +import useBaseStore from "./base"; +import useUserStore from "./base/user"; +import usePageStore from "./design/page/index" + +export { + useBaseStore, + useUserStore, + usePageStore, +} diff --git a/src/store/modules/base/index.ts b/src/store/modules/base/index.ts index f8e8e95..6d03977 100644 --- a/src/store/modules/base/index.ts +++ b/src/store/modules/base/index.ts @@ -6,47 +6,6 @@ * @LastEditTime: 2024-03-17 15:00:00 */ -import { defineStore } from 'pinia' - -// import actions from './actions' -// import _config from '@/config' - -type TStoreBaseState = { - loading: boolean | null - scroll: boolean - /** fonts */ - fonts: string[] - /** 抠图服务 */ - app: string | null -} - -type TUserAction = { - hideLoading: () => void - setFonts: (list: string[]) => void -} - -const useBaseStore = defineStore<'base', TStoreBaseState, {}, TUserAction>('base', { - state: () => ({ - loading: null, - scroll: true, - fonts: [], // 缓存字体列表 - app: null, // 抠图服务 - }), - actions: { - /** 隐藏loading */ - hideLoading() { - setTimeout(() => { - this.loading = false - }, 600) - }, - setFonts(list: string[]) { - this.fonts = list - }, - } -}) - -export default useBaseStore - // const all = { // state: { // loading: null, diff --git a/src/utils/axios.ts b/src/utils/axios.ts index 4df4d8b..8f05b41 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -8,8 +8,7 @@ import axios, { AxiosRequestConfig, AxiosResponse, AxiosStatic } from 'axios' // import store from '@/store' import app_config, { LocalStorageKey } from '@/config' -import useUserStore from '@/store/modules/base/user'; -import useBaseStore from '@/store/modules/base'; +import { useBaseStore, useUserStore } from '@/pinia/index'; axios.defaults.timeout = 30000 axios.defaults.headers.authorization = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTAwMDEsImV4cCI6MTc4ODU3NDc1MDU4NX0.L_t6DFD48Dm6rUPfgIgOWJkz18En1m_-hhMHcpbxliY'; diff --git a/src/views/components/HeaderOptions.vue b/src/views/components/HeaderOptions.vue index e6f4200..d496a01 100644 --- a/src/views/components/HeaderOptions.vue +++ b/src/views/components/HeaderOptions.vue @@ -40,7 +40,7 @@ import _config from '@/config' import useConfirm from '@/common/methods/confirm' // import wGroup from '@/components/modules/widgets/wGroup/wGroup.vue' import { useSetupMapGetters } from '@/common/hooks/mapGetters' -import useUserStore from '@/store/modules/base/user' +import { useUserStore } from '@/pinia/index' type TProps = { modelValue?: boolean