diff --git a/src/api/path/project.ts b/src/api/path/project.ts
index 56dbe67c..69899dde 100644
--- a/src/api/path/project.ts
+++ b/src/api/path/project.ts
@@ -42,7 +42,7 @@ export const saveProjectApi = async (data: object) => {
   }
 }
 
-// * 修改项目
+// * 修改项目基础信息
 export const updateProjectApi = async (data: object) => {
   try {
     const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/edit`, data);
diff --git a/src/store/modules/chartEditStore/chartEditStore.d.ts b/src/store/modules/chartEditStore/chartEditStore.d.ts
index 34a24a8d..92718352 100644
--- a/src/store/modules/chartEditStore/chartEditStore.d.ts
+++ b/src/store/modules/chartEditStore/chartEditStore.d.ts
@@ -42,8 +42,10 @@ export type EditCanvasType = {
   [EditCanvasTypeEnum.SAVE_STATUS]: SyncEnum
 }
 
-// 滤镜/背景色/宽高主题等
+// 画布数据/滤镜/背景色/宽高主题等
 export enum EditCanvasConfigEnum {
+  PROJECT_NAME = 'projectName',
+  REMARKS = 'remarks',
   WIDTH = 'width',
   HEIGHT = 'height',
   CHART_THEME_COLOR = 'chartThemeColor',
@@ -56,6 +58,10 @@ export enum EditCanvasConfigEnum {
 
 // 画布属性(需保存)
 export interface EditCanvasConfigType {
+  // 项目名称
+  [EditCanvasConfigEnum.PROJECT_NAME]: string,
+  // 项目描述
+  [EditCanvasConfigEnum.REMARKS]: string,
   // 滤镜-色相
   [FilterEnum.HUE_ROTATE]: number
   // 滤镜-饱和度
diff --git a/src/store/modules/chartEditStore/chartEditStore.ts b/src/store/modules/chartEditStore/chartEditStore.ts
index 16e4e09e..095d510e 100644
--- a/src/store/modules/chartEditStore/chartEditStore.ts
+++ b/src/store/modules/chartEditStore/chartEditStore.ts
@@ -72,6 +72,10 @@ export const useChartEditStore = defineStore({
     // -----------------------
     // 画布属性(需存储给后端)
     editCanvasConfig: {
+      // 项目名称
+      projectName: '',
+      // 描述
+      remarks: '',
       // 默认宽度
       width: 1920,
       // 默认高度
diff --git a/src/utils/router.ts b/src/utils/router.ts
index b1ee6a76..db3d6134 100644
--- a/src/utils/router.ts
+++ b/src/utils/router.ts
@@ -167,7 +167,7 @@ export const fetchRouteParams = () => {
  * * 通过硬解析获取当前路由下的参数
  * @returns object
  */
-export const fetchRouteParamsByhistory = () => {
+export const fetchRouteParamsLocation = () => {
   try {
     return document.location.hash.split('/').pop() || ''
   } catch (error) {
diff --git a/src/views/chart/ContentHeader/headerTitle/index.vue b/src/views/chart/ContentHeader/headerTitle/index.vue
index a0cebe50..05fca106 100644
--- a/src/views/chart/ContentHeader/headerTitle/index.vue
+++ b/src/views/chart/ContentHeader/headerTitle/index.vue
@@ -24,32 +24,31 @@
 </template>
 
 <script setup lang="ts">
-import { ref, nextTick, computed } from 'vue'
-import { fetchRouteParams } from '@/utils'
+import { ref, nextTick, computed, watchEffect } from 'vue'
+import { ResultEnum } from '@/enums/httpEnum'
+import { fetchRouteParamsLocation, httpErrorHandle } from '@/utils'
+import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
+import { EditCanvasConfigEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
+import { updateProjectApi } from '@/api/path/project'
+import { useSync } from '../../hooks/useSync.hook'
 import { icon } from '@/plugins'
+
+const chartEditStore = useChartEditStore()
+const { dataSyncUpdate } = useSync()
 const { FishIcon } = icon.ionicons5
 
 const focus = ref<boolean>(false)
 const inputInstRef = ref(null)
 
-// 根据路由 id 参数获取项目信息
-const fetchProhectInfoById = () => {
-  const routeParamsRes = fetchRouteParams()
-  if (!routeParamsRes) return
-  const { id } = routeParamsRes
-  if (id.length) {
-    return id[0]
-  }
-  return ''
-
-}
-
-const title = ref<string>(fetchProhectInfoById() || '')
+const title = ref<string>(fetchRouteParamsLocation())
 
+watchEffect(() => {
+  title.value = chartEditStore.getEditCanvasConfig.projectName || ''
+})
 
 const comTitle = computed(() => {
-  title.value = title.value.replace(/\s/g, "");
-  return title.value.length ? title.value : '新项目'
+  title.value = title.value && title.value.replace(/\s/g, "")
+  return title.value.length ? title.value : fetchRouteParamsLocation()
 })
 
 const handleFocus = () => {
@@ -59,7 +58,20 @@ const handleFocus = () => {
   })
 }
 
-const handleBlur = () => {
+const handleBlur = async () => {
   focus.value = false
+  chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.PROJECT_NAME, title.value || '')
+  const { remarks, backgroundImage, background } = chartEditStore.getEditCanvasConfig
+  const res:any = await updateProjectApi({
+    id: fetchRouteParamsLocation(),
+    projectName: title.value,
+    indexImage: backgroundImage || background,
+    remarks: remarks
+  })
+  if(res.code === ResultEnum.SUCCESS) {
+    dataSyncUpdate()
+  } else {
+    httpErrorHandle()
+  }
 }
 </script>
diff --git a/src/views/chart/hooks/useSync.hook.ts b/src/views/chart/hooks/useSync.hook.ts
index 553ce522..95b8a37f 100644
--- a/src/views/chart/hooks/useSync.hook.ts
+++ b/src/views/chart/hooks/useSync.hook.ts
@@ -1,7 +1,7 @@
 import { onUnmounted } from 'vue';
-import { getUUID, httpErrorHandle, fetchRouteParamsByhistory } from '@/utils'
+import { getUUID, httpErrorHandle, fetchRouteParamsLocation } from '@/utils'
 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
-import { EditCanvasTypeEnum, ChartEditStoreEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
+import { EditCanvasTypeEnum, ChartEditStoreEnum, EditCanvasConfigEnum, ChartEditStorage } from '@/store/modules/chartEditStore/chartEditStore.d'
 import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
 import { fetchChartComponent, createComponent } from '@/packages/index'
 import { CreateComponentType } from '@/packages/index.d'
@@ -24,7 +24,7 @@ export const useSync = () => {
    * @param isSplace 是否替换数据
    * @returns 
    */
-  const updateComponent = async (projectData: any, isSplace = false) => {
+  const updateComponent = async (projectData: ChartEditStorage, isSplace = false) => {
     if (isSplace) {
       // 清除列表
       chartEditStore.componentList = []
@@ -65,14 +65,27 @@ export const useSync = () => {
     }
   }
 
+  /**
+   * * 赋值全局数据
+   * @param projectData 项目数据
+   * @returns 
+   */
+  const updateStoreInfo = (projectData: ChartEditStorage) => {
+    const { projectName, remarks } = projectData.editCanvasConfig
+    chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.PROJECT_NAME, projectName)
+    chartEditStore.setEditCanvasConfig(EditCanvasConfigEnum.REMARKS, remarks)
+  }
+
   // 数据获取
   const dataSyncFetch = async () => {
     chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START)
     try {
-      const res: any = await fetchProjectApi({ projectId: fetchRouteParamsByhistory() })
+      const res: any = await fetchProjectApi({ projectId: fetchRouteParamsLocation() })
       if (res.code === ResultEnum.SUCCESS) {
         if (res.data) {
           const data = JSON.parse(res.data)
+          updateStoreInfo(data)
+          // 更新全局数据
           await updateComponent(data)
           return
         }
@@ -93,7 +106,7 @@ export const useSync = () => {
     chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START)
     
     let params = new FormData()
-    params.append('projectId', fetchRouteParamsByhistory())
+    params.append('projectId', fetchRouteParamsLocation())
     params.append('content', JSON.stringify(chartEditStore.getStorageInfo || {}))
     const res: any = await saveProjectApi(params)
 
@@ -123,6 +136,7 @@ export const useSync = () => {
 
   return {
     updateComponent,
+    updateStoreInfo,
     dataSyncFetch,
     dataSyncUpdate,
     intervalDataSyncUpdate