diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenBorderChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenBorderChart.java
index 62038cd9..9376a8a4 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenBorderChart.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenBorderChart.java
@@ -4,6 +4,9 @@ import com.gccloud.dataroom.core.module.chart.bean.Chart;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 边框图表
  * @author hongyang
@@ -14,77 +17,7 @@ import lombok.Data;
 public class ScreenBorderChart extends Chart {
 
     @ApiModelProperty(notes = "个性化配置")
-    private Customize customize = new Customize();
-
-    @Data
-    public static class Customize {
-
-        @ApiModelProperty(notes = "边框主颜色")
-        private String borderMainColor;
-
-        @ApiModelProperty(notes = "边框次颜色")
-        private String borderSecondaryColor;
-
-        @ApiModelProperty(notes = "背景颜色")
-        private String backgroundColor;
-
-        @ApiModelProperty(notes = "边框颜色")
-        private String borderColor;
-
-        @ApiModelProperty(notes = "边框宽度")
-        private Integer borderWidth;
-
-        @ApiModelProperty(notes = "是否翻转")
-        private Boolean reverse;
-
-        @ApiModelProperty(notes = "单次动画时长")
-        private Integer dur;
-
-        @ApiModelProperty(notes = "颜色类型")
-        private String colorType;
-
-        @ApiModelProperty(notes = "渐变色0值")
-        private String gradientColor0;
-
-        @ApiModelProperty(notes = "渐变色1值")
-        private String gradientColor1;
-
-        @ApiModelProperty(notes = "渐变色色值改变方向")
-        private String gradientDirection;
-
-        @ApiModelProperty(notes = "透明度")
-        private Float opacity;
-
-        @ApiModelProperty(notes = "字体大小")
-        private Integer fontSize;
-
-        @ApiModelProperty(notes = "字体颜色")
-        private String fontColor;
-
-        @ApiModelProperty(notes = "字体粗细")
-        private Integer fontWeight;
-
-        @ApiModelProperty(notes = "中心文本")
-        private String text;
-
-        @ApiModelProperty(notes = "长度")
-        private Integer height;
-
-        @ApiModelProperty(notes = "宽度")
-        private Integer width;
-
-        @ApiModelProperty(notes = "左上圆角")
-        private Integer radiusLeftTop;
-
-        @ApiModelProperty(notes = "右上圆角")
-        private Integer radiusRightTop;
-
-        @ApiModelProperty(notes = "左下圆角")
-        private Integer radiusLeftBottom;
-
-        @ApiModelProperty(notes = "右下圆角")
-        private Integer radiusRightBottom;
+    private Map<String, Object> customize = new HashMap<>();
 
-    }
 
 }
diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java
index 9771b279..323557b8 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPageServiceImpl.java
@@ -346,6 +346,15 @@ public class DataRoomPageServiceImpl extends ServiceImpl<DataRoomPageDao, PageEn
                 component.setComponentKey(newCode);
             }
         }
