chore: 修改项目信息结构

This commit is contained in:
奔跑的面条 2022-05-27 11:49:25 +08:00
parent 423890a4df
commit 9098443c83
4 changed files with 54 additions and 22 deletions

View File

@ -8,6 +8,23 @@ import type {
GlobalThemeJsonType, GlobalThemeJsonType,
} from '@/settings/chartThemes/index' } from '@/settings/chartThemes/index'
// 项目数据枚举
export enum ProjectInfoEnum {
// 名称
PROJECT_NAME = 'projectName',
// 描述
REMARKS = 'remarks',
// 缩略图
THUMBNAIL= 'thumbnail'
}
// 项目数据
export type ProjectInfoType = {
projectName: string,
remarks: string,
thumbnail: string
}
// 编辑画布属性 // 编辑画布属性
export enum EditCanvasTypeEnum { export enum EditCanvasTypeEnum {
EDIT_LAYOUT_DOM = 'editLayoutDom', EDIT_LAYOUT_DOM = 'editLayoutDom',
@ -44,8 +61,6 @@ export type EditCanvasType = {
// 画布数据/滤镜/背景色/宽高主题等 // 画布数据/滤镜/背景色/宽高主题等
export enum EditCanvasConfigEnum { export enum EditCanvasConfigEnum {
PROJECT_NAME = 'projectName',
REMARKS = 'remarks',
WIDTH = 'width', WIDTH = 'width',
HEIGHT = 'height', HEIGHT = 'height',
CHART_THEME_COLOR = 'chartThemeColor', CHART_THEME_COLOR = 'chartThemeColor',
@ -57,7 +72,7 @@ export enum EditCanvasConfigEnum {
} }
// 画布属性(需保存) // 画布属性(需保存)
export interface EditCanvasConfigType { export type EditCanvasConfigType = {
// 项目名称 // 项目名称
[EditCanvasConfigEnum.PROJECT_NAME]: string, [EditCanvasConfigEnum.PROJECT_NAME]: string,
// 项目描述 // 项目描述
@ -129,6 +144,7 @@ export type RecordChartType = {
// Store 枚举 // Store 枚举
export enum ChartEditStoreEnum { export enum ChartEditStoreEnum {
PROJECT_INFO = 'projectInfo',
EDIT_RANGE = 'editRange', EDIT_RANGE = 'editRange',
EDIT_CANVAS = 'editCanvas', EDIT_CANVAS = 'editCanvas',
RIGHT_MENU_SHOW = 'rightMenuShow', RIGHT_MENU_SHOW = 'rightMenuShow',
@ -161,6 +177,7 @@ export type RequestConfigType = {
// Store 类型 // Store 类型
export interface ChartEditStoreType { export interface ChartEditStoreType {
[ChartEditStoreEnum.PROJECT_INFO]: ProjectInfoType
[ChartEditStoreEnum.EDIT_CANVAS]: EditCanvasType [ChartEditStoreEnum.EDIT_CANVAS]: EditCanvasType
[ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType
[ChartEditStoreEnum.RIGHT_MENU_SHOW]: boolean [ChartEditStoreEnum.RIGHT_MENU_SHOW]: boolean

View File

@ -15,6 +15,7 @@ import { HistoryActionTypeEnum, HistoryItemType, HistoryTargetTypeEnum } from '@
import { MenuEnum, SyncEnum } from '@/enums/editPageEnum' import { MenuEnum, SyncEnum } from '@/enums/editPageEnum'
import { import {
ProjectInfoType,
ChartEditStoreEnum, ChartEditStoreEnum,
ChartEditStorage, ChartEditStorage,
ChartEditStoreType, ChartEditStoreType,
@ -33,6 +34,12 @@ const settingStore = useSettingStore()
export const useChartEditStore = defineStore({ export const useChartEditStore = defineStore({
id: 'useChartEditStore', id: 'useChartEditStore',
state: (): ChartEditStoreType => ({ state: (): ChartEditStoreType => ({
// 项目数据
projectInfo: {
projectName: '',
remarks: '',
thumbnail: ''
},
// 画布属性 // 画布属性
editCanvas: { editCanvas: {
// 编辑区域 Dom // 编辑区域 Dom
@ -72,10 +79,6 @@ export const useChartEditStore = defineStore({
// ----------------------- // -----------------------
// 画布属性(需存储给后端) // 画布属性(需存储给后端)
editCanvasConfig: { editCanvasConfig: {
// 项目名称
projectName: '',
// 描述
remarks: '',
// 默认宽度 // 默认宽度
width: 1920, width: 1920,
// 默认高度 // 默认高度
@ -117,6 +120,9 @@ export const useChartEditStore = defineStore({
componentList: [] componentList: []
}), }),
getters: { getters: {
getProjectInfo(): ProjectInfoType {
return this.projectInfo
},
getMousePosition(): MousePositionType { getMousePosition(): MousePositionType {
return this.mousePosition return this.mousePosition
}, },
@ -151,6 +157,10 @@ export const useChartEditStore = defineStore({
} }
}, },
actions: { actions: {
// * 设置 peojectInfo 数据项
setProjectInfo<T extends keyof ProjectInfoType, K extends ProjectInfoType[T]>(key: T, value: K) {
this.projectInfo[key] = value
},
// * 设置 editCanvas 数据项 // * 设置 editCanvas 数据项
setEditCanvas<T extends keyof EditCanvasType, K extends EditCanvasType[T]>(key: T, value: K) { setEditCanvas<T extends keyof EditCanvasType, K extends EditCanvasType[T]>(key: T, value: K) {
this.editCanvas[key] = value this.editCanvas[key] = value

View File

@ -28,7 +28,7 @@ import { ref, nextTick, computed, watchEffect } from 'vue'
import { ResultEnum } from '@/enums/httpEnum' import { ResultEnum } from '@/enums/httpEnum'
import { fetchRouteParamsLocation, httpErrorHandle } from '@/utils' import { fetchRouteParamsLocation, httpErrorHandle } from '@/utils'
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d' import { ProjectInfoEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
import { updateProjectApi } from '@/api/path/project' import { updateProjectApi } from '@/api/path/project'
import { useSync } from '../../hooks/useSync.hook' import { useSync } from '../../hooks/useSync.hook'
import { icon } from '@/plugins' import { icon } from '@/plugins'
@ -43,7 +43,7 @@ const inputInstRef = ref(null)
const title = ref<string>(fetchRouteParamsLocation()) const title = ref<string>(fetchRouteParamsLocation())
watchEffect(() => { watchEffect(() => {
title.value = chartEditStore.getEditCanvasConfig.projectName || '' title.value = chartEditStore.getProjectInfo.projectName || ''
}) })
const comTitle = computed(() => { const comTitle = computed(() => {
@ -60,13 +60,10 @@ const handleFocus = () => {
const handleBlur = async () => { const handleBlur = async () => {
focus.value = false focus.value = false
chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.PROJECT_NAME, title.value || '') chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_NAME, title.value || '')
const { remarks, backgroundImage, background } = chartEditStore.getEditCanvasConfig
const res:any = await updateProjectApi({ const res:any = await updateProjectApi({
id: fetchRouteParamsLocation(), id: fetchRouteParamsLocation(),
projectName: title.value, projectName: title.value,
indexImage: backgroundImage || background,
remarks: remarks
}) })
if(res.code === ResultEnum.SUCCESS) { if(res.code === ResultEnum.SUCCESS) {
dataSyncUpdate() dataSyncUpdate()

View File

@ -1,7 +1,7 @@
import { onUnmounted } from 'vue'; import { onUnmounted } from 'vue';
import { getUUID, httpErrorHandle, fetchRouteParamsLocation } from '@/utils' import { getUUID, httpErrorHandle, fetchRouteParamsLocation } from '@/utils'
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
import { EditCanvasTypeEnum, ChartEditStoreEnum, EditCanvasConfigEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d' import { EditCanvasTypeEnum, ChartEditStoreEnum, ProjectInfoEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
import { fetchChartComponent, createComponent } from '@/packages/index' import { fetchChartComponent, createComponent } from '@/packages/index'
import { CreateComponentType } from '@/packages/index.d' import { CreateComponentType } from '@/packages/index.d'
@ -50,7 +50,6 @@ export const useSync = () => {
let newComponent: CreateComponentType = await createComponent( let newComponent: CreateComponentType = await createComponent(
comItem.chartConfig comItem.chartConfig
) )
// 不保存到记录
chartEditStore.addComponentList( chartEditStore.addComponentList(
Object.assign(newComponent, {...comItem, id: getUUID()}), Object.assign(newComponent, {...comItem, id: getUUID()}),
false, false,
@ -70,10 +69,19 @@ export const useSync = () => {
* @param projectData * @param projectData
* @returns * @returns
*/ */
const updateStoreInfo = (projectData: ChartEditStorage) => { const updateStoreInfo = (projectData: {
const { projectName, remarks } = projectData.editCanvasConfig id: string,
chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.PROJECT_NAME, projectName) projectName: string,
chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.REMARKS, remarks) indexImage: string,
remarks: string,
}) => {
const { projectName, remarks, indexImage } = projectData
// 名称
chartEditStore.setProjectInfo(ProjectInfoEnum.PROJECT_NAME, projectName)
// 描述
chartEditStore.setProjectInfo(ProjectInfoEnum.REMARKS, remarks)
// 缩略图
chartEditStore.setProjectInfo(ProjectInfoEnum.THUMBNAIL, indexImage)
} }
// 数据获取 // 数据获取
@ -83,10 +91,9 @@ export const useSync = () => {
const res: any = await fetchProjectApi({ projectId: fetchRouteParamsLocation() }) const res: any = await fetchProjectApi({ projectId: fetchRouteParamsLocation() })
if (res.code === ResultEnum.SUCCESS) { if (res.code === ResultEnum.SUCCESS) {
if (res.data) { if (res.data) {
const data = JSON.parse(res.data) updateStoreInfo(res.data)
updateStoreInfo(data)
// 更新全局数据 // 更新全局数据
await updateComponent(data) await updateComponent(JSON.parse(res.data.content))
return return
} }
setTimeout(() => { setTimeout(() => {
@ -103,6 +110,7 @@ export const useSync = () => {
// 数据保存 // 数据保存
const dataSyncUpdate = async () => { const dataSyncUpdate = async () => {
if(!fetchRouteParamsLocation()) return
chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START) chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START)
let params = new FormData() let params = new FormData()