+        // 处理定时器
+        DataRoomPageDTO.PageConfig pageConfig = config.getPageConfig();
+        List<DataRoomPageDTO.RefreshConfig> refreshConfigList = pageConfig.getRefreshConfig();
+        if (refreshConfigList != null) {
+            for (DataRoomPageDTO.RefreshConfig refreshConfig : refreshConfigList) {
+                String oldChartCode = refreshConfig.getCode();
+                refreshConfig.setCode(chartCodeMap.get(oldChartCode));
+            }
+        }
         String copyUrl = this.copyCoverPicture(oldCode, screenEntity.getCode());
         if (StringUtils.isBlank(copyUrl)) {
             screenEntity.setCoverPicture(null);
diff --git a/data-room-ui/example/router/index.js b/data-room-ui/example/router/index.js
index 72b78a8e..e18aec9b 100644
--- a/data-room-ui/example/router/index.js
+++ b/data-room-ui/example/router/index.js
@@ -2,10 +2,15 @@ import Vue from 'vue'
 import Router from 'vue-router'
 
 Vue.use(Router)
-const baseRoutes = [{
-  path: '/notPermission',
-  component: () => import('data-room-ui/NotPermission/index.vue')
-}]
+const baseRoutes = [
+  {
+    path: '/notPermission',
+    component: () => import('data-room-ui/NotPermission/index.vue')
+  }, {
+    path: '/test',
+    component: () => import('data-room-ui/BizComponent_Demo')
+  }
+]
 
 export const constantRoutes = []
 
diff --git a/data-room-ui/packages/BigScreenDesign/LeftPanel.vue b/data-room-ui/packages/BigScreenDesign/LeftPanel.vue
index a52dc048..bd235c07 100644
--- a/data-room-ui/packages/BigScreenDesign/LeftPanel.vue
+++ b/data-room-ui/packages/BigScreenDesign/LeftPanel.vue
@@ -155,6 +155,7 @@ import decorationComponents from 'data-room-ui/js/config/decorationComponentsCon
 import LayerList from './LayerList/index.vue'
 import { mapMutations } from 'vuex'
 import IconSvg from 'data-room-ui/SvgIcon'
+import { customSerialize } from 'data-room-ui/js/utils/jsonSerialize.js'
 export default {
   name: 'PageLeftPanel',
   components: {
@@ -275,7 +276,7 @@ export default {
             /* 设置拖拽传输数据 */
             event.dataTransfer.setData(
               'dragComponent',
-              JSON.stringify({
+              customSerialize({
                 ...element,
                 offsetX: event.offsetX,
                 offsetY: event.offsetY
diff --git a/data-room-ui/packages/BigScreenRun/index.vue b/data-room-ui/packages/BigScreenRun/index.vue
index 4c601fd1..d7aadd21 100644
--- a/data-room-ui/packages/BigScreenRun/index.vue
+++ b/data-room-ui/packages/BigScreenRun/index.vue
@@ -11,7 +11,7 @@
         :style="renderStyle"
       >
         <div
-          v-for="chart in chartList"
+          v-for="chart in initChartList"
           :key="chart.code"
           :style="getStyle(chart)"
         >
@@ -43,6 +43,7 @@ import NotPermission from 'data-room-ui/NotPermission'
 import Configuration from 'data-room-ui/Render/Configuration.vue'
 import DataViewDialog from 'data-room-ui/BigScreenDesign/DataViewDialog/index.vue'
 import { getFileUrl } from 'data-room-ui/js/utils/file'
+import cloneDeep from 'lodash/cloneDeep'
 export default {
   name: 'BigScreenRun',
   components: {
@@ -66,7 +67,8 @@ export default {
       innerHeight: window.innerHeight,
       innerWidth: window.innerWidth,
       timer: null,
-      hasPermission: true
+      hasPermission: true,
+      initChartList: [],
     }
   },
   computed: {
@@ -145,6 +147,14 @@ export default {
           this.startTimer()
         }
       }
+    },
+    chartList: {
+      handler (val) {
+        if (this.initChartList.length === 0) {
+          this.initChartList = cloneDeep(this.chartList)
+        }
+      },
+      deep: true
     }
   },
   beforeRouteLeave (to, from, next) {
diff --git a/data-room-ui/packages/EchartsRender/index.vue b/data-room-ui/packages/EchartsRender/index.vue
index b8451fdd..df3feb99 100644
--- a/data-room-ui/packages/EchartsRender/index.vue
+++ b/data-room-ui/packages/EchartsRender/index.vue
@@ -75,9 +75,11 @@ export default {
     const resizeObserver = new ResizeObserver(entries => {
       if (this.chart) {
         this.chart.resize()
-        let config = this.observeChart(entries)
-        config = this.seriesStyle(config)
-        config.option && this.chart.setOption(config.option)
+        if(this.config.name.includes('3D')){
+          let config = this.observeChart(entries)
+          config = this.seriesStyle(config)
+          config.option && this.chart.setOption(config.option)
+        }
       }
     })
     resizeObserver.observe(dragSelect)
@@ -424,6 +426,9 @@ export default {
     },
     // 对series里面的样式进行配置
     seriesStyle (config) {
+      if(!config.name.includes('3D')){
+        return config
+      }
       const _config = CloneDeep(config)
       const seriesCustom = _config.option.seriesCustom
       const ids = Object.keys(config.option.seriesCustom)
diff --git a/data-room-ui/packages/RemoteComponents/index.vue b/data-room-ui/packages/RemoteComponents/index.vue
index 626f7bd1..f0594a68 100644
--- a/data-room-ui/packages/RemoteComponents/index.vue
+++ b/data-room-ui/packages/RemoteComponents/index.vue
@@ -58,13 +58,18 @@ export default {
   },
   methods: {
     changeData (config, filterList) {
-      // 当前组件的方法调用
-      let remote = this.$refs['remoteComponent'+config.code]
-      if (remote && remote.changeData){
-        remote.changeData(config, filterList)
-      }
       // 调用混入中的方法
-      this.$options.mixins[1].methods.changeData.call(this, config, filterList)
+      let promise = this.$options.mixins[1].methods.changeData.call(this, config, filterList)
+      return promise.then(res => {
+        config = res
+        // 当前组件的方法调用
+        let remote = this.$refs['remoteComponent'+config.code]
+        if (remote && remote.changeData){
+          remote.changeData(config, filterList)
+        }
+        return config
+      })
+
     },
     ...mapMutations('bigScreen', ['changeChartConfig']),
     // 尝试渲染远程文件或远程字符串
@@ -120,7 +125,7 @@ export default {
         }
       }
     },
-        linkEvent (formData) {
+    linkEvent (formData) {
       this.linkage(formData)
     },
     /**
diff --git a/data-room-ui/packages/Render/index.vue b/data-room-ui/packages/Render/index.vue
index aee9acfd..2c910ff2 100644
--- a/data-room-ui/packages/Render/index.vue
+++ b/data-room-ui/packages/Render/index.vue
@@ -93,6 +93,7 @@ import { compile } from 'tiny-sass-compiler/dist/tiny-sass-compiler.esm-browser.
 import plotList, { getCustomPlots } from '../G2Plots/plotList'
 import { settingToTheme } from 'data-room-ui/js/utils/themeFormatting'
 import { getFileUrl } from 'data-room-ui/js/utils/file'
+import { customDeserialize } from 'data-room-ui/js/utils/jsonSerialize.js'
 
 export default {
   name: 'BigScreenRender',
@@ -351,7 +352,7 @@ export default {
     // 新增元素
     addChart (chart, position, isComponent) {
       const { left, top } = this.$el.getBoundingClientRect()
-      const _chart = !chart.code ? JSON.parse(chart) : chart
+      const _chart = !chart.code ? customDeserialize(chart) : chart
       let option = _chart.option
       if (_chart.type === 'customComponent') {
         option = {
diff --git a/data-room-ui/packages/js/utils/jsonSerialize.js b/data-room-ui/packages/js/utils/jsonSerialize.js
new file mode 100644
index 00000000..0f64d2bb
--- /dev/null
+++ b/data-room-ui/packages/js/utils/jsonSerialize.js
@@ -0,0 +1,23 @@
+// 自定义序列化方法:解决JSON.stringify方法忽略函数属性的问题
+export function customSerialize (obj) {
+  // 将对象属性和函数转换为字符串形式
+  const serializedObj = JSON.stringify(obj, function(key, value) {
+    if (typeof value === 'function') {
+      return value.toString() // 将函数转换为字符串
+    }
+    return value // 保持其他属性不变
+  })
+
+  return serializedObj
+}
+// 自定义反序列化方法
+export function customDeserialize(serializedObj){
+  const parsedObject = JSON.parse(serializedObj, function(key, value) {
+    if (typeof value === 'string' && value.indexOf('function') === 0) {
+      // 将字符串还原为函数
+      return new Function('return ' + value)()
+    }
+    return value // 保持其他属性不变
+  })
+  return parsedObject
+}