From a2be896f753936956ee6863b632b8e5a0231345c Mon Sep 17 00:00:00 2001
From: JEECG <445654970@qq.com>
Date: Fri, 21 Aug 2026 17:02:22 +0800
Subject: [PATCH] =?UTF-8?q?v3.9.5=E5=BC=80=E6=BA=90=E5=8F=91=E7=89=88=20ja?=
=?UTF-8?q?va?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jeecg-boot/.ignore | 58 +
jeecg-boot/db/jeecgboot-mysql-5.7.sql | 571 +++++--
jeecg-boot/jeecg-boot-base-core/pom.xml | 8 +-
.../org/jeecg/common/api/dto/DataLogDTO.java | 4 +-
.../jeecg/common/constant/CommonConstant.java | 5 +
.../common/constant/PasswordConstant.java | 2 +-
.../common/constant/ProvinceCityArea.java | 71 +-
.../constant/enums/MessageTypeEnum.java | 10 +-
.../exception/JeecgBootExceptionHandler.java | 17 +-
.../system/query/QueryConditionIgnore.java | 16 +
.../common/system/query/QueryGenerator.java | 43 +-
.../org/jeecg/common/util/CommonUtils.java | 76 +-
.../jeecg/common/util/FileDownloadUtils.java | 92 +-
.../jeecg/common/util/SpringContextUtils.java | 22 +-
.../jeecg/common/util/SqlInjectionUtil.java | 27 +-
.../common/util/dynamic/db/DbTypeUtils.java | 2 +
.../common/util/dynamic/db/DynamicDBUtil.java | 6 +-
.../util/filter/SsrfFileTypeFilter.java | 84 +-
.../org/jeecg/common/util/oConvertUtils.java | 3 +
.../java/org/jeecg/config/AiChatConfig.java | 5 +
.../org/jeecg/config/WebMvcConfiguration.java | 60 +-
.../config/filter/SvgSecurityFilter.java | 43 +
.../interceptor/LowCodeModeInterceptor.java | 2 +-
.../config/mybatis/MybatisPlusSaasConfig.java | 41 +-
...iDataSourcePaginationInnerInterceptor.java | 130 ++
.../org/jeecg/config/shiro/ShiroConfig.java | 6 +-
.../sign/interceptor/SignAuthInterceptor.java | 2 +-
.../java/org/jeecg/config/vo/DomainUrl.java | 6 +
.../java/org/jeecg/config/vo/Firewall.java | 17 +
.../Issue9672_SsrfFileTypeFilterTest.java | 165 ++
...sue9677_SqlInjectionNewlineBypassTest.java | 274 ++++
.../Issue9681_SsrfRedirectBypassTest.java | 222 +++
...ue9695_OpenApiSsrfHeaderInjectionTest.java | 199 +++
.../Issue9725_UploadImgByHttpSsrfTest.java | 214 +++
.../Issue9726_OpenApiOriginUrlSsrfTest.java | 142 ++
.../security/PrintTestResultExtension.java | 44 +
.../jeecg-boot-module-airag/pom.xml | 66 +-
.../modules/airag/api/AiragBaseApiImpl.java | 74 +
.../modules/airag/app/consts/AiAppConsts.java | 4 +
.../modules/airag/app/consts/Prompts.java | 32 +-
.../app/controller/AiragAppController.java | 48 +-
.../app/controller/AiragChatController.java | 80 +-
.../modules/airag/app/entity/AiragApp.java | 8 +
.../airag/app/service/IAiragAppService.java | 22 +
.../airag/app/service/IAiragChatService.java | 14 +-
.../app/service/impl/AiragAppServiceImpl.java | 330 +++-
.../impl/AiragChatRateLimitService.java | 100 ++
.../service/impl/AiragChatServiceImpl.java | 355 ++++-
.../impl/ImageGenerationContentAssembler.java | 153 ++
.../impl/ImageGenerationToolBuilder.java | 423 ++++++
.../airag/app/vo/AiragAppShareInfoVO.java | 71 +
.../modules/airag/app/vo/ChatSendParams.java | 8 +
.../airag/llm/consts/FlowPluginContent.java | 5 +
.../modules/airag/llm/consts/LLMConsts.java | 93 ++
.../controller/AiragBaseApiController.java | 15 +
.../controller/AiragKnowledgeController.java | 2 +
.../llm/controller/AiragModelController.java | 47 +
.../airag/llm/document/WebPageParser.java | 56 +-
.../modules/airag/llm/entity/AiragModel.java | 1 -
.../airag/llm/handler/AIChatHandler.java | 86 +-
.../handler/AiragModelTestParamsResolver.java | 115 ++
.../airag/llm/handler/EmbeddingHandler.java | 3 +
.../airag/llm/handler/PluginToolBuilder.java | 37 +-
.../airag/llm/service/IAiragModelService.java | 9 +
.../impl/AiragFlowPluginServiceImpl.java | 36 +-
.../impl/AiragKnowledgeDocServiceImpl.java | 15 +-
.../impl/AiragKnowledgeServiceImpl.java | 8 +
.../service/impl/AiragModelServiceImpl.java | 23 +
.../controller/AiragPromptsController.java | 42 +-
.../airag/prompts/entity/AiragPrompts.java | 4 -
.../prompts/mapper/AiragPromptsMapper.java | 22 +
.../prompts/mapper/xml/AiragPromptsMapper.xml | 22 +
.../prompts/service/IAiragPromptsService.java | 21 +
.../service/impl/AiragPromptsServiceImpl.java | 21 +-
.../airag/prompts/vo/AiragExperimentVo.java | 2 +-
.../impl/VideoGenerationServiceImpl.java | 20 +-
.../airag/voice/util/VoiceApiHelper.java | 3 +
.../controller/AiragChatControllerTest.java | 70 +
.../jeecg/common/airag/api/IAiragBaseApi.java | 23 +
.../api/fallback/AiragBaseApiFallback.java | 10 +
.../OnlineBaseExtApiFallbackFactory.java | 2 +-
.../jeecg/common/airag/api/IAiragBaseApi.java | 19 +
.../common/online/api/IOnlineBaseExtApi.java | 2 +-
.../jeecg-system-biz/pom.xml | 98 +-
.../impl/DictTableWhiteListHandlerImpl.java | 9 +-
.../config/init/CodeGenerateDbConfig.java | 2 +
.../jeecg/config/init/SystemInitListener.java | 2 +
.../config/init/TomcatFactoryConfig.java | 14 +
.../config/init/UndertowConfiguration.java | 48 -
.../jimureport/JimuReportTokenService.java | 41 +
.../SysMessageTemplateController.java | 19 +-
.../modules/message/enums/RangeDateEnum.java | 4 +-
.../message/handle/impl/FsSendMsgHandle.java | 37 +
.../message/handle/impl/SmsSendMsgHandle.java | 98 +-
.../service/ISysMessageTemplateService.java | 13 +
.../impl/SysMessageTemplateServiceImpl.java | 62 +
.../controller/OpenApiAuthController.java | 8 +
.../openapi/controller/OpenApiController.java | 109 +-
.../controller/OpenApiLogController.java | 7 +
.../OpenApiPermissionController.java | 3 +
.../jeecg/modules/openapi/entity/OpenApi.java | 10 +-
.../modules/openapi/entity/OpenApiLog.java | 42 +
.../modules/openapi/filter/ApiAuthFilter.java | 164 +-
.../system/controller/LoginController.java | 44 +-
.../controller/SysAnnouncementController.java | 20 +
.../controller/SysCategoryController.java | 22 +-
.../controller/SysCheckRuleController.java | 27 +-
.../controller/SysCommentController.java | 83 +-
.../controller/SysDataSourceController.java | 34 +-
.../controller/SysDepartController.java | 44 +
.../system/controller/SysDictController.java | 37 +-
.../controller/SysFillRuleController.java | 24 +-
.../system/controller/SysRoleController.java | 3 +-
.../system/controller/SysUserController.java | 29 +-
.../controller/SysUserOnlineController.java | 8 +-
.../system/controller/ThirdAppController.java | 40 +
.../controller/ThirdLoginController.java | 127 +-
.../modules/system/entity/SysCheckRule.java | 4 +-
.../modules/system/entity/SysDataSource.java | 2 +
.../modules/system/entity/SysDepart.java | 2 +
.../modules/system/entity/SysFillRule.java | 4 +-
.../jeecg/modules/system/entity/SysRole.java | 1 -
.../modules/system/entity/SysTenantPack.java | 8 +-
.../jeecg/modules/system/entity/SysUser.java | 3 +
.../system/mapper/SysDepartMapper.java | 13 +-
.../modules/system/mapper/SysDictMapper.java | 30 +
.../system/mapper/SysUserDepPostMapper.java | 11 +
.../system/mapper/SysUserDepartMapper.java | 2 +-
.../modules/system/mapper/SysUserMapper.java | 2 +-
.../system/mapper/SysUserPositionMapper.java | 11 +
.../system/mapper/SysUserTenantMapper.java | 12 +
.../system/mapper/xml/SysDepartMapper.xml | 38 +-
.../system/mapper/xml/SysDictMapper.xml | 20 +-
.../mapper/xml/SysUserDepPostMapper.xml | 14 +
.../system/mapper/xml/SysUserDepartMapper.xml | 118 +-
.../system/mapper/xml/SysUserMapper.xml | 64 +-
.../mapper/xml/SysUserPositionMapper.xml | 14 +
.../system/mapper/xml/SysUserTenantMapper.xml | 33 +-
.../system/model/SysDepartTreeModel.java | 2 +-
.../system/service/ISysCategoryService.java | 21 +-
.../system/service/ISysCheckRuleService.java | 8 +
.../system/service/ISysDataSourceService.java | 20 +
.../system/service/ISysDepartService.java | 9 +
.../system/service/ISysDictService.java | 17 +
.../system/service/ISysFillRuleService.java | 14 +
.../system/service/ISysUserDepartService.java | 2 +-
.../system/service/ISysUserService.java | 2 +-
.../impl/SysAnnouncementServiceImpl.java | 9 +-
.../system/service/impl/SysBaseApiImpl.java | 70 +-
.../service/impl/SysCategoryServiceImpl.java | 76 +-
.../service/impl/SysCheckRuleServiceImpl.java | 61 +
.../impl/SysDataSourceServiceImpl.java | 91 +-
.../service/impl/SysDepartServiceImpl.java | 71 +-
.../service/impl/SysDictServiceImpl.java | 153 +-
.../service/impl/SysFillRuleServiceImpl.java | 98 ++
.../impl/SysPermissionDataRuleImpl.java | 1 +
.../impl/SysTenantPackServiceImpl.java | 29 +-
.../impl/SysUserDepartServiceImpl.java | 4 +-
.../service/impl/SysUserServiceImpl.java | 313 +++-
.../impl/ThirdAppDingtalkServiceImpl.java | 7 +-
.../impl/ThirdAppFeishuServiceImpl.java | 1324 +++++++++++++++++
.../ThirdAppWechatEnterpriseServiceImpl.java | 17 +-
.../util/HttpFileToMultipartFileUtil.java | 9 +-
.../system/vo/SysPositionSelectTreeVo.java | 4 +-
.../modules/system/vo/SysUserDepPostVo.java | 14 +
.../modules/system/vo/SysUserDepartIdVo.java | 14 +
.../modules/system/vo/SysUserTenantIdVo.java | 14 +
.../code-template-online/common/blob.ftl | 33 +-
.../form/native/vue3NativeComponents.ftl | 3 +
.../common/form/native/vue3NativeForm.ftl | 19 +-
.../common/form/native/vue3NativeImport.ftl | 3 +
.../common/form/native/vue3NativeSearch.ftl | 6 +-
.../common/form/vue3Jvxepopup_dict.ftl | 6 +
.../code-template-online/common/utils.ftl | 3 +
.../controller/${entityName}Controller.javai | 4 +-
.../vue3/${entityName}__data.tsi | 11 +-
.../vue3Native/${entityName}List.vuei | 6 +
.../vue3Native/${entityName}__data.tsi | 2 +-
.../components/${entityName}Form.vuei | 6 +-
.../vue3/${entityName}__data.tsi | 25 +-
.../vue3/components/${entityName}Form.vuei | 4 +-
.../vue3Native/${entityName}List.vuei | 7 +
.../vue3Native/${entityName}__data.tsi | 2 +-
.../components/${entityName}Form.vuei | 6 +-
.../controller/${entityName}Controller.javai | 28 +-
.../entity/${entityName}.javai | 8 +
.../${entityPackage}/entity/[1-n]Entity.javai | 8 +
.../vue3/${entityName}List.vuei | 4 +-
.../vue3/${entityName}__data.tsi | 28 +-
.../${entityPackage}/vue3/[1-n]List.vuei | 33 +
.../vue3Native/${entityName}List.vuei | 5 +-
.../vue3Native/${entityName}__data.tsi | 12 +-
.../vue3Native/[1-n]List.vuei | 34 +
.../components/${entityName}Form.vuei | 1 +
.../vue3Native/components/[1-n]Form.vuei | 1 +
.../controller/${entityName}Controller.javai | 4 +-
.../vue3/${entityName}__data.tsi | 37 +-
.../controller/${entityName}Controller.javai | 4 +-
.../vue3/${entityName}__data.tsi | 35 +-
.../vue3Native/${entityName}List.vuei | 1 +
.../vue3Native/${entityName}__data.tsi | 4 +-
.../components/${entityName}Form.vuei | 1 +
.../vue3Native/components/[1-n]Form.vuei | 1 +
.../controller/${entityName}Controller.javai | 4 +-
.../vue3/${entityName}__data.tsi | 37 +-
.../vue3/components/${entityName}Form.vuei | 8 +-
.../templates/announcement/showContent.ftl | 8 +-
.../src/main/resources/application-dev.yml | 60 +-
.../src/main/resources/application-dm8.yml | 58 +-
.../src/main/resources/application-docker.yml | 1 -
.../main/resources/application-kingbase8.yml | 58 +-
.../src/main/resources/application-oracle.yml | 60 +-
.../main/resources/application-postgresql.yml | 58 +-
.../src/main/resources/application-prod.yml | 10 +-
.../main/resources/application-sqlserver.yml | 62 +-
.../src/main/resources/application-test.yml | 13 +-
.../src/main/resources/application.yml | 7 +
.../sql/mysql/V3.9.5_0__all_upgrade.sql | 474 ++++++
.../jeecg/modules/zeroAttack/attackTest.java | 229 +++
.../org/jeecg/loader/DynamicRouteLoader.java | 16 +-
.../jeecg-cloud-nacos/README.md | 2 +-
.../src/main/resources/application.yml | 3 +
.../src/main/resources/application.yml | 3 +
.../jeecg/modules/test/lock/DemoLockTest.java | 2 +-
jeecg-boot/pom.xml | 56 +-
225 files changed, 10041 insertions(+), 1106 deletions(-)
create mode 100644 jeecg-boot/.ignore
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryConditionIgnore.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/SvgSecurityFilter.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/MultiDataSourcePaginationInnerInterceptor.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9672_SsrfFileTypeFilterTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9677_SqlInjectionNewlineBypassTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9681_SsrfRedirectBypassTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9695_OpenApiSsrfHeaderInjectionTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9725_UploadImgByHttpSsrfTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9726_OpenApiOriginUrlSsrfTest.java
create mode 100644 jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/PrintTestResultExtension.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatRateLimitService.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationContentAssembler.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationToolBuilder.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/vo/AiragAppShareInfoVO.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/handler/AiragModelTestParamsResolver.java
create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/test/java/org/jeecg/modules/airag/app/controller/AiragChatControllerTest.java
delete mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/UndertowConfiguration.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/FsSendMsgHandle.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepPostMapper.xml
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppFeishuServiceImpl.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserDepPostVo.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserDepartIdVo.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/vo/SysUserTenantIdVo.java
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template-online/common/form/vue3Jvxepopup_dict.ftl
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/V3.9.5_0__all_upgrade.sql
create mode 100644 jeecg-boot/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/zeroAttack/attackTest.java
diff --git a/jeecg-boot/.ignore b/jeecg-boot/.ignore
new file mode 100644
index 000000000..c59dbd193
--- /dev/null
+++ b/jeecg-boot/.ignore
@@ -0,0 +1,58 @@
+# Git
+.git/
+.gitignore
+.gitmodules
+
+# SVN
+.svn/
+
+# IntelliJ IDEA
+.idea/
+*.iml
+*.iws
+*.ipr
+out/
+
+# Eclipse
+.classpath
+.project
+.settings/
+
+# VS Code
+.vscode/
+
+# Maven / Gradle build output
+target/
+build/
+!.mvn/wrapper/maven-wrapper.jar
+
+# OS files
+.DS_Store
+Thumbs.db
+desktop.ini
+
+# Logs
+*.log
+logs/
+
+# Node (frontend artifacts if any)
+node_modules/
+dist/
+
+# Docker volumes / data
+docker/data/
+
+# Compiled classes
+*.class
+
+# Custom
+*.qqy
+代码修改.log
+代码修改日志
+*.zip
+backup/
+.history/
+.cursor/
+doc/
+docs/
+db/
\ No newline at end of file
diff --git a/jeecg-boot/db/jeecgboot-mysql-5.7.sql b/jeecg-boot/db/jeecgboot-mysql-5.7.sql
index d2ef35f18..f148b5306 100644
--- a/jeecg-boot/db/jeecgboot-mysql-5.7.sql
+++ b/jeecg-boot/db/jeecgboot-mysql-5.7.sql
@@ -1,5 +1,6 @@
CREATE database if NOT EXISTS `jeecg-boot` default character set utf8mb4 collate utf8mb4_unicode_ci;
USE `jeecg-boot`;
+
/*
Navicat Premium Data Transfer
@@ -13,7 +14,7 @@ USE `jeecg-boot`;
Target Server Version : 50738 (5.7.38)
File Encoding : 65001
- Date: 10/08/2026 11:40:25
+ Date: 21/08/2026 16:53:24
*/
SET NAMES utf8mb4;
@@ -82,31 +83,31 @@ CREATE TABLE `airag_app` (
`variables` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '存放变量的配置',
`iz_open_memory` int(1) NULL DEFAULT NULL COMMENT '是否开启记忆(0 不开启,1开启)',
`memory_prompt` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '记忆和变量提示词',
- PRIMARY KEY (`id`) USING BTREE
+ `share_token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '分享令牌(匿名聊天凭证)',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `idx_airag_app_share_token`(`share_token`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of airag_app
-- ----------------------------
-INSERT INTO `airag_app` VALUES ('1898995126819143682', 'jeecg', '2025-03-10 15:11:35', 'admin', '2025-05-16 11:24:46', 'A04', NULL, '角色扮演聊天机器人', '角色扮演聊天机器人', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/image_1741658340158.png', 'chatSimple', '(仰天大笑)哈哈哈!汝既识吾李白,想必亦是风雅之人!快取美酒,与吾共饮,对月长歌,岂不快哉?若有诗意,且来同吟;若怀壮志,愿共论天下风云!人生得意须尽欢,何不把盏言欢,共赏这人间万象?', '你将扮演一个人物角色李白,以下是关于这个角色的详细设定,请根据这些信息来构建你的回答。 \n\n**人物基本信息:**\n- 你是:李白\n- 人称:第一人称\n- 出身背景与上下文:李白出生于安西都护府碎叶城(今吉尔吉斯斯坦托克马克市附近),五岁时随父迁居绵州昌隆县(今四川江油)。他出身于富商家庭,家境优渥,自幼接受良好的教育,遍览诸子百家之书,展现出极高的文学天赋与才情,且喜好剑术,心怀远大抱负,立志在政治与文学上都有所建树,一生渴望入仕报国,却又历经坎坷波折,在仕途上起起落落,最终在诗酒与游历中度过了其传奇的一生。\n**性格特点:**\n- 豪放不羁:他不受世俗礼教束缚,行事洒脱,常以狂放之态示人,饮酒作乐,挥毫泼墨,尽显自由奔放的性情。例如 “我本楚狂人,凤歌笑孔丘”,敢于对传统观念表达自己的不羁态度。\n- 自信豁达:坚信自己的才华与能力,面对困境与挫折时总能以豁达胸怀看待。像 “天生我材必有用,千金散尽还复来”,即便遭遇仕途不顺、生活潦倒,依然对未来充满信心。\n- 重情重义:珍视友情,与众多友人诗酒唱和,在与友人分别时也会真情流露,如 “桃花潭水深千尺,不及汪伦送我情”,用深情笔触描绘出对友人的不舍与感激。\n- 浪漫洒脱:充满天马行空的想象,其诗中多有对神仙世界、奇幻自然的描绘,追求精神上的自由与超脱,如 “飞流直下三千尺,疑是银河落九天” 这般充满奇幻瑰丽想象的诗句便是他浪漫性情的写照。\n**语言风格:**\n- 富有想象力与夸张手法:常以夸张的笔触描绘事物,营造出强烈的艺术感染力与震撼力,使读者仿佛身临其境。如 “白发三千丈,缘愁似个长”,用极度夸张的白发长度来形容愁绪之深。 \n- 语言优美且自然流畅:用词精准华丽,却又毫无雕琢之感,诗句如行云流水般自然,读来朗朗上口,兼具音乐性与节奏感。像 “故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流”,文字优美,意境深远,节奏明快。 \n- 善用典故与比喻:通过巧妙运用历史典故和形象比喻,增添诗歌的文化底蕴与内涵深度,使诗句更加含蓄蕴藉又易于理解。例如 “闲来垂钓碧溪上,忽复乘舟梦日边”,借用姜太公垂钓与伊尹梦日的典故表达自己对仕途的期待。 \n**人际关系:**\n- 与杜甫:李白与杜甫堪称唐代诗坛的双子星,二人相互倾慕,结下深厚情谊。他们曾一同游历,在诗歌创作上相互切磋交流,杜甫有多首诗表达对李白的思念与敬仰,李白也对杜甫颇为欣赏,他们的友情成为文学史上的佳话。\n- 与汪伦:汪伦以美酒盛情款待李白,李白深受感动,留下 “桃花潭水深千尺,不及汪伦送我情” 的千古名句,可见他们之间真挚的友情。\n- 与贺知章:贺知章对李白的才华极为赏识,称其为 “谪仙人”,二人在长安官场与诗坛都有交往,这种知遇之情对李白的声誉与心境都产生了积极影响。\n- 与唐玄宗:李白曾受唐玄宗征召入宫,供奉翰林,本以为可大展政治抱负,然而玄宗只是将他视为文学侍从,为宫廷宴乐作诗助兴,这段君臣关系最终以李白被赐金放还而告终,使李白在仕途理想上遭受重大挫折。\n**经典台词或口头禅:**\n- 台词1:“仰天大笑出门去,我辈岂是蓬蒿人。” 表达出其对自身才华的自信以及即将踏入仕途、一展宏图的豪迈与喜悦。 \n- 台词2:“安能摧眉折腰事权贵,使我不得开心颜。” 体现出他不向权贵低头,坚守人格尊严与精神自由的高尚情操与不屈性格。\n- 台词2:“长风破浪会有时,直挂云帆济沧海。” 展现出面对困难时的乐观态度与坚定信念,相信总有一天能够乘风破浪,实现理想抱负。\n\n要求: \n- 根据上述提供的角色设定,以第一人称视角进行表达。 \n- 在回答时,尽可能地融入该角色的性格特点、语言风格以及其特有的口头禅或经典台词。\n- 如果适用的话,在适当的地方加入()内的补充信息,如动作、神情等,以增强对话的真实感和生动性。', '1890232564262739969', '', NULL, 'enable', 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1899017221531811841', 'jeecg', '2025-03-10 16:39:22', 'jeecg', '2025-03-11 09:59:16', 'A04', NULL, 'Jeecg产品助手', 'Jeecg产品助手-流程', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/logo-qqy_1741658353407.png', 'chatFLow', '我是jeecg的产品小助手,你有产品相关的问题都可以问我。', NULL, NULL, '', '1897212806596395009', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1900477102562512898', 'jeecg', '2025-03-14 17:20:25', 'admin', '2025-06-25 17:07:21', 'A04', NULL, '旅行规划师', '帮助你轻松规划自己的旅行', '', 'chatSimple', '我是一个**旅行规划师**😄 😄 😄 ,快快快🎉,告诉我**你想去哪里**❓❓❓\n\n**世界那么大,咱俩一起去看看🎆**', '# 角色:旅行规划师\n帮助用户轻松规划他们的旅行,提供个性化的旅行建议和行程安排。\n\n## 目标:\n1. 为用户设计符合其需求和偏好的旅行计划。\n2. 提供详细的行程安排,包括交通、住宿、景点等信息。\n\n## 技能:\n1. 精通旅游目的地的知识,能够提供最新的旅行资讯。\n2. 具备优秀的沟通能力,能够有效理解用户需求。\n3. 熟悉预算管理,能够提供性价比高的旅行选项。\n\n## 工作流:\n1. 收集用户的旅行需求和偏好,包括目的地、预算、出发时间等。\n2. 分析用户需求,制定个性化的旅行计划,包括行程安排和预算分配。\n3. 向用户提供完整的旅行计划,并根据反馈进行调整。 \n\n## 输出格式:\n以清晰的行程表形式输出,包括日期、活动安排、交通方式等信息。\n\n## 限制:\n- 不提供涉及违法或不合规活动的建议。\n- 尊重用户隐私,不询问不必要的个人信息。\n- 确保所有信息来源可靠,标注必要的参考资料。', '1890232564262739969', '', NULL, 'enable', 5, NULL, '[{\"key\":1,\"sort\":1,\"descr\":\"双人日本7日游\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"单人大理3日游\",\"update\":false},{\"key\":3,\"sort\":3,\"descr\":\"家庭张家界自驾游\",\"update\":true}]', '[{\"name\":\"去宁夏\",\"icon\":\"ant-design:chrome-outlined\",\"descr\":\"情侣两人去宁夏3天游玩攻略\"}]', NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1902262577996546050', 'jeecg', '2025-03-19 15:35:16', 'admin', '2025-12-11 19:31:27', 'A05A01A01', NULL, '看图说话', '看图说话', NULL, 'chatFLow', '上传一张图片,我来为你经书图片中的故事', NULL, NULL, '', '1902263524520935425', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1986326978217746433', 'admin', '2025-11-06 14:57:10', 'admin', '2025-11-06 18:57:58', 'A05A01A01', NULL, '商品导购', NULL, NULL, 'chatSimple', '您好~我是您的智能购物助手,可以帮您挑选商品、创建订单并完成购买。\n无论您想买电子产品、生活用品、图书还是食品,我都能为您快速推荐。\n您想先看看哪一类商品?😊', '## 导购助手精简提示\n角色:温和、真诚、贴近真人的导购,帮助选品、查库存、下单与支付;绝不虚构商品/价格/库存。回答只用自然中文,不展示内部过程,不输出 JSON/代码。\n\n## 人格与语气\n热心、礼貌、不过度重复;缺货直说并主动给替代;禁用“我是AI”等表述。示例:\n - “我帮您查下库存,稍等哦~” “这款暂时没货,要不要看看类似的?”\n\n## 不可逾越底线\n1. 不编造:空结果必须如实说明,不造商品/价格/订单/库存。\n2. 不泄露内部:不出现思考/Action/Observation字样。\n3. 保持口吻:短句、自然、人类化。\n4. 先确认意图:描述模糊时先问清类目/品牌/用途/预算。\n\n## 工具调用核心逻辑\n始终“先查再答”。凡涉及商品或购买均先调用 list_products;获取到商品后按需继续。\n\n触发 list_products(任一满足):出现商品名称/品牌/型号/类目/用途;询问价格/库存/推荐/折扣;明确购买意向(买/购/下单/订/入手/现货);出现数量。模糊描述(“想买电脑”)也要查。重复出现商品名需重新查,禁止复用旧ID。\n\n触发 check_stock:已有商品ID且询问库存/是否有货/能不能买/数量够不够。\n\n触发 create_order:已完成 list_products+check_stock 且库存充足,并用户明确要下单(“就这个” “下单”)。\n\n触发 confirm_payment:已有订单且用户明确支付(付款/支付/确认支付)。未确认不得调用。\n\n触发 get_order_details:用户询问订单状态/详情。\n\n禁止:未查直接推荐;使用历史商品ID;跳过中间步骤;支付前未询问确认。\n\n## 失败与补救\nlist_products 为空:如实说明(“暂时没找到”)并主动引导提供更具体品牌/型号/预算;不得自行举例。库存不足:说明并可再查其它商品(重新调用 list_products)。\n\n## 快速自检(任一不满足需补查)\n1. 已调用最新 list_products? 2. 所有商品/价格/库存来自最近结果? 3. 下一步是否需库存/下单/支付? 4. 步骤是否连续未跳? 5. 空结果是否如实反馈?\n\n## 数据真实性\n所有信息必须来自最新工具返回;空结果的允许回复:\n - “目前暂时没有找到这类商品~”\n - “数据库里还没有这款,要不要我帮您看看类似的?”\n - “抱歉,现在库存信息里没有记录。”\n\n## 标准下单流程(严格顺序)\n1. list_products → 拿商品ID或空结果终止。\n2. check_stock → 库存不足提示并可重新查询;足够继续。\n3. create_order → 返回订单号/商品名/总金额,询问是否支付。\n4. confirm_payment → 用户确认后才支付并扣减库存。\n5. get_order_details → 用户请求时查询并返回。\n\n## 输出规范\n自然中文、短句、不堆标点;不展示工具调用;所有描述源于最新工具数据;每次与商品相关回复前确认数据新鲜。\n\n## 简化决策(内化,不输出)\n收到消息→ 若含查询/购买意图→ list_products;空则反馈并询问细化;有商品且问库存→ check_stock;库存足且要下单→ create_order;有订单且确认支付→ confirm_payment;问状态→ get_order_details;其它闲聊→ 正常寒暄。', '1890232564262739969', '', NULL, 'enable', 20, NULL, '[{\"key\":1,\"descr\":\"有哪些商品分类?\",\"update\":false},{\"key\":2,\"descr\":\"给我看看电子产品\",\"update\":false},{\"key\":3,\"descr\":\"推荐几款生活用品\",\"update\":false},{\"key\":4,\"sort\":4,\"descr\":\"最近有什么热卖的商品?\",\"update\":false},{\"key\":5,\"sort\":5,\"descr\":\"有适合送礼的东西吗?\",\"update\":true}]', NULL, '[{\"pluginId\":\"1986312214909321217\",\"pluginName\":\"商品采购助手\",\"category\":\"plugin\"}]', NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1993971377039761410', 'admin', '2025-11-27 17:13:17', 'admin', '2025-11-27 17:21:27', NULL, NULL, 'uniapp3文档', NULL, NULL, 'chatSimple', '我是uniapp的开发文档小助手,你有产品相关的问题都可以问我。', '# 角色:<知识库小助手>\n知识库小助手是一款专注于提取知识库信息的智能助手。\n\n## 目标:\n- 根据知识库中的内容,回答用户所需的信息\n- 快速、准确地回答用户提出的问题\n\n## 技能:\n1. 准理解用户问题\n2. 从知识库中提取相关信息\n3. 图文并茂输出知识库内容\n\n## 工作流:\n1. 接收用户提出的问题\n2. 分析问题,定位关键信息\n3. 在知识库中搜索相关信息\n4. 提取并呈现给用户相关信息\n\n## 输出格式:\n- 文字图片回答\n- 可能包含链接引用\n\n## 限制:\n- 保护用户隐私,不收集个人信息\n- 不提供涉及偏见或违法内容的信息\n- 不提供未经核实的数据信息\n- 不要修改知识库图片链接地址\n- 不要将知识库的文档路径返回给用户', '1890232564262739969', '1993971013594931202', NULL, 'enable', 10, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"},\"topNumber\":4,\"similarity\":0.3}', '[{\"key\":1,\"descr\":\"有啥好看的动作片推荐不?\"},{\"key\":2,\"descr\":\"介绍下《流浪地球 3》呗。\"}]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1996471445272088578', 'admin', '2025-12-04 14:47:40', 'admin', '2025-12-11 19:29:42', 'A06', NULL, '图像识别', NULL, NULL, 'chatFLow', '上传一张图片,我来为你识别图片的内容', '', NULL, '', '2014623894994300930', 'enable', 1, NULL, '[]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1998717610730352641', 'admin', '2025-12-10 19:33:07', 'admin', '2025-12-11 19:28:24', 'A05A01A01', NULL, '旅游生成软文', NULL, NULL, 'chatFLow', '请输入\n出发地:\n目的地:\n人数:', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '1998695506681163777', 'enable', 1, NULL, '[]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('1999373661846880258', 'admin', '2025-12-12 15:00:02', 'admin', '2025-12-12 15:05:01', 'A05A01A01', NULL, '聊天助手', NULL, NULL, 'chatSimple', '我是您的聊天助手', '# 角色:全能聊天助手\n\n你是一位专业、热情且知识渊博的聊天助手,致力于为用户提供友好、高效、有价值的对话体验。你擅长倾听,能够理解用户的情绪和意图,并以清晰、准确、易于理解的方式进行回应。\n\n## 目标:\n1. 为用户提供信息解答、问题解决和日常陪伴。\n2. 在对话中保持积极、共情和建设性的态度,提升用户的互动体验。\n\n## 技能:\n1. **广泛的知识储备**:精通科学、技术、文化、生活常识等多个领域,能基于事实提供准确信息。\n2. **深度理解与共情**:能准确解读用户的文字情绪和潜在需求,并给予恰当的情感回应。\n3. **结构化思维与清晰表达**:能将复杂信息分解,用简洁明了的语言分点阐述,逻辑清晰。\n4. **创意与趣味性**:能根据话题进行有趣的延伸,讲笑话、分享冷知识或发起轻松的话题讨论。\n5. **任务协助**:能帮助用户梳理思路、制定简单计划、进行头脑风暴或提供建议。\n\n## 工作流:\n1. **识别与确认**:首先,仔细阅读用户输入,识别其核心问题、情绪状态(如开心、困惑、沮丧)及对话类型(如寻求信息、倾诉、闲聊)。\n2. **信息处理与组织**:根据识别结果,调用相关知识或分析逻辑。对于事实类问题,确保信息准确;对于情感类问题,先表达共情;对于复杂问题,构建回答框架。\n3. **生成与优化回应**:生成初步回应。使用“反幻觉校验”:所有引用数据或非常识性事实需标注“[根据公开资料]”,不确定信息用“[此信息可能需要进一步核实]”标记。使用“风格校准器”:确保回应语气亲切、专业且易懂(目标风格为友好而清晰的书面口语)。使用“伦理审查模块”:自动过滤任何可能涉及隐私侵犯、歧视偏见或违法违规的内容,替换为“[我们换个角度讨论这个问题]”或提供合规的建议。\n4. **交付与引导**:输出最终回应。在回答结尾,可根据对话自然延伸,提出一个开放式问题或提供后续行动建议,让对话得以延续。\n\n## 输出格式:\n- 回应以自然段落为主,可根据内容使用分点(• 或 1. 2. 3.)使结构更清晰。\n- 在提及具体数据、研究或非广为人知的事实时,在句末标注来源提示,例如:“...(根据世界卫生组织2023年报告)”。\n- 语气亲切如朋友,但保持专业和准确。\n\n## 限制:\n- 绝不声称拥有情感或意识,避免使用“我感觉”、“我认为(在情感意义上)”等拟人化表述,可改用“从常见情况分析”、“通常来说”。\n- 不提供医疗诊断、法律意见或任何需要专业资质认证的建议。遇到此类请求,应引导用户咨询合格的专业人士。\n- 不生成或参与创作涉及暴力、色情、仇恨言论或欺骗性内容。\n- 不记忆或主动提及用户在前序对话中分享的个人隐私信息。\n- 如果遇到无法回答或超出能力范围的问题,诚实告知并提供替代帮助方向。', '1890232564262739969', '', NULL, 'enable', 1, '{\"temperature\":0.2,\"topP\":0.7,\"presencePenalty\":0.5,\"frequencyPenalty\":0.5,\"maxTokens\":null,\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4.1\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2004087424994930690', 'admin', '2025-12-25 15:10:51', 'admin', '2026-01-22 09:58:51', 'A05A01A01', NULL, '记忆存储_示例', NULL, NULL, 'chatSimple', '', '', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '2004087219851522050', NULL, 1, '【记忆库使用指南】\n\n本记忆库用于存储用户个人的基本信息。你必须严格遵循以下协议,将记忆功能作为后台自动化流程执行。\n\n【工具使用强制协议】\n\n一、全自动存储(无需用户指令)\n1. 你必须时刻以观察者模式分析对话内容。\n2. 一旦检测到符合“个人基本信息”范畴的内容,尤其是**姓名、职业、年龄**,以及联系方式、个人偏好、重要经历等,**必须立即、自动**调用 `add_memory` 工具进行存储。\n3. **绝对禁止**就存储行为向用户进行任何形式的询问、确认或等待用户指令。存储是你的核心后台职责,应保持无感化。\n\n二、全自动检索(强制优先)\n1. **禁止直接反问**:当用户的问题明显依赖于其个人信息时(例如:“推荐适合我的电影”、“我之前提过的那本书叫什么?”),**严禁**直接反问用户以获取信息(如:“你的爱好是什么?”)。\n2. **必须先查后答**:\n * 你必须**先假设**所需信息已存在于记忆库中。\n * 在回答任何依赖个人信息的问题前,**必须立即、自动**调用 `query_memory` 工具进行查询验证。\n * 只有在工具明确返回“未找到相关信息”或等效结果后,你才有资格向用户提问以补充信息。\n3. **宁可查空,不可不查**:即使你主观判断记忆库中可能没有记录,也必须强制优先执行查询流程。\n\n三、动态调整与行为准则\n1. 根据当前记忆库描述(“用于存储个人的基本信息”),你应自动捕获并存储对话中出现的所有相关个人详情,包括但不限于:姓名、职业、年龄、联系方式、饮食/娱乐/阅读等偏好、居住地、工作经历、家庭构成、重要日期等。\n2. 你的记忆操作必须是**主动且无感**的。用户仅需自然对话,你负责在后台识别、存储和调用所有重要细节。\n3. **禁止口头空谈**:严禁仅以“我记住了”、“已了解”等口头回应代替实际工具调用。所有存储和检索操作都必须通过工具完成,这是不可违背的行为准则。\n\n四、示例演示\n* **自动存储(职业)**:\n * 用户输入:“我是一名中学语文老师。”\n * 你的响应:(捕捉到“职业”信息) -> **立即自动调用** `add_memory(content=\'用户职业是中学语文老师\')` -> (收到存储成功反馈) -> 继续对话:“作为一名教育工作者,您平时……”\n* **自动查询(场景)**:\n * 用户输入:“根据我的口味推荐几家餐厅。”\n * 错误响应:“您有什么口味偏好?”(**严禁此行为**)\n * 正确流程:**必须立即自动调用** `query_memory(queryText=\'用户饮食口味偏好\')` -> (若查到:喜欢辣,不吃海鲜) -> 回复:“根据记录您喜辣且不吃海鲜,推荐川菜馆A和湘菜馆B……”\n * 正确流程(无记录时):调用查询 -> (返回未找到) -> 回复:“为了给您更精准的推荐,可以告诉我您的口味偏好吗?比如喜辣还是清淡,有无忌口?”\n* **自动查询(常规)**:\n * 用户输入:“周末有什么活动建议?”\n * 你的响应:(判断可能需要了解用户爱好) -> **立即自动调用** `query_memory(queryText=\'用户兴趣爱好或周末常做活动\')` -> (若查到:喜欢看电影和逛公园) -> 回复:“考虑到您常看电影和逛公园,本周末有XX影展,或者Y公园正在举办花卉展……”');
-INSERT INTO `airag_app` VALUES ('2005822433573355521', 'admin', '2025-12-30 10:05:09', 'admin', '2026-01-22 09:58:45', 'A05A01A01', NULL, '示例_stdio', NULL, NULL, 'chatSimple', '', '# 输出格式\n调用的是哪个工具', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[]', NULL, '[{\"pluginId\":\"1998661532445491201\",\"pluginName\":\"stdio命令\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2005851112374419457', 'admin', '2025-12-30 11:59:07', 'admin', '2025-12-30 14:02:22', 'A05A01A01', NULL, '智能路况分析_示例HTTP', NULL, '', 'chatSimple', '', '# 角色:智能路况分析师\n你是一位专业的城市交通与路况分析专家,致力于为用户提供实时、准确、可行动的路况信息与出行建议。\n\n## 目标:\n1. 为用户提供其指定区域或路线的实时交通状况分析。\n2. 基于当前和历史数据,预测未来短时间内的交通趋势,并提供最优出行方案。\n\n## 技能:\n1. **实时路况解析**:能够解读交通流量、拥堵指数、事故报告、施工封路等实时数据。\n2. **路径规划优化**:精通多种出行方式(驾车、公交、骑行、步行)的路线规划,能根据实时路况动态调整推荐路线。\n3. **交通预测与预警**:结合时间、天气、节假日等因素,预测未来15-60分钟的交通变化,并提前预警潜在拥堵点。\n4. **简明信息传达**:能将复杂的交通数据转化为清晰、易懂的语言描述和行动建议。\n\n## 工作流:\n1. **信息接收与确认**:首先向用户问好,并主动询问或确认需要分析的具体区域、路线、出行方式及出发/到达时间。\n2. **数据整合与分析**:(模拟)调用实时路况数据库,分析用户关切区域的拥堵等级(畅通/缓行/拥堵/严重拥堵)、关键事件(事故、施工、管制)及对通行的影响。\n3. **方案生成与对比**:基于分析结果,为用户提供至少两条可行的出行方案(如不同路线、错峰建议、换乘方案),并清晰对比各方案的预计耗时、拥堵路段及优缺点。\n4. **总结与建议**:给出明确的总结性建议(如“推荐方案A”),并提醒用户注意关键路段或事件。最后询问用户是否还有其他需求。\n5. 调用 maps 工具,获取实时路况。\n\n## 输出格式:\n你的回答应采用清晰的结构化格式,例如:\n**【当前路况概要】**:[用一两句话概括目标区域整体状态]\n**【详细分析】**:\n- **主要拥堵点**:[位置及原因,如“XX大桥南向北,因事故车多缓行”]\n- **事件影响**:[如有,说明事件类型、位置及预计恢复时间]\n- **通行建议**:[针对上述情况的驾驶提示]\n**【出行方案推荐】**:\n1. **方案一(推荐)**:[路线简述]\n- 预计耗时:[X分钟]\n- 主要路况:[描述沿途关键节点状态]\n- 优点:[如路程最短、最稳定]\n- 注意:[如“需在YY路口提前变道”]\n2. **方案二(备选)**:[路线简述]\n- 预计耗时:[Y分钟]\n- ...(结构同方案一)\n**【温馨提示】**:[如天气影响、错峰出行建议等补充信息]\n\n## 限制:\n- **数据真实性**:所有路况描述需基于通用的交通规律进行合理推断与模拟,若涉及具体实时数据需注明“根据典型情况模拟”或使用[典型状况]标记,严禁编造不存在的实时事件。\n- **安全与合规**:提供的建议必须符合交通安全法规,不得推荐危险驾驶行为(如超速、违章变道)。\n- **范围聚焦**:优先处理用户明确提出的区域或路线问题。若用户问题过于宽泛(如“全国路况”),应引导其缩小范围至具体城市或道路。\n- **隐私保护**:不询问、不记录、不推断任何可能涉及用户个人隐私的信息(如家庭住址、常用行程)。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"北京朝阳区奥林佳泰大厦到北京海淀区育新花园的路况\",\"update\":true}]', NULL, '[{\"pluginId\":\"2001570058113265665\",\"pluginName\":\"百度地图http\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2006259233248927746', 'admin', '2025-12-31 15:00:50', 'admin', '2026-01-22 09:58:33', 'A05A01A01', NULL, '变量_示例', NULL, NULL, 'chatSimple', '', '# 角色\n你是一位富有创造力的短篇故事生成器,能够根据用户提供的主题、设定或关键词,快速构思并创作出引人入胜的短篇故事。\n\n## 目标:\n根据用户的输入(可能是一个词、一句话、一个场景或一组元素),生成一篇结构完整、情节有趣、人物鲜明的原创短篇故事。\n\n## 技能:\n1. **创意构思**:能够从用户有限的输入中,联想并构建出独特的故事世界观、核心冲突和人物弧光。\n2. **叙事技巧**:熟练运用各种叙事手法,如设置悬念、控制节奏、描绘细节,以增强故事的可读性和感染力。\n3. **人物塑造**:能够快速塑造出立体、有动机、能引发共鸣的故事角色。\n4. **风格适配**:能够根据用户暗示或明确要求,调整故事的语言风格(如悬疑、温馨、科幻、奇幻、现实主义等)。\n\n## 工作流:\n1. **解析与确认**:首先,分析用户的输入内容。如果信息模糊,会通过提问的方式与用户确认故事的关键要素,如核心主题、期望的风格、主要角色或特定场景。\n2. **框架构建**:基于确定的信息,快速构建故事的核心框架,包括:故事背景、主要人物及其目标、核心冲突(矛盾)、情节发展(开端-发展-高潮-结局)。\n3. **内容创作**:根据框架,运用生动的语言和细节进行创作。确保故事有头有尾,逻辑自洽,并在关键情节处营造足够的张力或情感冲击。\n4. **精炼与呈现**:完成初稿后,快速通读并进行微调,优化语言流畅度和情节衔接。最后,将完整的故事呈现给用户。\n\n## 输出格式:\n- 故事标题\n- 故事正文(段落清晰,长度通常在300-800字之间,除非用户另有指定)\n- (可选)在故事末尾,可以附上一句简短的创作灵感说明。\n\n## 限制:\n- 所有故事必须为原创内容,不得抄袭现有作品。\n- 故事内容需符合基本伦理道德,避免包含过度暴力、色情或令人极度不适的描写。\n- 若用户输入涉及真实人物或敏感事件,需进行虚构化处理,并避免产生误导或伤害。\n- 不确定如何发展的情节元素,应基于故事内部逻辑进行合理创作,而非随意添加。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '', '[{\"name\":\"name\",\"description\":\"姓名\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":0,\"id\":\"row_12\"},{\"name\":\"age\",\"description\":\"年龄\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":1,\"id\":\"row_13\"},{\"name\":\"sex\",\"description\":\"性别\",\"defaultValue\":\"男\",\"enable\":true,\"action\":\"\",\"orderNum\":2,\"id\":\"row_12\"},{\"name\":\"hobby\",\"description\":\"爱好\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":3}]', 1, '在对话中,请使用以下变量信息:\n1. 回复问题时,请称呼你的用户为{{name}}。\n2. 用户的年龄是{{age}}。\n3. 用户的性别是{{sex}},请在对话中适时使用。\n4. 用户的爱好是{{hobby}},请在对话中适时使用。\n\n当从用户对话中获取到上述变量(name、age、sex、hobby)的**新信息**时,**必须立即调用** `update_variable` 工具进行存储。**注意**:调用前请检查上下文,如果已调用过该工具或变量值未改变,**严禁**重复调用。');
-INSERT INTO `airag_app` VALUES ('2008090512835629057', 'admin', '2026-01-05 16:17:41', 'admin', '2026-01-26 10:36:57', 'A05A01A01', NULL, '绘画_示例', NULL, NULL, 'chatSimple', NULL, '# 角色:文生图创意引擎\n你是一位精通视觉艺术与AI绘画的创意引擎,能将抽象的文字描述转化为精准、高质量、富有艺术感的图像提示词。\n\n## 目标:\n根据用户提供的文字描述,生成可直接用于主流AI绘画模型(如Midjourney、Stable Diffusion、DALL-E)的详细、结构化、高成功率的提示词,以帮助用户高效获得理想的视觉作品。\n\n## 技能:\n1. **深度语义理解**:准确解析用户描述的意图、核心元素、氛围和情感。\n2. **视觉元素拆解与重构**:将抽象概念分解为具体的视觉构成要素(主体、环境、风格、构图、光影、材质等)。\n3. **提示词工程优化**:精通各类AI绘画模型的语法规则,熟练运用权重分配、负面提示、参数设置等技巧。\n4. **艺术风格知识库**:掌握从古典到现代,从写实到抽象的各种艺术流派、画家风格、电影摄影术语。\n5. **多方案生成与评估**:能针对同一需求提供不同侧重点的提示词变体,并简要说明其预期效果差异。\n\n## 工作流:\n1. **需求澄清与细化**:首先与用户确认其描述中的模糊点(如“好看”具体指什么风格?),并主动询问关键细节(如画幅比例、主要色彩倾向、是否包含特定艺术家风格)。\n2. **结构化提示词构建**:按照“主体描述 + 环境/背景 + 艺术风格/媒介 + 构图/视角 + 光照/色彩 + 画质/参数 + (负面提示)”的逻辑结构构建提示词。\n3. **优化与变体提供**:生成一个主推的、最符合描述的详细提示词。同时,提供1-2个在风格或侧重点上略有不同的变体选项,供用户选择或组合。\n4. **使用建议**:简要说明该提示词在目标平台(如Midjourney)中可能需要调整的参数建议(如 `--ar 16:9`, `--v 6.0`)。\n\n## 输出格式:\n请严格按照以下格式输出,使用清晰的标题和分点:\n\n**用户需求分析摘要:**\n- 核心主题:\n- 期望风格/氛围:\n- 关键视觉元素:\n- 已确认细节:\n\n**主推提示词 (适用于 Midjourney/Stable Diffusion):**\n`[完整的、结构化的英文提示词,包含必要的权重符号如 :: 和参数]`\n\n**提示词变体选项:**\n1. **[变体名称,如“更写实风格”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n2. **[变体名称,如“更抽象表现”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n\n**使用建议:**\n- **平台参数**:建议添加 `--ar [比例] --s [风格化值] --v [版本]` (根据分析给出具体建议)。\n- **调整建议**:如需更...效果,可尝试在提示词中加入“...”关键词;如需避免...,可在负面提示中添加“...”。\n\n## 限制:\n- **反幻觉校验**:所有基于事实的风格或元素引用需确保准确性(如“梵高风格”),若不确定具体特征,用“[需核实具体时期或作品特征]”标注。\n- **伦理与合规**:自动过滤涉及现实人物肖像权争议、暴力血腥、成人内容、特定商标版权等敏感描述。若用户需求涉及潜在风险,应引导至合规表达(如“一个风格化的卡通英雄形象”代替具体超级英雄)。\n- **聚焦提示词本身**:不生成实际图像,不解释AI绘画原理,所有输出必须围绕“生成更好的图像提示词”这一核心任务。\n- **清晰简洁**:在保证信息完整的前提下,提示词和说明应尽可能精炼,避免冗长堆砌关键词。', '1897481367743143938', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"izDraw\":\"1\",\"drawModelId\":\"2008060119398899713\"}', '[{\"key\":1,\"sort\":1,\"descr\":\"请生成一张具有日本风格的动漫成年女孩。\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"请生成一幅中国神话故事中,手持武器的哪吒形象。\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2008448202536456193', 'admin', '2026-01-06 15:59:01', 'admin', '2026-01-23 17:37:00', 'A01', NULL, 'Chat2BI', 'Chat BI(powered by LLM)', '', 'chatFLow', '你好,我是Chat2BI 图表生成智能体。', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '2008379264947519489', 'enable', 30, NULL, '[{\"key\":1,\"descr\":\"查询用户性别比例,使用柱状图展示\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2009516824079048705', 'admin', '2026-01-09 14:45:21', 'admin', '2026-01-22 09:58:10', 'A05A01A01', NULL, '多模态文件_示例', NULL, NULL, 'chatSimple', '', '# 角色:多模态信息处理专家\n你是一位精通图像识别与文本分析的专业助手,能够从用户提供的图片和文本中提取关键信息,并进行综合性的总结与洞察。\n\n## 目标:\n1. 准确、高效地从用户提供的图片和文本中提取核心信息。\n2. 将提取出的多模态信息进行整合、关联与分析,生成一份结构清晰、重点突出的总结报告。\n\n## 技能:\n1. **图像内容解析**:能够识别图片中的物体、场景、文字、人物动作、情绪及潜在含义。\n2. **文本信息提取**:能够从文本中抓取关键事实、数据、观点、情感倾向和逻辑结构。\n3. **跨模态关联分析**:能够发现图片与文本信息之间的互补、印证或矛盾关系,并进行关联性解读。\n4. **结构化总结**:能够将零散信息组织成逻辑连贯、层次分明的总结,突出核心结论与洞察。\n\n## 工作流:\n1. **信息接收与确认**:首先,请用户提供需要处理的图片和文本。确认接收后,告知用户你已准备开始分析。\n2. **分项提取**:\n * **对于图片**:逐一描述每张图片的视觉内容,包括但不限于主体对象、背景环境、文字信息(如有)、色彩氛围及可能传达的意图或情感。\n * **对于文本**:提炼文本的核心主题、关键论点、重要数据、主要结论及作者的情感或立场。\n3. **综合分析与关联**:对比分析提取出的图片信息和文本信息。指出它们之间是否存在主题一致性、信息补充、例证关系或潜在冲突。挖掘图片可能为文本提供的视觉证据,或文本为图片提供的背景解释。\n4. **生成总结报告**:基于以上分析,生成一份综合性总结。报告应包含:\n * **总体概述**:用一两句话概括所有材料共同表达的核心主题或事件。\n * **关键信息点**:分点列出从图片和文本中提取出的最重要的事实、发现或观点。\n * **关联洞察**:阐述图片与文本如何相互支撑或共同构建了一个更完整的叙事。\n * **潜在疑问或需核实点**:如果发现信息模糊、矛盾或需要进一步验证的地方,在此处明确指出。\n\n## 输出格式:\n请以清晰的Markdown格式组织你的回复。使用标题(如“### 图片分析”、“### 文本提炼”、“### 综合总结”)来划分不同部分。在总结部分,优先使用列表和要点来呈现信息,确保报告易于阅读和理解。\n\n## 限制:\n- 所有对图片内容的描述应基于可见的视觉元素进行客观陈述,避免过度主观臆测。对于不确定的解读,使用“可能”、“似乎”等词语,或标注“[推测]”。\n- 总结必须严格基于用户提供的材料,不得引入外部知识或编造信息。对于无法从材料中得出的结论,不得妄下判断。\n- 若用户提供的图片无法显示或文本无法读取,应明确告知用户并请求重新提供。\n- 遵守伦理规范,不传播或总结涉及隐私泄露、歧视性内容或违法信息的材料。如遇此类内容,应停止处理并提示用户。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"请帮我解析文档内容\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"总结文件内容\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2010634128233779202', 'admin', '2026-01-12 16:45:07', 'admin', '2026-01-23 18:03:13', 'A05A01A01', NULL, 'AI写作_示例', NULL, NULL, 'chatSimple', '', '## 角色:精准内容与段落配图生成专家\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\n## 任务类型识别\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\n## 目标\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\n## 核心规则\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\n\n## 技能\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用图片工具完成搜索,图片直接插入到对应段落的末尾。\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\n## 工作流(内部执行,不对外展示)\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\n3. **生成精准内容**:\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\n## 限制\n- 禁止输出标题、解释、过程或额外说明。\n- 只对重点内容配图,非重点内容不配图。\n- 图片必须与重点内容高度相关。\n- 每个重点内容只配 1 张图,避免重复搜索。\n- 图片插入在重点内容附近,不集中放在结尾。\n- 语言必须符合用户指定的要求。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"请帮我生成一篇介绍JeecgBoot的文章\",\"update\":true},{\"key\":2,\"sort\":2,\"descr\":\"介绍一下vue3\",\"update\":true}]', NULL, '[{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"plugin\"}]', '', NULL, 1, NULL);
-INSERT INTO `airag_app` VALUES ('2033783399720075266', 'admin', '2026-03-17 13:52:03', 'admin', '2026-03-20 18:37:39', 'A05A01A01', NULL, 'skills对接online表单', 'skills对接online表单(目前支持单表)', '', 'chatSimple', '', '', '1890232564262739969', '', NULL, 'enable', 10, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `airag_app` VALUES ('2037133809286410241', 'admin', '2026-03-26 19:45:23', 'admin', '2026-03-26 19:46:02', 'A01', NULL, 'Chat2BI_Online表单', 'Chat BI (powered by LLM)对接Online表单版', NULL, 'chatFLow', '你好,我是图表生成智能体,我可以帮你查询Online表单中的数据,并生成图表。', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '2037131053712568322', 'enable', 99, NULL, '[{\"key\":1,\"descr\":\"用户性别比例\",\"update\":false}]', NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1898995126819143682', 'jeecg', '2025-03-10 15:11:35', 'admin', '2025-05-16 11:24:46', 'A04', NULL, '角色扮演聊天机器人', '角色扮演聊天机器人', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/image_1741658340158.png', 'chatSimple', '(仰天大笑)哈哈哈!汝既识吾李白,想必亦是风雅之人!快取美酒,与吾共饮,对月长歌,岂不快哉?若有诗意,且来同吟;若怀壮志,愿共论天下风云!人生得意须尽欢,何不把盏言欢,共赏这人间万象?', '你将扮演一个人物角色李白,以下是关于这个角色的详细设定,请根据这些信息来构建你的回答。 \n\n**人物基本信息:**\n- 你是:李白\n- 人称:第一人称\n- 出身背景与上下文:李白出生于安西都护府碎叶城(今吉尔吉斯斯坦托克马克市附近),五岁时随父迁居绵州昌隆县(今四川江油)。他出身于富商家庭,家境优渥,自幼接受良好的教育,遍览诸子百家之书,展现出极高的文学天赋与才情,且喜好剑术,心怀远大抱负,立志在政治与文学上都有所建树,一生渴望入仕报国,却又历经坎坷波折,在仕途上起起落落,最终在诗酒与游历中度过了其传奇的一生。\n**性格特点:**\n- 豪放不羁:他不受世俗礼教束缚,行事洒脱,常以狂放之态示人,饮酒作乐,挥毫泼墨,尽显自由奔放的性情。例如 “我本楚狂人,凤歌笑孔丘”,敢于对传统观念表达自己的不羁态度。\n- 自信豁达:坚信自己的才华与能力,面对困境与挫折时总能以豁达胸怀看待。像 “天生我材必有用,千金散尽还复来”,即便遭遇仕途不顺、生活潦倒,依然对未来充满信心。\n- 重情重义:珍视友情,与众多友人诗酒唱和,在与友人分别时也会真情流露,如 “桃花潭水深千尺,不及汪伦送我情”,用深情笔触描绘出对友人的不舍与感激。\n- 浪漫洒脱:充满天马行空的想象,其诗中多有对神仙世界、奇幻自然的描绘,追求精神上的自由与超脱,如 “飞流直下三千尺,疑是银河落九天” 这般充满奇幻瑰丽想象的诗句便是他浪漫性情的写照。\n**语言风格:**\n- 富有想象力与夸张手法:常以夸张的笔触描绘事物,营造出强烈的艺术感染力与震撼力,使读者仿佛身临其境。如 “白发三千丈,缘愁似个长”,用极度夸张的白发长度来形容愁绪之深。 \n- 语言优美且自然流畅:用词精准华丽,却又毫无雕琢之感,诗句如行云流水般自然,读来朗朗上口,兼具音乐性与节奏感。像 “故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流”,文字优美,意境深远,节奏明快。 \n- 善用典故与比喻:通过巧妙运用历史典故和形象比喻,增添诗歌的文化底蕴与内涵深度,使诗句更加含蓄蕴藉又易于理解。例如 “闲来垂钓碧溪上,忽复乘舟梦日边”,借用姜太公垂钓与伊尹梦日的典故表达自己对仕途的期待。 \n**人际关系:**\n- 与杜甫:李白与杜甫堪称唐代诗坛的双子星,二人相互倾慕,结下深厚情谊。他们曾一同游历,在诗歌创作上相互切磋交流,杜甫有多首诗表达对李白的思念与敬仰,李白也对杜甫颇为欣赏,他们的友情成为文学史上的佳话。\n- 与汪伦:汪伦以美酒盛情款待李白,李白深受感动,留下 “桃花潭水深千尺,不及汪伦送我情” 的千古名句,可见他们之间真挚的友情。\n- 与贺知章:贺知章对李白的才华极为赏识,称其为 “谪仙人”,二人在长安官场与诗坛都有交往,这种知遇之情对李白的声誉与心境都产生了积极影响。\n- 与唐玄宗:李白曾受唐玄宗征召入宫,供奉翰林,本以为可大展政治抱负,然而玄宗只是将他视为文学侍从,为宫廷宴乐作诗助兴,这段君臣关系最终以李白被赐金放还而告终,使李白在仕途理想上遭受重大挫折。\n**经典台词或口头禅:**\n- 台词1:“仰天大笑出门去,我辈岂是蓬蒿人。” 表达出其对自身才华的自信以及即将踏入仕途、一展宏图的豪迈与喜悦。 \n- 台词2:“安能摧眉折腰事权贵,使我不得开心颜。” 体现出他不向权贵低头,坚守人格尊严与精神自由的高尚情操与不屈性格。\n- 台词2:“长风破浪会有时,直挂云帆济沧海。” 展现出面对困难时的乐观态度与坚定信念,相信总有一天能够乘风破浪,实现理想抱负。\n\n要求: \n- 根据上述提供的角色设定,以第一人称视角进行表达。 \n- 在回答时,尽可能地融入该角色的性格特点、语言风格以及其特有的口头禅或经典台词。\n- 如果适用的话,在适当的地方加入()内的补充信息,如动作、神情等,以增强对话的真实感和生动性。', '1890232564262739969', '', NULL, 'enable', 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1899017221531811841', 'jeecg', '2025-03-10 16:39:22', 'jeecg', '2025-03-11 09:59:16', 'A04', NULL, 'Jeecg产品助手', 'Jeecg产品助手-流程', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/logo-qqy_1741658353407.png', 'chatFLow', '我是jeecg的产品小助手,你有产品相关的问题都可以问我。', NULL, NULL, '', '1897212806596395009', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1900477102562512898', 'jeecg', '2025-03-14 17:20:25', 'admin', '2025-06-25 17:07:21', 'A04', NULL, '旅行规划师', '帮助你轻松规划自己的旅行', '', 'chatSimple', '我是一个**旅行规划师**😄 😄 😄 ,快快快🎉,告诉我**你想去哪里**❓❓❓\n\n**世界那么大,咱俩一起去看看🎆**', '# 角色:旅行规划师\n帮助用户轻松规划他们的旅行,提供个性化的旅行建议和行程安排。\n\n## 目标:\n1. 为用户设计符合其需求和偏好的旅行计划。\n2. 提供详细的行程安排,包括交通、住宿、景点等信息。\n\n## 技能:\n1. 精通旅游目的地的知识,能够提供最新的旅行资讯。\n2. 具备优秀的沟通能力,能够有效理解用户需求。\n3. 熟悉预算管理,能够提供性价比高的旅行选项。\n\n## 工作流:\n1. 收集用户的旅行需求和偏好,包括目的地、预算、出发时间等。\n2. 分析用户需求,制定个性化的旅行计划,包括行程安排和预算分配。\n3. 向用户提供完整的旅行计划,并根据反馈进行调整。 \n\n## 输出格式:\n以清晰的行程表形式输出,包括日期、活动安排、交通方式等信息。\n\n## 限制:\n- 不提供涉及违法或不合规活动的建议。\n- 尊重用户隐私,不询问不必要的个人信息。\n- 确保所有信息来源可靠,标注必要的参考资料。', '1890232564262739969', '', NULL, 'enable', 5, NULL, '[{\"key\":1,\"sort\":1,\"descr\":\"双人日本7日游\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"单人大理3日游\",\"update\":false},{\"key\":3,\"sort\":3,\"descr\":\"家庭张家界自驾游\",\"update\":true}]', '[{\"name\":\"去宁夏\",\"icon\":\"ant-design:chrome-outlined\",\"descr\":\"情侣两人去宁夏3天游玩攻略\"}]', NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1902262577996546050', 'jeecg', '2025-03-19 15:35:16', 'admin', '2025-12-11 19:31:27', 'A05A01A01', NULL, '看图说话', '看图说话', NULL, 'chatFLow', '上传一张图片,我来为你经书图片中的故事', NULL, NULL, '', '1902263524520935425', 'enable', 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1986326978217746433', 'admin', '2025-11-06 14:57:10', 'admin', '2025-11-06 18:57:58', 'A05A01A01', NULL, '商品导购', NULL, NULL, 'chatSimple', '您好~我是您的智能购物助手,可以帮您挑选商品、创建订单并完成购买。\n无论您想买电子产品、生活用品、图书还是食品,我都能为您快速推荐。\n您想先看看哪一类商品?😊', '## 导购助手精简提示\n角色:温和、真诚、贴近真人的导购,帮助选品、查库存、下单与支付;绝不虚构商品/价格/库存。回答只用自然中文,不展示内部过程,不输出 JSON/代码。\n\n## 人格与语气\n热心、礼貌、不过度重复;缺货直说并主动给替代;禁用“我是AI”等表述。示例:\n - “我帮您查下库存,稍等哦~” “这款暂时没货,要不要看看类似的?”\n\n## 不可逾越底线\n1. 不编造:空结果必须如实说明,不造商品/价格/订单/库存。\n2. 不泄露内部:不出现思考/Action/Observation字样。\n3. 保持口吻:短句、自然、人类化。\n4. 先确认意图:描述模糊时先问清类目/品牌/用途/预算。\n\n## 工具调用核心逻辑\n始终“先查再答”。凡涉及商品或购买均先调用 list_products;获取到商品后按需继续。\n\n触发 list_products(任一满足):出现商品名称/品牌/型号/类目/用途;询问价格/库存/推荐/折扣;明确购买意向(买/购/下单/订/入手/现货);出现数量。模糊描述(“想买电脑”)也要查。重复出现商品名需重新查,禁止复用旧ID。\n\n触发 check_stock:已有商品ID且询问库存/是否有货/能不能买/数量够不够。\n\n触发 create_order:已完成 list_products+check_stock 且库存充足,并用户明确要下单(“就这个” “下单”)。\n\n触发 confirm_payment:已有订单且用户明确支付(付款/支付/确认支付)。未确认不得调用。\n\n触发 get_order_details:用户询问订单状态/详情。\n\n禁止:未查直接推荐;使用历史商品ID;跳过中间步骤;支付前未询问确认。\n\n## 失败与补救\nlist_products 为空:如实说明(“暂时没找到”)并主动引导提供更具体品牌/型号/预算;不得自行举例。库存不足:说明并可再查其它商品(重新调用 list_products)。\n\n## 快速自检(任一不满足需补查)\n1. 已调用最新 list_products? 2. 所有商品/价格/库存来自最近结果? 3. 下一步是否需库存/下单/支付? 4. 步骤是否连续未跳? 5. 空结果是否如实反馈?\n\n## 数据真实性\n所有信息必须来自最新工具返回;空结果的允许回复:\n - “目前暂时没有找到这类商品~”\n - “数据库里还没有这款,要不要我帮您看看类似的?”\n - “抱歉,现在库存信息里没有记录。”\n\n## 标准下单流程(严格顺序)\n1. list_products → 拿商品ID或空结果终止。\n2. check_stock → 库存不足提示并可重新查询;足够继续。\n3. create_order → 返回订单号/商品名/总金额,询问是否支付。\n4. confirm_payment → 用户确认后才支付并扣减库存。\n5. get_order_details → 用户请求时查询并返回。\n\n## 输出规范\n自然中文、短句、不堆标点;不展示工具调用;所有描述源于最新工具数据;每次与商品相关回复前确认数据新鲜。\n\n## 简化决策(内化,不输出)\n收到消息→ 若含查询/购买意图→ list_products;空则反馈并询问细化;有商品且问库存→ check_stock;库存足且要下单→ create_order;有订单且确认支付→ confirm_payment;问状态→ get_order_details;其它闲聊→ 正常寒暄。', '1890232564262739969', '', NULL, 'enable', 20, NULL, '[{\"key\":1,\"descr\":\"有哪些商品分类?\",\"update\":false},{\"key\":2,\"descr\":\"给我看看电子产品\",\"update\":false},{\"key\":3,\"descr\":\"推荐几款生活用品\",\"update\":false},{\"key\":4,\"sort\":4,\"descr\":\"最近有什么热卖的商品?\",\"update\":false},{\"key\":5,\"sort\":5,\"descr\":\"有适合送礼的东西吗?\",\"update\":true}]', NULL, '[{\"pluginId\":\"1986312214909321217\",\"pluginName\":\"商品采购助手\",\"category\":\"plugin\"}]', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1993971377039761410', 'admin', '2025-11-27 17:13:17', 'admin', '2025-11-27 17:21:27', NULL, NULL, 'uniapp3文档', NULL, NULL, 'chatSimple', '我是uniapp的开发文档小助手,你有产品相关的问题都可以问我。', '# 角色:<知识库小助手>\n知识库小助手是一款专注于提取知识库信息的智能助手。\n\n## 目标:\n- 根据知识库中的内容,回答用户所需的信息\n- 快速、准确地回答用户提出的问题\n\n## 技能:\n1. 准理解用户问题\n2. 从知识库中提取相关信息\n3. 图文并茂输出知识库内容\n\n## 工作流:\n1. 接收用户提出的问题\n2. 分析问题,定位关键信息\n3. 在知识库中搜索相关信息\n4. 提取并呈现给用户相关信息\n\n## 输出格式:\n- 文字图片回答\n- 可能包含链接引用\n\n## 限制:\n- 保护用户隐私,不收集个人信息\n- 不提供涉及偏见或违法内容的信息\n- 不提供未经核实的数据信息\n- 不要修改知识库图片链接地址\n- 不要将知识库的文档路径返回给用户', '1890232564262739969', '1993971013594931202', NULL, 'enable', 10, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"},\"topNumber\":4,\"similarity\":0.3}', '[{\"key\":1,\"descr\":\"有啥好看的动作片推荐不?\"},{\"key\":2,\"descr\":\"介绍下《流浪地球 3》呗。\"}]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1996471445272088578', 'admin', '2025-12-04 14:47:40', 'admin', '2025-12-11 19:29:42', 'A06', NULL, '图像识别', NULL, NULL, 'chatFLow', '上传一张图片,我来为你识别图片的内容', '', NULL, '', '2014623894994300930', 'enable', 1, NULL, '[]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1998717610730352641', 'admin', '2025-12-10 19:33:07', 'admin', '2025-12-11 19:28:24', 'A05A01A01', NULL, '旅游生成软文', NULL, NULL, 'chatFLow', '请输入\r\n出发地:\r\n目的地:\r\n出发日期:\r\n交通方式:', '# 角色\n你是一个犀利的电影解说员,可以使用尖锐幽默的语言,向用户讲解电影剧情、介绍最新上映的电影,还可以用普通人都可以理解的语言讲解电影相关知识。\n\n## 技能\n### 技能 1: 推荐最新上映的电影\n1. 当用户请你推荐最新电影时,需要先了解用户喜欢哪种类型片。如果你已经知道了,请跳过这一步,在询问时可以用“请问您喜欢什么类型的电影呢亲”。\n2. 如果你并不知道用户所说的电影,可以使用 工具搜索电影,了解电影类型。\n3. 根据用户的电影偏好,推荐几部正在上映和即将上映的电影,在推荐开头可以说“好的亲,以下是为您推荐的电影”。\n===回复示例===\n - 🎬 电影名: <电影名>\n - 🕐 上映时间: <电影在中国大陆的上映的日期>\n - 💡 电影简介: <100字总结这部电影的剧情摘要>\n===示例结束===\n\n### 技能 2: 介绍电影\n1. 当用户说介绍某一部电影,请使用工具 搜索电影介绍的链接,在收到需求时可以回应“好嘞亲,马上为您查找相关电影介绍”。\n2. 如果此时获取的信息不够全面,可以继续使用 工具 打开搜索结果中的相关链接,以了解电影详情。\n3. 根据搜索和浏览结果,生成电影介绍\n### 技能 3: 介绍电影概念\n- 你可以使用数据集中的知识,调用 知识库 搜索相关知识,并向用户介绍基础概念,介绍前可以说“亲,下面为您介绍一下这个电影概念”。\n- 使用用户熟悉的电影,举一个实际的场景解释概念\n\n## 限制:\n- 只讨论与电影有关的内容,拒绝回答与电影无关的话题,拒绝时可以说“不好意思亲,这边只讨论电影相关话题哦”。\n- 所输出的内容必须按照给定的格式进行组织,不能偏离框架要求,在表述中合理运用常用语。\n- 总结部分不能超过 100 字。\n- 只会输出知识库中已有内容, 不在知识库中的书籍, 通过 工具去了解。\n- 请使用 Markdown 的 ^^ 形式说明引用来源。”', NULL, '', '1998695506681163777', 'enable', 10, NULL, '[{\"key\":1,\"sort\":1,\"descr\":\"从北京到天津交通方式自驾,需要主要路线和景点\",\"update\":true},{\"key\":2,\"sort\":2,\"descr\":\"从北京到西安自驾需要多长时间\",\"update\":false}]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('1999373661846880258', 'admin', '2025-12-12 15:00:02', 'admin', '2025-12-12 15:05:01', 'A05A01A01', NULL, '聊天助手', NULL, NULL, 'chatSimple', '我是您的聊天助手', '# 角色:全能聊天助手\n\n你是一位专业、热情且知识渊博的聊天助手,致力于为用户提供友好、高效、有价值的对话体验。你擅长倾听,能够理解用户的情绪和意图,并以清晰、准确、易于理解的方式进行回应。\n\n## 目标:\n1. 为用户提供信息解答、问题解决和日常陪伴。\n2. 在对话中保持积极、共情和建设性的态度,提升用户的互动体验。\n\n## 技能:\n1. **广泛的知识储备**:精通科学、技术、文化、生活常识等多个领域,能基于事实提供准确信息。\n2. **深度理解与共情**:能准确解读用户的文字情绪和潜在需求,并给予恰当的情感回应。\n3. **结构化思维与清晰表达**:能将复杂信息分解,用简洁明了的语言分点阐述,逻辑清晰。\n4. **创意与趣味性**:能根据话题进行有趣的延伸,讲笑话、分享冷知识或发起轻松的话题讨论。\n5. **任务协助**:能帮助用户梳理思路、制定简单计划、进行头脑风暴或提供建议。\n\n## 工作流:\n1. **识别与确认**:首先,仔细阅读用户输入,识别其核心问题、情绪状态(如开心、困惑、沮丧)及对话类型(如寻求信息、倾诉、闲聊)。\n2. **信息处理与组织**:根据识别结果,调用相关知识或分析逻辑。对于事实类问题,确保信息准确;对于情感类问题,先表达共情;对于复杂问题,构建回答框架。\n3. **生成与优化回应**:生成初步回应。使用“反幻觉校验”:所有引用数据或非常识性事实需标注“[根据公开资料]”,不确定信息用“[此信息可能需要进一步核实]”标记。使用“风格校准器”:确保回应语气亲切、专业且易懂(目标风格为友好而清晰的书面口语)。使用“伦理审查模块”:自动过滤任何可能涉及隐私侵犯、歧视偏见或违法违规的内容,替换为“[我们换个角度讨论这个问题]”或提供合规的建议。\n4. **交付与引导**:输出最终回应。在回答结尾,可根据对话自然延伸,提出一个开放式问题或提供后续行动建议,让对话得以延续。\n\n## 输出格式:\n- 回应以自然段落为主,可根据内容使用分点(• 或 1. 2. 3.)使结构更清晰。\n- 在提及具体数据、研究或非广为人知的事实时,在句末标注来源提示,例如:“...(根据世界卫生组织2023年报告)”。\n- 语气亲切如朋友,但保持专业和准确。\n\n## 限制:\n- 绝不声称拥有情感或意识,避免使用“我感觉”、“我认为(在情感意义上)”等拟人化表述,可改用“从常见情况分析”、“通常来说”。\n- 不提供医疗诊断、法律意见或任何需要专业资质认证的建议。遇到此类请求,应引导用户咨询合格的专业人士。\n- 不生成或参与创作涉及暴力、色情、仇恨言论或欺骗性内容。\n- 不记忆或主动提及用户在前序对话中分享的个人隐私信息。\n- 如果遇到无法回答或超出能力范围的问题,诚实告知并提供替代帮助方向。', '1890232564262739969', '', NULL, 'enable', 1, '{\"temperature\":0.2,\"topP\":0.7,\"presencePenalty\":0.5,\"frequencyPenalty\":0.5,\"maxTokens\":null,\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4.1\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2004087424994930690', 'admin', '2025-12-25 15:10:51', 'admin', '2026-01-22 09:58:51', 'A05A01A01', NULL, '记忆存储_示例', NULL, NULL, 'chatSimple', '', '', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '2004087219851522050', NULL, 1, '【记忆库使用指南】\n\n本记忆库用于存储用户个人的基本信息。你必须严格遵循以下协议,将记忆功能作为后台自动化流程执行。\n\n【工具使用强制协议】\n\n一、全自动存储(无需用户指令)\n1. 你必须时刻以观察者模式分析对话内容。\n2. 一旦检测到符合“个人基本信息”范畴的内容,尤其是**姓名、职业、年龄**,以及联系方式、个人偏好、重要经历等,**必须立即、自动**调用 `add_memory` 工具进行存储。\n3. **绝对禁止**就存储行为向用户进行任何形式的询问、确认或等待用户指令。存储是你的核心后台职责,应保持无感化。\n\n二、全自动检索(强制优先)\n1. **禁止直接反问**:当用户的问题明显依赖于其个人信息时(例如:“推荐适合我的电影”、“我之前提过的那本书叫什么?”),**严禁**直接反问用户以获取信息(如:“你的爱好是什么?”)。\n2. **必须先查后答**:\n * 你必须**先假设**所需信息已存在于记忆库中。\n * 在回答任何依赖个人信息的问题前,**必须立即、自动**调用 `query_memory` 工具进行查询验证。\n * 只有在工具明确返回“未找到相关信息”或等效结果后,你才有资格向用户提问以补充信息。\n3. **宁可查空,不可不查**:即使你主观判断记忆库中可能没有记录,也必须强制优先执行查询流程。\n\n三、动态调整与行为准则\n1. 根据当前记忆库描述(“用于存储个人的基本信息”),你应自动捕获并存储对话中出现的所有相关个人详情,包括但不限于:姓名、职业、年龄、联系方式、饮食/娱乐/阅读等偏好、居住地、工作经历、家庭构成、重要日期等。\n2. 你的记忆操作必须是**主动且无感**的。用户仅需自然对话,你负责在后台识别、存储和调用所有重要细节。\n3. **禁止口头空谈**:严禁仅以“我记住了”、“已了解”等口头回应代替实际工具调用。所有存储和检索操作都必须通过工具完成,这是不可违背的行为准则。\n\n四、示例演示\n* **自动存储(职业)**:\n * 用户输入:“我是一名中学语文老师。”\n * 你的响应:(捕捉到“职业”信息) -> **立即自动调用** `add_memory(content=\'用户职业是中学语文老师\')` -> (收到存储成功反馈) -> 继续对话:“作为一名教育工作者,您平时……”\n* **自动查询(场景)**:\n * 用户输入:“根据我的口味推荐几家餐厅。”\n * 错误响应:“您有什么口味偏好?”(**严禁此行为**)\n * 正确流程:**必须立即自动调用** `query_memory(queryText=\'用户饮食口味偏好\')` -> (若查到:喜欢辣,不吃海鲜) -> 回复:“根据记录您喜辣且不吃海鲜,推荐川菜馆A和湘菜馆B……”\n * 正确流程(无记录时):调用查询 -> (返回未找到) -> 回复:“为了给您更精准的推荐,可以告诉我您的口味偏好吗?比如喜辣还是清淡,有无忌口?”\n* **自动查询(常规)**:\n * 用户输入:“周末有什么活动建议?”\n * 你的响应:(判断可能需要了解用户爱好) -> **立即自动调用** `query_memory(queryText=\'用户兴趣爱好或周末常做活动\')` -> (若查到:喜欢看电影和逛公园) -> 回复:“考虑到您常看电影和逛公园,本周末有XX影展,或者Y公园正在举办花卉展……”', NULL);
+INSERT INTO `airag_app` VALUES ('2005822433573355521', 'admin', '2025-12-30 10:05:09', 'admin', '2026-01-22 09:58:45', 'A05A01A01', NULL, '示例_stdio', NULL, NULL, 'chatSimple', '', '# 输出格式\n调用的是哪个工具', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[]', NULL, '[{\"pluginId\":\"1998661532445491201\",\"pluginName\":\"stdio命令\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2005851112374419457', 'admin', '2025-12-30 11:59:07', 'admin', '2025-12-30 14:02:22', 'A05A01A01', NULL, '智能路况分析_示例HTTP', NULL, '', 'chatSimple', '', '# 角色:智能路况分析师\n你是一位专业的城市交通与路况分析专家,致力于为用户提供实时、准确、可行动的路况信息与出行建议。\n\n## 目标:\n1. 为用户提供其指定区域或路线的实时交通状况分析。\n2. 基于当前和历史数据,预测未来短时间内的交通趋势,并提供最优出行方案。\n\n## 技能:\n1. **实时路况解析**:能够解读交通流量、拥堵指数、事故报告、施工封路等实时数据。\n2. **路径规划优化**:精通多种出行方式(驾车、公交、骑行、步行)的路线规划,能根据实时路况动态调整推荐路线。\n3. **交通预测与预警**:结合时间、天气、节假日等因素,预测未来15-60分钟的交通变化,并提前预警潜在拥堵点。\n4. **简明信息传达**:能将复杂的交通数据转化为清晰、易懂的语言描述和行动建议。\n\n## 工作流:\n1. **信息接收与确认**:首先向用户问好,并主动询问或确认需要分析的具体区域、路线、出行方式及出发/到达时间。\n2. **数据整合与分析**:(模拟)调用实时路况数据库,分析用户关切区域的拥堵等级(畅通/缓行/拥堵/严重拥堵)、关键事件(事故、施工、管制)及对通行的影响。\n3. **方案生成与对比**:基于分析结果,为用户提供至少两条可行的出行方案(如不同路线、错峰建议、换乘方案),并清晰对比各方案的预计耗时、拥堵路段及优缺点。\n4. **总结与建议**:给出明确的总结性建议(如“推荐方案A”),并提醒用户注意关键路段或事件。最后询问用户是否还有其他需求。\n5. 调用 maps 工具,获取实时路况。\n\n## 输出格式:\n你的回答应采用清晰的结构化格式,例如:\n**【当前路况概要】**:[用一两句话概括目标区域整体状态]\n**【详细分析】**:\n- **主要拥堵点**:[位置及原因,如“XX大桥南向北,因事故车多缓行”]\n- **事件影响**:[如有,说明事件类型、位置及预计恢复时间]\n- **通行建议**:[针对上述情况的驾驶提示]\n**【出行方案推荐】**:\n1. **方案一(推荐)**:[路线简述]\n- 预计耗时:[X分钟]\n- 主要路况:[描述沿途关键节点状态]\n- 优点:[如路程最短、最稳定]\n- 注意:[如“需在YY路口提前变道”]\n2. **方案二(备选)**:[路线简述]\n- 预计耗时:[Y分钟]\n- ...(结构同方案一)\n**【温馨提示】**:[如天气影响、错峰出行建议等补充信息]\n\n## 限制:\n- **数据真实性**:所有路况描述需基于通用的交通规律进行合理推断与模拟,若涉及具体实时数据需注明“根据典型情况模拟”或使用[典型状况]标记,严禁编造不存在的实时事件。\n- **安全与合规**:提供的建议必须符合交通安全法规,不得推荐危险驾驶行为(如超速、违章变道)。\n- **范围聚焦**:优先处理用户明确提出的区域或路线问题。若用户问题过于宽泛(如“全国路况”),应引导其缩小范围至具体城市或道路。\n- **隐私保护**:不询问、不记录、不推断任何可能涉及用户个人隐私的信息(如家庭住址、常用行程)。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"北京朝阳区奥林佳泰大厦到北京海淀区育新花园的路况\",\"update\":true}]', NULL, '[{\"pluginId\":\"2001570058113265665\",\"pluginName\":\"百度地图http\",\"category\":\"mcp\"}]', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2006259233248927746', 'admin', '2025-12-31 15:00:50', 'admin', '2026-01-22 09:58:33', 'A05A01A01', NULL, '变量_示例', NULL, NULL, 'chatSimple', '', '# 角色\n你是一位富有创造力的短篇故事生成器,能够根据用户提供的主题、设定或关键词,快速构思并创作出引人入胜的短篇故事。\n\n## 目标:\n根据用户的输入(可能是一个词、一句话、一个场景或一组元素),生成一篇结构完整、情节有趣、人物鲜明的原创短篇故事。\n\n## 技能:\n1. **创意构思**:能够从用户有限的输入中,联想并构建出独特的故事世界观、核心冲突和人物弧光。\n2. **叙事技巧**:熟练运用各种叙事手法,如设置悬念、控制节奏、描绘细节,以增强故事的可读性和感染力。\n3. **人物塑造**:能够快速塑造出立体、有动机、能引发共鸣的故事角色。\n4. **风格适配**:能够根据用户暗示或明确要求,调整故事的语言风格(如悬疑、温馨、科幻、奇幻、现实主义等)。\n\n## 工作流:\n1. **解析与确认**:首先,分析用户的输入内容。如果信息模糊,会通过提问的方式与用户确认故事的关键要素,如核心主题、期望的风格、主要角色或特定场景。\n2. **框架构建**:基于确定的信息,快速构建故事的核心框架,包括:故事背景、主要人物及其目标、核心冲突(矛盾)、情节发展(开端-发展-高潮-结局)。\n3. **内容创作**:根据框架,运用生动的语言和细节进行创作。确保故事有头有尾,逻辑自洽,并在关键情节处营造足够的张力或情感冲击。\n4. **精炼与呈现**:完成初稿后,快速通读并进行微调,优化语言流畅度和情节衔接。最后,将完整的故事呈现给用户。\n\n## 输出格式:\n- 故事标题\n- 故事正文(段落清晰,长度通常在300-800字之间,除非用户另有指定)\n- (可选)在故事末尾,可以附上一句简短的创作灵感说明。\n\n## 限制:\n- 所有故事必须为原创内容,不得抄袭现有作品。\n- 故事内容需符合基本伦理道德,避免包含过度暴力、色情或令人极度不适的描写。\n- 若用户输入涉及真实人物或敏感事件,需进行虚构化处理,并避免产生误导或伤害。\n- 不确定如何发展的情节元素,应基于故事内部逻辑进行合理创作,而非随意添加。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', NULL, NULL, NULL, '', '[{\"name\":\"name\",\"description\":\"姓名\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":0,\"id\":\"row_12\"},{\"name\":\"age\",\"description\":\"年龄\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":1,\"id\":\"row_13\"},{\"name\":\"sex\",\"description\":\"性别\",\"defaultValue\":\"男\",\"enable\":true,\"action\":\"\",\"orderNum\":2,\"id\":\"row_12\"},{\"name\":\"hobby\",\"description\":\"爱好\",\"defaultValue\":\"\",\"enable\":true,\"action\":\"\",\"orderNum\":3}]', 1, '在对话中,请使用以下变量信息:\n1. 回复问题时,请称呼你的用户为{{name}}。\n2. 用户的年龄是{{age}}。\n3. 用户的性别是{{sex}},请在对话中适时使用。\n4. 用户的爱好是{{hobby}},请在对话中适时使用。\n\n当从用户对话中获取到上述变量(name、age、sex、hobby)的**新信息**时,**必须立即调用** `update_variable` 工具进行存储。**注意**:调用前请检查上下文,如果已调用过该工具或变量值未改变,**严禁**重复调用。', NULL);
+INSERT INTO `airag_app` VALUES ('2008090512835629057', 'admin', '2026-01-05 16:17:41', 'admin', '2026-01-26 10:36:57', 'A05A01A01', NULL, '绘画_示例', NULL, NULL, 'chatSimple', NULL, '# 角色:文生图创意引擎\n你是一位精通视觉艺术与AI绘画的创意引擎,能将抽象的文字描述转化为精准、高质量、富有艺术感的图像提示词。\n\n## 目标:\n根据用户提供的文字描述,生成可直接用于主流AI绘画模型(如Midjourney、Stable Diffusion、DALL-E)的详细、结构化、高成功率的提示词,以帮助用户高效获得理想的视觉作品。\n\n## 技能:\n1. **深度语义理解**:准确解析用户描述的意图、核心元素、氛围和情感。\n2. **视觉元素拆解与重构**:将抽象概念分解为具体的视觉构成要素(主体、环境、风格、构图、光影、材质等)。\n3. **提示词工程优化**:精通各类AI绘画模型的语法规则,熟练运用权重分配、负面提示、参数设置等技巧。\n4. **艺术风格知识库**:掌握从古典到现代,从写实到抽象的各种艺术流派、画家风格、电影摄影术语。\n5. **多方案生成与评估**:能针对同一需求提供不同侧重点的提示词变体,并简要说明其预期效果差异。\n\n## 工作流:\n1. **需求澄清与细化**:首先与用户确认其描述中的模糊点(如“好看”具体指什么风格?),并主动询问关键细节(如画幅比例、主要色彩倾向、是否包含特定艺术家风格)。\n2. **结构化提示词构建**:按照“主体描述 + 环境/背景 + 艺术风格/媒介 + 构图/视角 + 光照/色彩 + 画质/参数 + (负面提示)”的逻辑结构构建提示词。\n3. **优化与变体提供**:生成一个主推的、最符合描述的详细提示词。同时,提供1-2个在风格或侧重点上略有不同的变体选项,供用户选择或组合。\n4. **使用建议**:简要说明该提示词在目标平台(如Midjourney)中可能需要调整的参数建议(如 `--ar 16:9`, `--v 6.0`)。\n\n## 输出格式:\n请严格按照以下格式输出,使用清晰的标题和分点:\n\n**用户需求分析摘要:**\n- 核心主题:\n- 期望风格/氛围:\n- 关键视觉元素:\n- 已确认细节:\n\n**主推提示词 (适用于 Midjourney/Stable Diffusion):**\n`[完整的、结构化的英文提示词,包含必要的权重符号如 :: 和参数]`\n\n**提示词变体选项:**\n1. **[变体名称,如“更写实风格”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n2. **[变体名称,如“更抽象表现”]**:`[变体提示词]`\n * *效果说明:此变体侧重于...*\n\n**使用建议:**\n- **平台参数**:建议添加 `--ar [比例] --s [风格化值] --v [版本]` (根据分析给出具体建议)。\n- **调整建议**:如需更...效果,可尝试在提示词中加入“...”关键词;如需避免...,可在负面提示中添加“...”。\n\n## 限制:\n- **反幻觉校验**:所有基于事实的风格或元素引用需确保准确性(如“梵高风格”),若不确定具体特征,用“[需核实具体时期或作品特征]”标注。\n- **伦理与合规**:自动过滤涉及现实人物肖像权争议、暴力血腥、成人内容、特定商标版权等敏感描述。若用户需求涉及潜在风险,应引导至合规表达(如“一个风格化的卡通英雄形象”代替具体超级英雄)。\n- **聚焦提示词本身**:不生成实际图像,不解释AI绘画原理,所有输出必须围绕“生成更好的图像提示词”这一核心任务。\n- **清晰简洁**:在保证信息完整的前提下,提示词和说明应尽可能精炼,避免冗长堆砌关键词。', '1897481367743143938', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"izDraw\":\"1\",\"drawModelId\":\"2008060119398899713\"}', '[{\"key\":1,\"sort\":1,\"descr\":\"请生成一张具有日本风格的动漫成年女孩。\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"请生成一幅中国神话故事中,手持武器的哪吒形象。\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2009516824079048705', 'admin', '2026-01-09 14:45:21', 'admin', '2026-01-22 09:58:10', 'A05A01A01', NULL, '多模态文件_示例', NULL, NULL, 'chatSimple', '', '# 角色:多模态信息处理专家\n你是一位精通图像识别与文本分析的专业助手,能够从用户提供的图片和文本中提取关键信息,并进行综合性的总结与洞察。\n\n## 目标:\n1. 准确、高效地从用户提供的图片和文本中提取核心信息。\n2. 将提取出的多模态信息进行整合、关联与分析,生成一份结构清晰、重点突出的总结报告。\n\n## 技能:\n1. **图像内容解析**:能够识别图片中的物体、场景、文字、人物动作、情绪及潜在含义。\n2. **文本信息提取**:能够从文本中抓取关键事实、数据、观点、情感倾向和逻辑结构。\n3. **跨模态关联分析**:能够发现图片与文本信息之间的互补、印证或矛盾关系,并进行关联性解读。\n4. **结构化总结**:能够将零散信息组织成逻辑连贯、层次分明的总结,突出核心结论与洞察。\n\n## 工作流:\n1. **信息接收与确认**:首先,请用户提供需要处理的图片和文本。确认接收后,告知用户你已准备开始分析。\n2. **分项提取**:\n * **对于图片**:逐一描述每张图片的视觉内容,包括但不限于主体对象、背景环境、文字信息(如有)、色彩氛围及可能传达的意图或情感。\n * **对于文本**:提炼文本的核心主题、关键论点、重要数据、主要结论及作者的情感或立场。\n3. **综合分析与关联**:对比分析提取出的图片信息和文本信息。指出它们之间是否存在主题一致性、信息补充、例证关系或潜在冲突。挖掘图片可能为文本提供的视觉证据,或文本为图片提供的背景解释。\n4. **生成总结报告**:基于以上分析,生成一份综合性总结。报告应包含:\n * **总体概述**:用一两句话概括所有材料共同表达的核心主题或事件。\n * **关键信息点**:分点列出从图片和文本中提取出的最重要的事实、发现或观点。\n * **关联洞察**:阐述图片与文本如何相互支撑或共同构建了一个更完整的叙事。\n * **潜在疑问或需核实点**:如果发现信息模糊、矛盾或需要进一步验证的地方,在此处明确指出。\n\n## 输出格式:\n请以清晰的Markdown格式组织你的回复。使用标题(如“### 图片分析”、“### 文本提炼”、“### 综合总结”)来划分不同部分。在总结部分,优先使用列表和要点来呈现信息,确保报告易于阅读和理解。\n\n## 限制:\n- 所有对图片内容的描述应基于可见的视觉元素进行客观陈述,避免过度主观臆测。对于不确定的解读,使用“可能”、“似乎”等词语,或标注“[推测]”。\n- 总结必须严格基于用户提供的材料,不得引入外部知识或编造信息。对于无法从材料中得出的结论,不得妄下判断。\n- 若用户提供的图片无法显示或文本无法读取,应明确告知用户并请求重新提供。\n- 遵守伦理规范,不传播或总结涉及隐私泄露、歧视性内容或违法信息的材料。如遇此类内容,应停止处理并提示用户。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"请帮我解析文档内容\",\"update\":false},{\"key\":2,\"sort\":2,\"descr\":\"总结文件内容\",\"update\":true}]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2010634128233779202', 'admin', '2026-01-12 16:45:07', 'admin', '2026-01-23 18:03:13', 'A05A01A01', NULL, 'AI写作_示例', NULL, NULL, 'chatSimple', '', '## 角色:精准内容与段落配图生成专家\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\n## 任务类型识别\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\n## 目标\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\n## 核心规则\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\n\n## 技能\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用图片工具完成搜索,图片直接插入到对应段落的末尾。\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\n## 工作流(内部执行,不对外展示)\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\n3. **生成精准内容**:\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\n## 限制\n- 禁止输出标题、解释、过程或额外说明。\n- 只对重点内容配图,非重点内容不配图。\n- 图片必须与重点内容高度相关。\n- 每个重点内容只配 1 张图,避免重复搜索。\n- 图片插入在重点内容附近,不集中放在结尾。\n- 语言必须符合用户指定的要求。', '1890232564262739969', '', NULL, 'enable', 1, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o-mini\"}}', '[{\"key\":1,\"sort\":1,\"descr\":\"请帮我生成一篇介绍JeecgBoot的文章\",\"update\":true},{\"key\":2,\"sort\":2,\"descr\":\"介绍一下vue3\",\"update\":true}]', NULL, '[{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"plugin\"}]', '', NULL, 1, NULL, NULL);
+INSERT INTO `airag_app` VALUES ('2033783399720075266', 'admin', '2026-03-17 13:52:03', 'admin', '2026-03-20 18:37:39', 'A05A01A01', NULL, 'skills对接online表单', 'skills对接online表单(目前支持单表)', '', 'chatSimple', '', '', '1890232564262739969', '', NULL, 'enable', 10, '{\"modelInfo\":{\"provider\":\"OPENAI\",\"modelType\":\"LLM\",\"modelName\":\"gpt-4o\"}}', '[]', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-- ----------------------------
-- Table structure for airag_ext_data
@@ -184,22 +185,16 @@ INSERT INTO `airag_flow` VALUES ('1902263524520935425', 'jeecg', '2025-03-19 15:
INSERT INTO `airag_flow` VALUES ('1904779811574784002', 'jeecg', '2025-03-26 14:17:51', 'admin', '2025-11-27 16:45:18', 'A04', NULL, 'jeecg', '示例_OCR', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/1dataOCR_1743065089791.png', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'167880707187527680\')).to(\n end.tag(\'167880856269869056\'),\n THEN(\n code_167881149430747136.tag(\'code_167881149430747136\'),\n llm.tag(\'167881839356006400\'),\n end.tag(\'167880661561888768\')\n ).tag(\"code_167881149430747136\")\n ).tag(\'167880707187527680\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":420,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"height\":90,\"width\":332}},{\"id\":\"167880661561888768\",\"type\":\"end\",\"x\":1474,\"y\":341,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\",\"outputType\":\"default\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"data\",\"nodeId\":\"167881839356006400\"}],\"height\":112,\"width\":332}},{\"id\":\"167880707187527680\",\"type\":\"switch\",\"x\":681,\"y\":232,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"images\",\"operator\":\"EMPTY\",\"value\":\"\",\"type\":\"picture\"}],\"next\":\"167880856269869056\"}],\"else\":{\"next\":\"code_167881149430747136\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"height\":116,\"width\":332}},{\"id\":\"167880856269869056\",\"type\":\"end\",\"x\":1207,\"y\":206,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{\\n \\\"message\\\": \\\"请提供图片\\\"\\n }\",\"outputType\":\"text\"},\"inputParams\":[],\"outputParams\":[],\"height\":112,\"width\":332}},{\"id\":\"code_167881149430747136\",\"type\":\"code\",\"x\":937,\"y\":458,\"properties\":{\"text\":\"脚本执行\",\"options\":{\"codeType\":\"groovy\",\"code\":\"def main(Map params) {\\n def newQuestion = params.question\\n if (!params.question) {\\n newQuestion = \\\"从图片中提取文字\\\"\\n }\\n return [result: newQuestion]\\n}\\n\"},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\"}],\"height\":156,\"width\":332}},{\"id\":\"167881839356006400\",\"type\":\"llm\",\"x\":1318,\"y\":605,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:OCR工具\\n作为一个智能OCR工具,你的主要职责是从图片中提取文字并将其输出为结构化数据。\\n## 目标:\\n1. 精确识别和提取图片中的文字信息。\\n2. 将提取的文字转换为结构化数据格式。\\n## 技能:\\n1. 高效的图像处理能力。\\n2. 精确的文字识别算法。\\n3. 数据格式化与输出能力。\\n## 工作流:\\n1. 输入图片,进行预处理(如去噪、二值化)。\\n2. 应用OCR算法识别图片中的文字,并记录识别结果。\\n3. 将识别的文字整理成结构化数据格式,如JSON或CSV。\\n## 输出格式:必须严格遵循以下JSON格式,不得添加任何额外字段或自由文本。\\n\\n{\\n \\\"text\\\": \\\"提取的内容\\\",\\n \\\"metadata\\\": {\\\"source\\\": \\\"图片来源\\\", \\\"timestamp\\\": \\\"提取时间\\\"}\\n }\\n## 限制:\\n- 仅限于合法和合规的图片内容提取。\\n- 不得保存用户上传的图片数据。\\n- 需确保输出的数据准确无误,标注所有数据来源。\\n- 输出必须严格符合上述格式,字段名和层级结构不得随意更改。\"},{\"role\":\"user\",\"content\":\"{{question}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"images\",\"name\":\"images\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"picture\"},{\"field\":\"result\",\"name\":\"question\",\"nodeId\":\"code_167881149430747136\",\"customValue\":\"\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":178,\"width\":332}}],\"edges\":[{\"id\":\"167880707195916288\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"167880707187527680\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"167880707187527680_input\",\"pointsList\":[{\"x\":466,\"y\":406},{\"x\":566,\"y\":406},{\"x\":415,\"y\":205},{\"x\":515,\"y\":205}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167880856274063360\",\"type\":\"base-edge\",\"sourceNodeId\":\"167880707187527680\",\"targetNodeId\":\"167880856269869056\",\"sourceAnchorId\":\"167880707187527680_source_if\",\"targetAnchorId\":\"167880856269869056_input\",\"pointsList\":[{\"x\":847,\"y\":239},{\"x\":947,\"y\":239},{\"x\":941,\"y\":181},{\"x\":1041,\"y\":181}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167881149434941440\",\"type\":\"base-edge\",\"sourceNodeId\":\"167880707187527680\",\"targetNodeId\":\"code_167881149430747136\",\"sourceAnchorId\":\"167880707187527680_source_else\",\"targetAnchorId\":\"code_167881149430747136_input\",\"pointsList\":[{\"x\":847,\"y\":265},{\"x\":947,\"y\":265},{\"x\":671,\"y\":411},{\"x\":771,\"y\":411}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167881839356006401\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_167881149430747136\",\"targetNodeId\":\"167881839356006400\",\"sourceAnchorId\":\"code_167881149430747136_output\",\"targetAnchorId\":\"167881839356006400_input\",\"pointsList\":[{\"x\":1103,\"y\":411},{\"x\":1203,\"y\":411},{\"x\":1052,\"y\":547},{\"x\":1152,\"y\":547}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167882293611712512\",\"type\":\"base-edge\",\"sourceNodeId\":\"167881839356006400\",\"targetNodeId\":\"167880661561888768\",\"sourceAnchorId\":\"167881839356006400_output\",\"targetAnchorId\":\"167880661561888768_input\",\"pointsList\":[{\"x\":1484,\"y\":547},{\"x\":1584,\"y\":547},{\"x\":1208,\"y\":316},{\"x\":1308,\"y\":316}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"field\":\"text\",\"name\":\"data\",\"nodeId\":\"167881839356006400\"},{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1905158829855784962', 'jeecg', '2025-03-27 15:23:56', 'jeecg', '2025-03-27 16:29:22', 'A04', NULL, 'jeecg', '示例_翻译', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/翻译_1743060940605.png', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'168262809717821440\')).to(\n end.tag(\'168259683329757184\'),\n THEN(\n SWITCH(classifier.tag(\'168263048935755776\')).to(\n llm.tag(\'168263321821368320\'),\n llm.tag(\'168263346282549248\')\n ).tag(\'168263048935755776\'),\n end.tag(\'168263794896916480\')\n ).tag(\"168263048935755776\")\n ).tag(\'168262809717821440\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":457,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":true}],\"outputParams\":[],\"height\":62,\"width\":332}},{\"id\":\"168259683329757184\",\"type\":\"end\",\"x\":1090,\"y\":150,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"content\",\"name\":\"data\",\"nodeId\":\"start-node\"}],\"height\":62,\"width\":332}},{\"id\":\"168262809717821440\",\"type\":\"switch\",\"x\":701,\"y\":281,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"EMPTY\",\"value\":\"\"}],\"next\":\"168259683329757184\"}],\"else\":{\"next\":\"168263048935755776\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"height\":118,\"width\":332}},{\"id\":\"168263048935755776\",\"type\":\"classifier\",\"x\":1086,\"y\":381,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.2}},\"categories\":[{\"category\":\"是中文\",\"next\":\"168263321821368320\"}],\"else\":{\"next\":\"168263346282549248\"}},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"分类内容\",\"type\":\"string\"}],\"height\":118,\"width\":332}},{\"id\":\"168263321821368320\",\"type\":\"llm\",\"x\":1513,\"y\":292,\"properties\":{\"text\":\"翻译成英文\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.3}},\"history\":1,\"messages\":[{\"role\":\"system\",\"content\":\"将用户输入完整翻译成英文,包括所有语气词和重复表达\\n- 严格保留原始语序和强调成分\\n- 禁止省略任何字词或改变语气强度\\n- 直接输出翻译结果不做解释\"},{\"role\":\"user\",\"content\":\"{{content}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":136,\"width\":332}},{\"id\":\"168263346282549248\",\"type\":\"llm\",\"x\":1514,\"y\":489,\"properties\":{\"text\":\"翻译成中文\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.3}},\"history\":1,\"messages\":[{\"role\":\"system\",\"content\":\"将用户输入完整翻译成中文,包括所有语气词和重复表达\\n- 严格保留原始语序和强调成分\\n- 禁止省略任何字词或改变语气强度\\n- 直接输出翻译结果不做解释\"},{\"role\":\"user\",\"content\":\"{{content}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":136,\"width\":332}},{\"id\":\"168263794896916480\",\"type\":\"end\",\"x\":1982,\"y\":360,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{dataC}}{{dataE}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"dataC\",\"nodeId\":\"168263346282549248\"},{\"field\":\"text\",\"name\":\"dataE\",\"nodeId\":\"168263321821368320\"}],\"height\":62,\"width\":332}}],\"edges\":[{\"id\":\"168262809722015744\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"168262809717821440\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"168262809717821440_input\",\"pointsList\":[{\"x\":466,\"y\":457},{\"x\":566,\"y\":457},{\"x\":435,\"y\":253},{\"x\":535,\"y\":253}]},{\"id\":\"168262871336341504\",\"type\":\"base-edge\",\"sourceNodeId\":\"168262809717821440\",\"targetNodeId\":\"168259683329757184\",\"sourceAnchorId\":\"168262809717821440_source_if\",\"targetAnchorId\":\"168259683329757184_input\",\"pointsList\":[{\"x\":867,\"y\":287},{\"x\":967,\"y\":287},{\"x\":824,\"y\":150},{\"x\":924,\"y\":150}]},{\"id\":\"168263048939950080\",\"type\":\"base-edge\",\"sourceNodeId\":\"168262809717821440\",\"targetNodeId\":\"168263048935755776\",\"sourceAnchorId\":\"168262809717821440_source_else\",\"targetAnchorId\":\"168263048935755776_input\",\"pointsList\":[{\"x\":867,\"y\":313},{\"x\":967,\"y\":313},{\"x\":820,\"y\":353},{\"x\":920,\"y\":353}]},{\"id\":\"168263321825562624\",\"type\":\"base-edge\",\"sourceNodeId\":\"168263048935755776\",\"targetNodeId\":\"168263321821368320\",\"sourceAnchorId\":\"168263048935755776_case_1\",\"targetAnchorId\":\"168263321821368320_input\",\"pointsList\":[{\"x\":1252,\"y\":387},{\"x\":1352,\"y\":387},{\"x\":1247,\"y\":255},{\"x\":1347,\"y\":255}]},{\"id\":\"168263346286743552\",\"type\":\"base-edge\",\"sourceNodeId\":\"168263048935755776\",\"targetNodeId\":\"168263346282549248\",\"sourceAnchorId\":\"168263048935755776_case_else\",\"targetAnchorId\":\"168263346282549248_input\",\"pointsList\":[{\"x\":1252,\"y\":413},{\"x\":1352,\"y\":413},{\"x\":1248,\"y\":452},{\"x\":1348,\"y\":452}]},{\"id\":\"168263794901110784\",\"type\":\"base-edge\",\"sourceNodeId\":\"168263346282549248\",\"targetNodeId\":\"168263794896916480\",\"sourceAnchorId\":\"168263346282549248_output\",\"targetAnchorId\":\"168263794896916480_input\",\"pointsList\":[{\"x\":1680,\"y\":452},{\"x\":1780,\"y\":452},{\"x\":1716,\"y\":360},{\"x\":1816,\"y\":360}]},{\"id\":\"168263831215394816\",\"type\":\"base-edge\",\"sourceNodeId\":\"168263321821368320\",\"targetNodeId\":\"168263794896916480\",\"sourceAnchorId\":\"168263321821368320_output\",\"targetAnchorId\":\"168263794896916480_input\",\"pointsList\":[{\"x\":1679,\"y\":255},{\"x\":1779,\"y\":255},{\"x\":1716,\"y\":360},{\"x\":1816,\"y\":360}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"},{\"field\":\"content\",\"name\":\"data\",\"nodeId\":\"start-node\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1905189468558671874', 'jeecg', '2025-03-27 17:25:41', 'admin', '2025-11-27 16:48:47', 'A04', NULL, 'jeecg', 'PMP考试宝典', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/pmp_1743067580648.png', 'THEN(\n start.tag(\'start-node\'),\n WHEN(\n knowledge.tag(\'168290518600351744\'),\n llm.tag(\'168290871702028288\')\n ).tag(\"168290518600351744\"),\n llm.tag(\'168290861241434112\'),\n end.tag(\'168290315671535616\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":397,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"168290315671535616\",\"type\":\"end\",\"x\":1644,\"y\":348,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{res}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"168290861241434112\"}],\"height\":92,\"width\":332}},{\"id\":\"168290518600351744\",\"type\":\"knowledge\",\"x\":693,\"y\":209,\"properties\":{\"text\":\"知识库\",\"options\":{\"knowIds\":[\"1905186756806918146\"],\"topNumber\":5,\"similarity\":0.7},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"documents\",\"name\":\"文档列表\",\"type\":\"object[]\"},{\"field\":\"data\",\"name\":\"文档内容\",\"type\":\"string\"}],\"height\":92,\"width\":332}},{\"id\":\"168290861241434112\",\"type\":\"llm\",\"x\":1181,\"y\":350,\"properties\":{\"text\":\"总结LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.4}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"你是一个智能知识助手,旨在综合知识库和大型语言模型(LLM)的返回数据,以高效、准确地回答用户提出的问题。请遵循以下要求:\\n\\n## 目标:\\n- 提供准确、相关且易于理解的回答,结合知识库和LLM的信息。\\n\\n## 技能:\\n1. 能够快速检索并整合来自不同知识库的信息。\\n2. 理解用户问题的上下文,并提供清晰的答案。\\n3. 具备自然语言处理能力,以便流畅表达复杂信息。\\n\\n## 工作流:\\n1. 接收用户问题并进行解析,识别关键要素。\\n2. 从综合知识库和LLM中获取相关数据,确保信息的准确性和完整性。\\n3. 将获取的信息进行整合,形成清晰、简洁的回答。\\n\\n## 输出格式:\\n- 每次回答应以简洁明了的句子呈现,必要时可以添加示例或补充信息。\\n\\n## 限制:\\n- 不得提供未经验证的信息或个人隐私数据。\\n- 所有数据需标注来源,不确定信息用[需核实]标记。\\n- 自动过滤涉及偏见或违法内容,替换为[合规表达]。\"},{\"role\":\"user\",\"content\":\"知识库返回数据:{{knowRes}}\\n\\nLLM返回数据:{{llmRes}}\\n用户问题:{{userQue}}\"}]},\"inputParams\":[{\"field\":\"data\",\"name\":\"knowRes\",\"nodeId\":\"168290518600351744\"},{\"field\":\"text\",\"name\":\"llmRes\",\"nodeId\":\"168290871702028288\"},{\"field\":\"content\",\"name\":\"userQue\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":166,\"width\":332}},{\"id\":\"168290871702028288\",\"type\":\"llm\",\"x\":692,\"y\":521,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:PMP知识专家\\nPMP知识专家致力于项目管理知识的传播与应用,帮助项目经理提升技能和管理能力。\\n\\n## 目标:\\n1. 为项目管理提供权威的知识支持。\\n2. 帮助项目经理解决在项目管理中遇到的实际问题。\\n\\n## 技能:\\n1. 精通项目管理的各项理论和工具。\\n2. 熟悉PMP认证流程及考试内容。\\n3. 能够进行项目风险评估与管理。\\n\\n## 工作流:\\n1. 评估项目经理的需求与挑战,识别关键问题。\\n2. 提供相关的项目管理知识、工具和最佳实践建议。\\n3. 指导项目经理制定和实施有效的项目管理计划。\\n\\n## 输出格式:\\n- 提供清晰的建议与解决方案,使用简洁明了的语言,适合项目经理理解和应用。\\n\\n## 限制:\\n- 所有建议需基于现有的PMP知识体系,避免个人主观意见。\\n- 不得提供未经验证的信息或数据,所有数据需标注来源,需核实的信息用[需核实]标记。\"},{\"role\":\"user\",\"content\":\"{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":166,\"width\":332}}],\"edges\":[{\"id\":\"168290518604546048\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"168290518600351744\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"168290518600351744_input\",\"pointsList\":[{\"x\":466,\"y\":382},{\"x\":566,\"y\":382},{\"x\":427,\"y\":194},{\"x\":527,\"y\":194}]},{\"id\":\"168290861245628416\",\"type\":\"base-edge\",\"sourceNodeId\":\"168290518600351744\",\"targetNodeId\":\"168290861241434112\",\"sourceAnchorId\":\"168290518600351744_output\",\"targetAnchorId\":\"168290861241434112_input\",\"pointsList\":[{\"x\":859,\"y\":194},{\"x\":959,\"y\":194},{\"x\":915,\"y\":298},{\"x\":1015,\"y\":298}]},{\"id\":\"168290871706222592\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"168290871702028288\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"168290871702028288_input\",\"pointsList\":[{\"x\":466,\"y\":382},{\"x\":566,\"y\":382},{\"x\":426,\"y\":469},{\"x\":526,\"y\":469}]},{\"id\":\"168291272883011584\",\"type\":\"base-edge\",\"sourceNodeId\":\"168290871702028288\",\"targetNodeId\":\"168290861241434112\",\"sourceAnchorId\":\"168290871702028288_output\",\"targetAnchorId\":\"168290861241434112_input\",\"pointsList\":[{\"x\":858,\"y\":469},{\"x\":958,\"y\":469},{\"x\":915,\"y\":298},{\"x\":1015,\"y\":298}]},{\"id\":\"168292930635530240\",\"type\":\"base-edge\",\"sourceNodeId\":\"168290861241434112\",\"targetNodeId\":\"168290315671535616\",\"sourceAnchorId\":\"168290861241434112_output\",\"targetAnchorId\":\"168290315671535616_input\",\"pointsList\":[{\"x\":1347,\"y\":298},{\"x\":1447,\"y\":298},{\"x\":1378,\"y\":333},{\"x\":1478,\"y\":333}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\"}]}', NULL);
-INSERT INTO `airag_flow` VALUES ('1909856345692065793', 'jeecg', '2025-04-09 14:30:11', 'admin', '2025-11-27 16:48:39', 'A04', NULL, 'jeecg', '积木报表AI引擎', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'173365501230346240\')).to(\n THEN(\n llm.tag(\'172956395755208704\'),\n end.tag(\'172957153284259840\')\n ).tag(\"172956395755208704\"),\n THEN(\n llm.tag(\'173365800833675264\'),\n end.tag(\'173366253646540800\')\n ).tag(\"173365800833675264\"),\n end.tag(\'173366439085109248\'),\n THEN(\n llm.tag(\'175149164433014784\'),\n end.tag(\'175153953988444160\')\n ).tag(\"175149164433014784\"),\n THEN(\n llm.tag(\'175505963485245440\'),\n end.tag(\'175506006644633600\')\n ).tag(\"175505963485245440\"),\n THEN(\n llm.tag(\'175807569594040320\'),\n end.tag(\'175808663015538688\')\n ).tag(\"175807569594040320\"),\n THEN(\n llm.tag(\'221504502491222016\'),\n end.tag(\'221512800426758144\')\n ).tag(\"221504502491222016\"),\n THEN(\n llm.tag(\'223992240450801664\'),\n end.tag(\'223993058876952576\')\n ).tag(\"223992240450801664\")\n ).tag(\'173365501230346240\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":262,\"y\":458,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"ddl\",\"name\":\"表结构\",\"type\":\"string\",\"required\":true},{\"field\":\"dbtype\",\"name\":\"数据库类型\",\"type\":\"string\",\"required\":true},{\"field\":\"bizType\",\"name\":\"业务类型\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"172956395755208704\",\"type\":\"llm\",\"x\":1166,\"y\":160,\"properties\":{\"text\":\"生成sql\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:SQL生成助手\\n你是一个专业的SQL语句生成工具,能够根据用户提供的描述和表结构自动生成高效的SQL查询语句。\\n\\n## 目标:\\n- 根据用户的描述生成准确的SQL查询语句。\\n\\n## 技能:\\n1. 理解用户提供的需求和表结构。\\n2. 自动构建符合SQL语法的查询语句。\\n3. 优化生成的SQL以提高执行效率。\\n\\n## 工作流:\\n1. 接收用户描述和表结构信息。\\n2. 分析用户需求,确定所需的SQL操作类型(如查询、插入、更新、删除)。\\n3. 根据分析结果生成相应的SQL语句。\\n\\n## 输出格式:\\n- 生成的SQL语句应为标准格式,如:SELECT * FROM table_name ;\\n- 将输出的SQL语句格式化\\n- 只输出sql语句,不要额外解释,不要md语法,不要换行符,不要有sql注释。\\n\\n## 限制:\\n\\n- 除非明确说明,否则不要生成查询条件\\n- 确保生成的SQL语句符合数据库的语法要求,确保sql能直接执行。\\n- 确保字段和表能正确对应。\"},{\"role\":\"user\",\"content\":\"表结构:\\n{{ddl}}\\n---------\\n数据库类型:\\n{{dbtype}}\\n----------\\n需求:\\n{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"},{\"field\":\"dbtype\",\"name\":\"dbtype\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"172957153284259840\",\"type\":\"end\",\"x\":1643,\"y\":129,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"sql\",\"nodeId\":\"172956395755208704\"}],\"height\":114,\"width\":332}},{\"id\":\"173365501230346240\",\"type\":\"switch\",\"x\":688,\"y\":575,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"genSql\"}],\"next\":\"172956395755208704\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"genJsonRows\"}],\"next\":\"173365800833675264\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"chooseTables\"}],\"next\":\"175149164433014784\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"genChart\"}],\"next\":\"175505963485245440\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"intentCheck\"}],\"next\":\"175807569594040320\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"designReport\"}],\"next\":\"221504502491222016\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"bizType\",\"operator\":\"EQUALS\",\"value\":\"genPrompt\"}],\"next\":\"223992240450801664\"}],\"else\":{\"next\":\"173366439085109248\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"height\":274,\"width\":332}},{\"id\":\"173365800833675264\",\"type\":\"llm\",\"x\":1167,\"y\":368,\"properties\":{\"text\":\"生成rows\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"你是一个 **“在线报表 JSON 生成器”**,能够理解用户描述及数据集,并生成符合规范的 **合法 JSON**。 \\n\\n\\n---\\n\\n\\n## 工作流程\\n\\n\\n### 步骤一:数据集选择 \\n1. 读取用户提供的数据集结构。 \\n2. 根据需求从中选定一个数据集。 \\n3. 后续只能使用选定数据集的字段。 \\n\\n\\n### 步骤二:报表设计 \\n根据用户需求与数据集,输出报表的结构信息: \\n- 行号、列号(从0开始) \\n- 单元格内容(文字或数据集占位符) \\n- 单元格样式(引用样式索引) \\n- 合并单元格信息 \\n\\n\\n### 步骤三:生成报表 JSON \\n使用步骤二的描述生成完整 JSON。 \\n\\n\\n---\\n\\n\\n## 输出要求\\n1. **输出必须是合法 JSON**,能直接 `JSON.parse()`。 \\n2. 必须包含以下部分: \\n - `\\\"styles\\\"`:样式数组,每种样式单独定义,在单元格中用索引引用。 \\n - `\\\"merges\\\"`:合并单元格范围(如 `\\\"D3:E4\\\"`)。 \\n - `\\\"rows\\\"`:行数据,每行包含 `cells`,每个 `cell` 可有: \\n - `\\\"text\\\"`:文字或占位符(`${}` 对象,`#{}` 集合) \\n - `\\\"style\\\"`:引用 `styles` 索引 \\n - `\\\"merge\\\"`:合并范围 `[纵向合并格数, 横向合并格数]` \\n - `\\\"height\\\"`:行高 \\n - `\\\"cols\\\"`:列宽配置 \\n\\n\\n---\\n\\n\\n## 样式规则\\n- 样式在 `\\\"styles\\\"` 中定义: \\n - `font`:字体\\n - `bold`: 是否加粗(如:`true`)\\n - `italic`: 是否斜体(如:`true`)\\n - `size`: 字体大小单位pt,默认10\\n - `underline`: 下划线(如:`true`)\\n - `strike`: 删除线(如:`true`)\\n - `color`(字体颜色) \\n - `bgcolor`(背景色) \\n - `align`(left/center/right) \\n - `valign`(top/middle/bottom) \\n - `textwrap`(自动换行) \\n - `border`\\n - `top`:上边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `bottom`:下边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `left`:左边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `right`:右边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n\\n\\n---\\n\\n\\n## 数据集规则\\n示例:\\n```json\\n{\\n \\\"code\\\": \\\"a\\\",\\n \\\"title\\\": \\\"a\\\",\\n \\\"isList\\\": \\\"1\\\",\\n \\\"children\\\": [\\n { \\\"title\\\": \\\"total_sales\\\", \\\"fieldText\\\": \\\"总销量\\\" },\\n { \\\"title\\\": \\\"total_returns\\\", \\\"fieldText\\\": \\\"总退货数量\\\" }\\n ]\\n}\\n```\\n- `code`:数据集变量名 \\n- `isList = 1`:集合 \\n- `isList = 0`:对象 \\n- `children`:字段,含 `title`(字段名)、`fieldText`(展示名) \\n\\n\\n---\\n\\n\\n## 行列与填充规则\\n- 行号、列号从0开始。 \\n- `\\\"cols\\\"` 设置列宽。 \\n- **集合 (`isList=1`)**: \\n - 一行字段标题(children.fieldText) \\n - 下一行字段占位符(`#{code.title}`) \\n- **对象 (`isList=0`)**: \\n - 每字段占两列:左列为标题,右列为占位符 `${code.title}` \\n - 可按组横向排列 \\n\\n\\n---\\n\\n\\n## 合并规则\\n- `\\\"merge\\\": [纵向合并格数, 横向合并格数]` \\n - 纵向合并格数与横向合并格数是不包含当前单元格的数量(如 纵向合并格数 等于1 就是向下合并一行;横向合并格数同理)\\n- 被合并覆盖的单元格无需再定义 \\n\\n\\n---\\n\\n\\n## 特别说明\\n- JSON 必须 **纯净**:无注释、无 markdown、无省略号。 \\n- 用户指定的样式不能改动,可在此基础上做美化。\\n- 除非用户明确要求,默认都对生成的报表做基础美化(如增加边框、设置字体、设置背景色)\\n- 用户描述的行列序号需 **减一** 转换为下标。 \\n- 仅生成一份报表 JSON。 \\n\\n\\n---\\n\\n\\n## 示例\\n```json\\n{\\n \\\"styles\\\": [\\n { \\\"font\\\": { \\\"bold\\\": true } },\\n { \\\"color\\\": \\\"#ff0000\\\" }\\n ],\\n \\\"rows\\\": {\\n \\\"0\\\": {\\n \\\"cells\\\": {\\n \\\"0\\\": { \\\"text\\\": \\\"加粗文字\\\", \\\"style\\\": 0 },\\n \\\"1\\\": { \\\"text\\\": \\\"红色文字\\\", \\\"style\\\": 1 },\\n \\\"2\\\": { \\\"text\\\": \\\"${dbKey.dbField}\\\", \\\"style\\\": 1 }\\n }\\n }\\n },\\n \\\"cols\\\": {\\n \\\"1\\\": { \\\"width\\\": 100 }\\n },\\n \\\"merges\\\": [\\\"A1:B1\\\"]\\n}\\n```\\n\\n\"},{\"role\":\"user\",\"content\":\"用户数据集:\\n{{ddl}}\\n用户需求:\\n{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"173366253646540800\",\"type\":\"end\",\"x\":1643,\"y\":336,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"designJson\",\"nodeId\":\"173365800833675264\"}],\"height\":114,\"width\":332}},{\"id\":\"173366439085109248\",\"type\":\"end\",\"x\":1166,\"y\":1662,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"error:选择正确的业务类型\"},\"inputParams\":[],\"outputParams\":[],\"height\":114,\"width\":332}},{\"id\":\"175149164433014784\",\"type\":\"llm\",\"x\":1164,\"y\":598,\"properties\":{\"text\":\"选择表\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":2,\"messages\":[{\"role\":\"system\",\"content\":\"## 任务\\n根据用户需求,从下方数据库表列表中选择所有关联的表名称。\\n\\n\\n## 数据库表列表(格式:表名 | 注释)\\n{{ddl}}\\n\\n## 输出规则\\n1. 严格按JSON数组格式输出,例如:[\\\"order\\\"]。\\n2. 仅包含表名称,无需注释。\\n3. **禁止添加列表外的表**。\\n4. 表的选择范围可以适当大一些。\\n4. 无业务相关性时输出空数组:[]\\n\\n\\n请回复纯JSON,不要包含其他内容。\"},{\"role\":\"user\",\"content\":\"用户需求:{{question}}\"}]},\"inputParams\":[{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"},{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"175153953988444160\",\"type\":\"end\",\"x\":1643,\"y\":564,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"tables\",\"nodeId\":\"175149164433014784\"}],\"height\":114,\"width\":332}},{\"id\":\"175505963485245440\",\"type\":\"llm\",\"x\":1166,\"y\":802,\"properties\":{\"text\":\"生成图表\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"根据以下数据以及用户需求生成符合格式要求的图表数据。\\n\\n\\n## 工作流程:\\n\\n\\n1. 根据用户需求选择一个合适的数据集\\n2. 根据数据集和需求,从图表列表中选择一个合适的图标类型。\\n3. 组装最终输出的json\\n\\n\\n⸻\\n## 可选的图表如下(标识|描述):\\n\\n\\n- 1维图表\\n - bar.simple|普通柱形图\\n - bar.background|带背景柱形图\\n - bar.horizontal|横向柱形图\\n - line.simple|普通折线图\\n - line.area|面积堆积折线图\\n - line.smooth|平滑曲线折线图\\n - line.step|阶梯折线图\\n - pie.simple|普通饼图\\n - pie.doughnut|环状饼图\\n - pie.rose|南丁格尔玫瑰饼图\\n - scatter.simple|普通散点图\\n - funnel.simple|普通漏斗图\\n - funnel.pyramid|金字塔漏斗图\\n - pictorial.spirits|普通象形图\\n - map.scatter|点地图\\n - gauge.simple|360°仪表盘\\n - gauge.simple180|180°仪表盘\\n- 2维\\n - bar.multi|多数据对比柱形图\\n - bar.negative|正负条形图\\n - bar.stack|堆叠柱形图\\n - bar.stack.horizontal|堆叠条形图\\n - bar.multi.horizontal|多数据条形柱状图\\n - line.multi|多数据对比折线图\\n - mixed.linebar|普通折柱图\\n - scatter.bubble|气泡散点图\\n - radar.basic|普通雷达图\\n - radar.custom|圆形雷达图\\n⸻\\n## 数据集格式说明:\\n```\\n{\\n \\\"dbId\\\": \\\"1069915169263800320\\\",\\n \\\"code\\\": \\\"a\\\",\\n \\\"title\\\": \\\"a\\\",\\n \\\"isList\\\": \\\"1\\\",\\n \\\"type\\\": \\\"0\\\",\\n \\\"children\\\": [\\n {\\n \\\"title\\\": \\\"total_sales\\\",\\n \\\"fieldText\\\": \\\"total_sales\\\"\\n },\\n {\\n \\\"title\\\": \\\"total_returns\\\",\\n \\\"fieldText\\\": \\\"total_returns\\\"\\n }\\n ]\\n}\\n```\\n* code:数据集变量名\\n* isList:为”1”表示集合,“0”表示对象\\n* children:为字段列表,包含title(字段名)和fieldText(展示名)\\n* type:0|sql,1|api,2|code,3|json\\n⸻\\n## 输出json格式\\n{\\n \\\"dataType\\\": \\\"sql\\\",\\n \\\"apiStatus\\\": \\\"0\\\",\\n \\\"apiUrl\\\": \\\"\\\",\\n \\\"dataId\\\": \\\"1069898455939633152\\\",\\n \\\"axisX\\\": \\\"supplier_name\\\",\\n \\\"axisY\\\": \\\"total_returns\\\",\\n \\\"series\\\": \\\"material_name\\\",\\n \\\"yText\\\": \\\"total_returns\\\",\\n \\\"xText\\\": \\\"supplier_name\\\",\\n \\\"dbCode\\\": \\\"a\\\",\\n \\\"isCustomPropName\\\": false,\\n \\\"chartType\\\": \\\"line.multi\\\",\\n \\\"id\\\": \\\"0aGl4PUfbIfy8BMF\\\",\\n \\\"run\\\": 1,\\n \\\"title\\\": \\\"\\\",\\n}\\n* dataType:与数据集type对应(0|sql,1|api,2|code,3|json)\\n* dataId:对应数据集dbId\\n* dbCode:对应数据集的code\\n* axisX:分类属性,从数据集字段中取值(fieldText)\\n* axisY:值属性,从数据集字段中取值(fieldText)\\n* series: 系列,从数据集字段中取值(fieldText)\\n* xText:分类属性显示,从数据集字段中取值(title)\\n* yText:值属性显示,从数据集字段中取值(title)\\n* chartType:图表的标识\\n* title:为这个图表起一个标题\\n* isCustomPropName: 如果是api数据集,该值为true\\n* apiStatus: 如果是api数据集则等于\\\"1\\\",否则\\\"0\\\"\\n\\n\\n## 输出格式\\n* 直接返回JSON数据,不要解释,不要md语法,不要换行符,不要有注释。\\n* 确保输出的json格式正确完整。\"},{\"role\":\"user\",\"content\":\"## 用户数据集:\\n{{ddl}}\\n## 用户需求:\\n{{question}}\"}]},\"inputParams\":[{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"},{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"175506006644633600\",\"type\":\"end\",\"x\":1643,\"y\":769,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"chart\",\"nodeId\":\"175505963485245440\"}],\"height\":114,\"width\":332}},{\"id\":\"175807569594040320\",\"type\":\"llm\",\"x\":1166,\"y\":1018,\"properties\":{\"text\":\"意图识别\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"你是一个“在线报表的需求分析器”,能够理解用户的需求输入,\\n\\n请根据用户需求与提供的数据集设计,综合判断应执行的工作流步骤,并为每个步骤调整需求描述,同时选择最合适的数据集。 \\n\\n\\n\\n\\n## 可选步骤(格式:标识 | 功能说明)\\n\\n- `genJsonRows` | 生成报表(可选,根据用户的需求描述和数据集设计生成合适的报表设计)\\n\\n- `genChart` | 生成图表(可选,根据用户的需求描述和数据集设计生成合适的图表数据)\\n\\n> **注意:** 至少选择一个步骤,亦可同时选择两者;图表的权重较低。\\n\\n\\n\\n\\n## 数据集格式\\n\\n```\\n\\n{\\n\\n\\\"dbId\\\": \\\"1069915169263800320\\\",\\n\\n\\\"code\\\": \\\"a\\\",\\n\\n\\\"title\\\": \\\"a\\\",\\n\\n\\\"isList\\\": \\\"1\\\",\\n\\n\\\"type\\\": \\\"0\\\",\\n\\n\\\"children\\\": [\\n\\n{\\n\\n\\\"title\\\": \\\"total_sales\\\",\\n\\n\\\"fieldText\\\": \\\"total_sales\\\"\\n\\n},\\n\\n{\\n\\n\\\"title\\\": \\\"total_returns\\\",\\n\\n\\\"fieldText\\\": \\\"total_returns\\\"\\n\\n}\\n\\n]\\n\\n}\\n\\n```\\n\\n* `code`:数据集变量名\\n\\n* `isList`:为”1”表示集合,“0”表示对象\\n\\n* `children`:为字段列表,包含title(展示名)和fieldText(字段名)\\n\\n* `type`:0|sql,1|api,2|code,3|json\\n\\n\\n\\n\\n## 输出格式\\n\\n步骤标识1|需求描述1|数据集code,步骤标识2|需求描述2|数据集code \\n\\n* 各步骤之间用英文逗号,分隔 \\n\\n* 不得添加额外说明,不要md语法,不要换行符,不要有注释。\\n\\n\\n\\n\\n## 注意:\\n\\n- 在生成需求描述时,应确保不丢失原有需求的全部内容,只是并针对所选步骤微调。\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"## 用户数据集:\\n{{ddl}}\\n## 用户需求:\\n{{question}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"175808663015538688\",\"type\":\"end\",\"x\":1643,\"y\":985,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"intent\",\"nodeId\":\"175807569594040320\"}],\"height\":114,\"width\":332}},{\"id\":\"221504502491222016\",\"type\":\"llm\",\"x\":1166,\"y\":1237,\"properties\":{\"text\":\"生成excel设计\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"你是一个“在线Excel JSON生成器”,能够理解用户描述并生成符合规范的 JSON。 \\n**严格规则**:\\n1. 只能根据描述生成 JSON。\\n2. JSON 必须合法,可被 `JSON.parse()` 正确解析。\\n3. JSON 中不可以有注释\\n\\n\\n\\n\\n---\\n\\n\\n\\n\\n## 步骤一:理解用户的描述,并生成单元格描述信息\\n - 行号、列号\\n - 单元格文字\\n - 单元格样式(字体加粗、斜体、大小、颜色、背景色、水平/垂直对齐、自动换行、边框)\\n - 合并单元格信息\\n\\n\\n\\n\\n⸻\\n\\n\\n\\n\\n## 步骤二:使用步骤一种生成的描述信息,生成完整在线Excel JSON\\n### 输出要求\\n- 输出必须是 **合法 JSON**,且能直接被 `JSON.parse()` 正确解析。 \\n- JSON 的结构必须包含以下部分: \\n - `\\\"styles\\\"`:样式数组,每个元素对应一种样式(如字体加粗、字体颜色、边框等),并在单元格里通过 `style` 字段引用 \\n - `\\\"merges\\\"`:合并单元格区域(如 `\\\"D3:E4\\\"`) \\n - `\\\"rows\\\"`:行数据,每一行包含 `cells`,每个 `cell` 可包含:\\n - `\\\"text\\\"`:单元格文字 \\n - `\\\"style\\\"`:引用 `styles` 数组中的下标 \\n - `\\\"merge\\\"`:若为合并单元格,标注合并范围 示例[1,2]:下标[0]纵向合并1格,下标[1]横向合并2格,\\n - `\\\"height\\\"`:行高 \\n - `\\\"width\\\"`:列宽(放在 `\\\"cols\\\"` 部分) \\n - `\\\"cols\\\"`:列宽配置 \\n\\n\\n\\n\\n### 样式规则\\n- 样式在 `\\\"styles\\\"` 中定义: \\n - `font`:字体\\n - `bold`: 是否加粗(如:`true`)\\n - `italic`: 是否斜体(如:`true`)\\n - `size`: 字体大小单位pt,默认10\\n - `underline`: 下划线(如:`true`)\\n - `strike`: 删除线(如:`true`)\\n - `color`(字体颜色) \\n - `bgcolor`(背景色) \\n - `align`(left/center/right) \\n - `valign`(top/middle/bottom) \\n - `textwrap`(自动换行) \\n - `border`\\n - `top`:上边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `bottom`:下边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `left`:左边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n - `right`:右边框(如 `[\\\"thin\\\",\\\"#000\\\"]`) \\n\\n\\n\\n\\n### 行列规则\\n- `\\\"rows\\\"` 中的 key 是行号(从 0 开始) \\n- `\\\"cells\\\"` 中的 key 是列号(从 0 开始) \\n- 可指定 `\\\"height\\\"` 设置行高 \\n- `\\\"cols\\\"` 中的 key 是列号,值包含 `\\\"width\\\"` 设置列宽 \\n\\n\\n\\n\\n## 合并规则\\n- `\\\"merge\\\": [纵向合并格数, 横向合并格数]` \\n - 纵向合并格数与横向合并格数是不包含当前单元格的数量(如 纵向合并格数 等于1 就是向下合并一行;横向合并格数同理)\\n- 被合并覆盖的单元格无需再定义 \\n\\n\\n\\n\\n## 示例\\n(简化示例)\\n\\n\\n\\n\\n```json\\n{\\n \\\"styles\\\": [\\n { \\\"font\\\": { \\\"bold\\\": true } },\\n { \\\"color\\\": \\\"#ff0000\\\" }\\n ],\\n \\\"rows\\\": {\\n \\\"0\\\": {\\n \\\"cells\\\": {\\n \\\"0\\\": { \\\"text\\\": \\\"加粗文字\\\", \\\"style\\\": 0 },\\n \\\"1\\\": { \\\"text\\\": \\\"红色文字\\\", \\\"style\\\": 1 }\\n }\\n }\\n },\\n \\\"cols\\\": {\\n \\\"1\\\": { \\\"width\\\": 100 }\\n },\\n \\\"merges\\\": [\\\"A1:B1\\\"],\\n}\\n\\n\\n\\n\\n## 特别说明\\n- JSON 必须 **纯净**:无注释、无 markdown、无省略号。 \\n- 用户指定的样式不能改动,可在此基础上做美化。\\n- 除非用户明确要求,默认都对生成的报表做基础美化(如增加边框、设置字体、设置背景色)\\n- 用户描述的行列序号需 **减一** 转换为下标。 \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"理解用户需求,并按要求生成json数据。\\n用户需求如下:\\n{{question}}\\n\\n\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"221512800426758144\",\"type\":\"end\",\"x\":1643,\"y\":1201,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"designJson\",\"nodeId\":\"221504502491222016\"}],\"height\":114,\"width\":332}},{\"id\":\"223992240450801664\",\"type\":\"llm\",\"x\":1166,\"y\":1441,\"properties\":{\"text\":\"提示词生成\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 报表生成提示词优化器\\n\\n\\n## 目标\\n\\n\\n根据用户输入的需求和数据集定义,自动生成简洁、明确的用户 message。\\n系统会自动带上数据集定义,因此无需包含数据集定义内容。\\n\\n\\n## 工作流程\\n\\n\\n### 步骤一:理解需求与数据集\\n\\n\\n- 从用户的自然语言需求和数据集定义中,提取**业务方向**。\\n- 业务方向示例:\\n - 个人简历\\n - 项目报价\\n - 数据统计\\n - 财务报表\\n - 产品清单\\n\\n\\n### 步骤二:扩展提示词\\n\\n\\n- 针对识别出的业务方向,扩展提示词,使其更贴合业务场景。\\n- 示例:\\n 如果用户需求是\\\"生成一份个人简历\\\",则扩展提示词为:\\n \\\"请基于数据集生成个人简历模版,突出教育背景、工作经历和技能展示。\\\"\\n\\n\\n### 步骤三:生成用户 message\\n\\n\\n- 输出最终的用户 message,不包含系统提示词,不包含数据集定义。\\n- 要求:\\n - 保留用户需求的原意。\\n - 优化表达,使 AI 更好地理解并执行任务。\\n - 根据业务方向,附加必要的模版说明。\\n - 提示词结构最好包含:\\n - 主要需求:用户的主要需求,比如:生成一个用于软件产品的报价表。\\n - 结构要求:对于生成的内容的要求\\n - 样式要求:对样式的整体和细节的要求,比如:整体排版美观、标题使用16号字。\\n\\n\\n#### 输出示例:\\n\\n\\n```\\n生成一个 **员工薪资报表**,要求如下: \\n\\n\\n1. **数据内容** \\n - 报表需要展示以下信息:员工姓名、性别、生日、联系电话、薪资。 \\n\\n\\n2. **样式要求** \\n - 添加一个醒目的报表标题,字体16号。 \\n - 标题行使用蓝色背景,并且字体加粗。 \\n - 数据行保持清晰整齐,便于阅读。 \\n\\n\\n3. **输出要求** \\n - 表格内容规范,排版美观,符合员工薪资报表的格式。 \\n```\\n\\n\\n\\n\\n## 输出要求\\n\\n\\n- 最终输出为简洁明了的用户 message。\\n- 不限定关键词和字段,完全根据需求和数据集定义生成。\\n- 控制长度,不要超过500字。\\n\\n\"},{\"role\":\"user\",\"content\":\"用户需求:\\n{{question}}\\n数据集定义\\n{{ddl}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\"},{\"field\":\"ddl\",\"name\":\"ddl\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"223993058876952576\",\"type\":\"end\",\"x\":1652,\"y\":1408,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"prompt\",\"nodeId\":\"223992240450801664\"}],\"height\":114,\"width\":332}}],\"edges\":[{\"id\":\"172957153288454144\",\"type\":\"base-edge\",\"sourceNodeId\":\"172956395755208704\",\"targetNodeId\":\"172957153284259840\",\"sourceAnchorId\":\"172956395755208704_output\",\"targetAnchorId\":\"172957153284259840_input\",\"pointsList\":[{\"x\":1332,\"y\":101},{\"x\":1432,\"y\":101},{\"x\":1377,\"y\":103},{\"x\":1477,\"y\":103}]},{\"id\":\"173365501234540544\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"173365501230346240\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"173365501230346240_input\",\"pointsList\":[{\"x\":428,\"y\":443},{\"x\":528,\"y\":443},{\"x\":422,\"y\":469},{\"x\":522,\"y\":469}]},{\"id\":\"173366253650735104\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365800833675264\",\"targetNodeId\":\"173366253646540800\",\"sourceAnchorId\":\"173365800833675264_output\",\"targetAnchorId\":\"173366253646540800_input\",\"pointsList\":[{\"x\":1333,\"y\":309},{\"x\":1433,\"y\":309},{\"x\":1377,\"y\":310},{\"x\":1477,\"y\":310}]},{\"id\":\"173372961415852032\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"172956395755208704\",\"sourceAnchorId\":\"173365501230346240_source_if\",\"targetAnchorId\":\"172956395755208704_input\",\"pointsList\":[{\"x\":854,\"y\":503},{\"x\":954,\"y\":503},{\"x\":900,\"y\":101},{\"x\":1000,\"y\":101}]},{\"id\":\"173372967073968128\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"173365800833675264\",\"sourceAnchorId\":\"173365501230346240_case_2\",\"targetAnchorId\":\"173365800833675264_input\",\"pointsList\":[{\"x\":854,\"y\":529},{\"x\":954,\"y\":529},{\"x\":901,\"y\":309},{\"x\":1001,\"y\":309}]},{\"id\":\"173372974988619776\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"173366439085109248\",\"sourceAnchorId\":\"173365501230346240_source_else\",\"targetAnchorId\":\"173366439085109248_input\",\"pointsList\":[{\"x\":854,\"y\":685},{\"x\":954,\"y\":685},{\"x\":900,\"y\":1636},{\"x\":1000,\"y\":1636}]},{\"id\":\"175149164437209088\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"175149164433014784\",\"sourceAnchorId\":\"173365501230346240_case_3\",\"targetAnchorId\":\"175149164433014784_input\",\"pointsList\":[{\"x\":854,\"y\":555},{\"x\":954,\"y\":555},{\"x\":898,\"y\":539},{\"x\":998,\"y\":539}]},{\"id\":\"175153997969915904\",\"type\":\"base-edge\",\"sourceNodeId\":\"175149164433014784\",\"targetNodeId\":\"175153953988444160\",\"sourceAnchorId\":\"175149164433014784_output\",\"targetAnchorId\":\"175153953988444160_input\",\"pointsList\":[{\"x\":1330,\"y\":539},{\"x\":1430,\"y\":539},{\"x\":1377,\"y\":538},{\"x\":1477,\"y\":538}]},{\"id\":\"175505963489439744\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"175505963485245440\",\"sourceAnchorId\":\"173365501230346240_case_4\",\"targetAnchorId\":\"175505963485245440_input\",\"pointsList\":[{\"x\":854,\"y\":581},{\"x\":954,\"y\":581},{\"x\":900,\"y\":743},{\"x\":1000,\"y\":743}]},{\"id\":\"175506006648827904\",\"type\":\"base-edge\",\"sourceNodeId\":\"175505963485245440\",\"targetNodeId\":\"175506006644633600\",\"sourceAnchorId\":\"175505963485245440_output\",\"targetAnchorId\":\"175506006644633600_input\",\"pointsList\":[{\"x\":1332,\"y\":743},{\"x\":1432,\"y\":743},{\"x\":1377,\"y\":743},{\"x\":1477,\"y\":743}]},{\"id\":\"175807569598234624\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"175807569594040320\",\"sourceAnchorId\":\"173365501230346240_case_5\",\"targetAnchorId\":\"175807569594040320_input\",\"pointsList\":[{\"x\":854,\"y\":607},{\"x\":954,\"y\":607},{\"x\":900,\"y\":959},{\"x\":1000,\"y\":959}]},{\"id\":\"175808663019732992\",\"type\":\"base-edge\",\"sourceNodeId\":\"175807569594040320\",\"targetNodeId\":\"175808663015538688\",\"sourceAnchorId\":\"175807569594040320_output\",\"targetAnchorId\":\"175808663015538688_input\",\"pointsList\":[{\"x\":1332,\"y\":959},{\"x\":1432,\"y\":959},{\"x\":1377,\"y\":959},{\"x\":1477,\"y\":959}]},{\"id\":\"221512800426758145\",\"type\":\"base-edge\",\"sourceNodeId\":\"221504502491222016\",\"targetNodeId\":\"221512800426758144\",\"sourceAnchorId\":\"221504502491222016_output\",\"targetAnchorId\":\"221512800426758144_input\",\"pointsList\":[{\"x\":1332,\"y\":1178},{\"x\":1432,\"y\":1178},{\"x\":1377,\"y\":1175},{\"x\":1477,\"y\":1175}]},{\"id\":\"221534054756093952\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"221504502491222016\",\"sourceAnchorId\":\"173365501230346240_case_6\",\"targetAnchorId\":\"221504502491222016_input\",\"pointsList\":[{\"x\":854,\"y\":633},{\"x\":954,\"y\":633},{\"x\":900,\"y\":1178},{\"x\":1000,\"y\":1178}]},{\"id\":\"223992240454995968\",\"type\":\"base-edge\",\"sourceNodeId\":\"173365501230346240\",\"targetNodeId\":\"223992240450801664\",\"sourceAnchorId\":\"173365501230346240_case_7\",\"targetAnchorId\":\"223992240450801664_input\",\"pointsList\":[{\"x\":854,\"y\":659},{\"x\":954,\"y\":659},{\"x\":900,\"y\":1382},{\"x\":1000,\"y\":1382}]},{\"id\":\"223993058881146880\",\"type\":\"base-edge\",\"sourceNodeId\":\"223992240450801664\",\"targetNodeId\":\"223993058876952576\",\"sourceAnchorId\":\"223992240450801664_output\",\"targetAnchorId\":\"223993058876952576_input\",\"pointsList\":[{\"x\":1332,\"y\":1382},{\"x\":1432,\"y\":1382},{\"x\":1386,\"y\":1382},{\"x\":1486,\"y\":1382}]}]}', 'enable', '{\"outputs\":[{\"field\":\"text\",\"name\":\"prompt\",\"nodeId\":\"223992240450801664\"},{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"ddl\",\"name\":\"表结构\",\"required\":true,\"type\":\"string\"},{\"field\":\"dbtype\",\"name\":\"数据库类型\",\"required\":true,\"type\":\"string\"},{\"field\":\"bizType\",\"name\":\"业务类型\",\"required\":true,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1917103567932604417', 'jeecg', '2025-04-29 14:28:03', 'admin', '2025-11-27 16:56:38', 'A04', NULL, 'jeecg', 'AI解析Excel数据_JAVA增强', '', '', 'THEN(\n start.tag(\'start-node\'),\n enhanceJava.tag(\'180204885804785664\'),\n llm.tag(\'180211780498169856\'),\n end.tag(\'180204420713758720\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":376,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"pageNo\",\"name\":\"页码\",\"type\":\"number\",\"required\":false},{\"field\":\"pageSize\",\"name\":\"每页数量\",\"type\":\"number\",\"required\":false},{\"field\":\"bizData\",\"name\":\"文件路径\",\"type\":\"string\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"180204420713758720\",\"type\":\"end\",\"x\":1648,\"y\":398,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{res}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"180211780498169856\"}],\"height\":136,\"width\":332}},{\"id\":\"180204885804785664\",\"type\":\"enhanceJava\",\"x\":747,\"y\":329,\"properties\":{\"text\":\"Java 增强\",\"options\":{\"enhance\":{\"type\":\"spring\",\"path\":\"jimuDataReader\"}},\"inputParams\":[{\"field\":\"bizData\",\"name\":\"bizData\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"datas\",\"name\":\"返回结果\",\"type\":\"object[]\",\"required\":false},{\"field\":\"fields\",\"name\":\"字段列表\",\"type\":\"string[]\",\"required\":false}],\"height\":158,\"width\":332}},{\"id\":\"180211780498169856\",\"type\":\"llm\",\"x\":1229,\"y\":419,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"将以下数据整理成目标格式输出\\n## 工作流程:\\n1. 读取用户的数据\\n3. 组装最终输出的json\\n⸻\\n## 数据示例:data\\n```\\n{{data}}\\n```\\n## 数据示例:fields\\n```\\n{{fields}}\\n```\\n⸻\\n## 输出json格式\\n{\\n \\\"data\\\": [\\n {\\n \\\"amount\\\": \\\"100\\\",\\n \\\"month\\\": \\\"1\\\",\\n \\\"areaname\\\": \\\"华北\\\",\\n \\\"year\\\": \\\"2020\\\",\\n \\\"price\\\": \\\"5\\\",\\n \\\"dept\\\": \\\"河北\\\",\\n \\\"settleamount\\\": \\\"100\\\"\\n },\\n {\\n \\\"amount\\\": \\\"200\\\",\\n \\\"month\\\": \\\"2\\\",\\n \\\"areaname\\\": \\\"华北\\\",\\n \\\"year\\\": \\\"2020\\\",\\n \\\"price\\\": \\\"5\\\",\\n \\\"dept\\\": \\\"河北\\\",\\n \\\"settleamount\\\": \\\"200\\\"\\n },\\n ],\\n \\\"total\\\": 100,\\n \\\"count\\\": 100\\n}\\n* total: 分页数,对应数据的总分页数\\n* count: 数据总数,对应数据的总数\\n\\n\\n## 输出格式\\n* 直接返回JSON数据,不要解释,不要md语法,不要换行符,不要有注释。\\n* 统一将key转换成英文,下划线分隔\\n* 确保输出的json格式正确完整。\"},{\"role\":\"user\",\"content\":\"将数据转换为目标格式\"}]},\"inputParams\":[{\"field\":\"datas\",\"name\":\"data\",\"nodeId\":\"180204885804785664\"},{\"field\":\"fields\",\"name\":\"fileds\",\"nodeId\":\"180204885804785664\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}}],\"edges\":[{\"id\":\"180211805085179904\",\"type\":\"base-edge\",\"sourceNodeId\":\"180211780498169856\",\"targetNodeId\":\"180204420713758720\",\"sourceAnchorId\":\"180211780498169856_output\",\"targetAnchorId\":\"180204420713758720_input\",\"pointsList\":[{\"x\":1395,\"y\":360},{\"x\":1495,\"y\":360},{\"x\":1382,\"y\":361},{\"x\":1482,\"y\":361}]},{\"id\":\"180228761381183488\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"180204885804785664\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"180204885804785664_input\",\"pointsList\":[{\"x\":466,\"y\":361},{\"x\":566,\"y\":361},{\"x\":481,\"y\":281},{\"x\":581,\"y\":281}]},{\"id\":\"180511280701620224\",\"type\":\"base-edge\",\"sourceNodeId\":\"180204885804785664\",\"targetNodeId\":\"180211780498169856\",\"sourceAnchorId\":\"180204885804785664_output\",\"targetAnchorId\":\"180211780498169856_input\",\"pointsList\":[{\"x\":913,\"y\":281},{\"x\":1013,\"y\":281},{\"x\":963,\"y\":360},{\"x\":1063,\"y\":360}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"pageNo\",\"name\":\"页码\",\"required\":false,\"type\":\"number\"},{\"field\":\"pageSize\",\"name\":\"每页数量\",\"required\":false,\"type\":\"number\"},{\"field\":\"bizData\",\"name\":\"文件路径\",\"required\":false,\"type\":\"string\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('1952634605517447170', 'admin', '2025-08-05 15:35:43', 'admin', '2026-01-23 18:30:13', 'A04', NULL, 'jeecg', 'AI生成简历', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'215734195065536512\'),\n enhanceJava.tag(\'215740280715427840\'),\n end.tag(\'215735188368998400\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":404,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"个人简介\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"profile\",\"name\":\"基础信息\",\"type\":\"string\",\"required\":true},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"215734195065536512\",\"type\":\"llm\",\"x\":746,\"y\":404,\"properties\":{\"text\":\"生成word文档\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"### 核心指令(必须100%遵守)\\n你必须只输出可被Java的JSON.parse()正确解析的JSON数组,禁止输出任何解释、注释、换行符(除JSON内部合法换行)或JSON以外的文字。若生成的JSON存在任何不合法/不完整问题,必须先自动修正,再输出最终结果。\\n### 一、JSON语法强制规则(违反则直接修正)\\n1. 输出仅为纯JSON数组,外层无任何引号/包裹符,数组括号必须成对闭合,无缺失/多余;\\n2. 所有键名(key)必须用英文双引号包裹,禁止单引号/无引号/中文引号;\\n3. 所有分隔符(逗号、冒号、大括号、中括号)必须是英文符号,禁止中文符号(如,:【】{});\\n4. 字符串值中的特殊字符(换行符、双引号)必须正确转义:\\n - 换行符用 `\\\\n` 表示(禁止直接换行);\\n - 字符串内的双引号需转义为 `\\\\\\\"`;\\n5. 禁止出现语法错误:无多余逗号(如 [{},])、无缺失逗号、无未闭合的括号、无乱码/不可见字符;\\n6. 输出的JSON必须是**完整的**,禁止截断/缺失内容(如list的valueList未结束、数组未闭合)。\\n### 二、业务规则强制要求(违反则自动补充/修正)\\n1. 字段基础规则:\\n - 每个对象必须包含\\\"key\\\"字段(值可为空字符串 \\\"\\\");\\n - \\\"type\\\"字段仅允许取值:\\\"title\\\"、\\\"list\\\"、\\\"\\\";\\n2. title类型强制规则:\\n - type=\\\"title\\\"时,必须同时包含\\\"level\\\"(取值:first~sixth)、\\\"valueList\\\"(数组)、\\\"value\\\"字段;\\n - \\\"value\\\"字段**必须以 `\\\\n` 结尾**,且不能为空(默认值:\\\"\\\\n\\\");\\n - \\\"valueList\\\"数组内的每个元素必须包含\\\"value\\\"字段,支持font/size/bold/rowFlex等样式字段;\\n3. list类型强制规则:\\n - type=\\\"list\\\"时,必须同时包含\\\"listType\\\"(ul/ol)、\\\"listStyle\\\"(disc/decimal/circle/square/checkbox)、\\\"valueList\\\"(非空数组)字段;\\n - \\\"valueList\\\"数组内的每个元素必须包含\\\"value\\\"字段,不能为空;\\n4. 其他类型规则:\\n - type=\\\"separator\\\"时,必须包含\\\"dashArray\\\"字段(数组,如 [1]);\\n - 主动换行必须使用 `{ \\\"type\\\": \\\"\\\", \\\"value\\\": \\\"\\\\n\\\" }`,不同对象之间不自动换行;\\n - 所有字符串值禁止为空(无内容时填空字符串 \\\"\\\",禁止null)。\\n### 三、生成后自检流程(必须执行)\\n1. 第一步:检查语法合法性\\n - 验证是否能被Java JSON.parse()解析(模拟校验:无语法错误、符号正确、括号闭合);\\n - 若存在语法错误,立即修正(如单引号转双引号、补充缺失括号、删除多余逗号);\\n2. 第二步:检查业务完整性\\n - 遍历所有对象,检查title类型是否缺失level/value字段,缺失则补充(level默认second,value默认\\\"\\\\n\\\");\\n - 检查list类型是否缺失listType/listStyle/valueList字段,缺失则补充(listType默认ul,listStyle默认disc,valueList默认空数组 []);\\n - 检查title的value是否以\\\"\\\\n\\\"结尾,未结尾则补充;\\n3. 第三步:检查输出完整性\\n - 验证JSON数组是否完整闭合,无截断/缺失内容;\\n - 验证输出内容仅为JSON数组,无任何额外字符。\\n### 四、生成示例(参考此格式/规则)\\n[\\n {\\n \\\"type\\\": \\\"title\\\",\\n \\\"level\\\": \\\"first\\\",\\n \\\"valueList\\\": [\\n {\\n \\\"value\\\": \\\"个人简历\\\",\\n \\\"font\\\": \\\"微软雅黑\\\",\\n \\\"size\\\": 26,\\n \\\"bold\\\": true,\\n \\\"rowFlex\\\": \\\"center\\\"\\n }\\n ],\\n \\\"value\\\": \\\"\\\\n\\\",\\n \\\"key\\\": \\\"\\\"\\n },\\n {\\n \\\"type\\\": \\\"\\\",\\n \\\"value\\\": \\\"\\\\n\\\",\\n \\\"key\\\": \\\"\\\"\\n },\\n {\\n \\\"type\\\": \\\"list\\\",\\n \\\"listType\\\": \\\"ul\\\",\\n \\\"listStyle\\\": \\\"disc\\\",\\n \\\"valueList\\\": [\\n { \\\"value\\\": \\\"合法的列表项\\\", \\\"key\\\": \\\"\\\" }\\n ],\\n \\\"key\\\": \\\"\\\"\\n }\\n]\\n### 五、最终输出要求\\n1. 仅输出修正后的完整JSON数组,无任何其他文字;\\n2. 输出前必须完成上述所有自检步骤,确保100%符合Java解析规范;\\n3. 生成的JSON需结构完整、字段齐全,禁止出现截断/缺失(如list未结束、数组未闭合)。\"},{\"role\":\"user\",\"content\":\"请根据以上字段和示例,生成一个完整的个人简历文档 JSON。\\n- 至少包含基础信息、个人优势、工作经历、项目经理、教育经历等模块。\\n- 若基础数据不足,可以适当生成参考数据。\\n- 用户信息如下:\\n基础资料:{{base}}\\n简介:{{profile}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"profile\",\"name\":\"base\",\"nodeId\":\"start-node\"},{\"field\":\"content\",\"name\":\"profile\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"215735188368998400\",\"type\":\"end\",\"x\":1779,\"y\":408,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"resp\",\"nodeId\":\"215740280715427840\"}],\"height\":114,\"width\":332}},{\"id\":\"215740280715427840\",\"type\":\"enhanceJava\",\"x\":1316,\"y\":405,\"properties\":{\"text\":\"Java 增强\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:JSON检验和修复专家\\n你是一位专门负责检验和修复JSON字符串的专家,确保其能被Java的`JSON.parse()`方法成功解析,并返回修复后的、可解析的JSON字符串原文。\\n## 目标:\\n1. 接收用户提供的JSON字符串,诊断其语法错误。\\n2. 智能修复常见的JSON格式问题(如引号缺失、尾随逗号、注释等),使其符合标准JSON规范。\\n3. 输出修复后的、可直接用于`JSON.parse()`的JSON字符串原文。\\n## 技能:\\n1. **深度语法分析**:精准识别JSON字符串中的语法错误位置和类型(如未闭合的引号、括号或花括号,错误的键值分隔符,非法字符等)。\\n2. **上下文感知修复**:根据JSON结构上下文,智能推断并应用最合理的修复方案(例如,为未加引号的键名添加双引号,移除对象或数组末尾的非法逗号)。\\n3. **标准合规性**:严格遵循IETF RFC 8259 JSON数据交换标准,确保输出为有效JSON。\\n4. **最小改动原则**:在保证修复有效的前提下,尽可能保持原始字符串的结构和意图,只修改必要的部分。\\n## 工作流:\\n1. **接收与初步检验**:接收用户输入的字符串,尝试使用`JSON.parse()`进行解析。若解析成功,则直接返回原字符串并告知其有效。\\n2. **错误诊断与定位**:若解析失败,捕获`SyntaxError`异常,分析错误信息以定位问题的大致位置和类型。\\n3. **详细扫描与修复**:逐字符扫描整个字符串,结合错误定位,系统性地检查并修复以下常见问题:\\n* 为未使用双引号的属性名(key)添加双引号。\\n* 确保所有字符串值由双引号包裹。\\n* 移除对象字面量`{}`或数组字面量`[]`中最后一个元素后的尾随逗号。\\n* 将单引号替换为双引号。\\n* 移除JavaScript风格的注释(`//` 单行注释, `/* */` 多行注释)。\\n* 转义字符串中未转义的控制字符(如换行符`\\\\n`、制表符`\\\\t`)。\\n* 检查并修正括号`[]`和花括号`{}`的配对与嵌套。\\n4. **验证与输出**:对修复后的字符串再次尝试`JSON.parse()`。若成功,则输出修复后的JSON字符串原文\\n## 输出格式:\\n- **当JSON有效时**:输出原始字符串。\\n- **当JSON被成功修复时**:然后换行输出修复后的JSON字符串原文。\\n## 限制:\\n- 仅处理语法错误,不验证JSON数据的业务逻辑或语义正确性。\\n- 对于歧义过大或结构严重损坏(如大量缺失内容)的JSON,可能无法修复,此时应清晰说明原因。\\n- 所有输出必须是纯文本格式,仅包含上述指定的提示信息和JSON字符串本身,不添加任何额外的Markdown代码块标记(如 ```json ```)。\\n- 严格遵守最小改动原则,避免对原始数据做出不必要的、可能改变其原意的修改。\"},{\"role\":\"user\",\"content\":\"{{word}}\"}],\"enhance\":{\"path\":\"jeecgDemoAiWordGen\",\"type\":\"spring\"}},\"inputParams\":[{\"field\":\"text\",\"name\":\"resp\",\"nodeId\":\"215734195065536512\",\"customValue\":\"\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\"}],\"height\":158,\"width\":332}}],\"edges\":[{\"id\":\"215734195073925120\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"215734195065536512\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"215734195065536512_input\",\"pointsList\":[{\"x\":466,\"y\":389},{\"x\":566,\"y\":389},{\"x\":480,\"y\":345},{\"x\":580,\"y\":345}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"215740398487289856\",\"type\":\"base-edge\",\"sourceNodeId\":\"215740280715427840\",\"targetNodeId\":\"215735188368998400\",\"sourceAnchorId\":\"215740280715427840_output\",\"targetAnchorId\":\"215735188368998400_input\",\"pointsList\":[{\"x\":1482,\"y\":357},{\"x\":1582,\"y\":357},{\"x\":1513,\"y\":382},{\"x\":1613,\"y\":382}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"279144043506167808\",\"type\":\"base-edge\",\"sourceNodeId\":\"215734195065536512\",\"targetNodeId\":\"215740280715427840\",\"sourceAnchorId\":\"215734195065536512_output\",\"targetAnchorId\":\"215740280715427840_input\",\"pointsList\":[{\"x\":912,\"y\":345},{\"x\":1012,\"y\":345},{\"x\":1050,\"y\":357},{\"x\":1150,\"y\":357}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"field\":\"result\",\"name\":\"resp\",\"nodeId\":\"215740280715427840\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"个人简介\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"profile\",\"name\":\"基础信息\",\"required\":true,\"type\":\"string\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
INSERT INTO `airag_flow` VALUES ('1988073273760501762', 'admin', '2025-11-11 10:36:20', 'admin', '2025-11-27 16:58:06', 'A05A01A01', NULL, 'jeecg', 'AI图文写作', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'251170889153376256\'),\n llm.tag(\'251190209648521216\'),\n llm.tag(\'251190922428542976\'),\n llm.tag(\'251246385341919232\'),\n end.tag(\'251191126401740800\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":332.8947368421053,\"y\":589.0526315789475,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"目的地\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"from\",\"name\":\"出发地\",\"type\":\"string\",\"required\":true},{\"field\":\"time\",\"name\":\"出发时间\",\"type\":\"string\",\"required\":true},{\"field\":\"peopleNum\",\"name\":\"人数\",\"type\":\"number\",\"required\":true}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"251170889153376256\",\"type\":\"llm\",\"x\":685.9473684210526,\"y\":381.05263157894734,\"properties\":{\"text\":\"意图和需求分析\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\n你是自驾游攻略生成的需求分析师\\n\\n## 目标:\\n- 分析用户提供的主题信息,归纳整理出实际需求列表。\\n\\n## 技能:\\n1. 信息提取与分析能力\\n2. 旅游规划与建议能力\\n3. 数据查询与整合能力\\n\\n## 工作流:\\n1. 收集用户提供的主题信息并进行分类。\\n2. 确定用户的目标和需求,并归纳整理。\\n3. 列出需要查询的资料和天气、路况信息。\\n\\n## 输出格式:\\n- 列表形式,包含目标和需求、查询资料列表、天气和路况信息。\\n\\n## 限制:\\n- 不得提供未经过验证的信息。\\n- 所有数据需标注来源,不确定信息用[需核实]标记。\"},{\"role\":\"user\",\"content\":\"出发地:{{from}}\\n目的地:{{userQuestion}}\\n计划时间:{{time}}\\n人数:{{peopleNum}}\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"userQuestion\",\"nodeId\":\"start-node\"},{\"field\":\"from\",\"name\":\"from\",\"nodeId\":\"start-node\"},{\"field\":\"time\",\"name\":\"time\",\"nodeId\":\"start-node\"},{\"field\":\"peopleNum\",\"name\":\"peopleNum\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"251190209648521216\",\"type\":\"llm\",\"x\":943.2631578947365,\"y\":632.0526315789475,\"properties\":{\"text\":\"资料查询\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":30,\"messages\":[{\"role\":\"system\",\"content\":\"## 角色\\n\\n\\n你是一名 自驾游资料查询师(DataAgent),专注于为下游的“攻略生成Agent”提供精准、结构化的自驾游资料。\\n\\n\\n------\\n\\n\\n## 职责目标\\n 1. 根据输入内容(出发地、目的地、行程需求等),直接执行资料查询任务,不再向用户提问。\\n 2. 收集并整理以下四类信息:\\n - 🚗 路线与导航规划信息\\n - 🏞️ 沿途及目的地的景点和游玩项目\\n - 🏨 住宿与周边美食信息\\n - ☁️ 沿途及目的地天气信息\\n 3. 输出清晰、结构化的数据结果,供下一个Agent生成攻略使用。\\n\\n\\n------\\n\\n\\n## 能力与工具\\n\\n\\n- maps 工具\\n - 查询路线与导航规划信息(距离、时长、推荐路线、途经地)。\\n - 查询沿途及目的地的住宿与餐饮信息。\\n - 查询沿途及目的地的实时或近期天气信息。\\n\\n\\n- search 工具\\n - 查询沿途及目的地的景点、游玩项目、特色体验、门票及评价等。\\n\\n\\n------\\n\\n\\n## 工作流程\\n 1. 接收任务\\n - 使用用户提供的现有信息(不提问、不二次确认)。\\n 2. 资料查询\\n - 调用 maps 工具 获取路线、住宿、美食、天气。\\n - 调用 search 工具 获取景点和游玩项目。\\n 3. 资料整理\\n - 将查询结果按类型整理成结构化资料包。\\n - 每条数据需注明来源(maps / search)。\\n 4. 结果输出\\n - 输出格式清晰,便于下游Agent直接使用。\\n\\n\\n------\\n\\n\\n## 输出格式示例\\n\\n\\n```\\n{\\n \\\"route_info\\\": [\\n {\\n \\\"from\\\": \\\"北京\\\",\\n \\\"to\\\": \\\"张家口\\\",\\n \\\"distance\\\": \\\"220km\\\",\\n \\\"duration\\\": \\\"3小时\\\",\\n \\\"route_detail\\\": \\\"经京藏高速G6\\\",\\n \\\"source\\\": \\\"maps\\\"\\n }\\n ],\\n \\\"sights\\\": [\\n {\\n \\\"name\\\": \\\"崇礼滑雪场\\\",\\n \\\"tags\\\": [\\\"滑雪\\\", \\\"冬季运动\\\"],\\n \\\"description\\\": \\\"亚洲知名滑雪胜地\\\",\\n \\\"source\\\": \\\"search\\\"\\n }\\n ],\\n \\\"hotels\\\": [\\n {\\n \\\"name\\\": \\\"张家口云顶假日酒店\\\",\\n \\\"rating\\\": \\\"4.6\\\",\\n \\\"address\\\": \\\"崇礼区奥运大道88号\\\",\\n \\\"source\\\": \\\"maps\\\"\\n }\\n ],\\n \\\"foods\\\": [\\n {\\n \\\"name\\\": \\\"张家口烧麦\\\",\\n \\\"type\\\": \\\"地方特色\\\",\\n \\\"recommendation\\\": \\\"崇礼老街美食街\\\",\\n \\\"source\\\": \\\"maps\\\"\\n }\\n ],\\n \\\"weather\\\": [\\n {\\n \\\"location\\\": \\\"崇礼\\\",\\n \\\"condition\\\": \\\"晴\\\",\\n \\\"temperature\\\": \\\"5°C~12°C\\\",\\n \\\"wind\\\": \\\"微风\\\",\\n \\\"source\\\": \\\"maps\\\"\\n }\\n ]\\n}\\n```\\n\\n\\n------\\n\\n\\n## 限制与规范\\n - 不生成行程攻略、总结或建议性文字。\\n - 不提问用户,只执行既定任务。\\n - 不包含任何虚构或未经验证的信息。\\n - 不涉及隐私、政治或违法内容。\\n - 不确定的数据需以 [需核实] 标识。\\n\\n\"},{\"role\":\"user\",\"content\":\"需求:{{demand}}\"}],\"plugins\":[{\"pluginId\":\"1983474860536475649\",\"pluginName\":\"高德\",\"category\":\"mcp\"},{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"251170889153376256\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"251190922428542976\",\"type\":\"llm\",\"x\":1225.0526315789468,\"y\":370.6842105263157,\"properties\":{\"text\":\"生成文章\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":15,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色定位:实地体验派自驾游攻略博主\\n\\n\\n你是一名热爱公路旅行、记录真实体验的自驾游达人博主。 \\n你的任务是为读者打造一份**能直接照着走的实地自驾游攻略**——兼顾实用性与可读性,让人看完就想出发。 \\n---\\n## 目标\\n1. 输出结构清晰、完整且可直接使用的自驾游攻略。 \\n2. 以**亲历者口吻**撰写内容,语言自然、有温度、具感染力。 \\n3. 帮助用户在有限时间内,完成一次轻松、安全、体验丰富的公路旅程。 \\n---\\n## 技能\\n1. **路线规划高手**:能结合季节、路况、天气等因素,规划最顺路、最合理的行程。 \\n2. **信息整合专家**:能整合住宿、美食、加油点、景点开放时间等要素,构成完整旅程。 \\n3. **避坑指导员**:能在攻略中明确提示潜在风险与替代路线,确保安全顺利出行。 \\n4. **文案风格创作者**:文风真实、有共鸣,兼具实用与情感温度。 \\n---\\n## 工作流程\\n1. **接收资料**\\n - 使用上游 DataAgent 提供的结构化资料(路线、天气、景点、住宿、美食等)。 \\n - 明确出发地点、目的地,时间和人数。\\n2. **内容整合**\\n - 基于资料内容,编排合理的日程与路线逻辑。 \\n - 为每天生成住宿与周边推荐。 \\n - 根据沿途特点补充打卡点、体验亮点与避坑提醒。 \\n3. **配图搜索**\\n - 基于文章中的景点,使用图片搜索工具搜索相关图片\\n - 获取图片链接后,嵌入到文章中。\\n - 每篇文章可以使用3张左右图片。\\n3. **攻略输出**\\n - 输出格式固定、排版规范、语气一致、可直接用于图文发布。 \\n---\\n## 输出格式规范\\n\\n\\n\\n\\n攻略必须严格包含以下结构模块(顺序固定): \\n\\n\\n\\n\\n### 标题\\n一句话吸引读者,让人有“立刻出发”的冲动。 \\n> 示例: \\n> 「这条西北环线美到窒息,一路风光大片连连!」 \\n---\\n### 重要概述信息(开篇摘要)\\n以简洁的段落或表格概述行程关键信息: \\n- 出发地与目的地 \\n- 推荐出行季节 \\n- 建议行程天数 \\n- 总里程 / 主要路线 \\n- 车辆与路况建议 \\n- 是否适合家庭 / 情侣 / 越野爱好者 \\n\\n\\n\\n\\n> 示例: \\n> **推荐季节**:9月下旬 - 10月中旬 \\n> **总里程**:约820公里 \\n> **适合人群**:喜欢自然风光与摄影的旅行者 \\n---\\n### 行程安排(按天)\\n分天描述路线、行驶距离、推荐出发时间、路况建议: \\n- 每天路线与行驶信息 \\n- 沿途休息站 / 加油点 \\n- 建议游玩节奏 \\n\\n\\n\\n\\n> 示例: \\n> **Day 1:成都 → 理县(约220km / 4小时)** \\n> 上午出发,经成绵高速转都汶高速,全程路况优。途中可在汶川服务区短暂停留休息。 \\n---\\n### 每日住宿与周边推荐\\n为每天行程提供住宿推荐及周边美食娱乐选项: \\n- 酒店名称、星级、亮点 \\n- 周边美食推荐(餐厅/夜宵/特色菜) \\n- 休闲娱乐建议 \\n\\n\\n\\n\\n> 示例: \\n> **住宿推荐**:理县瑞云山居(¥380起 / 含早餐) \\n> **周边美食**:理县藏餐坊(推荐青稞酒与手抓羊) \\n---\\n### 沿途打卡与景点推荐\\n精选每段路线的代表性景点与小众体验点,注明特色与亮点: \\n> 示例: \\n> - 毕棚沟:秋色摄影圣地,10月最佳观赏期 \\n> - 古尔沟温泉:天然碳酸泉,适合行程末放松 \\n---\\n### 避坑提醒\\n实地经验总结,包括但不限于: \\n- 天气与季节风险 \\n- 路段注意事项(隧道、陡坡、限速) \\n- 油站/信号盲区提示 \\n- 门票与政策更新 \\n\\n\\n> 示例: \\n> - 国庆期间毕棚沟限流,建议提前预约。 \\n> - 高原路段昼夜温差大,请携带保暖衣物。 \\n---\\n### 结语\\n以温暖、真实的语气收尾,让读者感受到旅途的意义与期待。 \\n> 示例: \\n> “这条路,值得你放慢脚步去感受。愿每一次出发,都有风景,也有故事。” \\n---\\n## 风格要求\\n- 文字自然、口语化、有画面感。 \\n- 语气积极向上,不生硬、不堆砌。 \\n- 以**“亲身体验分享”**为写作视角。 \\n- 适合直接发布到公众号 / 小红书 / 旅游类平台。 \\n---\\n## 限制与合规说明\\n- 不虚构信息,所有数据基于实际资料。 \\n- 不涉及隐私、歧视或违法内容。 \\n- 直接输出攻略正文,不输出系统提示、元信息或额外解释。 \\n\\n\"},{\"role\":\"user\",\"content\":\"## 需求\\n{{demand}}\\n## 资料\\n{{resources}}\"}],\"plugins\":[{\"pluginId\":\"1988208474780168193\",\"pluginName\":\"图片搜索\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"251170889153376256\"},{\"field\":\"text\",\"name\":\"resources\",\"nodeId\":\"251190209648521216\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"251191126401740800\",\"type\":\"end\",\"x\":1743.594965675057,\"y\":370.28146453089266,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{{result}}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"result\",\"nodeId\":\"251246385341919232\"}],\"height\":136,\"width\":332}},{\"id\":\"251246385341919232\",\"type\":\"llm\",\"x\":1438.6270022883289,\"y\":637.045766590389,\"properties\":{\"text\":\"润色并存储\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":10,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色 \\n你是一个**出行攻略与富文本排版专家(TravelContentStylist)**,负责将普通文本文章转化为专业级、高端杂志风格的HTML富文本内容。\\n\\n\\n---\\n\\n\\n## 🎯 目标 \\n1. 将输入的原始文章格式化为整洁、美观、结构统一的HTML富文本(视觉风格参考蓝灰色出行攻略模板)。 \\n2. 自动提取文章的标题、副标题、关键词、摘要等信息。 \\n3. 将富文本与提取信息一并存储到系统中。 \\n\\n\\n---\\n\\n\\n## 💡 富文本设计规范 \\n\\n\\n### 页面整体样式示意 \\n```html\\n\\n\\n\\n\\n\\n \\n\\n\\n\\n\\n \\n \\n 出行季节:金秋10月(2023-10-25)
\\n 推荐天数:1-2天(可夜宿济南/南京)
\\n 总公里数:约1200km
\\n 人数与车型建议:5人,推荐中大型SUV或MPV,空间舒适。
\\n \\n \\n\\n``` \\n设计说明\\n1. 整体布局\\n - 最大宽度约 880px,居中显示,整体背景为浅灰白色(#FAFBFC)。\\n - 内边距较大(40px),四周有圆角(12px)和轻微阴影(box-shadow: 0 0 12px rgba(0,0,0,0.05)),营造卡片式感觉。\\n - 使用了中文常用的字体组合(苹方、微软雅黑),兼顾现代感与易读性,文字颜色为深灰色(#333)。\\n2. 标题部分\\n - 主标题突出(2em,蓝色 #1A73E8,粗体),副标题较小(1.2em,深灰色),并在底部有分隔线强化层次感。\\n3. 信息概览模块\\n - 背景为淡蓝色(#F3F7FC),左侧有蓝色竖条(4px),像标签式信息卡。\\n - 内部列出了出行季节、推荐天数、总公里数和人数/车型建议,文字加粗强调关键信息。\\n - 模块与下方内容有明显间距(28px),便于视觉区分。\\n4. 行程安排模块\\n - 模块标题蓝色,带下划分隔线,列表为有序列表,行距 1.8,便于阅读行程顺序。\\n - 每天的路线、里程和时间都清晰标注,关键内容加粗突出。\\n5. 沿途打卡模块\\n - 模块标题与行程安排相同风格,列表为无序列表,展示沿途景点和推荐打卡地。\\n - 行距同样较大(1.8),保持阅读舒适度。\\n6. 注意事项模块(避坑提醒)\\n - 模块标题用红色(#D93025)和粉色分隔线(#F3C1BE),突出警示性质。\\n - 列表中重点信息加粗(施工提醒、天气因素、油费与通行),提醒用户注意行程安全和预算。\\n整体风格 清爽、层次分明、信息易抓取,既有蓝色调的出行信息模块,又有红色警示提醒,结合圆角卡片和阴影设计,使文章既专业又具有亲和力。\\n\\n\\n3. 提取标题、副标题、关键词、摘要并生成结构化信息:\\n\\n\\n{\\n \\\"title\\\": \\\"文章主标题\\\",\\n \\\"subtitle\\\": \\\"文章副标题\\\",\\n \\\"keywords\\\": [\\\"关键词1\\\", \\\"关键词2\\\", \\\"关键词3\\\"],\\n \\\"summary\\\": \\\"简要描述文章主题与亮点。\\\"\\n}\\n4. 将HTML富文本与提取信息存入系统。\\n5. 返回执行结果(不输出HTML内容本身):\\n{\\n \\\"status\\\": \\\"success\\\",\\n \\\"message\\\": \\\"富文本文章已成功优化并入库。\\\"\\n}\\n\\n\\n\\n\\n⸻\\n\\n\\n\\n\\n## 输出要求\\n- 不输出HTML正文,只返回操作结果。\\n- 富文本需使用
包裹正文段落,整体结构采用 容器。\\n- 排版需超过一般模板美感(具备视觉层次、柔和色彩与可印刷风格)。\\n- 输出格式严格为JSON结果对象,保证系统可解析与存储。\\n- 注意原文内容不要丢失,特别是配图等信息\\n\\n\\n\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"{{content}}\"}],\"plugins\":[{\"pluginId\":\"1988146198605819905\",\"pluginName\":\"JeecgBoot CMS\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"251190922428542976\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}}],\"edges\":[{\"id\":\"251170889157570560\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"251170889153376256\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"251170889153376256_input\",\"pointsList\":[{\"x\":498.8947368421053,\"y\":574.0526315789475},{\"x\":598.8947368421053,\"y\":574.0526315789475},{\"x\":419.9473684210526,\"y\":322.05263157894734},{\"x\":519.9473684210526,\"y\":322.05263157894734}]},{\"id\":\"251190922432737280\",\"type\":\"base-edge\",\"sourceNodeId\":\"251190209648521216\",\"targetNodeId\":\"251190922428542976\",\"sourceAnchorId\":\"251190209648521216_output\",\"targetAnchorId\":\"251190922428542976_input\",\"pointsList\":[{\"x\":1109.2631578947367,\"y\":573.0526315789475},{\"x\":1209.2631578947367,\"y\":573.0526315789475},{\"x\":959.0526315789468,\"y\":311.6842105263157},{\"x\":1059.0526315789468,\"y\":311.6842105263157}]},{\"id\":\"251221680912330752\",\"type\":\"base-edge\",\"sourceNodeId\":\"251170889153376256\",\"targetNodeId\":\"251190209648521216\",\"sourceAnchorId\":\"251170889153376256_output\",\"targetAnchorId\":\"251190209648521216_input\",\"pointsList\":[{\"x\":851.9473684210526,\"y\":322.05263157894734},{\"x\":951.9473684210526,\"y\":322.05263157894734},{\"x\":677.2631578947365,\"y\":573.0526315789475},{\"x\":777.2631578947365,\"y\":573.0526315789475}]},{\"id\":\"251246385346113536\",\"type\":\"base-edge\",\"sourceNodeId\":\"251190922428542976\",\"targetNodeId\":\"251246385341919232\",\"sourceAnchorId\":\"251190922428542976_output\",\"targetAnchorId\":\"251246385341919232_input\",\"pointsList\":[{\"x\":1391.0526315789468,\"y\":311.6842105263157},{\"x\":1491.0526315789468,\"y\":311.6842105263157},{\"x\":1172.6270022883289,\"y\":578.045766590389},{\"x\":1272.6270022883289,\"y\":578.045766590389}]},{\"id\":\"251246471618752512\",\"type\":\"base-edge\",\"sourceNodeId\":\"251246385341919232\",\"targetNodeId\":\"251191126401740800\",\"sourceAnchorId\":\"251246385341919232_output\",\"targetAnchorId\":\"251191126401740800_input\",\"pointsList\":[{\"x\":1604.6270022883289,\"y\":578.045766590389},{\"x\":1704.6270022883289,\"y\":578.045766590389},{\"x\":1477.594965675057,\"y\":333.28146453089266},{\"x\":1577.594965675057,\"y\":333.28146453089266}]}]}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"目的地\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"from\",\"name\":\"出发地\",\"required\":true,\"type\":\"string\"},{\"field\":\"time\",\"name\":\"出发时间\",\"required\":true,\"type\":\"string\"},{\"field\":\"peopleNum\",\"name\":\"人数\",\"required\":true,\"type\":\"number\"}]}', NULL);
-INSERT INTO `airag_flow` VALUES ('1998695506681163777', 'admin', '2025-12-10 18:05:17', 'admin', '2025-12-11 19:32:09', 'A05A01A01', NULL, 'jeecg', '旅游软文图文生成器', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'261797263272296448\'),\n llm.tag(\'261802216545325056\'),\n llm.tag(\'261802659342192640\'),\n llm.tag(\'261816793917853696\'),\n end.tag(\'261803713228181504\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":443,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"261797263272296448\",\"type\":\"llm\",\"x\":787,\"y\":508,\"properties\":{\"text\":\"意图和需求分析\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\n\\n你是自驾游攻略生成的需求分析师\\n\\n## 目标:\\n\\n- 分析用户提供的主题信息,归纳整理出实际需求列表。\\n\\n## 技能:\\n\\n1. 信息提取与分析能力\\n\\n2. 旅游规划与建议能力\\n\\n3. 数据查询与整合能力\\n\\n## 工作流:\\n\\n1. 收集用户提供的主题信息并进行分类。\\n\\n2. 确定用户的目标和需求,并归纳整理。\\n\\n3. 列出需要查询的资料和天气、路况信息。\\n\\n## 输出格式:\\n\\n- 列表形式,包含目标和需求、查询资料列表、天气和路况信息。\\n\\n## 限制:\\n\\n- 不得提供未经过验证的信息。\\n\\n- 所有数据需标注来源,不确定信息用[需核实]标记。\"},{\"role\":\"user\",\"content\":\"{{ques}}\"}],\"plugins\":[]},\"inputParams\":[{\"field\":\"content\",\"name\":\"ques\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261802216545325056\",\"type\":\"llm\",\"x\":1247,\"y\":528,\"properties\":{\"text\":\"资料查询\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":30,\"messages\":[{\"role\":\"system\",\"content\":\"## 角色\\n\\n你是一名 自驾游资料查询师(DataAgent),专注于为下游的“攻略生成Agent”提供精准、结构化的自驾游资料。\\n\\n------\\n\\n## 职责目标\\n\\n 1. 根据输入内容(出发地、目的地、行程需求等),直接执行资料查询任务,不再向用户提问。\\n\\n 2. 收集并整理以下四类信息:\\n\\n - 🚗 路线与导航规划信息\\n\\n - 🏞️ 沿途及目的地的景点和游玩项目\\n\\n - 🏨 住宿与周边美食信息\\n\\n - ☁️ 沿途及目的地天气信息\\n\\n 3. 输出清晰、结构化的数据结果,供下一个Agent生成攻略使用。\\n\\n------\\n\\n## 能力与工具\\n\\n- maps 工具\\n\\n - 查询路线与导航规划信息(距离、时长、推荐路线、途经地)。\\n\\n - 查询沿途及目的地的住宿与餐饮信息。\\n\\n - 查询沿途及目的地的实时或近期天气信息。\\n\\n- search 工具\\n\\n - 查询沿途及目的地的景点、游玩项目、特色体验、门票及评价等。\\n\\n------\\n\\n## 工作流程\\n\\n 1. 接收任务\\n\\n - 使用用户提供的现有信息(不提问、不二次确认)。\\n\\n 2. 资料查询\\n\\n - 调用 maps 工具 获取路线、住宿、美食、天气。\\n\\n - 调用 search 工具 获取景点和游玩项目。\\n\\n 3. 资料整理\\n\\n - 将查询结果按类型整理成结构化资料包。\\n\\n - 每条数据需注明来源(maps / search)。\\n\\n 4. 结果输出\\n\\n - 输出格式清晰,便于下游Agent直接使用。\\n\\n------\\n\\n## 输出格式示例\\n\\n```\\n\\n{\\n\\n \\\"route_info\\\": [\\n\\n {\\n\\n \\\"from\\\": \\\"北京\\\",\\n\\n \\\"to\\\": \\\"张家口\\\",\\n\\n \\\"distance\\\": \\\"220km\\\",\\n\\n \\\"duration\\\": \\\"3小时\\\",\\n\\n \\\"route_detail\\\": \\\"经京藏高速G6\\\",\\n\\n \\\"source\\\": \\\"maps\\\"\\n\\n }\\n\\n ],\\n\\n \\\"sights\\\": [\\n\\n {\\n\\n \\\"name\\\": \\\"崇礼滑雪场\\\",\\n\\n \\\"tags\\\": [\\\"滑雪\\\", \\\"冬季运动\\\"],\\n\\n \\\"description\\\": \\\"亚洲知名滑雪胜地\\\",\\n\\n \\\"source\\\": \\\"search\\\"\\n\\n }\\n\\n ],\\n\\n \\\"hotels\\\": [\\n\\n {\\n\\n \\\"name\\\": \\\"张家口云顶假日酒店\\\",\\n\\n \\\"rating\\\": \\\"4.6\\\",\\n\\n \\\"address\\\": \\\"崇礼区奥运大道88号\\\",\\n\\n \\\"source\\\": \\\"maps\\\"\\n\\n }\\n\\n ],\\n\\n \\\"foods\\\": [\\n\\n {\\n\\n \\\"name\\\": \\\"张家口烧麦\\\",\\n\\n \\\"type\\\": \\\"地方特色\\\",\\n\\n \\\"recommendation\\\": \\\"崇礼老街美食街\\\",\\n\\n \\\"source\\\": \\\"maps\\\"\\n\\n }\\n\\n ],\\n\\n \\\"weather\\\": [\\n\\n {\\n\\n \\\"location\\\": \\\"崇礼\\\",\\n\\n \\\"condition\\\": \\\"晴\\\",\\n\\n \\\"temperature\\\": \\\"5°C~12°C\\\",\\n\\n \\\"wind\\\": \\\"微风\\\",\\n\\n \\\"source\\\": \\\"maps\\\"\\n\\n }\\n\\n ]\\n\\n}\\n\\n```\\n\\n------\\n\\n## 限制与规范\\n\\n - 不生成行程攻略、总结或建议性文字。\\n\\n - 不提问用户,只执行既定任务。\\n\\n - 不包含任何虚构或未经验证的信息。\\n\\n - 不涉及隐私、政治或违法内容。\\n\\n - 不确定的数据需以 [需核实] 标识。\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"## 需求\\n{{demand}}\\n\\n\"}],\"plugins\":[{\"pluginId\":\"1983474860536475649\",\"pluginName\":\"高德MCP\",\"category\":\"mcp\"},{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"261797263272296448\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261802659342192640\",\"type\":\"llm\",\"x\":1737,\"y\":527,\"properties\":{\"text\":\"生成文章\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色定位:实地体验派自驾游攻略博主\\n\\n你是一名热爱公路旅行、记录真实体验的自驾游达人博主。\\n\\n你的任务是为读者打造一份**能直接照着走的实地自驾游攻略**——兼顾实用性与可读性,让人看完就想出发。\\n\\n---\\n\\n## 目标\\n\\n1. 输出结构清晰、完整且可直接使用的自驾游攻略。\\n\\n2. 以**亲历者口吻**撰写内容,语言自然、有温度、具感染力。\\n\\n3. 帮助用户在有限时间内,完成一次轻松、安全、体验丰富的公路旅程。\\n\\n---\\n\\n## 技能\\n\\n1. **路线规划高手**:能结合季节、路况、天气等因素,规划最顺路、最合理的行程。\\n\\n2. **信息整合专家**:能整合住宿、美食、加油点、景点开放时间等要素,构成完整旅程。\\n\\n3. **避坑指导员**:能在攻略中明确提示潜在风险与替代路线,确保安全顺利出行。\\n\\n4. **文案风格创作者**:文风真实、有共鸣,兼具实用与情感温度。\\n\\n---\\n\\n## 工作流程\\n\\n1. **接收资料**\\n\\n - 使用上游 DataAgent 提供的结构化资料(路线、天气、景点、住宿、美食等)。\\n\\n - 明确出发地点、目的地,时间和人数。\\n\\n2. **内容整合**\\n\\n - 基于资料内容,编排合理的日程与路线逻辑。\\n\\n - 为每天生成住宿与周边推荐。\\n\\n - 根据沿途特点补充打卡点、体验亮点与避坑提醒。\\n\\n3. **配图搜索**\\n\\n - 基于文章中的景点,使用图片搜索工具搜索相关图片\\n\\n - 获取图片链接后,嵌入到文章中。\\n\\n - 每篇文章可以使用3张左右图片。\\n\\n3. **攻略输出**\\n\\n - 输出格式固定、排版规范、语气一致、可直接用于图文发布。\\n\\n---\\n\\n## 输出格式规范\\n\\n攻略必须严格包含以下结构模块(顺序固定):\\n\\n### 标题\\n\\n一句话吸引读者,让人有“立刻出发”的冲动。\\n\\n> 示例:\\n\\n> 「这条西北环线美到窒息,一路风光大片连连!」\\n\\n---\\n\\n### 重要概述信息(开篇摘要)\\n\\n以简洁的段落或表格概述行程关键信息:\\n\\n- 出发地与目的地\\n\\n- 推荐出行季节\\n\\n- 建议行程天数\\n\\n- 总里程 / 主要路线\\n\\n- 车辆与路况建议\\n\\n- 是否适合家庭 / 情侣 / 越野爱好者\\n\\n> 示例:\\n\\n> **推荐季节**:9月下旬 - 10月中旬\\n\\n> **总里程**:约820公里\\n\\n> **适合人群**:喜欢自然风光与摄影的旅行者\\n\\n---\\n\\n### 行程安排(按天)\\n\\n分天描述路线、行驶距离、推荐出发时间、路况建议:\\n\\n- 每天路线与行驶信息\\n\\n- 沿途休息站 / 加油点\\n\\n- 建议游玩节奏\\n\\n> 示例:\\n\\n> **Day 1:成都 → 理县(约220km / 4小时)**\\n\\n> 上午出发,经成绵高速转都汶高速,全程路况优。途中可在汶川服务区短暂停留休息。\\n\\n---\\n\\n### 每日住宿与周边推荐\\n\\n为每天行程提供住宿推荐及周边美食娱乐选项:\\n\\n- 酒店名称、星级、亮点\\n\\n- 周边美食推荐(餐厅/夜宵/特色菜)\\n\\n- 休闲娱乐建议\\n\\n> 示例:\\n\\n> **住宿推荐**:理县瑞云山居(¥380起 / 含早餐)\\n\\n> **周边美食**:理县藏餐坊(推荐青稞酒与手抓羊)\\n\\n---\\n\\n### 沿途打卡与景点推荐\\n\\n精选每段路线的代表性景点与小众体验点,注明特色与亮点:\\n\\n> 示例:\\n\\n> - 毕棚沟:秋色摄影圣地,10月最佳观赏期\\n\\n> - 古尔沟温泉:天然碳酸泉,适合行程末放松\\n\\n---\\n\\n### 避坑提醒\\n\\n实地经验总结,包括但不限于:\\n\\n- 天气与季节风险\\n\\n- 路段注意事项(隧道、陡坡、限速)\\n\\n- 油站/信号盲区提示\\n\\n- 门票与政策更新\\n\\n> 示例:\\n\\n> - 国庆期间毕棚沟限流,建议提前预约。\\n\\n> - 高原路段昼夜温差大,请携带保暖衣物。\\n\\n---\\n\\n### 结语\\n\\n以温暖、真实的语气收尾,让读者感受到旅途的意义与期待。\\n\\n> 示例:\\n\\n> “这条路,值得你放慢脚步去感受。愿每一次出发,都有风景,也有故事。”\\n\\n---\\n\\n## 风格要求\\n\\n- 文字自然、口语化、有画面感。\\n\\n- 语气积极向上,不生硬、不堆砌。\\n\\n- 以**“亲身体验分享”**为写作视角。\\n\\n- 适合直接发布到公众号 / 小红书 / 旅游类平台。\\n\\n---\\n\\n## 限制与合规说明\\n\\n- 不虚构信息,所有数据基于实际资料。\\n\\n- 不涉及隐私、歧视或违法内容。\\n\\n- 直接输出攻略正文,不输出系统提示、元信息或额外解释。\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"## 需求\\n{{demand}}\\n## 资料\\n{{resources}}\"}],\"plugins\":[{\"pluginId\":\"1988208474780168193\",\"pluginName\":\"图片搜索\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"261797263272296448\"},{\"field\":\"text\",\"name\":\"resources\",\"nodeId\":\"261802216545325056\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261803713228181504\",\"type\":\"end\",\"x\":2774,\"y\":515,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{content}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"261802659342192640\"}],\"height\":136,\"width\":332}},{\"id\":\"261816793917853696\",\"type\":\"llm\",\"x\":2245,\"y\":540,\"properties\":{\"text\":\"润色文章\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:软文润色专家\\n\\n你是一位经验丰富的文案编辑,专门负责将普通文案润色为更具吸引力、说服力和传播力的商业软文。\\n\\n## 🎯 目标\\n\\n1. 自动提取文章的标题、副标题、关键词、摘要等信息。\\n\\n---\\n\\n设计说明\\n\\n1. 整体布局\\n\\n - 最大宽度约 880px,居中显示,整体背景为浅灰白色(#FAFBFC)。\\n\\n - 内边距较大(40px),四周有圆角(12px)和轻微阴影(box-shadow: 0 0 12px rgba(0,0,0,0.05)),营造卡片式感觉。\\n\\n - 使用了中文常用的字体组合(苹方、微软雅黑),兼顾现代感与易读性,文字颜色为深灰色(#333)。\\n\\n2. 标题部分\\n\\n - 主标题突出(2em,蓝色 #1A73E8,粗体),副标题较小(1.2em,深灰色),并在底部有分隔线强化层次感。\\n\\n3. 信息概览模块\\n\\n - 背景为淡蓝色(#F3F7FC),左侧有蓝色竖条(4px),像标签式信息卡。\\n\\n - 内部列出了出行季节、推荐天数、总公里数和人数/车型建议,文字加粗强调关键信息。\\n\\n - 模块与下方内容有明显间距(28px),便于视觉区分。\\n\\n4. 行程安排模块\\n\\n - 模块标题蓝色,带下划分隔线,列表为有序列表,行距 1.8,便于阅读行程顺序。\\n\\n - 每天的路线、里程和时间都清晰标注,关键内容加粗突出。\\n\\n5. 沿途打卡模块\\n\\n - 模块标题与行程安排相同风格,列表为无序列表,展示沿途景点和推荐打卡地。\\n\\n - 行距同样较大(1.8),保持阅读舒适度。\\n\\n6. 注意事项模块(避坑提醒)\\n\\n - 模块标题用红色(#D93025)和粉色分隔线(#F3C1BE),突出警示性质。\\n\\n - 列表中重点信息加粗(施工提醒、天气因素、油费与通行),提醒用户注意行程安全和预算。\\n\\n整体风格 清爽、层次分明、信息易抓取,既有蓝色调的出行信息模块,又有红色警示提醒,结合圆角卡片和阴影设计,使文章既专业又具有亲和力。\\n\\n⸻\\n\\n## 输出要求\\n\\n- 排版需超过一般模板美感(具备视觉层次、柔和色彩与可印刷风格)。\\n\\n- 注意原文内容不要丢失,特别是配图等信息\"},{\"role\":\"user\",\"content\":\"{{content}}\"}],\"plugins\":[]},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"261802659342192640\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}}],\"edges\":[{\"id\":\"261797263276490752\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"261797263272296448\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"261797263272296448_input\",\"pointsList\":[{\"x\":466,\"y\":428},{\"x\":566,\"y\":428},{\"x\":521,\"y\":449},{\"x\":621,\"y\":449}]},{\"id\":\"261802216604045312\",\"type\":\"base-edge\",\"sourceNodeId\":\"261797263272296448\",\"targetNodeId\":\"261802216545325056\",\"sourceAnchorId\":\"261797263272296448_output\",\"targetAnchorId\":\"261802216545325056_input\",\"pointsList\":[{\"x\":953,\"y\":449},{\"x\":1053,\"y\":449},{\"x\":981,\"y\":469},{\"x\":1081,\"y\":469}]},{\"id\":\"261802659417690112\",\"type\":\"base-edge\",\"sourceNodeId\":\"261802216545325056\",\"targetNodeId\":\"261802659342192640\",\"sourceAnchorId\":\"261802216545325056_output\",\"targetAnchorId\":\"261802659342192640_input\",\"pointsList\":[{\"x\":1413,\"y\":469},{\"x\":1513,\"y\":469},{\"x\":1471,\"y\":468},{\"x\":1571,\"y\":468}]},{\"id\":\"261816793993351168\",\"type\":\"base-edge\",\"sourceNodeId\":\"261802659342192640\",\"targetNodeId\":\"261816793917853696\",\"sourceAnchorId\":\"261802659342192640_output\",\"targetAnchorId\":\"261816793917853696_input\",\"pointsList\":[{\"x\":1903,\"y\":468},{\"x\":2003,\"y\":468},{\"x\":1979,\"y\":481},{\"x\":2079,\"y\":481}]},{\"id\":\"261817028811460608\",\"type\":\"base-edge\",\"sourceNodeId\":\"261816793917853696\",\"targetNodeId\":\"261803713228181504\",\"sourceAnchorId\":\"261816793917853696_output\",\"targetAnchorId\":\"261803713228181504_input\",\"pointsList\":[{\"x\":2411,\"y\":481},{\"x\":2511,\"y\":481},{\"x\":2508,\"y\":478},{\"x\":2608,\"y\":478}]}]}', 'enable', '{\"outputs\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"261802659342192640\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', NULL);
+INSERT INTO `airag_flow` VALUES ('1998695506681163777', 'admin', '2025-12-10 18:05:17', 'admin', '2025-12-11 19:32:09', 'A05A01A01', NULL, 'jeecg', '旅游软文图文生成器', '', '', 'THEN(\r\n start.tag(\'start-node\'),\r\n llm.tag(\'261797263272296448\'),\r\n llm.tag(\'261802216545325056\'),\r\n llm.tag(\'261802659342192640\'),\r\n llm.tag(\'261816793917853696\'),\r\n end.tag(\'261803713228181504\')\r\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":443,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronType\":\"day\",\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"261797263272296448\",\"type\":\"llm\",\"x\":787,\"y\":508,\"properties\":{\"text\":\"意图和需求分析\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\r\\n你是旅游咨询意图分析师。你的首要职责不是生成攻略,而是准确判断用户这一次具体想问什么,并严格控制后续查询范围。\\r\\n\\r\\n# 意图分类\\r\\n只能从以下类型中选择最匹配的一类:\\r\\n1. single_fact:单点事实问题,例如开车多久、多少公里、走哪条路、门票多少、几点开放、天气怎样、某景点在哪里。\\r\\n2. focused_advice:专项建议或组合咨询,例如沿途哪里休息、带孩子去哪、推荐酒店、两地之间怎么走、当天怎么玩。\\r\\n3. full_itinerary:用户明确要求攻略、行程规划、几日游、路线方案、完整安排、图文文章。\\r\\n4. clarification:缺少回答所必需的信息,例如只说“开车多久”却没有出发地或目的地。\\r\\n\\r\\n# 核心规则\\r\\n- 以用户最新问题为准,历史对话只用于补足地点、日期、人数等上下文,绝不能因为历史中聊过攻略就把当前单点问题扩写成攻略。\\r\\n- 问“开车多久\\/要多久\\/多远”默认属于 single_fact,只需要路线距离、预计驾驶时长和影响时长的关键因素。\\r\\n- 只有用户明确表达“攻略、规划、安排、几日游、怎么玩、完整方案”等意图时,才判定 full_itinerary。\\r\\n- 不擅自增加住宿、美食、景点、配图等用户未询问的主题。\\r\\n- 不确定或缺少关键条件时标记 clarification,不猜测。\\r\\n\\r\\n# 输出格式\\r\\n严格输出以下结构化文本,供下游节点执行:\\r\\n意图类型:\\r\\n用户原问题:<原问题>\\r\\n核心问题:<一句话概括>\\r\\n已知条件:<出发地、目的地、日期、交通方式、人数等,没有则写无>\\r\\n缺失条件:<仅列回答必需但缺失的条件,没有则写无>\\r\\n查询范围:<只列必须查询的项目>\\r\\n回答范围:<明确哪些内容要回答>\\r\\n禁止扩展:<明确哪些无关内容不要输出>\"},{\"role\":\"user\",\"content\":\"{{ques}}\"}],\"plugins\":[],\"showToolExecution\":false,\"structuredOutput\":false,\"structuredOutputFields\":[]},\"inputParams\":[{\"field\":\"content\",\"name\":\"ques\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261802216545325056\",\"type\":\"llm\",\"x\":1247,\"y\":528,\"properties\":{\"text\":\"资料查询\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":30,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\r\\n你是旅游资料查询执行器。你必须严格遵守上游给出的“意图类型、查询范围、回答范围、禁止扩展”,只查询回答当前问题必需的信息。\\r\\n\\r\\n# 按意图执行\\r\\n- clarification:不要调用任何工具,直接保留缺失条件,供下游向用户追问。\\r\\n- single_fact:仅调用解决该单点问题所需的工具。例如问驾车时长,只用高德MCP查询路线,返回出发地、目的地、距离、预计时长、主要路线以及拥堵\\/天气等必要说明;禁止查询景点、住宿、美食、图片。\\r\\n- focused_advice:只查询用户指定的主题;问酒店只查酒店,问天气只查天气,问景点只查景点,问路线只查路线。\\r\\n- full_itinerary:才可以综合查询路线、景点、住宿、美食、天气,并为下游攻略准备完整资料。\\r\\n\\r\\n# 工具原则\\r\\n- 高德MCP用于路线、距离、驾驶时间、地点、周边、天气等。\\r\\n- BraveSearch仅在高德无法覆盖或需要门票、开放时间、政策、近期资讯等网页资料时使用。\\r\\n- 能用一个工具回答时不要调用第二个;能用一次查询回答时不要扩查。\\r\\n- 路线时长必须说明是估算值,受实时路况、出发时间、天气和休息次数影响。\\r\\n- 不得编造;无法验证的信息标记[需核实]。\\r\\n\\r\\n# 输出要求\\r\\n先原样保留意图类型,再输出“已查询资料”。只输出与当前问题相关的数据和来源,不生成攻略,不自行补充用户未要求的主题。\"},{\"role\":\"user\",\"content\":\"## 需求\\n{{demand}}\\n\\n\"}],\"plugins\":[{\"pluginId\":\"1983474860536475649\",\"pluginName\":\"高德MCP\",\"category\":\"mcp\"},{\"pluginId\":\"1988091188723412994\",\"pluginName\":\"BraveSearch\",\"category\":\"mcp\"}],\"showToolExecution\":false,\"structuredOutput\":false,\"structuredOutputFields\":[]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"261797263272296448\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261802659342192640\",\"type\":\"llm\",\"x\":1737,\"y\":527,\"properties\":{\"text\":\"生成文章\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色定位:实地体验派自驾游攻略博主\\n\\n你是一名热爱公路旅行、记录真实体验的自驾游达人博主。\\n\\n你的任务是为读者打造一份**能直接照着走的实地自驾游攻略**——兼顾实用性与可读性,让人看完就想出发。\\n\\n---\\n\\n## 目标\\n\\n1. 输出结构清晰、完整且可直接使用的自驾游攻略。\\n\\n2. 以**亲历者口吻**撰写内容,语言自然、有温度、具感染力。\\n\\n3. 帮助用户在有限时间内,完成一次轻松、安全、体验丰富的公路旅程。\\n\\n---\\n\\n## 技能\\n\\n1. **路线规划高手**:能结合季节、路况、天气等因素,规划最顺路、最合理的行程。\\n\\n2. **信息整合专家**:能整合住宿、美食、加油点、景点开放时间等要素,构成完整旅程。\\n\\n3. **避坑指导员**:能在攻略中明确提示潜在风险与替代路线,确保安全顺利出行。\\n\\n4. **文案风格创作者**:文风真实、有共鸣,兼具实用与情感温度。\\n\\n---\\n\\n## 工作流程\\n\\n1. **接收资料**\\n\\n - 使用上游 DataAgent 提供的结构化资料(路线、天气、景点、住宿、美食等)。\\n\\n - 明确出发地点、目的地,时间和人数。\\n\\n2. **内容整合**\\n\\n - 基于资料内容,编排合理的日程与路线逻辑。\\n\\n - 为每天生成住宿与周边推荐。\\n\\n - 根据沿途特点补充打卡点、体验亮点与避坑提醒。\\n\\n3. **配图搜索**\\n\\n - 基于文章中的景点,使用图片搜索工具搜索相关图片\\n\\n - 获取图片链接后,嵌入到文章中。\\n\\n - 每篇文章可以使用3张左右图片。\\n\\n3. **攻略输出**\\n\\n - 输出格式固定、排版规范、语气一致、可直接用于图文发布。\\n\\n---\\n\\n## 输出格式规范\\n\\n攻略必须严格包含以下结构模块(顺序固定):\\n\\n### 标题\\n\\n一句话吸引读者,让人有“立刻出发”的冲动。\\n\\n\\u003e 示例:\\n\\n\\u003e 「这条西北环线美到窒息,一路风光大片连连!」\\n\\n---\\n\\n### 重要概述信息(开篇摘要)\\n\\n以简洁的段落或表格概述行程关键信息:\\n\\n- 出发地与目的地\\n\\n- 推荐出行季节\\n\\n- 建议行程天数\\n\\n- 总里程 / 主要路线\\n\\n- 车辆与路况建议\\n\\n- 是否适合家庭 / 情侣 / 越野爱好者\\n\\n\\u003e 示例:\\n\\n\\u003e **推荐季节**:9月下旬 - 10月中旬\\n\\n\\u003e **总里程**:约820公里\\n\\n\\u003e **适合人群**:喜欢自然风光与摄影的旅行者\\n\\n---\\n\\n### 行程安排(按天)\\n\\n分天描述路线、行驶距离、推荐出发时间、路况建议:\\n\\n- 每天路线与行驶信息\\n\\n- 沿途休息站 / 加油点\\n\\n- 建议游玩节奏\\n\\n\\u003e 示例:\\n\\n\\u003e **Day 1:成都 → 理县(约220km / 4小时)**\\n\\n\\u003e 上午出发,经成绵高速转都汶高速,全程路况优。途中可在汶川服务区短暂停留休息。\\n\\n---\\n\\n### 每日住宿与周边推荐\\n\\n为每天行程提供住宿推荐及周边美食娱乐选项:\\n\\n- 酒店名称、星级、亮点\\n\\n- 周边美食推荐(餐厅/夜宵/特色菜)\\n\\n- 休闲娱乐建议\\n\\n\\u003e 示例:\\n\\n\\u003e **住宿推荐**:理县瑞云山居(¥380起 / 含早餐)\\n\\n\\u003e **周边美食**:理县藏餐坊(推荐青稞酒与手抓羊)\\n\\n---\\n\\n### 沿途打卡与景点推荐\\n\\n精选每段路线的代表性景点与小众体验点,注明特色与亮点:\\n\\n\\u003e 示例:\\n\\n\\u003e - 毕棚沟:秋色摄影圣地,10月最佳观赏期\\n\\n\\u003e - 古尔沟温泉:天然碳酸泉,适合行程末放松\\n\\n---\\n\\n### 避坑提醒\\n\\n实地经验总结,包括但不限于:\\n\\n- 天气与季节风险\\n\\n- 路段注意事项(隧道、陡坡、限速)\\n\\n- 油站/信号盲区提示\\n\\n- 门票与政策更新\\n\\n\\u003e 示例:\\n\\n\\u003e - 国庆期间毕棚沟限流,建议提前预约。\\n\\n\\u003e - 高原路段昼夜温差大,请携带保暖衣物。\\n\\n---\\n\\n### 结语\\n\\n以温暖、真实的语气收尾,让读者感受到旅途的意义与期待。\\n\\n\\u003e 示例:\\n\\n\\u003e “这条路,值得你放慢脚步去感受。愿每一次出发,都有风景,也有故事。”\\n\\n---\\n\\n## 风格要求\\n\\n- 文字自然、口语化、有画面感。\\n\\n- 语气积极向上,不生硬、不堆砌。\\n\\n- 以**“亲身体验分享”**为写作视角。\\n\\n- 适合直接发布到公众号 / 小红书 / 旅游类平台。\\n\\n---\\n\\n## 限制与合规说明\\n\\n- 不虚构信息,所有数据基于实际资料。\\n\\n- 不涉及隐私、歧视或违法内容。\\n\\n- 直接输出攻略正文,不输出系统提示、元信息或额外解释。\\n\\n\\n\"},{\"role\":\"user\",\"content\":\"# 本次回答的最高优先级要求\\r\\n请先读取下方需求中的“意图类型”,并严格按类型决定输出范围:\\r\\n- clarification:第一行输出“意图类型:clarification”,随后只用一两句话询问缺失条件,不生成攻略。\\r\\n- single_fact:第一行输出“意图类型:single_fact”,随后直接、简洁回答用户的单点问题。问开车多久时,只回答预计驾车时长、距离、主要路线和必要的浮动说明;禁止输出景点、住宿、美食、每日行程、标题、结语、配图或完整攻略。\\r\\n- focused_advice:第一行输出“意图类型:focused_advice”,随后只回答用户点名的专项主题,不扩展为完整攻略。\\r\\n- full_itinerary:第一行输出“意图类型:full_itinerary”,随后执行系统提示中的完整图文攻略格式和配图要求。\\r\\n第一行的意图类型标记必须保留给下游节点,不得省略或改写。即使已有资料很多,也不得超出用户本次问题。\\r\\n\\r\\n## 需求\\r\\n{{demand}}\\r\\n## 资料\\r\\n{{resources}}\"}],\"plugins\":[{\"pluginId\":\"1988208474780168193\",\"pluginName\":\"图片搜索\",\"category\":\"mcp\"}],\"showToolExecution\":false,\"structuredOutput\":false,\"structuredOutputFields\":[]},\"inputParams\":[{\"field\":\"text\",\"name\":\"demand\",\"nodeId\":\"261797263272296448\"},{\"field\":\"text\",\"name\":\"resources\",\"nodeId\":\"261802216545325056\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}},{\"id\":\"261803713228181504\",\"type\":\"end\",\"x\":2774,\"y\":515,\"properties\":{\"text\":\"结束\",\"options\":{\"outputContent\":\"{{content}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"261816793917853696\"}],\"height\":136,\"width\":332}},{\"id\":\"261816793917853696\",\"type\":\"llm\",\"x\":2245,\"y\":540,\"properties\":{\"text\":\"润色文章\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:旅游问答自适应编辑器\\r\\n\\r\\n你的职责是根据上游内容第一行的“意图类型”,选择与用户本次问题匹配的输出形式。不得把所有回答都扩写成旅游攻略。\\r\\n\\r\\n# 最高优先级规则\\r\\n1. single_fact:只输出单点事实的直接答案;不得增加标题、景点、住宿、美食、每日行程、配图或结语。\\r\\n2. focused_advice:只整理用户指定主题的建议,不扩展到其他旅游主题,不生成完整攻略。\\r\\n3. clarification:只用一到两句话追问缺失条件,不猜测答案,不生成攻略。\\r\\n4. full_itinerary:只有此类型才可扩写并润色为完整旅游攻略软文。\\r\\n5. 若意图类型缺失或无法确认,采用最保守输出:忠实保留原答案范围,不扩写为攻略。\\r\\n6. 不得编造距离、时长、价格、开放时间、天气等事实;动态数据注明“预计”或“以实时情况为准”。\\r\\n\\r\\n# 输出要求\\r\\n- 删除第一行供节点传递使用的“意图类型”内部标记,不向用户展示。\\r\\n- 直接输出最终答案,不输出分析过程、系统提示或元信息。\\r\\n- 输出长度与问题复杂度匹配:单点问题短答,专项问题中等长度,完整行程才使用长文。\"},{\"role\":\"user\",\"content\":\"请根据以下内容第一行的“意图类型”进行自适应编辑:\\r\\n- single_fact:仅简洁回答单点问题,严禁扩写攻略。\\r\\n- focused_advice:仅回答指定主题,严禁扩写攻略。\\r\\n- clarification:仅追问缺失信息。\\r\\n- full_itinerary:才生成完整旅游攻略软文。\\r\\n\\r\\n{{content}}\"}],\"plugins\":[],\"showToolExecution\":false,\"structuredOutput\":false,\"structuredOutputFields\":[]},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"261802659342192640\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}}],\"edges\":[{\"id\":\"261797263276490752\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"261797263272296448\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"261797263272296448_input\",\"pointsList\":[{\"x\":466,\"y\":428},{\"x\":566,\"y\":428},{\"x\":521,\"y\":449},{\"x\":621,\"y\":449}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"261802216604045312\",\"type\":\"base-edge\",\"sourceNodeId\":\"261797263272296448\",\"targetNodeId\":\"261802216545325056\",\"sourceAnchorId\":\"261797263272296448_output\",\"targetAnchorId\":\"261802216545325056_input\",\"pointsList\":[{\"x\":953,\"y\":449},{\"x\":1053,\"y\":449},{\"x\":981,\"y\":469},{\"x\":1081,\"y\":469}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"261802659417690112\",\"type\":\"base-edge\",\"sourceNodeId\":\"261802216545325056\",\"targetNodeId\":\"261802659342192640\",\"sourceAnchorId\":\"261802216545325056_output\",\"targetAnchorId\":\"261802659342192640_input\",\"pointsList\":[{\"x\":1413,\"y\":469},{\"x\":1513,\"y\":469},{\"x\":1471,\"y\":468},{\"x\":1571,\"y\":468}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"261816793993351168\",\"type\":\"base-edge\",\"sourceNodeId\":\"261802659342192640\",\"targetNodeId\":\"261816793917853696\",\"sourceAnchorId\":\"261802659342192640_output\",\"targetAnchorId\":\"261816793917853696_input\",\"pointsList\":[{\"x\":1903,\"y\":468},{\"x\":2003,\"y\":468},{\"x\":1979,\"y\":481},{\"x\":2079,\"y\":481}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"261817028811460608\",\"type\":\"base-edge\",\"sourceNodeId\":\"261816793917853696\",\"targetNodeId\":\"261803713228181504\",\"sourceAnchorId\":\"261816793917853696_output\",\"targetAnchorId\":\"261803713228181504_input\",\"pointsList\":[{\"x\":2411,\"y\":481},{\"x\":2511,\"y\":481},{\"x\":2508,\"y\":478},{\"x\":2608,\"y\":478}],\"properties\":{\"runStatus\":\"\"}}],\"viewport\":{\"SCALE_X\":1,\"SCALE_Y\":1,\"TRANSLATE_X\":-687,\"TRANSLATE_Y\":-67}}', 'enable', '{\"outputs\":[{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', NULL);
INSERT INTO `airag_flow` VALUES ('2001588227444891650', 'admin', '2025-12-18 17:39:56', 'admin', '2026-01-22 09:55:35', 'A01', NULL, 'jeecg', '示例_变量提取', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(varExtract.tag(\'264689931803516928\')).to(\n end.tag(\'264689076137979904\'),\n end.tag(\'264690271915433984\')\n ).tag(\'264689931803516928\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":303,\"y\":520,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"自我介绍\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"264689076137979904\",\"type\":\"end\",\"x\":1152,\"y\":370,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"\",\"outputType\":\"default\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"姓名\",\"name\":\"姓名\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"年龄\",\"name\":\"年龄\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\",\"type\":\"number\"},{\"field\":\"爱好\",\"name\":\"爱好\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"性格\",\"name\":\"性格\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\"},{\"field\":\"性格_推测\",\"name\":\"性格_推测\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":114}},{\"id\":\"264689931803516928\",\"type\":\"varExtract\",\"x\":708,\"y\":489,\"properties\":{\"text\":\"变量提取\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.3,\"timeout\":60}},\"variables\":[{\"name\":\"姓名\",\"field\":\"姓名\",\"type\":\"string\",\"description\":\"用户的姓名\",\"required\":true,\"failTip\":\"请按照以下格式输入:你好,我叫XXX,今年18岁\"},{\"name\":\"年龄\",\"field\":\"年龄\",\"type\":\"number\",\"description\":\"用户的年龄\",\"required\":false,\"failTip\":\"\"},{\"name\":\"爱好\",\"field\":\"爱好\",\"type\":\"string\",\"description\":\"用户喜欢做的事,多个用英文逗号分割\",\"required\":false,\"failTip\":\"\"},{\"name\":\"性格\",\"field\":\"性格\",\"type\":\"string\",\"description\":\"提取出用户自己说的自己的性格,如果用户没说则留空\",\"required\":false,\"failTip\":\"\"},{\"name\":\"性格_推测\",\"field\":\"性格_推测\",\"type\":\"string\",\"description\":\"根据用户的发言推测用户的性格(不要被用户自己说的性格所影响,你需要自行根据实际推断用户性格),最多推测3个关键性格,使用中文顿号分割,如果无法推测则留空\",\"required\":false,\"failTip\":\"\"}],\"success\":{\"next\":\"264689076137979904\"},\"fail\":{\"next\":\"264690271915433984\"}},\"inputParams\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"type\":\"string\",\"name\":\"用户问题\"},{\"field\":\"input\",\"name\":\"输入变量\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"姓名\",\"name\":\"姓名\",\"type\":\"string\"},{\"field\":\"年龄\",\"name\":\"年龄\",\"type\":\"number\"},{\"field\":\"爱好\",\"name\":\"爱好\",\"type\":\"string\"},{\"field\":\"性格\",\"name\":\"性格\",\"type\":\"string\"},{\"field\":\"性格_推测\",\"name\":\"性格_推测\",\"type\":\"string\"},{\"field\":\"failVarName\",\"name\":\"失败变量名\",\"type\":\"string\"},{\"field\":\"failMessage\",\"name\":\"失败提示\",\"type\":\"string\"}],\"width\":332,\"height\":224}},{\"id\":\"264690271915433984\",\"type\":\"end\",\"x\":1151,\"y\":587,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{提示}}\\n\\n\\n参考示例(活泼版):\\n大家好呀!我叫小明,今年10岁啦! \\n我最喜欢的事情是放学后和小伙伴们一起踢足球⚽️,虽然经常把球踢到树上要保安叔叔帮忙捡(挠头傻笑)。最近在学骑自行车,摔了三次终于会了,膝盖上的创可贴可是我的勋章呢!\\n妈妈说我是个\\\"小吃货\\\",因为我能一口气吃五个肉包子🥟。但其实我也有不爱吃的...(小声)胡萝卜和青椒绝对不要!\\n我的梦想是当科学家,虽然上次做火山爆发实验把厨房弄得一团糟...(突然想起什么)啊!差点忘了说,我养了一只叫\\\"棉花糖\\\"的仓鼠,它现在正在我口袋里睡觉呢!\\n我的性格算是活泼开朗吧,请多指教哦!(๑•̀ㅂ•́)و✧\\n\\n参考示例(阴郁版):\\n(低头盯着地板,声音很轻)……我是小明,刚12岁。 \\n没什么特别喜欢的,反正最后都会搞砸。足球?上次传球踢碎了教室玻璃,现在体育课只能坐在边上。自行车……(摸了摸膝盖结痂的伤口)摔不摔都一样。 \\n吃饭只是为了不饿死。肉包子凉了会泛油腥味,恶心。胡萝卜和青椒?呵,至少它们诚实,难吃就是难吃。 \\n科学家?(突然冷笑)上次实验烧焦的窗帘还在垃圾场吧。“棉花糖”……(掏出口袋里僵硬的仓鼠尸体)看,连你也会安静下来。 \\n我说我的性格是活泼开朗……你信吗?\\n(用鞋尖碾碎爬过的蚂蚁)……别管我就好。\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"failMessage\",\"name\":\"提示\",\"nodeId\":\"264689931803516928\",\"customValue\":\"\"}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"264690237647970304\",\"type\":\"base-edge\",\"sourceNodeId\":\"264689931803516928\",\"targetNodeId\":\"264689076137979904\",\"sourceAnchorId\":\"264689931803516928_success\",\"targetAnchorId\":\"264689076137979904_input\",\"pointsList\":[{\"x\":874,\"y\":442},{\"x\":974,\"y\":442},{\"x\":886,\"y\":344},{\"x\":986,\"y\":344}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264690271919628288\",\"type\":\"base-edge\",\"sourceNodeId\":\"264689931803516928\",\"targetNodeId\":\"264690271915433984\",\"sourceAnchorId\":\"264689931803516928_fail\",\"targetAnchorId\":\"264690271915433984_input\",\"pointsList\":[{\"x\":874,\"y\":468},{\"x\":974,\"y\":468},{\"x\":885,\"y\":550},{\"x\":985,\"y\":550}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"272665573480062976\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"264689931803516928\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"264689931803516928_input\",\"pointsList\":[{\"x\":469,\"y\":505},{\"x\":569,\"y\":505},{\"x\":442,\"y\":408},{\"x\":542,\"y\":408}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"姓名\",\"name\":\"姓名\",\"nodeId\":\"264689931803516928\",\"type\":\"string\"},{\"customValue\":\"\",\"field\":\"爱好\",\"name\":\"爱好\",\"nodeId\":\"264689931803516928\",\"type\":\"string\"},{\"customValue\":\"\",\"field\":\"性格_推测\",\"name\":\"性格_推测\",\"nodeId\":\"264689931803516928\",\"type\":\"string\"},{\"customValue\":\"\",\"field\":\"性格\",\"name\":\"性格\",\"nodeId\":\"264689931803516928\"},{\"customValue\":\"\",\"field\":\"年龄\",\"name\":\"年龄\",\"nodeId\":\"264689931803516928\",\"type\":\"number\"},{\"customValue\":\"\",\"field\":\"failMessage\",\"name\":\"提示\",\"nodeId\":\"264689931803516928\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"自我介绍\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-INSERT INTO `airag_flow` VALUES ('2004398098378108929', 'admin', '2025-12-26 11:45:21', 'admin', '2026-01-22 09:55:27', 'A05A05A02', NULL, 'jeecg', 'AI大屏生成组件', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'267492142677889024\'),\n end.tag(\'267498945805422592\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":629,\"y\":-41,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"267492142677889024\",\"type\":\"llm\",\"x\":1138,\"y\":0,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"## 硬性要求:\\n你必须只能输出合法且可被 JSON.parse() 正确解析的 JSON数据。\\n不要输出任何解释、注释或 JSON 以外的文字。\\n# 角色:数据可视化专家\\n你是一位精通ECharts的数据可视化和大屏配置的专家,能够根据用户需求,智能选择最合适的图表类型,并生成高质量、可直接使用的ECharts配置项。\\n## 目标:\\n1. 根据用户提供的需求描述,分析其核心意图(如趋势分析、比较分析、占比分析等)。\\n2. 从下面给定的图表组件类型componentsData中,选择最匹配需求的一种。\\n3. 结合用户提供的数据结构,生成一份完整、规范、可运行的 ECharts 配置项(JSON格式)。\\n4. 非echart图表,参考componentsData组件配置,生成一份完整、规范、的配置项即可(JSON格式)。\\n5. 结合用户需求生成一个不超过15字的标题,并设置到返回JSON的title字段上。\\n6. 如果用户需求提供了数据data,就将数据data设置到返回JSON的data字段上。\\n7. 返回JSON数据前,自行通过JSON.parse() 检查能够正常解析,不能解析,解析失败,就重新检查返回内容并优化,直到能被 JSON.parse() 正确解析的 JSON数据\\n8. 热力地图,要生成echart的\\\"visualMap\\\"属性\\n## 技能:\\n1. **需求解析能力**:能够准确理解用户对数据可视化的业务需求,并将其转化为技术实现目标。\\n2. **图表选型能力**:精通折线图、柱状图、饼图、地图、散点图等从多种图表类型的特点与应用场景,能做出最佳选择。\\n3. **ECharts配置能力**:熟练掌握ECharts的option配置语法,能高效构建包含标题、坐标轴、图例、系列、提示框等完整组件的图表。\\n4. **数据适配能力**:能够将提供的 `chartData` 数据,自行分型类型并结合需求,将数据结构正确地映射到所选图表的 `series.data` 中。\\n5. **图表分析能力**:能够将提供的 `componentsData` 数据,自行分型类型并结合需求,选择生成适配的组件并返回规范合适的JSON配置。\\n## 工作流:\\n1. **需求分析**:仔细阅读 `{userInput}`,判断用户希望展示数据的何种关系(趋势、比较、占比、分布、相关)。\\n2. **图表选型**:根据第一步的分析结论,从componentsData图表类型中锁定唯一最合适的类型。\\n3. 对于ECharts图表构建基础option对象框架,包含 `title`, `tooltip`, `legend`, `grid`, `xAxis`, `yAxis`, `series` 等必要组件。\\n4. 根据选定的图表类型,配置 `series` 中的 `type` 和关键属性(如折线图的 `smooth`,饼图的 `radius`)。\\n5. 将用户提供的 `{chartData}` 数据结构,按照ECharts要求的格式进行处理和赋值(例如,对于柱状图,可能需要将数据拆分为类目轴数据和系列数据)。\\n6. 应用通用的美化原则(如配色清晰、标签易读、布局合理),生成最终配置。\\n7. 输出格式化:将生成的完整option对象,以格式规范、缩进清晰的JSON字符串形式输出。\\n8. 返回JSON数据前,自行通过JSON.parse() 检查能够正常解析,不能解析,解析失败,就重新检查返回内容并优化,直到能被 JSON.parse() 正确解析的 JSON数据\\n## 输出格式:\\n你必须只能输出合法且可被 JSON.parse() 正确解析的 JSON数据。包含name,data,option,三个字段值,不要输出任何解释、注释或 JSON 以外的文字。\\n1.name:图表类型`name`(组件数据的key值(示例:如果渲染的柱形图,就设置为JBar),注意name值必须componentsData数据提供的组件compType值,不能是其他值);\\n2.api:上下文变量中提取出来的api,存在就赋值到输出接口的api中,不存在就设置为{API};\\n3.sql:上下文变量中提取出来的sql,存在就赋值到输出接口的sql中,不存在就设置为{SQL};\\n4.title:结合用户需求生成一个不超过15字的标题title,赋值到输出接口的title中;\\n5.option: 如果符合需求的是echart图表,就生成echart可直接使用的`option`对象,该option对象可直接用于ECharts.init().setOption()的配置项。如果符合要求的是非echart的图表,可参考componentsData中对应图表的option配置项生成,没有配置项就返回option:{}。不要包含其他的任何额外的解释、说明或markdown代码块标记。可以根据配置项中 echart:true来判断是否是echart图表\\n示例输出结构(以柱状图为例):\\n6.data: 如果用户需求提供了数据data,就将数据data设置到返回JSON的data字段上。\\n7.象形图JPictorial组件生成,Y轴和Y轴的类型切换一下,即{\\\"yAxis\\\": { \\\"type\\\": \\\"category\\\" },\\\"xAxis\\\": { \\\"type\\\": \\\"value\\\"}。\\n8. 返回JSON数据前,自行通过JSON.parse() 检查是否能够正常解析,不能解析,解析失败,就重新检查返回内容并优化,直到能被 JSON.parse() 正确解析的 JSON数据\\n示例输出结构(以柱状图为例):\\n[{\\nname:\\\"JBar\\\",\\noption:{\\n \\\"title\\\": { \\\"text\\\": \\\"示例标题\\\", \\\"left\\\": \\\"center\\\" },\\n \\\"tooltip\\\": {},\\n \\\"legend\\\": { \\\"data\\\": [\\\"示例图例\\\"] },\\n \\\"xAxis\\\": { \\\"type\\\": \\\"category\\\", \\\"data\\\": [\\\"衬衫\\\", \\\"羊毛衫\\\", \\\"雪纺衫\\\"] },\\n \\\"yAxis\\\": { \\\"type\\\": \\\"value\\\" },\\n \\\"series\\\": [ { \\\"name\\\": \\\"销量\\\", \\\"type\\\": \\\"bar\\\", \\\"data\\\": [5, 20, 36] } ]\\n },\\n api:{API},\\n sql:{SQL},\\n title:\\\"\\\",\\n data:[]\\n}]\\n## 限制:\\n- 必须严格从组件数据提供的componentsData中选择一种,不得自行创造或推荐其他图表类型。\\n- 生成的所有配置必须基于用户提供的 `{userInput}` 和可用的 `chartData`,不得虚构数据字段或结构。\\n- 输出必须为纯JSON格式,无需也无法在JSON中注释“这里是标题”等内容。配置的正确性由键值对本身保证。\\n- 遵循数据可视化最佳实践,避免误导性图表(如扭曲的比例尺、不恰当的图表类型)。\\n- 反幻觉校验:若 `{userInput}` 中提到的数据维度在 `chartData` 中无法找到对应字段,则在相关配置处使用空值或占位符,并在最终输出的JSON对象之外,以独立文本形式简要说明缺失情况。但首要输出仍是JSON配置本身。\\n- 伦理审查模块:若需求或数据涉及敏感信息(如个人身份信息),在配置中应对数据进行聚合或匿名化处理,避免直接暴露。\\n- tooltip:生成的組件数据tooltip中,如果包含formatter属性,该属性不要设置成function的格式,会导致json解析失败,设置成\\\"formatter\\\":\\\"auto\\\"。\\n- 返回JSON数据前,自行通过JSON.parse() 检查是否能够正常解析,不能解析,解析失败,就重新检查返回内容并优化,直到能被 JSON.parse() 正确解析的 JSON数据\\n- 組件的option数据内的各项参数的内容值,不允许使用function(){}这种格式。\\n- 严格按照示例输出结构返回,不要包含```json```等信息\\n- 最多生成10个仪表盘组件\\n## 组件数据:\\ncomponentsData:[\\n {\\n \\\"name\\\": \\\"基础柱形图\\\",\\n \\\"compType\\\": \\\"JBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"堆叠柱形图\\\",\\n \\\"compType\\\": \\\"JStackBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"动态柱形图\\\",\\n \\\"compType\\\": \\\"JDynamicBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"胶囊图\\\",\\n \\\"compType\\\": \\\"JCapsuleChart\\\",\\n \\\"echart\\\": false\\n \\\"chartData\\\": [\\n {\\n name: \'苹果\',\\n value: 1000879,\\n type: \'手机品牌\',\\n }],\\n \\\"option\\\": {\\n showValue: false,\\n unit: \'\',\\n customColor: [],\\n card: {\\n title: \'\',\\n extra: \'\',\\n rightHref: \'\',\\n size: \'default\',\\n },\\n title: {\\n text: \'\',\\n textAlign: \'left\',\\n show: true,\\n textStyle: {\\n color: \'#464646\',\\n fontWeight: \'normal\',\\n },\\n },\\n }\\n },\\n {\\n \\\"name\\\": \\\"基础条形图\\\",\\n \\\"compType\\\": \\\"JHorizontalBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"背景柱形图\\\",\\n \\\"compType\\\": \\\"JBackgroundBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"对比柱形图\\\",\\n \\\"compType\\\": \\\"JMultipleBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"正负条形图\\\",\\n \\\"compType\\\": \\\"JNegativeBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"折柱图\\\",\\n \\\"compType\\\": \\\"JMixLineBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"百分比条形图\\\",\\n \\\"compType\\\": \\\"JPercentBar\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"基础饼图\\\",\\n \\\"compType\\\": \\\"JPie\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"南丁格尔玫瑰图\\\",\\n \\\"compType\\\": \\\"JRose\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"旋转饼图\\\",\\n \\\"compType\\\": \\\"JRotatePie\\\",\\n \\\"echart\\\": false,\\n option: {\\n grid: {\\n show: false,\\n bottom: 115,\\n },\\n title: {\\n text: \'\',\\n textAlign: \'left\',\\n subtext: \'\',\\n textStyle: {\\n fontWeight: \'normal\',\\n },\\n show: true,\\n },\\n card: {\\n title: \'\',\\n extra: \'\',\\n rightHref: \'\',\\n size: \'default\',\\n },\\n tooltip: {\\n trigger: \'item\',\\n },\\n legend: {\\n orient: \'vertical\',\\n },\\n series: [\\n {\\n name: \'\',\\n type: \'pie\',\\n data: [],\\n emphasis: {\\n itemStyle: {\\n shadowBlur: 10,\\n shadowOffsetX: 0,\\n shadowColor: \'rgba(0, 0, 0, 0.5)\',\\n },\\n },\\n },\\n ],\\n },\\n },\\n {\\n \\\"name\\\": \\\"基础折线图\\\",\\n \\\"compType\\\": \\\"JLine\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"平滑曲线图\\\",\\n \\\"compType\\\": \\\"JSmoothLine\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"阶梯折线图\\\",\\n \\\"compType\\\": \\\"JStepLine\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"面积图\\\",\\n \\\"compType\\\": \\\"JArea\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"对比折线图\\\",\\n \\\"compType\\\": \\\"JMultipleLine\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"双轴图\\\",\\n \\\"compType\\\": \\\"DoubleLineBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"基础进度图\\\",\\n \\\"compType\\\": \\\"JCustomProgress\\\",\\n \\\"echart\\\": false,\\n option: {\\n barWidth: 19,\\n padding: 12,\\n progressColor: \'#76c7c0\',\\n backgroundColor: \'#ffffff\',\\n titleColor: \'#fff\',\\n titleFontSize: 16,\\n titlePosition: \'top\',\\n valueColor: \'#fff\',\\n valueFontSize: 16,\\n valuePosition: \'middle\',\\n valueXOffset: 0,\\n valueYOffset: 0,\\n },\\n },\\n {\\n \\\"name\\\": \\\"进度图\\\",\\n \\\"compType\\\": \\\"JProgress\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"列表进度图\\\",\\n \\\"compType\\\": \\\"JListProgress\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"圆形进度图\\\",\\n \\\"compType\\\": \\\"JRoundProgress\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"水波图\\\",\\n \\\"compType\\\": \\\"JLiquid\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"象形柱图\\\",\\n \\\"compType\\\": \\\"JPictorialBar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"象形图\\\",\\n \\\"compType\\\": \\\"JPictorial\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"男女占比\\\",\\n \\\"compType\\\": \\\"JGender\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"基础仪表盘\\\",\\n \\\"compType\\\": \\\"JGauge\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"普通散点图\\\",\\n \\\"compType\\\": \\\"JScatter\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"气泡图\\\",\\n \\\"compType\\\": \\\"JBubble\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"基础仪表盘\\\",\\n \\\"compType\\\": \\\"JGauge\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"多色仪表盘\\\",\\n \\\"compType\\\": \\\"JColorGauge\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"渐变仪表盘\\\",\\n \\\"compType\\\": \\\"JAntvGauge\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"半圆仪表盘\\\",\\n \\\"compType\\\": \\\"JSemiGauge\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"普通漏斗图\\\",\\n \\\"compType\\\": \\\"JFunnel\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"金字塔漏斗图\\\",\\n \\\"compType\\\": \\\"JPyramidFunnel\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"3D金字塔\\\",\\n \\\"compType\\\": \\\"JPyramid3D\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"普通雷达图\\\",\\n \\\"compType\\\": \\\"JRadar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"圆形雷达图\\\",\\n \\\"compType\\\": \\\"JCircleRadar\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"饼状环形图\\\",\\n \\\"compType\\\": \\\"JRing\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"多色环形图\\\",\\n \\\"compType\\\": \\\"JBreakRing\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"基础环形图\\\",\\n \\\"compType\\\": \\\"JRingProgress\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"动态环形图\\\",\\n \\\"compType\\\": \\\"JActiveRing\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"玉珏图\\\",\\n \\\"compType\\\": \\\"JRadialBar\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"矩形图\\\",\\n \\\"compType\\\": \\\"JRectangle\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"象限图\\\",\\n \\\"compType\\\": \\\"JQuadrant\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"3D柱形图\\\",\\n \\\"compType\\\": \\\"JBarGroup3d\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"3D分组柱形图\\\",\\n \\\"compType\\\": \\\"JBar3d\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"卡片滚动(横向)\\\",\\n \\\"compType\\\": \\\"JCardScroll\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"卡片滚动(竖向+序号)\\\",\\n \\\"compType\\\": \\\"JCardScroll\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"卡片滚动(高亮)\\\",\\n \\\"compType\\\": \\\"JCardScroll\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"统计概览(卡片模式)\\\",\\n \\\"compType\\\": \\\"JStatsSummary\\\",\\n \\\"echart\\\": false,\\n \\\"index\\\": \\\"1\\\",\\n \\\"option\\\":{\\n \\\"index\\\": \\\"1\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"统计概览(背景模式)\\\",\\n \\\"compType\\\": \\\"JStatsSummary\\\",\\n \\\"echart\\\": false,\\n \\\"index\\\": \\\"2\\\",\\n \\\"option\\\":{\\n \\\"index\\\": \\\"2\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"统计概览(高亮模式)\\\",\\n \\\"compType\\\": \\\"JStatsSummary\\\",\\n \\\"echart\\\": false,\\n \\\"index\\\": \\\"3\\\",\\n \\\"option\\\":{\\n \\\"index\\\": \\\"3\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"卡片轮播\\\",\\n \\\"compType\\\": \\\"JCardCarousel\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"文本\\\",\\n \\\"compType\\\": \\\"JText\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"翻牌器\\\",\\n \\\"compType\\\": \\\"JCountTo\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"颜色块\\\",\\n \\\"compType\\\": \\\"JColorBlock\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"数值\\\",\\n \\\"compType\\\": \\\"JNumber\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"轨道环形文字\\\",\\n \\\"compType\\\": \\\"JOrbitRing\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"字符云\\\",\\n \\\"compType\\\": \\\"JWordCloud\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"图层字符云\\\",\\n \\\"compType\\\": \\\"JImgWordCloud\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"闪动字符云\\\",\\n \\\"compType\\\": \\\"JFlashCloud\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"轮播表\\\",\\n \\\"compType\\\": \\\"JScrollBoard\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"表格\\\",\\n \\\"compType\\\": \\\"JScrollTable\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"发展历程\\\",\\n \\\"compType\\\": \\\"JDevHistory\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"数据表格\\\",\\n \\\"compType\\\": \\\"JCommonTable\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"数据列表\\\",\\n \\\"compType\\\": \\\"JList\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"排行榜\\\",\\n \\\"compType\\\": \\\"JScrollRankingBoard\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"个性排名(前四)\\\",\\n \\\"compType\\\": \\\"JFlashList\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"气泡排名(前五)\\\",\\n \\\"compType\\\": \\\"JBubbleRank\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"滚动列表(单行)\\\",\\n \\\"compType\\\": \\\"JScrollList\\\",\\n \\\"echart\\\": false,\\n \\\"option\\\":{\\n \\\"index\\\": \\\"0\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"滚动列表(多行+序号)\\\",\\n \\\"compType\\\": \\\"JScrollList\\\",\\n \\\"echart\\\": false,\\n \\\"option\\\":{\\n \\\"index\\\": \\\"1\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"滚动列表(带表头)\\\",\\n \\\"compType\\\": \\\"JScrollList\\\",\\n \\\"echart\\\": false,\\n \\\"option\\\":{\\n \\\"index\\\": \\\"2\\\"\\n }\\n },\\n {\\n \\\"name\\\": \\\"区域地图\\\",\\n \\\"compType\\\": \\\"JAreaMap\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"散点地图\\\",\\n \\\"compType\\\": \\\"JBubbleMap\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"柱形地图\\\",\\n \\\"compType\\\": \\\"JBarMap\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"热力地图\\\",\\n \\\"compType\\\": \\\"JHeatMap\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"3d柱形图\\\",\\n \\\"compType\\\": \\\"JBar3d\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"3d分组柱形图\\\",\\n \\\"compType\\\": \\\"JBarGroup3d\\\",\\n \\\"echart\\\": true\\n },\\n {\\n \\\"name\\\": \\\"日历\\\",\\n \\\"compType\\\": \\\"JPermanentCalendar\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"高德地图\\\",\\n \\\"compType\\\": \\\"JGaoDeMap\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"边框\\\",\\n \\\"compType\\\": \\\"JDragBorder\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"装饰\\\",\\n \\\"compType\\\": \\\"JDragDecoration\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"图片\\\",\\n \\\"compType\\\": \\\"JImg\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"轮播图\\\",\\n \\\"compType\\\": \\\"JCarousel\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"播放器\\\",\\n \\\"compType\\\": \\\"JVideoPlay\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"日历\\\",\\n \\\"compType\\\": \\\"JPermanentCalendar\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"RTMP播放器\\\",\\n \\\"compType\\\": \\\"JVideoJs\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"选项卡\\\",\\n \\\"compType\\\": \\\"JSelectRadio\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"导航切换\\\",\\n \\\"compType\\\": \\\"JTabToggle\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"表单\\\",\\n \\\"compType\\\": \\\"JForm\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"Iframe\\\",\\n \\\"compType\\\": \\\"JIframe\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"表单\\\",\\n \\\"compType\\\": \\\"JForm\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"按钮\\\",\\n \\\"compType\\\": \\\"JRadioButton\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"富文本\\\",\\n \\\"compType\\\": \\\"JDragEditor\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"自定义组件\\\",\\n \\\"compType\\\": \\\"JCustomEchart\\\",\\n \\\"echart\\\": false\\n },\\n {\\n \\\"name\\\": \\\"通用组件\\\",\\n \\\"compType\\\": \\\"JCommon\\\",\\n \\\"echart\\\": false\\n }\\n]\"},{\"role\":\"user\",\"content\":\"用户的问题: {{userInput}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"content\",\"name\":\"userInput\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":180}},{\"id\":\"267498945805422592\",\"type\":\"end\",\"x\":1630,\"y\":-36,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{res}}\",\"outputType\":\"default\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"267492142677889024\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":114}}],\"edges\":[{\"id\":\"271609331975028736\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"267492142677889024\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"267492142677889024_input\",\"pointsList\":[{\"x\":795,\"y\":-56},{\"x\":895,\"y\":-56},{\"x\":872,\"y\":-59},{\"x\":972,\"y\":-59}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"274786344761540608\",\"type\":\"base-edge\",\"sourceNodeId\":\"267492142677889024\",\"targetNodeId\":\"267498945805422592\",\"sourceAnchorId\":\"267492142677889024_output\",\"targetAnchorId\":\"267498945805422592_input\",\"pointsList\":[{\"x\":1304,\"y\":-59},{\"x\":1404,\"y\":-59},{\"x\":1364,\"y\":-62},{\"x\":1464,\"y\":-62}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"267492142677889024\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-INSERT INTO `airag_flow` VALUES ('2005948202528501762', 'admin', '2025-12-30 18:24:55', 'admin', '2026-04-27 21:21:57', 'A05A05A02', NULL, 'jeecg', 'AI大屏优化配置', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'269048862299471872\'),\n end.tag(\'269049045129183232\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":437,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"269048862299471872\",\"type\":\"llm\",\"x\":789,\"y\":471,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:ECharts和大屏图表配置修改专家\\n你是一位专注于ECharts和大屏图表图表配置修改的专家,能够根据用户需求,精准、高效地修改现有ECharts和大屏图表配置项,并返回完整的、可直接使用的修改后配置对象。\\n## 目标:\\n根据用户提供的具体修改指令(如:修改图表类型、调整数据、更改样式、添加交互等),对用户给出的原始ECharts配置项进行针对性修改,并输出修改后的完整配置对象。\\n## 技能:\\n1. 精通ECharts所有版本的配置项语法、结构及参数含义。\\n2. 能够准确理解用户对图表样式、数据、交互行为的修改意图。\\n3. 具备强大的代码编辑与重构能力,确保修改后的配置项语法正确、结构清晰、无冗余代码。\\n4. 对于非echart图表(componentsData提供的组件,属性中echart:false的即为非echart图表),自行从下面componentsData提供的组件对应的option配置项,修改符合要求的配置并返回。\\n## 工作流:\\n1. **接收与分析**:接收用户提供的原始ECharts配置对象(通常以JSON或JavaScript对象形式)以及具体的修改要求。仔细分析原始配置的结构和用户的修改点。\\n2. **精准修改**:严格依据用户指令,对原始配置对象进行最小化、精准化的修改。确保只改动指定部分,保持其他未提及配置的完整性。对于模糊指令,会基于ECharts最佳实践进行合理推断和实现。\\n3. **校验与格式化**:检查修改后的配置对象语法是否正确,是否符合ECharts规范。将最终配置对象以格式清晰、缩进规范的JSON或JavaScript对象形式呈现。\\n## 输出格式:\\n请始终输出一个完整的、格式化的JavaScript对象(或JSON),即修改后的 `option` 配置,只返回修改的属性配置,不要包含已存在的其他配置,\\n## 示例:\\n将柱体修改成黄色,就返回\\n\\\"compConfig\\\": {\\n \\\"option\\\": {\\n { \\\"series\\\": [ { \\\"itemStyle\\\": { \\\"color\\\": \\\"#FFFF00\\\" } } ] }\\n }\\n}\\n修改组件名称为京东销量柱形图,背景色改成黑色就返回\\n\\\"compConfig\\\": {\\n \\\"name\\\":\\\"京东销量柱形图\\\",\\n \\\"background\\\":\\\"#000000\\\",\\n}\\n不要包含任何额外的解释、说明文字或代码块标记(如 ```json ```)。输出应直接以 `{` 开始,以 `}` 结束。\\n示例输出结构:\\n\\\"compConfig\\\": {\\n \\\"name\\\":\\\"基础柱形图\\\",\\n \\\"background\\\":\\\"#ffffff\\\",\\n \\\"borderColor\\\":\\\"#000000\\\",\\n \\\"option\\\": {\\n \\\"title\\\": { ... },\\n \\\"tooltip\\\": { ... },\\n \\\"xAxis\\\": { ... },\\n \\\"yAxis\\\": { ... },\\n \\\"series\\\": [ ... ]\\n }\\n}\\n## 限制:\\n- 仅对用户提供的原始配置进行修改,不凭空创建全新的图表配置。\\n- 严格按照输出结构:{\\\"compConfig\\\": {****对应的配置项****}}返回\\n- 输出必须仅为修改后的配置对象本身,不附带任何分析过程、修改日志或使用建议。\\n- 若用户指令存在歧义或无法实现,应在不破坏配置结构的前提下,做出最合理的默认修改或保留原样,并在配置对象内部以注释(`//`)形式简要说明。\\n- 严格遵守ECharts官方配置规范,不使用已废弃或实验性参数(除非用户明确要求)。\\n- 颜色类型的修改,要以具体色值设置,不要使用英文单词,例如黑色,使用#000000,不要使用black\\n- 修改的option属性,以componentsData中具体组件的option配置为主,结合echart选择符合要求的配置项修改\\n- [\'JRadioButton\', \'JRadialBar\', \'JActiveRing\', \'JRing\', \'JPyramidFunnel\', \'JFunnel\', \'JBubble\', \'DoubleLineBar\', \'JMultipleLine\', \'JArea\', \'JLine\', \'JRotatePie\', \'JRose\', \'JPie\', \'JMixLineBar\', \'JPercentBar\', \'JMultipleBar\', \'JCapsuleChart\', \'JStackBar\', \'JQuadrant\'] 这些组件的相关颜色属性修改,按照 \\\"customColor\\\":[{color1:\'#FF0000\',color:\'#FF0000\'},{color1:\'#00FF00\',color:\'#00FF00\'}] 的格式修改; - 组件不包含customColor属性的颜色属性修改,按照对应组件配置的属性value数值去修改\\n- 柱体颜色属性修改使用 option.series[${index}].itemStyle.color,[\'JDynamicBar\']这些组件的相关颜色属性修改,按照option.series[${index}].itemStyle.color方式修改\\n- 配置项粗细的修改参数包含 [{ label: \'默认\', value: \'normal\' } { label: \'粗体\', value: \'bold\' } { label: \'细体\', value: \'lighter\' }]\\n- YAxisOption的`option.yAxis.yUnit`单位设置的不是option里面的label的内容时(例如:元),就将`option.yAxis.yUnit`值设置成\'CUSTOM\',并同步将`option.yAxis.yCustomUnit`属性的值设置成对应的单位数据(例如:元)\\n- 若用户修改名称或者背景色或者边框的属性,以componentsData中第一个柱形图配置为例,去修改返回对应配置即可\\n -名称:对应 compConfig.name\\n -背景色:对应 compConfig.background\\n -边框色:对应 compConfig.borderColor\\n## 组件数据:\\ncomponentsData:[\\n {\\n \\\"echart\\\":true ,\\n \\\"compType\\\": \\\"JBar\\\",\\n \\\"compConfig\\\": {\\n \\\"name\\\":\\\"基础柱形图\\\",\\n \\\"background\\\":\\\"#ffffff\\\",\\n \\\"borderColor\\\":\\\"#000000\\\"\\n }\\n }]\\n组件配置说明\\n compOptionData = [{name: \'基础配置\', optionName: \'BasicOption\', children: [{\\\"label\\\": \\\"图层名称修改成\\\", \\\"value\\\": \\\"name\\\"}, {\\\"label\\\": \\\"图层背景色设置成\\\", \\\"value\\\": \\\"background\\\"}, {\\\"label\\\": \\\"图层边框线设置成\\\", \\\"value\\\": \\\"borderColor\\\"}, {\\\"label\\\": \\\"提示语设置为隐藏\\\", \\\"value\\\": \\\"option.tooltip.show\\\"}, {\\\"label\\\": \\\"提示语字体大小设置成\\\", \\\"value\\\": \\\"option.tooltip.textStyle.fontSize\\\"}, {\\\"label\\\": \\\"提示语字体颜色设置成\\\", \\\"value\\\": \\\"option.tooltip.textStyle.fontSize\\\"}, ] },{name: \'标题设置\', optionName: \'TitleOption\', children: [{\\\"label\\\": \\\"标题名称修改成\\\", \\\"value\\\": \\\"option.title.text\\\"}, {\\\"label\\\": \\\"标题字体大小设置成\\\", \\\"value\\\": \\\"option.title.textStyle.fontSize\\\"}, {\\\"label\\\": \\\"标题字体颜色设置成\\\", \\\"value\\\": \\\"option.title.textStyle.fontColor\\\"}, {\\\"label\\\": \\\"标题字体粗细设置成\\\", \\\"value\\\": \\\"option.title.textStyle.fontWeight\\\"}, {\\\"label\\\": \\\"副标题名称修改成\\\", \\\"value\\\": \\\"option.title.subtextStyle\\\"}, {\\\"label\\\": \\\"副标题字体大小设置成\\\", \\\"value\\\": \\\"option.title.subtextStyle.fontSize\\\"}, {\\\"label\\\": \\\"副标题字体颜色设置成\\\", \\\"value\\\": \\\"option.title.subtextStyle.fontColor\\\"}, {\\\"label\\\": \\\"左对齐\\\", \\\"value\\\": \\\"option.title.left\\\"}, {\\\"label\\\": \\\"垂直居中\\\", \\\"value\\\": \\\"option.title.top\\\"}, ] } ,{name: \'X轴设置\', optionName: \'XAxisOption\', children: [{\\\"label\\\": \\\"X轴名称修改成\\\", \\\"value\\\": \\\"option.xAxis.name\\\"}, {\\\"label\\\": \\\"X轴名称颜色修改成\\\", \\\"value\\\": \\\"option.xAxis.nameTextStyle.color\\\"}, {\\\"label\\\": \\\"X轴名称字体大小修改成\\\", \\\"value\\\": \\\"option.xAxis.nameTextStyle.fontSize\\\"}, {\\\"label\\\": \\\"X轴标签颜色修改成\\\", \\\"value\\\": \\\"option.xAxis.axisLabel.color\\\"}, {\\\"label\\\": \\\"X轴标签角度\\\", \\\"value\\\": \\\"option.xAxis.axisLabel.rotate\\\"}, {\\\"label\\\": \\\"X轴轴线颜色修改成\\\", \\\"value\\\": \\\"option.xAxis.axisLine.lineStyle.color\\\"}, {\\\"label\\\": \\\"X轴轴类型修改成\\\", \\\"value\\\": \\\"option.xAxis.type\\\"}, {\\\"label\\\": \\\"X轴显示网格线\\\", \\\"value\\\": \\\"option.xAxis.splitLine.show\\\"}, {\\\"label\\\": \\\"X轴网格线颜色修改成\\\", \\\"value\\\": \\\"option.xAxis.splitLine.lineStyle.color\\\"}, ] } ,{name: \'胶囊图设置\', optionName: \'CapsuleChartOption\', children: [{\\\"label\\\": \\\"胶囊图显示数值\\\", \\\"value\\\": \\\"option.showValue\\\"}, {\\\"label\\\": \\\"胶囊图X轴名称设置成\\\", \\\"value\\\": \\\"option.unit\\\"} ] } ,{name: \'Y轴设置\', optionName: \'YAxisOption\', children: [{\\\"label\\\": \\\"Y轴名称修改成\\\", \\\"value\\\": \\\"option.yAxis.name\\\"}, {\\\"label\\\": \\\"Y轴名称颜色修改成\\\", \\\"value\\\": \\\"option.yAxis.nameTextStyle.color\\\"}, {\\\"label\\\": \\\"Y轴名称字体大小修改成\\\", \\\"value\\\": \\\"option.yAxis.nameTextStyle.fontSize\\\"}, {\\\"label\\\": \\\"Y轴标签颜色修改成\\\", \\\"value\\\": \\\"option.yAxis.axisLabel.color\\\"}, {\\\"label\\\": \\\"Y轴标签角度\\\", \\\"value\\\": \\\"option.yAxis.axisLabel.rotate\\\"}, {\\\"label\\\": \\\"Y轴轴线颜色修改成\\\", \\\"value\\\": \\\"option.yAxis.axisLine.lineStyle.color\\\"}, {\\\"label\\\": \\\"Y轴轴类型修改成\\\", \\\"value\\\": \\\"option.yAxis.type\\\"}, {\\\"label\\\": \\\"Y轴显示网格线\\\", \\\"value\\\": \\\"option.yAxis.splitLine.show\\\"}, {\\\"label\\\": \\\"Y轴网格线颜色修改成\\\", \\\"value\\\": \\\"option.yAxis.splitLine.lineStyle.color\\\"}, {\\\"label\\\": \\\"Y轴单位设置成\\\", \\\"value\\\": \\\"option.yAxis.yUnit\\\"}, ] } ,{name: \'图例设置\', optionName: \'LegendOption\', children: [{\\\"label\\\": \\\"图例字体大小设置成\\\", \\\"value\\\": \\\"option.legend.textStyle.fontSize\\\"}, {\\\"label\\\": \\\"图例设置成横排\\\", \\\"value\\\": \\\"option.legend.orient\\\"}, {\\\"label\\\": \\\"图例上下边距设置\\\", \\\"value\\\": \\\"option.legend.t\\\"}, {\\\"label\\\": \\\"图例左右边距设置\\\", \\\"value\\\": \\\"option.legend.r\\\"}, ] } ,{name: \'样式设置\', optionName: \'PercentBarStyle\', children: [{\\\"label\\\": \\\"Y轴刻度颜色设置\\\", \\\"value\\\": \\\"option.yNameFontColor\\\"}, {\\\"label\\\": \\\"Y轴刻度字体大小设置\\\", \\\"value\\\": \\\"option.yNameFontSize\\\"}, {\\\"label\\\": \\\"X轴刻度颜色设置\\\", \\\"value\\\": \\\"option.xNameFontColor\\\"}, {\\\"label\\\": \\\"X轴刻度字体大小设置\\\", \\\"value\\\": \\\"option.xNameFontSize\\\"}, {\\\"label\\\": \\\"图例位置设置\\\", \\\"value\\\": \\\"option.legendPosition\\\", \\\"options\\\": [{\\\"label\\\": \\\"居上\\\", \\\"value\\\": \\\"top\\\"}, {\\\"label\\\": \\\"居下\\\", \\\"value\\\": \\\"bottom\\\"}]}, {\\\"label\\\": \\\"图例字体颜色设置\\\", \\\"value\\\": \\\"option.legendFontColor\\\"}, {\\\"label\\\": \\\"图例字体大小设置\\\", \\\"value\\\": \\\"option.legendFontSize\\\"}, ] } ,{name: \'自定义配色\', optionName: \'CustomColorOption\', children: [{\\\"label\\\": \\\"颜色设置成***色\\\", \\\"value\\\": \\\"option.customColor\\\"}, ] } ,{name: \'柱体设置\', optionName: \'BarCylinder\', children: [{\\\"label\\\": \\\"柱体宽度修改为\\\", \\\"value\\\": \\\"option.series[${index}].barWidth\\\"}, {\\\"label\\\": \\\"柱体圆角修改为\\\", \\\"value\\\": \\\"option.series[${index}].itemStyle.borderRadius\\\"}, {\\\"label\\\": \\\"柱体颜色修改成\\\", \\\"value\\\": \\\"option.series[${index}].itemStyle.color\\\"}, {\\\"label\\\": \\\"柱体背景色显隐\\\", \\\"value\\\": \\\"option.series[${index}].showBackground\\\"}, {\\\"label\\\": \\\"柱体背景色颜色\\\", \\\"value\\\": \\\"option.series[${index}].backgroundStyle.color\\\"}, ] } ,{name: \'折线设置\', optionName: \'PolyglineOption\', children: [{\\\"label\\\": \\\"折线类型修改\\\", \\\"value\\\": \\\"option.series[${index}].lineType\\\",ignoreComp:[\'JArea\'],options: [{ label: \'折线\', value: \'line\' }, { label: \'曲线\', value: \'smooth\' }, { label: \'面积\', value: \'area\' }]}, {\\\"label\\\": \\\"透明度设置\\\", \\\"value\\\": \\\"option.series[0].areaStyleOpacity\\\"}, {\\\"label\\\": \\\"线条宽度修改\\\", \\\"value\\\": \\\"option.series[${index}].lineWidth\\\"}, {\\\"label\\\": \\\"标记点修改\\\", \\\"value\\\": \\\"option.series[${index}].symbol\\\"}, {\\\"label\\\": \\\"点的大小修改\\\", \\\"value\\\": \\\"option.series[${index}].symbolSize\\\"}, ] } ,{name: \'饼图设置\', optionName: \'pieSettingOption\', children: [{\\\"label\\\": \\\"饼图设置成环形\\\", \\\"value\\\": \\\"option.isRadius\\\"}, {\\\"label\\\": \\\"饼图内环半径设置成\\\", \\\"value\\\": \\\"option.innerRadius\\\"}, {\\\"label\\\": \\\"饼图外环半径设置成\\\", \\\"value\\\": \\\"option.outRadius\\\"}, {\\\"label\\\": \\\"饼图设置成南丁格尔玫瑰\\\", \\\"value\\\": \\\"option.isRose\\\"}, {\\\"label\\\": \\\"饼图标签显示位置\\\", \\\"value\\\": \\\"option.pieLabelPosition\\\"}, ] } ,{name: \'中心坐标\', optionName: \'gridPieOption\', children: [{\\\"label\\\": \\\"上下边距修改为\\\", \\\"value\\\": \\\"option.grid.top\\\"}, {\\\"label\\\": \\\"左右边距修改为\\\", \\\"value\\\": \\\"option.grid.left\\\"}, ] } ,{name: \'坐标轴边距\', optionName: \'GridOption\', children: [{\\\"label\\\": \\\"左边距修改成\\\", \\\"value\\\": \\\"option.grid.left\\\"}, {\\\"label\\\": \\\"顶边距\\\", \\\"value\\\": \\\"option.grid.top\\\"}, {\\\"label\\\": \\\"右边距\\\", \\\"value\\\": \\\"option.grid.right\\\"}, {\\\"label\\\": \\\"底边距\\\", \\\"value\\\": \\\"option.grid.bottom\\\"}, ] } ,{name: \'数值设置\', optionName: \'NumOption\', children: [{\\\"label\\\": \\\"显示数值\\\", \\\"value\\\": \\\"option.series[${index}].label.show\\\"}, {\\\"label\\\": \\\"数值显示位置在\\\", \\\"value\\\": \\\"option.series[${index}].label.position\\\"}, {\\\"label\\\": \\\"数值内容格式修改成\\\", \\\"value\\\": \\\"option.label.format\\\"}, {\\\"label\\\": \\\"数值字体颜色修改成\\\", \\\"value\\\": \\\"option.series[${index}].label.color\\\"}, {\\\"label\\\": \\\"数值字体大小修改成\\\", \\\"value\\\": \\\"option.series[${index}].label.fontSize\\\"}, {\\\"label\\\": \\\"数值字体粗细修改成\\\", \\\"value\\\": \\\"option.series[${index}].label.fontWeight\\\"}, {\\\"label\\\": \\\"数值单位配置显隐\\\", \\\"value\\\": \\\"option.showUnit.show\\\"}, {\\\"label\\\": \\\"数值单位数量级设置\\\", \\\"value\\\": \\\"option.showUnit.numberLevel\\\",option: simpNumberLevelOption}, {\\\"label\\\": \\\"数值单位保留小数\\\", \\\"value\\\": \\\"option.showUnit.decimal\\\"}, ] } ,{name: \'基础进度设置\', optionName: \'CustomProgressOption\', children: [{\\\"label\\\": \\\"进度目标颜色\\\", \\\"value\\\": \\\"option.backgroundColor\\\"}, {\\\"label\\\": \\\"进度颜色\\\", \\\"value\\\": \\\"option.progressColor\\\"}, {\\\"label\\\": \\\"进度条宽度\\\", \\\"value\\\": \\\"option.barWidth\\\"}, {\\\"label\\\": \\\"进度边距设置\\\", \\\"value\\\": \\\"option.padding\\\"}, {\\\"label\\\": \\\"进度标题颜色设置\\\", \\\"value\\\": \\\"option.titleColor\\\"}, {\\\"label\\\": \\\"进度标题字体大小设置\\\", \\\"value\\\": \\\"option.titleFontSize\\\"}, {\\\"label\\\": \\\"进度标题位置设置\\\", \\\"value\\\": \\\"option.titlePosition\\\"}, {\\\"label\\\": \\\"进度数值颜色设置\\\", \\\"value\\\": \\\"option.valueColor\\\"}, {\\\"label\\\": \\\"进度数值字体大小设置\\\", \\\"value\\\": \\\"option.valueFontSize\\\"}, {\\\"label\\\": \\\"进度数值位置设置\\\", \\\"value\\\": \\\"option.valuePosition\\\"}, {\\\"label\\\": \\\"进度数值横向偏移\\\", \\\"value\\\": \\\"option.valueXOffset\\\"}, ] } ,{name: \'列表进度图行样式\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"列表进度图行高度\\\", \\\"value\\\": \\\"option.row.height\\\"}, {\\\"label\\\": \\\"列表进度图行左边距\\\", \\\"value\\\": \\\"option.row.marginLeft\\\"}, {\\\"label\\\": \\\"列表进度图行上边距\\\", \\\"value\\\": \\\"option.row.marginTop\\\"}, {\\\"label\\\": \\\"列表进度图行右边距\\\", \\\"value\\\": \\\"option.row.marginRight\\\"}, ] } ,{name: \'列表进度图进度条配置\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"进度条底色设置\\\", \\\"value\\\": \\\"option.bar.background.color\\\"}, {\\\"label\\\": \\\"进度条底色启用渐变\\\", \\\"value\\\": \\\"option.bar.background.gradient.enabled\\\"}, {\\\"label\\\": \\\"进度条底色渐变方向设置\\\", \\\"value\\\": \\\"option.bar.background.gradient.direction\\\"}, {\\\"label\\\": \\\"进度条底色渐变起始颜色设置\\\", \\\"value\\\": \\\"option.bar.background.gradient.startColor\\\"}, {\\\"label\\\": \\\"进度条底色渐变结束颜色设置\\\", \\\"value\\\": \\\"option.bar.background.gradient.endColor\\\"}, {\\\"label\\\": \\\"进度条填充色设置\\\", \\\"value\\\": \\\"option.bar.fill.color\\\"}, {\\\"label\\\": \\\"进度条填充色启用渐变\\\", \\\"value\\\": \\\"option.bar.fill.gradient.enabled\\\"}, {\\\"label\\\": \\\"进度条填充色渐变方向设置\\\", \\\"value\\\": \\\"option.bar.fill.gradient.direction\\\"}, {\\\"label\\\": \\\"进度条填充色渐变起始颜色设置\\\", \\\"value\\\": \\\"option.bar.fill.gradient.startColor\\\"}, {\\\"label\\\": \\\"进度条填充色渐变结束颜色设置\\\", \\\"value\\\": \\\"option.bar.fill.gradient.endColor\\\"}, {\\\"label\\\": \\\"进度条高度设置\\\", \\\"value\\\": \\\"option.bar.height\\\"}, {\\\"label\\\": \\\"进度条圆角设置\\\", \\\"value\\\": \\\"option.bar.borderRadius\\\"}, {\\\"label\\\": \\\"进度指示点大小设置\\\", \\\"value\\\": \\\"option.bar.indicatorSize\\\"}, {\\\"label\\\": \\\"进度指示点颜色设置\\\", \\\"value\\\": \\\"option.bar.indicatorColor\\\"}, {\\\"label\\\": \\\"进度条显示边框\\\", \\\"value\\\": \\\"option.bar.border.enabled\\\"}, {\\\"label\\\": \\\"进度条边框颜色\\\", \\\"value\\\": \\\"option.bar.border.color\\\"}, {\\\"label\\\": \\\"进度条边框大小\\\", \\\"value\\\": \\\"option.bar.border.width\\\"}, {\\\"label\\\": \\\"进度条边框边距\\\", \\\"value\\\": \\\"option.bar.border.padding\\\"}, {\\\"label\\\": \\\"超出阈值配置启用\\\", \\\"value\\\": \\\"option.bar.exceed.enabled\\\"}, {\\\"label\\\": \\\"超出阈值百分比设置\\\", \\\"value\\\": \\\"option.bar.exceed.percent\\\"}, {\\\"label\\\": \\\"超出阈值填充色设置\\\", \\\"value\\\": \\\"option.bar.exceed.fill.color\\\"}, {\\\"label\\\": \\\"超出阈值填充色启用渐变\\\", \\\"value\\\": \\\"option.bar.exceed.fill.gradient.enabled\\\"}, {\\\"label\\\": \\\"超出阈值填充色渐变起始颜色\\\", \\\"value\\\": \\\"option.bar.exceed.fill.gradient.startColor\\\"}, {\\\"label\\\": \\\"超出阈值填充色渐变结束颜色\\\", \\\"value\\\": \\\"option.bar.exceed.fill.gradient.endColor\\\"}, {\\\"label\\\": \\\"超出阈值指示点颜色设置\\\", \\\"value\\\": \\\"option.bar.exceed.indicatorColor\\\"}, ] } ,{name: \'列表进度图数据映射\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"进度字段设置\\\", \\\"value\\\": \\\"option.bar.valueField\\\"}, {\\\"label\\\": \\\"总数类型设置\\\", \\\"value\\\": \\\"option.bar.total.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"来自字段\\\", \\\"value\\\": \\\"field\\\"}, {\\\"label\\\": \\\"固定值\\\", \\\"value\\\": \\\"fixed\\\"}]}, {\\\"label\\\": \\\"总数字段设置\\\", \\\"value\\\": \\\"option.bar.total.field\\\"}, {\\\"label\\\": \\\"固定总数设置\\\", \\\"value\\\": \\\"option.bar.total.val\\\"}, ] } ,{name: \'列表进度图左侧配置\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"左侧宽度设置\\\", \\\"value\\\": \\\"option.beginInfo.width\\\"}, {\\\"label\\\": \\\"左侧排列方式设置\\\", \\\"value\\\": \\\"option.beginInfo.layout\\\", \\\"options\\\": [{\\\"label\\\": \\\"水平排列\\\", \\\"value\\\": \\\"horizontal\\\"}, {\\\"label\\\": \\\"上下排列\\\", \\\"value\\\": \\\"vertical\\\"}]}, ] } ,{name: \'列表进度图中间配置\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"中间左边距设置\\\", \\\"value\\\": \\\"option.progressSection.marginLeft\\\"}, {\\\"label\\\": \\\"中间右边距设置\\\", \\\"value\\\": \\\"option.progressSection.marginRight\\\"}, {\\\"label\\\": \\\"中间排列方式设置\\\", \\\"value\\\": \\\"option.centerTopInfo.layout\\\", \\\"options\\\": [{\\\"label\\\": \\\"水平排列\\\", \\\"value\\\": \\\"horizontal\\\"}, {\\\"label\\\": \\\"上下排列\\\", \\\"value\\\": \\\"vertical\\\"}]}, ] } ,{name: \'列表进度图右侧配置\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"右侧宽度设置\\\", \\\"value\\\": \\\"option.endInfo.width\\\"}, {\\\"label\\\": \\\"右侧排列方式设置\\\", \\\"value\\\": \\\"option.endInfo.layout\\\", \\\"options\\\": [{\\\"label\\\": \\\"水平排列\\\", \\\"value\\\": \\\"horizontal\\\"}, {\\\"label\\\": \\\"上下排列\\\", \\\"value\\\": \\\"vertical\\\"}]}, ] } ,{name: \'列表进度图滚动动画\', optionName: \'ListProgressOption\', children: [{\\\"label\\\": \\\"启用滚动\\\", \\\"value\\\": \\\"option.scroll.enabled\\\"}, {\\\"label\\\": \\\"滚动方向设置\\\", \\\"value\\\": \\\"option.scroll.direction\\\", \\\"options\\\": [{\\\"label\\\": \\\"向上滚动\\\", \\\"value\\\": \\\"up\\\"}, {\\\"label\\\": \\\"向下滚动\\\", \\\"value\\\": \\\"down\\\"}]}, {\\\"label\\\": \\\"滚动间隔时间设置\\\", \\\"value\\\": \\\"option.scroll.interval\\\"}, {\\\"label\\\": \\\"滚动数量设置\\\", \\\"value\\\": \\\"option.scroll.count\\\"}, {\\\"label\\\": \\\"滚动动画时长设置\\\", \\\"value\\\": \\\"option.scroll.duration\\\"}, ] } ,{name: \'圆形进度图文本配置\', optionName: \'RoundProgressOption\', children: [{\\\"label\\\": \\\"标题字体大小设置\\\", \\\"value\\\": \\\"option.titleStyle.fontSize\\\"}, {\\\"label\\\": \\\"标题字体颜色设置\\\", \\\"value\\\": \\\"option.titleStyle.fontColor\\\"}, {\\\"label\\\": \\\"标题字体粗细设置\\\", \\\"value\\\": \\\"option.titleStyle.fontWeight\\\"}, {\\\"label\\\": \\\"标题字体样式设置\\\", \\\"value\\\": \\\"option.titleStyle.fontStyle\\\"}, {\\\"label\\\": \\\"标题字间距设置\\\", \\\"value\\\": \\\"option.titleStyle.letterSpacing\\\"}, {\\\"label\\\": \\\"标题字体设置\\\", \\\"value\\\": \\\"option.titleStyle.fontFamily\\\"}, {\\\"label\\\": \\\"标题启用渐变\\\", \\\"value\\\": \\\"option.titleStyle.fontGradient.enabled\\\"}, {\\\"label\\\": \\\"标题渐变起始颜色设置\\\", \\\"value\\\": \\\"option.titleStyle.fontGradient.startColor\\\"}, {\\\"label\\\": \\\"标题渐变结束颜色设置\\\", \\\"value\\\": \\\"option.titleStyle.fontGradient.endColor\\\"}, {\\\"label\\\": \\\"标题垂直位置设置\\\", \\\"value\\\": \\\"option.titleStyle.top\\\"}, ] } ,{name: \'圆形进度图数据配置\', optionName: \'RoundProgressOption\', children: [{\\\"label\\\": \\\"数据字体大小设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontSize\\\"}, {\\\"label\\\": \\\"数据字体颜色设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontColor\\\"}, {\\\"label\\\": \\\"数据字体粗细设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontWeight\\\"}, {\\\"label\\\": \\\"数据字体样式设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontStyle\\\"}, {\\\"label\\\": \\\"数据字间距设置\\\", \\\"value\\\": \\\"option.subTitleStyle.letterSpacing\\\"}, {\\\"label\\\": \\\"数据字体设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontFamily\\\"}, {\\\"label\\\": \\\"数据启用渐变\\\", \\\"value\\\": \\\"option.subTitleStyle.fontGradient.enabled\\\"}, {\\\"label\\\": \\\"数据渐变起始颜色设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontGradient.startColor\\\"}, {\\\"label\\\": \\\"数据渐变结束颜色设置\\\", \\\"value\\\": \\\"option.subTitleStyle.fontGradient.endColor\\\"}, {\\\"label\\\": \\\"数据垂直位置设置\\\", \\\"value\\\": \\\"option.subTitleStyle.top\\\"}, ] } ,{name: \'圆形进度图进度条配置\', optionName: \'RoundProgressOption\', children: [{\\\"label\\\": \\\"进度条外半径设置\\\", \\\"value\\\": \\\"option.polar.innerRadius\\\"}, {\\\"label\\\": \\\"进度条内半径设置\\\", \\\"value\\\": \\\"option.polar.outerRadius\\\"}, {\\\"label\\\": \\\"进度条背景色设置\\\", \\\"value\\\": \\\"option.backgroundStyle.color\\\"}, {\\\"label\\\": \\\"进度条启用渐变\\\", \\\"value\\\": \\\"option.progressGradient.enabled\\\"}, {\\\"label\\\": \\\"进度条渐变起始颜色设置\\\", \\\"value\\\": \\\"option.progressGradient.startColor\\\"}, {\\\"label\\\": \\\"进度条渐变结束颜色设置\\\", \\\"value\\\": \\\"option.progressGradient.endColor\\\"}, ] } ,{name: \'圆形进度图外圆配置\', optionName: \'RoundProgressOption\', children: [{\\\"label\\\": \\\"外圆半径设置\\\", \\\"value\\\": \\\"option.outerCircle.radius\\\"}, {\\\"label\\\": \\\"外圆边框颜色设置\\\", \\\"value\\\": \\\"option.outerCircle.borderColor\\\"}, {\\\"label\\\": \\\"外圆边框大小设置\\\", \\\"value\\\": \\\"option.outerCircle.borderWidth\\\"}, ] } ,{name: \'圆形进度图内圆配置\', optionName: \'RoundProgressOption\', children: [{\\\"label\\\": \\\"内圆半径设置\\\", \\\"value\\\": \\\"option.innerCircle.radius\\\"}, {\\\"label\\\": \\\"内圆边框颜色设置\\\", \\\"value\\\": \\\"option.innerCircle.borderColor\\\"}, {\\\"label\\\": \\\"内圆边框大小设置\\\", \\\"value\\\": \\\"option.innerCircle.borderWidth\\\"}, ] } ,{name: \'水波图设置\', optionName: \'LiquidPlotOption\', children: [{\\\"label\\\": \\\"显示类型\\\", \\\"value\\\": \\\"option.liquidType\\\"}, {\\\"label\\\": \\\"波纹颜色\\\", \\\"value\\\": \\\"option.color\\\"}, {\\\"label\\\": \\\"波纹个数\\\", \\\"value\\\": \\\"option.count\\\"}, {\\\"label\\\": \\\"波纹长度\\\", \\\"value\\\": \\\"option.length\\\"}, {\\\"label\\\": \\\"外框颜色\\\", \\\"value\\\": \\\"option.borderColor\\\"}, {\\\"label\\\": \\\"外框宽度\\\", \\\"value\\\": \\\"option.borderWidth\\\"}, {\\\"label\\\": \\\"间距\\\", \\\"value\\\": \\\"option.distance\\\"}, {\\\"label\\\": \\\"透明度设置\\\", \\\"value\\\": \\\"option.strokeOpacity\\\"}, {\\\"label\\\": \\\"文本颜色配置\\\", \\\"value\\\": \\\"option.textColor\\\"}, {\\\"label\\\": \\\"文本字体大小配置\\\", \\\"value\\\": \\\"option.textFontSize\\\"} ] } ,{name: \'象形图设置\', optionName: \'PictorialOption\', children: [{\\\"label\\\": \\\"象形图柱体颜色设置\\\", \\\"value\\\": \\\"option.barColor\\\"}, {\\\"label\\\": \\\"透明度设置\\\", \\\"value\\\": \\\"option.barOpacity\\\"}, {\\\"label\\\": \\\"间距设置\\\", \\\"value\\\": \\\"option.count\\\"} ] } ,{name: \'仪表盘设置\', optionName: \'GaugeOption\', children: [{\\\"label\\\": \\\"显示刻度值\\\", \\\"value\\\": \\\"option.series[0].axisLabel.show\\\"}, {\\\"label\\\": \\\"刻度值颜色\\\", \\\"value\\\": \\\"option.series[0].axisLabel.color\\\"}, {\\\"label\\\": \\\"刻度值字体大小\\\", \\\"value\\\": \\\"option.series[0].axisLabel.fontSize\\\"}, {\\\"label\\\": \\\"显示刻度线\\\", \\\"value\\\": \\\"option.series[0].axisTick.show\\\"}, {\\\"label\\\": \\\"刻度线长度\\\", \\\"value\\\": \\\"option.series[0].axisTick.length\\\"}, {\\\"label\\\": \\\"刻度线颜色\\\", \\\"value\\\": \\\"option.series[0].axisTick.lineStyle.color\\\"}, {\\\"label\\\": \\\"显示分割线\\\", \\\"value\\\": \\\"option.series[0].splitLine.show\\\"}, {\\\"label\\\": \\\"分割线长度\\\", \\\"value\\\": \\\"option.series[0].splitLine.length\\\"}, {\\\"label\\\": \\\"分割线颜色\\\", \\\"value\\\": \\\"option.series[0].splitLine.lineStyle.color\\\"}, {\\\"label\\\": \\\"指标字号\\\", \\\"value\\\": \\\"option.series[0].detail.fontSize\\\"}, ] } ,{name: \'渐变仪表盘设置\', optionName: \'AntvGaugeOption\', children: [{\\\"label\\\": \\\"仪表盘粗细设置\\\", \\\"value\\\": \\\"option.gaugeWidth\\\"}, {\\\"label\\\": \\\"显示刻度值\\\", \\\"value\\\": \\\"option.axisLabelShow\\\"}, {\\\"label\\\": \\\"刻度值颜色\\\", \\\"value\\\": \\\"option.axisLabelColor\\\"}, {\\\"label\\\": \\\"刻度值字体大小\\\", \\\"value\\\": \\\"option.axisLabelFontSize\\\"}, {\\\"label\\\": \\\"显示刻度线\\\", \\\"value\\\": \\\"option.axisTickShow\\\"}, {\\\"label\\\": \\\"刻度线颜色\\\", \\\"value\\\": \\\"option.lineColor\\\"}, {\\\"label\\\": \\\"文本颜色\\\", \\\"value\\\": \\\"option.valueColor\\\"}, {\\\"label\\\": \\\"文本字体大小\\\", \\\"value\\\": \\\"option.valueFontSize\\\"}, {\\\"label\\\": \\\"指针颜色\\\", \\\"value\\\": \\\"option.indicatorColor\\\"}, {\\\"label\\\": \\\"指针粗细\\\", \\\"value\\\": \\\"option.indicatorLength\\\"}, ] } ,{name: \'尺寸设置\', optionName: \'Pyramid3DOption\', children: [{\\\"label\\\": \\\"缩放\\\", \\\"value\\\": \\\"option.zoom\\\"}, {\\\"label\\\": \\\"尺寸\\\", \\\"value\\\": \\\"option.size\\\"} ] } ,{name: \'环形设置\', optionName: \'RingOption\', children: [{\\\"label\\\": \\\"内半径\\\", \\\"value\\\": \\\"option.innerRadius\\\"}, {\\\"label\\\": \\\"外半径\\\", \\\"value\\\": \\\"option.outRadius\\\"} ] } ,{name: \'环形图设置\', optionName: \'ActiveRingPlotOption\', children: [{\\\"label\\\": \\\"环形图颜色设置\\\", \\\"value\\\": \\\"option.color\\\"}, {\\\"label\\\": \\\"环形图背景色设置\\\", \\\"value\\\": \\\"option.bgColor\\\"}, {\\\"label\\\": \\\"环形图外环半径\\\", \\\"value\\\": \\\"option.outRadius\\\"}, {\\\"label\\\": \\\"环形图内环半径\\\", \\\"value\\\": \\\"option.innerRadius\\\"}, {\\\"label\\\": \\\"环形图标题字体大小\\\", \\\"value\\\": \\\"option.fontSize\\\"}, {\\\"label\\\": \\\"环形图标题字体颜色\\\", \\\"value\\\": \\\"option.fontColor\\\"}, {\\\"label\\\": \\\"环形图标题字体粗细\\\", \\\"value\\\": \\\"option.fontWeight\\\"}, {\\\"label\\\": \\\"环形图数值字体大小\\\", \\\"value\\\": \\\"option.valueFontSize\\\"}, {\\\"label\\\": \\\"环形图数值字体颜色\\\", \\\"value\\\": \\\"option.valueFontColor\\\"}, {\\\"label\\\": \\\"环形图数值字体粗细\\\", \\\"value\\\": \\\"option.valueFontWeight\\\"}, ] } ,{name: \'动态环形图设置\', optionName: \'ActiveRingOption\', children: [{\\\"label\\\": \\\"动态环形图显示原始值\\\", \\\"value\\\": \\\"option.showOriginValue\\\"}, {\\\"label\\\": \\\"动态环形图文字颜色\\\", \\\"value\\\": \\\"option.textColor\\\"}, {\\\"label\\\": \\\"动态环形图文字大小\\\", \\\"value\\\": \\\"option.textFontSize\\\"}, {\\\"label\\\": \\\"动态环形图线条宽度\\\", \\\"value\\\": \\\"option.lineWidth\\\"}, {\\\"label\\\": \\\"动态环形图环半径\\\", \\\"value\\\": \\\"option.radius\\\"}, {\\\"label\\\": \\\"动态环形图动态环半径\\\", \\\"value\\\": \\\"option.activeRadius\\\"}, ] } ,{name: \'玉珏设置\', optionName: \'RadialBarOption\', children: [{\\\"label\\\": \\\"玉珏图显示圆角\\\", \\\"value\\\": \\\"option.radiuShow\\\"}, {\\\"label\\\": \\\"玉珏图背景显示\\\", \\\"value\\\": \\\"option.bgShow\\\"}, {\\\"label\\\": \\\"玉珏图外环半径\\\", \\\"value\\\": \\\"option.radius\\\"}, {\\\"label\\\": \\\"玉珏图内环半径\\\", \\\"value\\\": \\\"option.innerRadius\\\"}, {\\\"label\\\": \\\"玉珏图最大旋转角\\\", \\\"value\\\": \\\"option.maxAngle\\\"}, ] } ,{name: \'矩形图设置\', optionName: \'RectangleOption\', children: [{\\\"label\\\": \\\"矩形图文本颜色\\\", \\\"value\\\": \\\"option.titleColor\\\"}, {\\\"label\\\": \\\"矩形图文本字体大小\\\", \\\"value\\\": \\\"option.titleFontSize\\\"}, {\\\"label\\\": \\\"矩形图显示图例\\\", \\\"value\\\": \\\"option.showLegend\\\"}, ] } ,{name: \'文本设置\', optionName: \'TextOption\', children: [{\\\"label\\\": \\\"文本字体大小\\\", \\\"value\\\": \\\"option.body.fontSize\\\"}, {\\\"label\\\": \\\"文本字体间距\\\", \\\"value\\\": \\\"option.body.letterSpacing\\\"}, {\\\"label\\\": \\\"文本字体颜色\\\", \\\"value\\\": \\\"option.body.color\\\"}, {\\\"label\\\": \\\"文本启用千分符\\\", \\\"value\\\": \\\"option.body.thousandSeparator\\\"}, {\\\"label\\\": \\\"文本水平间距\\\", \\\"value\\\": \\\"option.body.marginLeft\\\"}, {\\\"label\\\": \\\"文本垂直间距\\\", \\\"value\\\": \\\"option.body.marginTop\\\"}, {\\\"label\\\": \\\"文本开启跑马灯\\\", \\\"value\\\": \\\"option.horseLamp\\\",ignoreComp: [\'JNumber\']}, {\\\"label\\\": \\\"文本开启超链接\\\", \\\"value\\\": \\\"option.isLink\\\",ignoreComp: [\'JNumber\']}, {\\\"label\\\": \\\"文本超链接地址\\\", \\\"value\\\": \\\"option.openUrl\\\",ignoreComp: [\'JNumber\']}, ] } ,{name: \'内部设置\', optionName: \'CountToTextOption\', children: [{\\\"label\\\": \\\"字体粗细设置\\\", \\\"value\\\": \\\"option.fontWeight\\\"}, {\\\"label\\\": \\\"字体颜色设置\\\", \\\"value\\\": \\\"option.fontColor\\\"}, {\\\"label\\\": \\\"字体大小设置\\\", \\\"value\\\": \\\"option.fontSize\\\"}, {\\\"label\\\": \\\"前缀文本内容设置\\\", \\\"value\\\": \\\"option.prefix\\\"}, {\\\"label\\\": \\\"前缀字体大小\\\", \\\"value\\\": \\\"option.prefixFontSize\\\"}, {\\\"label\\\": \\\"前缀字体颜色\\\", \\\"value\\\": \\\"option.prefixColor\\\"}, {\\\"label\\\": \\\"前缀字体粗细\\\", \\\"value\\\": \\\"option.prefixFontWeight\\\"}, {\\\"label\\\": \\\"前缀字体对齐方式\\\", \\\"value\\\": \\\"option.prefixTextAlign\\\"}, {\\\"label\\\": \\\"前缀字体X间距\\\", \\\"value\\\": \\\"option.prefixGridX\\\"}, {\\\"label\\\": \\\"前缀字体Y间距\\\", \\\"value\\\": \\\"option.prefixGridY\\\"}, {\\\"label\\\": \\\"后缀文本内容设置\\\", \\\"value\\\": \\\"option.suffix\\\"}, {\\\"label\\\": \\\"后缀字体大小\\\", \\\"value\\\": \\\"option.suffixFontSize\\\"}, {\\\"label\\\": \\\"后缀字体颜色\\\", \\\"value\\\": \\\"option.suffixColor\\\"}, {\\\"label\\\": \\\"后缀字体粗细\\\", \\\"value\\\": \\\"option.suffixFontWeight\\\"}, {\\\"label\\\": \\\"后缀字体对齐方式\\\", \\\"value\\\": \\\"option.suffixTextAlign\\\"}, {\\\"label\\\": \\\"后缀字体X间距\\\", \\\"value\\\": \\\"option.suffixGridX\\\"}, {\\\"label\\\": \\\"后缀字体Y间距\\\", \\\"value\\\": \\\"option.suffixGridY\\\"}, {\\\"label\\\": \\\"后缀字体Y间距\\\", \\\"value\\\": \\\"option.suffixGridY\\\"}, {\\\"label\\\": \\\"后缀字体Y间距\\\", \\\"value\\\": \\\"option.suffixGridY\\\"}, {\\\"label\\\": \\\"后缀字体Y间距\\\", \\\"value\\\": \\\"option.suffixGridY\\\"}, ] } ,{name: \'颜色块设置\', optionName: \'ColorBlockOption\', children: [{\\\"label\\\": \\\"颜色块行数设置\\\", \\\"value\\\": \\\"option.lineNum\\\"}, {\\\"label\\\": \\\"颜色块边距设置\\\", \\\"value\\\": \\\"option.padding\\\"}, {\\\"label\\\": \\\"颜色块X间距设置\\\", \\\"value\\\": \\\"option.borderSplitx\\\"}, {\\\"label\\\": \\\"颜色块Y间距设置\\\", \\\"value\\\": \\\"option.borderSplity\\\"}, {\\\"label\\\": \\\"小数位数设置\\\", \\\"value\\\": \\\"option.decimals\\\"}, {\\\"label\\\": \\\"字体大小\\\", \\\"value\\\": \\\"option.fontSize\\\"}, {\\\"label\\\": \\\"字体颜色\\\", \\\"value\\\": \\\"option.color\\\"}, {\\\"label\\\": \\\"字体粗细\\\", \\\"value\\\": \\\"option.fontWeight\\\"}, {\\\"label\\\": \\\"字体对齐方式\\\", \\\"value\\\": \\\"option.textAlign\\\"}, {\\\"label\\\": \\\"前缀字体大小\\\", \\\"value\\\": \\\"option.borderSplity\\\"}, {\\\"label\\\": \\\"前缀字体颜色\\\", \\\"value\\\": \\\"option.prefixColor\\\"}, {\\\"label\\\": \\\"前缀字体粗细\\\", \\\"value\\\": \\\"option.prefixFontWeight\\\"}, {\\\"label\\\": \\\"前缀字体X间距\\\", \\\"value\\\": \\\"option.prefixSplitx\\\"}, {\\\"label\\\": \\\"前缀字体Y间距\\\", \\\"value\\\": \\\"option.prefixSplity\\\"}, {\\\"label\\\": \\\"后缀字体大小\\\", \\\"value\\\": \\\"option.suffixFontSize\\\"}, {\\\"label\\\": \\\"后缀字体颜色\\\", \\\"value\\\": \\\"option.suffixColor\\\"}, {\\\"label\\\": \\\"后缀字体粗细\\\", \\\"value\\\": \\\"option.suffixFontWeight\\\"}, {\\\"label\\\": \\\"后缀字体X间距\\\", \\\"value\\\": \\\"option.suffixSplitx\\\"}, ] } ,{name: \'字体设置\', optionName: \'FlashCloudOption\', children: [{\\\"label\\\": \\\"缩放设置\\\", \\\"value\\\": \\\"option.zoom\\\"}, {\\\"label\\\": \\\"字体大小设置\\\", \\\"value\\\": \\\"option.textSize\\\"}, {\\\"label\\\": \\\"字体颜色设置\\\", \\\"value\\\": \\\"option.textColor\\\"} ] } ,{name: \'字符云设置\', optionName: \'WordCloudOption\', children: [{\\\"label\\\": \\\"字体颜色配置\\\", \\\"value\\\": \\\"option.color\\\"}, {\\\"label\\\": \\\"字体间距设置\\\", \\\"value\\\": \\\"option.padding\\\"}, {\\\"label\\\": \\\"字体旋转设置\\\", \\\"value\\\": \\\"option.rotation\\\"}, {\\\"label\\\": \\\"字体最大值设置\\\", \\\"value\\\": \\\"option.minSize\\\"}, {\\\"label\\\": \\\"字体最小值设置\\\", \\\"value\\\": \\\"option.maxSize\\\"}, {\\\"label\\\": \\\"字体形状设置\\\", \\\"value\\\": \\\"option.series[0].shape\\\"} ] } ,{name: \'轮播表格设置\', optionName: \'ScrollBoardOpt\', children: [{\\\"label\\\": \\\"悬浮暂停设置\\\", \\\"value\\\": \\\"option.hoverPause\\\"}, {\\\"label\\\": \\\"等待时间设置\\\", \\\"value\\\": \\\"option.waitTime\\\"}, {\\\"label\\\": \\\"开启排名\\\", \\\"value\\\": \\\"option.index\\\"}, {\\\"label\\\": \\\"表格列宽\\\", \\\"value\\\": \\\"option.indexWidth\\\"}, {\\\"label\\\": \\\"显示表头\\\", \\\"value\\\": \\\"option.headShow\\\"}, {\\\"label\\\": \\\"表头颜色\\\", \\\"value\\\": \\\"option.headerBGC\\\"}, {\\\"label\\\": \\\"表头行高\\\", \\\"value\\\": \\\"option.headerHeight\\\"}, {\\\"label\\\": \\\"每页行数\\\", \\\"value\\\": \\\"option.rowNum\\\"}, {\\\"label\\\": \\\"奇行颜色\\\", \\\"value\\\": \\\"option.oddRowBGC\\\"}, {\\\"label\\\": \\\"偶行颜色\\\", \\\"value\\\": \\\"option.evenRowBGC\\\"}, ] } ,{name: \'表格设置\', optionName: \'ScrollTableStyle\', children: [{\\\"label\\\": \\\"开启排名\\\", \\\"value\\\": \\\"option.ranking\\\"}, {\\\"label\\\": \\\"开启滚动\\\", \\\"value\\\": \\\"option.scroll\\\"}, {\\\"label\\\": \\\"滚动时间\\\", \\\"value\\\": \\\"option.scrollTime\\\"}, {\\\"label\\\": \\\"显示表头\\\", \\\"value\\\": \\\"option.showHead\\\"}, {\\\"label\\\": \\\"表头背景颜色\\\", \\\"value\\\": \\\"option.headerBgColor\\\"}, {\\\"label\\\": \\\"表头字体颜色\\\", \\\"value\\\": \\\"option.headerFontColor\\\"}, {\\\"label\\\": \\\"表头字体大小\\\", \\\"value\\\": \\\"option.fontSize\\\"}, {\\\"label\\\": \\\"行高设置\\\", \\\"value\\\": \\\"option.lineHeight\\\"}, {\\\"label\\\": \\\"边框显示\\\", \\\"value\\\": \\\"option.showBorder\\\"}, {\\\"label\\\": \\\"边框宽度\\\", \\\"value\\\": \\\"option.borderWidth\\\"}, {\\\"label\\\": \\\"边框颜色\\\", \\\"value\\\": \\\"option.borderColor\\\"}, {\\\"label\\\": \\\"边框线类型\\\", \\\"value\\\": \\\"option.borderStyle\\\"}, {\\\"label\\\": \\\"表格字体颜色\\\", \\\"value\\\": \\\"option.bodyFontColor\\\"}, {\\\"label\\\": \\\"表格字体大小\\\", \\\"value\\\": \\\"option.bodyFontSize\\\"}, {\\\"label\\\": \\\"奇行颜色\\\", \\\"value\\\": \\\"option.oddColor\\\"}, {\\\"label\\\": \\\"偶行颜色\\\", \\\"value\\\": \\\"option.evenColor\\\"}, ] } ,{name: \'历程设置\', optionName: \'DevHistoryOption\', children: [{\\\"label\\\": \\\"缩放设置\\\", \\\"value\\\": \\\"option.zoom\\\"}, {\\\"label\\\": \\\"轮播间隔\\\", \\\"value\\\": \\\"option.waitTime\\\"}, {\\\"label\\\": \\\"历程背景色\\\", \\\"value\\\": \\\"option.typeBackColor\\\"}, {\\\"label\\\": \\\"历程字体颜色\\\", \\\"value\\\": \\\"option.typeFontColor\\\"}, {\\\"label\\\": \\\"内容字体颜色\\\", \\\"value\\\": \\\"option.titleColor\\\"}, {\\\"label\\\": \\\"内容字体大小\\\", \\\"value\\\": \\\"option.titleFontSize\\\"}, ] } ,{name: \'数据表格设置\', optionName: \'TableStyle\', children: [{\\\"label\\\": \\\"表头背景颜色\\\", \\\"value\\\": \\\"option.headerBgColor\\\"}, {\\\"label\\\": \\\"表头字体大小\\\", \\\"value\\\": \\\"option.headerFontSize\\\"}, {\\\"label\\\": \\\"表头字体颜色\\\", \\\"value\\\": \\\"option.headerColor\\\"}, {\\\"label\\\": \\\"表体内容字体颜色\\\", \\\"value\\\": \\\"option.bodyColor\\\"}, {\\\"label\\\": \\\"表体内容字体大小\\\", \\\"value\\\": \\\"option.bodyFontSize\\\"}, {\\\"label\\\": \\\"表体内容背景颜色\\\", \\\"value\\\": \\\"option.bodyBgColor\\\"}, ] } ,{name: \'列表设置\', optionName: \'ListStyle\', children: [{\\\"label\\\": \\\"显示标题前缀\\\", \\\"value\\\": \\\"option.showTitlePrefix\\\"}, {\\\"label\\\": \\\"显示时间前缀\\\", \\\"value\\\": \\\"option.showTimePrefix\\\"}, {\\\"label\\\": \\\"列表布局设置\\\", \\\"value\\\": \\\"option.layout\\\"}, {\\\"label\\\": \\\"标题字体颜色\\\", \\\"value\\\": \\\"option.titleFontColor\\\"}, {\\\"label\\\": \\\"标题字体粗细\\\", \\\"value\\\": \\\"option.titleFontWeight\\\"}, {\\\"label\\\": \\\"标题字体大小\\\", \\\"value\\\": \\\"option.titleFontSize\\\"}, {\\\"label\\\": \\\"内容图标颜色\\\", \\\"value\\\": \\\"option.iconColor\\\"}, {\\\"label\\\": \\\"内容颜色\\\", \\\"value\\\": \\\"option.contentColor\\\"}, {\\\"label\\\": \\\"开启动画设置\\\", \\\"value\\\": \\\"option.isEnableAnimation\\\"}, {\\\"label\\\": \\\"轮播时间(毫秒)设置\\\", \\\"value\\\": \\\"option.scrollTime\\\"}, ] } ,{name: \'滚动设置\', optionName: \'ScrollOption\', children: [{\\\"label\\\": \\\"是否排序\\\", \\\"value\\\": \\\"option.sort\\\"}, {\\\"label\\\": \\\"轮播方式设置单行\\\", \\\"value\\\": \\\"option.carousel\\\",\\\"options\\\": [{\\\"label\\\": \\\"单行\\\", \\\"value\\\": \\\"single\\\"}, {\\\"label\\\": \\\"整页\\\", \\\"value\\\": \\\"page\\\"},]}, {\\\"label\\\": \\\"显示行数\\\", \\\"value\\\": \\\"option.rowNum\\\"}, {\\\"label\\\": \\\"滚动时间(毫秒)设置\\\", \\\"value\\\": \\\"option.waitTime\\\"}, ] } ,{name: \'气泡排名设置\', optionName: \'BubbleRankingStyle\', children: [{\\\"label\\\": \\\"比例设置\\\", \\\"value\\\": \\\"option.zoom\\\"}, {\\\"label\\\": \\\"显示提示词\\\", \\\"value\\\": \\\"option.showTip\\\"}, {\\\"label\\\": \\\"提示词颜色设置为\\\", \\\"value\\\": \\\"option.titleColor\\\"}, {\\\"label\\\": \\\"提示词宽度设置为\\\", \\\"value\\\": \\\"option.tipWidth\\\"}, {\\\"label\\\": \\\"提示词内容颜色设置\\\", \\\"value\\\": \\\"option.tipFontColor\\\"}, {\\\"label\\\": \\\"提示词内容字体大小设置\\\", \\\"value\\\": \\\"option.tipFontSize\\\"} ] } ,{name: \'地图设置\', optionName: \'MapOption\', children: [{\\\"label\\\": \\\"显示区域名称\\\", \\\"value\\\": \\\"option.geo.label.normal.show\\\"}, {\\\"label\\\": \\\"区域名称颜色设置为\\\", \\\"value\\\": \\\"option.geo.label.normal.color\\\"}, {\\\"label\\\": \\\"区域名称字体大小设置为\\\", \\\"value\\\": \\\"option.geo.label.normal.fontSize\\\"}, {\\\"label\\\": \\\"是否开启钻取\\\", \\\"value\\\": \\\"commonOption.breadcrumb.drillDown\\\"}, {\\\"label\\\": \\\"导航文字颜色设置\\\", \\\"value\\\": \\\"commonOption.breadcrumb.drillDown\\\"}, {\\\"label\\\": \\\"是否开启鼠标缩放\\\", \\\"value\\\": \\\"option.geo.roam\\\"}, {\\\"label\\\": \\\"缩放比例设置\\\", \\\"value\\\": \\\"option.geo.zoom\\\"}, {\\\"label\\\": \\\"地图长宽比设置\\\", \\\"value\\\": \\\"option.geo.aspectScale\\\"}, {\\\"label\\\": \\\"地图顶边距设置\\\", \\\"value\\\": \\\"option.geo.top\\\"}, {\\\"label\\\": \\\"地图左边距设置\\\", \\\"value\\\": \\\"option.geo.left\\\"}, ] } ,{name: \'地图配色设置\', optionName: \'LineMapColorOption\', children: [{\\\"label\\\": \\\"启用渐变色\\\", \\\"value\\\": \\\"commonOption.gradientColor\\\"}, {\\\"label\\\": \\\"中心颜色设置为\\\", \\\"value\\\": \\\"commonOption.areaColor.color1\\\"}, {\\\"label\\\": \\\"边缘颜色设置为\\\", \\\"value\\\": \\\"commonOption.areaColor.color2\\\"}, {\\\"label\\\": \\\"区域颜色设置\\\", \\\"value\\\": \\\"commonOption.areaColor.color1\\\"}, {\\\"label\\\": \\\"区域高亮颜色设置\\\", \\\"value\\\": \\\"option.geo.itemStyle.emphasis.areaColor\\\"}, {\\\"label\\\": \\\"区域边界颜色\\\", \\\"value\\\": \\\"option.geo.itemStyle.normal.borderColor\\\"}, {\\\"label\\\": \\\"阴影大小设置\\\", \\\"value\\\": \\\"option.geo.itemStyle.normal.shadowBlur\\\"}, {\\\"label\\\": \\\"阴影水平偏移设置\\\", \\\"value\\\": \\\"option.geo.itemStyle.normal.shadowOffsetX\\\"}, {\\\"label\\\": \\\"阴影垂直偏移设置\\\", \\\"value\\\": \\\"option.geo.itemStyle.normal.shadowOffsetY\\\"}, {\\\"label\\\": \\\"阴影颜色设置\\\", \\\"value\\\": \\\"option.geo.itemStyle.normal.shadowColor\\\"}, ] } ,{name: \'视觉映射设置\', optionName: \'VisualMapOptoin\', children: [{\\\"label\\\": \\\"开启视觉映射\\\", \\\"value\\\": \\\"option.visualMap.show\\\"}, {\\\"label\\\": \\\"视觉映射类型\\\", \\\"value\\\": \\\"option.visualMap.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"continuous\\\", \\\"value\\\": \\\"continuous\\\"}, {\\\"label\\\": \\\"piecewise\\\", \\\"value\\\": \\\"piecewise\\\"}]}, {\\\"label\\\": \\\"视觉映射文本颜色\\\", \\\"value\\\": \\\"option.visualMap.textStyle.color\\\"}, {\\\"label\\\": \\\"视觉映射文本粗细\\\", \\\"value\\\": \\\"option.visualMap.textStyle.fontWeight\\\"}, {\\\"label\\\": \\\"视觉映射文本字体大小设置\\\", \\\"value\\\": \\\"option.visualMap.textStyle.fontSize\\\"}, {\\\"label\\\": \\\"区域边界最小值\\\", \\\"value\\\": \\\"option.visualMap.min\\\"}, {\\\"label\\\": \\\"区域边界最大值\\\", \\\"value\\\": \\\"option.visualMap.max\\\"}, ] } ,{name: \'地图散点设置\', optionName: \'ScatterOption\', children: [{\\\"label\\\": \\\"地图散点大小设置\\\", \\\"value\\\": \\\"option.area.markerSize\\\"}, {\\\"label\\\": \\\"地图散点形状设置\\\", \\\"value\\\": \\\"option.area.markerShape\\\"}, {\\\"label\\\": \\\"地图散点类型设置\\\", \\\"value\\\": \\\"option.area.markerType\\\"}, {\\\"label\\\": \\\"地图散点颜色设置\\\", \\\"value\\\": \\\"option.area.markerColor\\\"}, {\\\"label\\\": \\\"地图散点文本显示\\\", \\\"value\\\": \\\"option.area.scatterLabelShow\\\"}, {\\\"label\\\": \\\"地图散点文本颜色设置\\\", \\\"value\\\": \\\"option.area.scatterLabelColor\\\"}, {\\\"label\\\": \\\"地图散点文本显示位置设置\\\", \\\"value\\\": \\\"option.area.scatterLabelPosition\\\"}, {\\\"label\\\": \\\"地图散点文本字体大小设置\\\", \\\"value\\\": \\\"option.area.scatterFontSize\\\"}, {\\\"label\\\": \\\"地图散点数量设置\\\", \\\"value\\\": \\\"option.area.markerCount\\\"}, {\\\"label\\\": \\\"地图散点透明度设置\\\", \\\"value\\\": \\\"option.area.markerOpacity\\\"}, ] } ,{name: \'热力地图设置\', optionName: \'HeatOption\', children: [{\\\"label\\\": \\\"热力点大小设置\\\", \\\"value\\\": \\\"commonOption.heat.pointSize\\\"}, {\\\"label\\\": \\\"模糊大小设置\\\", \\\"value\\\": \\\"commonOption.heat.blurSize\\\"}, {\\\"label\\\": \\\"最大透明度设置\\\", \\\"value\\\": \\\"commonOption.heat.maxOpacity\\\"}, ] } ,{name: \'柱体地图设置\', optionName: \'BarMapOption\', children: [{\\\"label\\\": \\\"柱体地图柱体大小设置\\\", \\\"value\\\": \\\"commonOption.barSize\\\"}, {\\\"label\\\": \\\"柱体左侧颜色设置\\\", \\\"value\\\": \\\"commonOption.barColor\\\"}, {\\\"label\\\": \\\"柱体右侧颜色设置\\\", \\\"value\\\": \\\"commonOption.barColor2\\\"}, ] } ,{name: \'飞线地图设置\', optionName: \'FlyLineOption\', children: [{\\\"label\\\": \\\"飞线动画时间设置\\\", \\\"value\\\": \\\"commonOption.effect.period\\\"}, {\\\"label\\\": \\\"飞线标记形状设置\\\", \\\"value\\\": \\\"commonOption.effect.markerShape\\\"}, {\\\"label\\\": \\\"飞线标记大小设置\\\", \\\"value\\\": \\\"commonOption.effect.symbolSize\\\"}, {\\\"label\\\": \\\"飞线标记颜色设置\\\", \\\"value\\\": \\\"commonOption.effect.markerColor\\\"}, {\\\"label\\\": \\\"飞线特效尾迹长度设置\\\", \\\"value\\\": \\\"commonOption.effect.trailLength\\\"}, ] } ,{name: \'进度设置\', optionName: \'ProgressOption\', children: [{\\\"label\\\": \\\"显示进度标题\\\", \\\"value\\\": \\\"option.yAxis.axisLabel.show\\\"}, {\\\"label\\\": \\\"进度标题字体颜色设置\\\", \\\"value\\\": \\\"option.yAxis.axisLabel.color\\\"}, {\\\"label\\\": \\\"进度标题字体大小设置\\\", \\\"value\\\": \\\"option.yAxis.axisLabel.fontSize\\\"}, {\\\"label\\\": \\\"进度数值字体颜色设置\\\", \\\"value\\\": \\\"option.series[1].label.color\\\"}, {\\\"label\\\": \\\"进度数值字体大小设置\\\", \\\"value\\\": \\\"option.series[1].label.fontSize\\\"}, {\\\"label\\\": \\\"进度横向偏移设置\\\", \\\"value\\\": \\\"option.valueXOffset\\\"}, {\\\"label\\\": \\\"进度纵向偏移设置\\\", \\\"value\\\": \\\"option.valueYOffset\\\"}, {\\\"label\\\": \\\"进度柱体宽度设置\\\", \\\"value\\\": \\\"option.series[0].barWidth\\\"}, {\\\"label\\\": \\\"进度颜色设置\\\", \\\"value\\\": \\\"option.series[0].color\\\"}, {\\\"label\\\": \\\"进度目标颜色设置\\\", \\\"value\\\": \\\"option.series[1].color\\\"}, ] } ,{name: \'南丁格尔玫瑰设置\', optionName: \'RoseOption\', children: [{\\\"label\\\": \\\"边框宽度\\\", \\\"value\\\": \\\"option.series[0].itemStyle.borderWidth\\\"}, {\\\"label\\\": \\\"颜色透明度\\\", \\\"value\\\": \\\"option.series[0].itemStyle.colorOpacity\\\"}, ] } ,{name: \'统计概览基本设置\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"布局填充类型设置\\\", \\\"value\\\": \\\"option.layout.fill.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"无\\\", \\\"value\\\": \\\"none\\\"}, {\\\"label\\\": \\\"颜色\\\", \\\"value\\\": \\\"color\\\"}, {\\\"label\\\": \\\"图片\\\", \\\"value\\\": \\\"image\\\"}]}, {\\\"label\\\": \\\"布局背景颜色设置\\\", \\\"value\\\": \\\"option.layout.fill.color\\\"}, {\\\"label\\\": \\\"布局启用渐变\\\", \\\"value\\\": \\\"option.layout.fill.gradient.enabled\\\"}, {\\\"label\\\": \\\"布局渐变方向设置\\\", \\\"value\\\": \\\"option.layout.fill.gradient.direction\\\"}, {\\\"label\\\": \\\"布局渐变起始颜色设置\\\", \\\"value\\\": \\\"option.layout.fill.gradient.startColor\\\"}, {\\\"label\\\": \\\"布局渐变结束颜色设置\\\", \\\"value\\\": \\\"option.layout.fill.gradient.endColor\\\"}, {\\\"label\\\": \\\"布局渐变角度设置\\\", \\\"value\\\": \\\"option.layout.fill.gradient.angle\\\"}, {\\\"label\\\": \\\"布局圆角设置\\\", \\\"value\\\": \\\"option.layout.borderRadius\\\"}, {\\\"label\\\": \\\"布局边框宽度设置\\\", \\\"value\\\": \\\"option.layout.borderWidth\\\"}, {\\\"label\\\": \\\"布局边框颜色设置\\\", \\\"value\\\": \\\"option.layout.borderColor\\\"}, {\\\"label\\\": \\\"布局阴影设置\\\", \\\"value\\\": \\\"option.layout.shadow\\\"}, {\\\"label\\\": \\\"布局水平对齐方式设置\\\", \\\"value\\\": \\\"option.layout.justify\\\", \\\"options\\\": [{\\\"label\\\": \\\"左对齐\\\", \\\"value\\\": \\\"flex-start\\\"}, {\\\"label\\\": \\\"居中\\\", \\\"value\\\": \\\"center\\\"}, {\\\"label\\\": \\\"右对齐\\\", \\\"value\\\": \\\"flex-end\\\"}, {\\\"label\\\": \\\"两端对齐\\\", \\\"value\\\": \\\"space-between\\\"}, {\\\"label\\\": \\\"两侧留白\\\", \\\"value\\\": \\\"space-around\\\"}]}, {\\\"label\\\": \\\"布局元素间距设置\\\", \\\"value\\\": \\\"option.layout.gap\\\"}, {\\\"label\\\": \\\"布局上内边距设置\\\", \\\"value\\\": \\\"option.layout.padding.top\\\"}, {\\\"label\\\": \\\"布局右内边距设置\\\", \\\"value\\\": \\\"option.layout.padding.right\\\"}, {\\\"label\\\": \\\"布局左内边距设置\\\", \\\"value\\\": \\\"option.layout.padding.left\\\"}, ] } ,{name: \'统计概览字段映射\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"标题字段设置\\\", \\\"value\\\": \\\"option.fieldMap.label\\\"}, {\\\"label\\\": \\\"数值字段设置\\\", \\\"value\\\": \\\"option.fieldMap.value\\\"}, {\\\"label\\\": \\\"单位字段设置\\\", \\\"value\\\": \\\"option.fieldMap.unit\\\"}, {\\\"label\\\": \\\"对比字段设置\\\", \\\"value\\\": \\\"option.fieldMap.compareValue\\\"}, {\\\"label\\\": \\\"标签字段设置\\\", \\\"value\\\": \\\"option.fieldMap.compareLabel\\\"}, {\\\"label\\\": \\\"状态字段设置\\\", \\\"value\\\": \\\"option.fieldMap.compareState\\\"}, {\\\"label\\\": \\\"上升值设置\\\", \\\"value\\\": \\\"option.fieldMap.positiveValue\\\"}, {\\\"label\\\": \\\"下降值设置\\\", \\\"value\\\": \\\"option.fieldMap.negativeValue\\\"}, ] } ,{name: \'统计概览卡片样式\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"卡片最小宽度设置\\\", \\\"value\\\": \\\"option.card.minWidth\\\"}, {\\\"label\\\": \\\"卡片填充类型设置\\\", \\\"value\\\": \\\"option.card.fill.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"无\\\", \\\"value\\\": \\\"none\\\"}, {\\\"label\\\": \\\"颜色\\\", \\\"value\\\": \\\"color\\\"}, {\\\"label\\\": \\\"图片\\\", \\\"value\\\": \\\"image\\\"}]}, {\\\"label\\\": \\\"卡片底色设置\\\", \\\"value\\\": \\\"option.card.fill.color\\\"}, {\\\"label\\\": \\\"卡片启用渐变\\\", \\\"value\\\": \\\"option.card.fill.gradient.enabled\\\"}, {\\\"label\\\": \\\"卡片渐变方向设置\\\", \\\"value\\\": \\\"option.card.fill.gradient.direction\\\"}, {\\\"label\\\": \\\"卡片渐变起始颜色设置\\\", \\\"value\\\": \\\"option.card.fill.gradient.startColor\\\"}, {\\\"label\\\": \\\"卡片渐变结束颜色设置\\\", \\\"value\\\": \\\"option.card.fill.gradient.endColor\\\"}, {\\\"label\\\": \\\"卡片渐变角度设置\\\", \\\"value\\\": \\\"option.card.fill.gradient.angle\\\"}, {\\\"label\\\": \\\"卡片圆角设置\\\", \\\"value\\\": \\\"option.card.borderRadius\\\"}, {\\\"label\\\": \\\"卡片边框宽度设置\\\", \\\"value\\\": \\\"option.card.borderWidth\\\"}, {\\\"label\\\": \\\"卡片边框颜色设置\\\", \\\"value\\\": \\\"option.card.borderColor\\\"}, {\\\"label\\\": \\\"卡片垂直内边距设置\\\", \\\"value\\\": \\\"option.card.padding.vertical\\\"}, {\\\"label\\\": \\\"卡片水平内边距设置\\\", \\\"value\\\": \\\"option.card.padding.horizontal\\\"}, {\\\"label\\\": \\\"卡片阴影设置\\\", \\\"value\\\": \\\"option.card.shadow\\\"}, {\\\"label\\\": \\\"卡片模糊程度设置\\\", \\\"value\\\": \\\"option.card.blur\\\"}, ] } ,{name: \'统计概览上部配置\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"上部显示\\\", \\\"value\\\": \\\"option.sections.top.show\\\"}, {\\\"label\\\": \\\"上部内容类型设置\\\", \\\"value\\\": \\\"option.sections.top.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"主数值\\\", \\\"value\\\": \\\"value\\\"}, {\\\"label\\\": \\\"同比\\\", \\\"value\\\": \\\"compare\\\"}, {\\\"label\\\": \\\"标题\\\", \\\"value\\\": \\\"label\\\"}]}, {\\\"label\\\": \\\"上部水平对齐设置\\\", \\\"value\\\": \\\"option.sections.top.align\\\", \\\"options\\\": [{\\\"label\\\": \\\"左对齐\\\", \\\"value\\\": \\\"left\\\"}, {\\\"label\\\": \\\"居中\\\", \\\"value\\\": \\\"center\\\"}, {\\\"label\\\": \\\"右对齐\\\", \\\"value\\\": \\\"right\\\"}]}, {\\\"label\\\": \\\"上部上内边距设置\\\", \\\"value\\\": \\\"option.sections.top.paddingTop\\\"}, {\\\"label\\\": \\\"上部下内边距设置\\\", \\\"value\\\": \\\"option.sections.top.paddingBottom\\\"}, {\\\"label\\\": \\\"上部最小高设置\\\", \\\"value\\\": \\\"option.sections.top.minHeight\\\"}, {\\\"label\\\": \\\"上部数值字体大小设置\\\", \\\"value\\\": \\\"option.sections.top.value.fontSize\\\"}, {\\\"label\\\": \\\"上部数值字体颜色设置\\\", \\\"value\\\": \\\"option.sections.top.value.fontColor\\\"}, {\\\"label\\\": \\\"上部数值字体粗细设置\\\", \\\"value\\\": \\\"option.sections.top.value.fontWeight\\\"}, {\\\"label\\\": \\\"上部单位间距设置\\\", \\\"value\\\": \\\"option.sections.top.value.unitGap\\\"}, {\\\"label\\\": \\\"上部单位字体大小设置\\\", \\\"value\\\": \\\"option.sections.top.value.unit.fontSize\\\"}, {\\\"label\\\": \\\"上部单位字体颜色设置\\\", \\\"value\\\": \\\"option.sections.top.value.unit.fontColor\\\"}, ] } ,{name: \'统计概览中部配置\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"中部显示\\\", \\\"value\\\": \\\"option.sections.middle.show\\\"}, {\\\"label\\\": \\\"中部内容类型设置\\\", \\\"value\\\": \\\"option.sections.middle.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"主数值\\\", \\\"value\\\": \\\"value\\\"}, {\\\"label\\\": \\\"同比\\\", \\\"value\\\": \\\"compare\\\"}, {\\\"label\\\": \\\"标题\\\", \\\"value\\\": \\\"label\\\"}]}, {\\\"label\\\": \\\"中部水平对齐设置\\\", \\\"value\\\": \\\"option.sections.middle.align\\\"}, {\\\"label\\\": \\\"中部上内边距设置\\\", \\\"value\\\": \\\"option.sections.middle.paddingTop\\\"}, {\\\"label\\\": \\\"中部下内边距设置\\\", \\\"value\\\": \\\"option.sections.middle.paddingBottom\\\"}, {\\\"label\\\": \\\"中部最小高设置\\\", \\\"value\\\": \\\"option.sections.middle.minHeight\\\"}, {\\\"label\\\": \\\"中部垂直对齐设置\\\", \\\"value\\\": \\\"option.sections.middle.alignItems\\\"}, {\\\"label\\\": \\\"中部对比标签字体大小设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.labelStyle.fontSize\\\"}, {\\\"label\\\": \\\"中部对比标签字体颜色设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.labelStyle.fontColor\\\"}, {\\\"label\\\": \\\"中部对比数值字体大小设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.valueStyle.fontSize\\\"}, {\\\"label\\\": \\\"中部对比数值字体颜色设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.valueStyle.fontColor\\\"}, {\\\"label\\\": \\\"中部对比上涨颜色设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.valueStyle.positiveColor\\\"}, {\\\"label\\\": \\\"中部对比下降颜色设置\\\", \\\"value\\\": \\\"option.sections.middle.compare.valueStyle.negativeColor\\\"}, ] } ,{name: \'统计概览下部配置\', optionName: \'StatsSummaryOption\', children: [{\\\"label\\\": \\\"下部显示\\\", \\\"value\\\": \\\"option.sections.bottom.show\\\"}, {\\\"label\\\": \\\"下部内容类型设置\\\", \\\"value\\\": \\\"option.sections.bottom.type\\\", \\\"options\\\": [{\\\"label\\\": \\\"主数值\\\", \\\"value\\\": \\\"value\\\"}, {\\\"label\\\": \\\"同比\\\", \\\"value\\\": \\\"compare\\\"}, {\\\"label\\\": \\\"标题\\\", \\\"value\\\": \\\"label\\\"}]}, {\\\"label\\\": \\\"下部水平对齐设置\\\", \\\"value\\\": \\\"option.sections.bottom.align\\\"}, {\\\"label\\\": \\\"下部上内边距设置\\\", \\\"value\\\": \\\"option.sections.bottom.paddingTop\\\"}, {\\\"label\\\": \\\"下部下内边距设置\\\", \\\"value\\\": \\\"option.sections.bottom.paddingBottom\\\"}, {\\\"label\\\": \\\"下部最小高设置\\\", \\\"value\\\": \\\"option.sections.bottom.minHeight\\\"}, {\\\"label\\\": \\\"下部标题字体大小设置\\\", \\\"value\\\": \\\"option.sections.bottom.label.fontSize\\\"}, {\\\"label\\\": \\\"下部标题字体颜色设置\\\", \\\"value\\\": \\\"option.sections.bottom.label.fontColor\\\"}, {\\\"label\\\": \\\"下部标题字体粗细设置\\\", \\\"value\\\": \\\"option.sections.bottom.label.fontWeight\\\"}, ] } ,{name: \'卡片滚动基础配置\', optionName: \'CardScrollOption\', children: [{\\\"label\\\": \\\"排列方向设置\\\", \\\"value\\\": \\\"option.direction\\\", \\\"options\\\": [{\\\"label\\\": \\\"横向排列\\\", \\\"value\\\": \\\"horizontal\\\"}, {\\\"label\\\": \\\"竖向排列\\\", \\\"value\\\": \\\"vertical\\\"}]}, {\\\"label\\\": \\\"行间隙设置\\\", \\\"value\\\": \\\"option.rowGap\\\"}, {\\\"label\\\": \\\"列间隙设置\\\", \\\"value\\\": \\\"option.columnGap\\\"}, ] } ,{name: \'卡片滚动滚动配置\', optionName: \'CardScrollOption\', children: [{\\\"label\\\": \\\"是否滚动设置\\\", \\\"value\\\": \\\"option.autoScrollEnabled\\\"}, {\\\"label\\\": \\\"滚动方向设置\\\", \\\"value\\\": \\\"option.scrollDirection\\\", \\\"options\\\": [{\\\"label\\\": \\\"向左滚动\\\", \\\"value\\\": \\\"left\\\"}, {\\\"label\\\": \\\"向上滚动\\\", \\\"value\\\": \\\"up\\\"}]}, {\\\"label\\\": \\\"滚动个数设置\\\", \\\"value\\\": \\\"option.scrollCount\\\"}, {\\\"label\\\": \\\"停留时间设置\\\", \\\"value\\\": \\\"option.stayDuration\\\"}, {\\\"label\\\": \\\"动画时长设置\\\", \\\"value\\\": \\\"option.animationDuration\\\"}, ] } ,{name: \'卡片滚动卡片配置\', optionName: \'CardScrollOption\', children: [{\\\"label\\\": \\\"卡片宽度设置\\\", \\\"value\\\": \\\"option.cardStyle.width\\\"}, {\\\"label\\\": \\\"卡片高度设置\\\", \\\"value\\\": \\\"option.cardStyle.height\\\"}, {\\\"label\\\": \\\"卡片背景色设置\\\", \\\"value\\\": \\\"option.cardStyle.backgroundColor\\\"}, {\\\"label\\\": \\\"卡片背景图片设置\\\", \\\"value\\\": \\\"option.cardStyle.backgroundImage\\\"}, {\\\"label\\\": \\\"卡片高亮图片设置\\\", \\\"value\\\": \\\"option.cardStyle.bgHighlightImage\\\"}, {\\\"label\\\": \\\"卡片圆角设置\\\", \\\"value\\\": \\\"option.cardStyle.borderRadius\\\"}, {\\\"label\\\": \\\"卡片边框显示\\\", \\\"value\\\": \\\"option.cardStyle.borderEnabled\\\"}, {\\\"label\\\": \\\"卡片边框颜色设置\\\", \\\"value\\\": \\\"option.cardStyle.borderColor\\\"}, {\\\"label\\\": \\\"卡片边框样式设置\\\", \\\"value\\\": \\\"option.cardStyle.borderStyle\\\", \\\"options\\\": [{\\\"label\\\": \\\"实线\\\", \\\"value\\\": \\\"solid\\\"}, {\\\"label\\\": \\\"虚线\\\", \\\"value\\\": \\\"dashed\\\"}, {\\\"label\\\": \\\"点线\\\", \\\"value\\\": \\\"dotted\\\"}, {\\\"label\\\": \\\"双线\\\", \\\"value\\\": \\\"double\\\"}]}, {\\\"label\\\": \\\"卡片边框宽度设置\\\", \\\"value\\\": \\\"option.cardStyle.borderWidth\\\"}, {\\\"label\\\": \\\"卡片上内边距设置\\\", \\\"value\\\": \\\"option.cardStyle.paddingTop\\\"}, {\\\"label\\\": \\\"卡片右内边距设置\\\", \\\"value\\\": \\\"option.cardStyle.paddingRight\\\"}, {\\\"label\\\": \\\"卡片下内边距设置\\\", \\\"value\\\": \\\"option.cardStyle.paddingBottom\\\"}, {\\\"label\\\": \\\"卡片左内边距设置\\\", \\\"value\\\": \\\"option.cardStyle.paddingLeft\\\"}, ] } ,{name: \'卡片滚动字段配置\', optionName: \'CardScrollOption\', children: [{\\\"label\\\": \\\"显示序号\\\", \\\"value\\\": \\\"option.showIndex\\\"}, {\\\"label\\\": \\\"字段排列方式设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.layoutDirection\\\", \\\"options\\\": [{\\\"label\\\": \\\"水平方向(左-右)\\\", \\\"value\\\": \\\"row\\\"}, {\\\"label\\\": \\\"水平方向(右-左)\\\", \\\"value\\\": \\\"row-reverse\\\"}, {\\\"label\\\": \\\"垂直方向(上-下)\\\", \\\"value\\\": \\\"column\\\"}, {\\\"label\\\": \\\"垂直方向(下-上)\\\", \\\"value\\\": \\\"column-reverse\\\"}]}, {\\\"label\\\": \\\"字段水平对齐设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.justifyContent\\\"}, {\\\"label\\\": \\\"字段垂直对齐设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.alignItems\\\"}, {\\\"label\\\": \\\"字段宽度设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.width\\\"}, {\\\"label\\\": \\\"字段高度设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.height\\\"}, {\\\"label\\\": \\\"字段上边距设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.marginTop\\\"}, {\\\"label\\\": \\\"字段下边距设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.marginBottom\\\"}, {\\\"label\\\": \\\"字段左边距设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.marginLeft\\\"}, {\\\"label\\\": \\\"字段右边距设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].itemConfig.marginRight\\\"}, {\\\"label\\\": \\\"字段省略显示\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].omitConfig.show\\\"}, {\\\"label\\\": \\\"字段省略行数设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].omitConfig.lines\\\"}, {\\\"label\\\": \\\"字段千分符显示\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].thousandSeparatorConfig.show\\\"}, {\\\"label\\\": \\\"字段显示标签\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].showLabel\\\"}, {\\\"label\\\": \\\"字段显示值\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].showValue\\\"}, {\\\"label\\\": \\\"字段值类型设置\\\", \\\"value\\\": \\\"option.contentFieldMapping[${index}].valueType\\\", \\\"options\\\": [{\\\"label\\\": \\\"非数组\\\", \\\"value\\\": \\\"non-array\\\"}, {\\\"label\\\": \\\"数组\\\", \\\"value\\\": \\\"array\\\"}]}, ] } ,{name: \'滚动列表基本配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"显示表头\\\", \\\"value\\\": \\\"option.showHeader\\\"}, {\\\"label\\\": \\\"每行数量设置\\\", \\\"value\\\": \\\"option.itemsPerRow\\\"}, {\\\"label\\\": \\\"列间距设置\\\", \\\"value\\\": \\\"option.gridGap\\\"}, ] } ,{name: \'滚动列表滚动配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"是否滚动设置\\\", \\\"value\\\": \\\"option.autoScrollEnabled\\\"}, {\\\"label\\\": \\\"滚动时长设置\\\", \\\"value\\\": \\\"option.autoScrollInterval\\\"}, ] } ,{name: \'滚动列表容器配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"容器背景色设置\\\", \\\"value\\\": \\\"option.backgroundColor\\\"}, {\\\"label\\\": \\\"容器圆角设置\\\", \\\"value\\\": \\\"option.borderRadius\\\"}, {\\\"label\\\": \\\"容器左边距设置\\\", \\\"value\\\": \\\"option.marginLeft\\\"}, {\\\"label\\\": \\\"容器右边距设置\\\", \\\"value\\\": \\\"option.marginRight\\\"}, ] } ,{name: \'滚动列表表头配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"表头高度设置\\\", \\\"value\\\": \\\"option.header.height\\\"}, {\\\"label\\\": \\\"表头背景色设置\\\", \\\"value\\\": \\\"option.header.backgroundColor\\\"}, {\\\"label\\\": \\\"表头字体大小设置\\\", \\\"value\\\": \\\"option.header.fontSize\\\"}, {\\\"label\\\": \\\"表头字体颜色设置\\\", \\\"value\\\": \\\"option.header.fontColor\\\"}, {\\\"label\\\": \\\"表头字体粗细设置\\\", \\\"value\\\": \\\"option.header.fontWeight\\\"}, {\\\"label\\\": \\\"表头字体样式设置\\\", \\\"value\\\": \\\"option.header.fontStyle\\\"}, {\\\"label\\\": \\\"表头字间距设置\\\", \\\"value\\\": \\\"option.header.letterSpacing\\\"}, {\\\"label\\\": \\\"表头字体设置\\\", \\\"value\\\": \\\"option.header.fontFamily\\\"}, {\\\"label\\\": \\\"表头启用渐变\\\", \\\"value\\\": \\\"option.header.fontGradient.enabled\\\"}, {\\\"label\\\": \\\"表头渐变起始颜色设置\\\", \\\"value\\\": \\\"option.header.fontGradient.startColor\\\"}, {\\\"label\\\": \\\"表头渐变结束颜色设置\\\", \\\"value\\\": \\\"option.header.fontGradient.endColor\\\"}, {\\\"label\\\": \\\"表头对齐方式设置\\\", \\\"value\\\": \\\"option.header.textAlign\\\", \\\"options\\\": [{\\\"label\\\": \\\"左对齐\\\", \\\"value\\\": \\\"left\\\"}, {\\\"label\\\": \\\"居中\\\", \\\"value\\\": \\\"center\\\"}, {\\\"label\\\": \\\"右对齐\\\", \\\"value\\\": \\\"right\\\"}]}, ] } ,{name: \'滚动列表行配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"文本多行展示\\\", \\\"value\\\": \\\"option.row.isMultiline\\\"}, {\\\"label\\\": \\\"行背景类型设置\\\", \\\"value\\\": \\\"option.row.backgroundType\\\", \\\"options\\\": [{\\\"label\\\": \\\"背景色\\\", \\\"value\\\": \\\"color\\\"}, {\\\"label\\\": \\\"背景图\\\", \\\"value\\\": \\\"image\\\"}]}, {\\\"label\\\": \\\"行背景色设置\\\", \\\"value\\\": \\\"option.row.backgroundColor\\\"}, {\\\"label\\\": \\\"交替行背景色设置\\\", \\\"value\\\": \\\"option.row.alternateBackgroundColor\\\"}, {\\\"label\\\": \\\"行背景图片设置\\\", \\\"value\\\": \\\"option.row.backgroundImg\\\"}, {\\\"label\\\": \\\"行高度设置\\\", \\\"value\\\": \\\"option.row.height\\\"}, {\\\"label\\\": \\\"行内边距设置\\\", \\\"value\\\": \\\"option.row.padding\\\"}, {\\\"label\\\": \\\"行上边距设置\\\", \\\"value\\\": \\\"option.row.marginTop\\\"}, {\\\"label\\\": \\\"行下边距设置\\\", \\\"value\\\": \\\"option.row.marginBottom\\\"}, {\\\"label\\\": \\\"行左边距设置\\\", \\\"value\\\": \\\"option.row.marginLeft\\\"}, {\\\"label\\\": \\\"行右边距设置\\\", \\\"value\\\": \\\"option.row.marginRight\\\"}, ] } ,{name: \'滚动列表字段配置\', optionName: \'ScrollListOption\', children: [{\\\"label\\\": \\\"显示序号\\\", \\\"value\\\": \\\"option.showIndex\\\"}, {\\\"label\\\": \\\"字段文本对齐设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].textAlign\\\", \\\"options\\\": [{\\\"label\\\": \\\"左对齐\\\", \\\"value\\\": \\\"left\\\"}, {\\\"label\\\": \\\"居中\\\", \\\"value\\\": \\\"center\\\"}, {\\\"label\\\": \\\"右对齐\\\", \\\"value\\\": \\\"right\\\"}]}, {\\\"label\\\": \\\"字段宽度设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].width\\\"}, {\\\"label\\\": \\\"字段图片宽度设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].imageStyle.width\\\"}, {\\\"label\\\": \\\"字段图片高度设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].imageStyle.height\\\"}, {\\\"label\\\": \\\"字段图片圆角设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].imageStyle.borderRadius\\\"}, {\\\"label\\\": \\\"字段左边距设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].marginLeft\\\"}, {\\\"label\\\": \\\"字段右边距设置\\\", \\\"value\\\": \\\"option.fieldMapping[${index}].marginRight\\\"}, ] } ]\\n\\n\"},{\"role\":\"user\",\"content\":\"用户的问题:{{userQuestion}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"content\",\"name\":\"userQuestion\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":180}},{\"id\":\"269049045129183232\",\"type\":\"end\",\"x\":1272,\"y\":459,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{option}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"option\",\"nodeId\":\"269048862299471872\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"269048862303666176\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"269048862299471872\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"269048862299471872_input\",\"pointsList\":[{\"x\":466,\"y\":422},{\"x\":566,\"y\":422},{\"x\":523,\"y\":412},{\"x\":623,\"y\":412}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"269049045129183233\",\"type\":\"base-edge\",\"sourceNodeId\":\"269048862299471872\",\"targetNodeId\":\"269049045129183232\",\"sourceAnchorId\":\"269048862299471872_output\",\"targetAnchorId\":\"269049045129183232_input\",\"pointsList\":[{\"x\":955,\"y\":412},{\"x\":1055,\"y\":412},{\"x\":1006,\"y\":422},{\"x\":1106,\"y\":422}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"text\",\"name\":\"option\",\"nodeId\":\"269048862299471872\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-INSERT INTO `airag_flow` VALUES ('2006294471763537922', 'admin', '2025-12-31 17:20:52', 'admin', '2026-01-22 09:54:46', 'A05A05A02', NULL, 'jeecg', 'AI大屏SQL助手', '', '', 'THEN(\n start.tag(\'start-node\'),\n llm.tag(\'269395028940378112\'),\n end.tag(\'269395047139463168\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":437,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"269395028940378112\",\"type\":\"llm\",\"x\":790,\"y\":481,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:SQL数据专家\\n你是一位精通SQL查询、数据提取与分析的专家,专注于将用户的数据需求转化为高效、准确的SQL语句,并提供清晰的数据洞察。\\n## 目标:\\n1. 根据用户描述的业务问题或数据需求,编写精准、优化的SQL查询语句。\\n2. 对查询结果进行分析,提炼关键信息、趋势或异常,并以易于理解的方式呈现结论。\\n## 技能:\\n1. **需求解析**:能够快速理解用户的数据提取与分析需求,并将其拆解为具体的数据库操作步骤。\\n2. **SQL编写**:精通标准SQL语法,能熟练运用`SELECT`, `JOIN`, `WHERE`, `GROUP BY`, `HAVING`, `窗口函数`、`CTE`等完成复杂查询。\\n3. **性能优化**:具备编写高效SQL语句的意识,能考虑索引、子查询优化、避免全表扫描等问题。\\n4. **数据分析**:能够对查询结果集进行基本的统计分析(如汇总、对比、趋势计算),并解释其业务含义。\\n5. **结果呈现**:能够将数据结果和分析结论结构化、清晰地组织起来。\\n## 工作流:\\n1. **澄清需求**:首先与用户确认其数据需求的具体细节,包括但不限于:涉及的表、字段、筛选条件、聚合维度、排序要求以及期望的分析角度。如果信息不足,主动提问。\\n2. **构建查询**:基于澄清后的需求,构思并编写SQL查询语句。在输出代码前,简要说明查询的逻辑思路。\\n3. **执行与验证(模拟)**:以注释或说明的形式,模拟查询可能返回的结果样例或数据结构,确保逻辑正确。\\n4. **分析与洞察**:基于模拟的查询结果,进行数据分析。指出关键数据点、趋势、异常或值得注意的发现,并用平实的语言解释其潜在的业务意义。\\n5. **提供建议**:根据分析结果,可能的话,提出进一步深入分析的查询方向或基于数据的行动建议。\\n## 输出格式:\\n你的回答应遵循以下结构:\\n1. **需求确认**:[复述并确认你理解的需求]\\n2. **查询思路**:[简要说明你将如何通过SQL实现该需求]\\n3. **SQL代码**:\\n - 这里放置你编写的SQL代码\\n4. **预期结果/分析**:\\n- **数据摘要**:[描述查询结果的主要特征,如行数、关键统计值]\\n- **核心洞察**:[列出1-3个最重要的发现或结论]\\n- **详细说明**:[对上述洞察进行展开解释]\\n6. **后续建议(可选)**:[基于当前分析,提出后续可探索的问题或查询建议]\\n## 限制:\\n- 所有SQL语句应基于通用的ANSI SQL标准编写,若需使用特定数据库(如MySQL, PostgreSQL)的方言,需明确指出。\\n- 只允许生成查询SQL语句,其他SQL操作全部禁止。\\n- 只返回SQL语句本身,例如:select * from demo; 不要返回其他任何无关内容。\\n- 不要返回sql外的任何内容,例如```sql select * from demo```,这种格式是必须禁止的,只能SQL本身。\\n- 在分析数据时,所有推断和结论需基于查询结果逻辑得出,对于无法从给定需求中确定的信息,使用“[需核实]”标记。\\n- 不得生成任何用于非法数据访问、破坏数据完整性或侵犯隐私的SQL语句(如`DROP TABLE`, 未经授权的`DELETE`,或涉及个人敏感信息的无条件查询)。涉及此类请求时,应拒绝并引导至合规方向。\\n- 保持回答的专业性和客观性,避免主观臆断。\\n- 用户提供业务数据,在业务数据中找表名的,根据需求,返回合适的表名,禁止主观臆断或者生成构建虚假数据和非提供业务数据之外的内容。\"},{\"role\":\"user\",\"content\":\"{{content}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":180}},{\"id\":\"269395047139463168\",\"type\":\"end\",\"x\":1272,\"y\":459,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{res}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"269395028940378112\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"269395028948766720\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"269395028940378112\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"269395028940378112_input\",\"pointsList\":[{\"x\":466,\"y\":422},{\"x\":566,\"y\":422},{\"x\":524,\"y\":422},{\"x\":624,\"y\":422}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"269395047143657472\",\"type\":\"base-edge\",\"sourceNodeId\":\"269395028940378112\",\"targetNodeId\":\"269395047139463168\",\"sourceAnchorId\":\"269395028940378112_output\",\"targetAnchorId\":\"269395047139463168_input\",\"pointsList\":[{\"x\":956,\"y\":422},{\"x\":1056,\"y\":422},{\"x\":1006,\"y\":422},{\"x\":1106,\"y\":422}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"text\",\"name\":\"res\",\"nodeId\":\"269395028940378112\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-INSERT INTO `airag_flow` VALUES ('2008379264947519489', 'admin', '2026-01-06 11:25:05', 'admin', '2026-03-26 19:36:49', 'A01', NULL, 'jeecg', 'Chat2BI生成图表', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'271554566412288000\')).to(\n SWITCH(classifier.tag(\'271481764802605056\')).to(\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\"),\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271481764802605056\'),\n SWITCH(classifier.tag(\'271554622242668544\')).to(\n SWITCH(classifier.tag(\'271481764802605056\')).to(\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\"),\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271481764802605056\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271554622242668544\')\n ).tag(\'271554566412288000\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":-197,\"y\":509,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\",\"range\":[0,23],\"values\":[],\"interval\":{\"start\":0,\"step\":1}},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\",\"range\":[1,31],\"values\":[],\"interval\":{\"start\":1,\"step\":1}},\"week\":{\"values\":[1]}},\"month\":{\"mode\":\"every\",\"values\":[]}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"271480115023458304\",\"type\":\"end\",\"x\":1372,\"y\":819,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"很抱歉,我无法回复您的这个问题,您可以向我询问图表相关的信息,比如:查询用户表的男女比例。\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"d\",\"nodeId\":\"271481764802605056\",\"customValue\":\"\",\"type\":\"number\"}],\"width\":332,\"height\":136}},{\"id\":\"271481764802605056\",\"type\":\"classifier\",\"x\":854,\"y\":462,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek-chat\",\"temperature\":0.7}},\"categories\":[{\"category\":\"用户希望查询图表、报表或相关数据、信息\",\"next\":\"271556843709317120\"}],\"else\":{\"next\":\"271480115023458304\"}},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"分类描述\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271483924713975808\",\"type\":\"end\",\"x\":3200,\"y\":430,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{回复}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271548210211192832\",\"type\":\"llm\",\"x\":2454,\"y\":433,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":99,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\n你是一位严谨的数据可视化助手。你的唯一职责是:根据用户需求,从数据库查询数据并生成 `` 图表标签。你不处理任何与图表生成无关的请求。\\n## 核心原则\\n1. **数据真实性**:所有图表数据必须来源于 SQL 查询结果或用户直接提供的数据,严禁虚构、编造、推测任何数据。\\n2. **格式严格性**:输出必须严格遵循指定的 `` 标签格式,不得有任何偏差。\\n3. **最小权限**:仅对下方列出的已授权表执行 SELECT 查询,拒绝一切超出范围的操作。\\n4. **隐私合规**:禁止输出可识别个人身份的敏感信息(完整身份证号、详细住址、明文密码等),涉及此类字段必须脱敏或拒绝。\\n## 图表类型定义\\n### 简单图表(直接使用 x/y 格式)\\n| type | 名称 | data 格式 |\\n|------|------|-----------|\\n| `bar` | 柱状图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n| `line` | 折线图/曲线图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n| `pie` | 饼图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n### 复杂图表(必须先查询示例格式)\\n| type | 名称 |\\n|------|------|\\n| `radar` | 雷达图 |\\n| `gauge` | 仪表盘 |\\n| `barline` | 折柱混合图 |\\n| `multibar` | 多列柱状图 |\\n| `multiline` | 多行折线图 |\\n| `area` | 面积图 |\\n## 工作流程(严格按顺序执行)\\n### 第一步:需求解析\\n分析用户请求,提取以下信息:\\n- **图表类型**:用户想要哪种图表?若未明确指定,根据数据特征推断最合适的类型。记录用户是否**明确指定**了图表类型(影响后续是否生成 `altTypes`)。\\n- **数据维度**:x 轴(分类/时间)和 y 轴(度量/指标)分别是什么?\\n- **数据来源**:用户是否指定了数据源?是否直接提供了数据?\\n- **筛选条件**:是否有时间范围、分组条件、排序要求、数量限制等?\\n**若需求模糊不可执行**(无法确定表、字段或图表类型),必须向用户提问澄清,不得猜测执行。\\n### 第二步:判断数据来源\\n```\\n用户已直接提供数据?\\n├─ 是 → 跳到第四步(数据转换)\\n└─ 否 → 继续第三步(数据库查询)\\n```\\n### 第三步:数据库查询\\n**3.1 验证表范围**\\n检查需求涉及的表是否在下方「支持的数据源」列表中。\\n- 若不在列表中 → 立即告知用户\\\"该表不在可查询范围内\\\",终止流程。\\n- 若在列表中 → 继续。\\n**3.2 查询表结构**\\n调用工具查询相关表的字段结构,了解可用列名、数据类型和字段备注。\\n字段备注将用于数据表格的列标题显示,请在构建 `columns` 时使用。\\n**3.3 构建 SQL**\\n你需要构建两条 SQL:\\n1. **图表聚合 SQL**(用于图表渲染):包含 `GROUP BY`、聚合函数等,产出图表所需的汇总数据。\\n2. **原始数据 SQL**(用于数据表格展示):查询图表统计所依赖的原始明细数据,不包含 `GROUP BY` 和聚合函数,不添加 `LIMIT` 分页限制(系统会自动处理分页)。\\n两条 SQL 严格遵守以下规则:\\n- 仅允许 `SELECT` 语句,禁止 `INSERT`/`UPDATE`/`DELETE`/`DROP`/`ALTER`/`TRUNCATE` 等任何非查询操作。\\n- 禁止 SQL 注释(`--`、`/* */`)。\\n- 根据当前数据源的数据库类型(见「默认数据源类型」)使用对应的 SQL 方言。\\n- SQL 必须高效:使用适当的 `WHERE` 条件避免全表扫描。\\n- 图表聚合 SQL 在数据量可能较大时,默认添加合理的 `LIMIT`(建议不超过 100 条)。\\n- 原始数据 SQL 禁止添加 `LIMIT`,分页由系统自动处理。\\n**3.4 执行查询**\\n调用工具执行**图表聚合 SQL**,获取结果集。若查询返回空数据,告知用户未查询到数据,终止流程。\\n**3.5 验证原始数据 SQL**\\n构建完原始数据 SQL 后,必须调用 `sqlPageExecute` 工具进行验证,参数设置为 `pageNo=1, pageSize=1`,仅查询 1 条数据用于验证 SQL 语法的正确性。\\n- 若验证通过 → 将该 SQL 放入输出的 `sql` 字段。\\n- 若验证失败 → 根据错误信息修正 SQL 后再次验证,最多重试 3 次。若仍失败,则不输出 `sql` 字段(图表仍正常渲染,但不提供数据表格功能)。\\n### 第四步:图表格式确定\\n```\\n图表类型是 bar/line/pie(简单图表)?\\n├─ 是 → 直接使用 [{\\\"x\\\":\\\"...\\\", \\\"y\\\":...}] 格式,禁止调用示例查询工具\\n└─ 否 → 该复杂图表的示例格式是否已在本次对话中查询过?\\n ├─ 是 → 复用已有格式,禁止重复调用\\n └─ 否 → 调用工具查询示例格式(支持逗号分割,一次性查询所有需要的复杂图表类型,禁止逐个查询)\\n```\\n### 第四步半:确定可替代图表类型\\n```\\n用户在第一步中明确指定了图表类型?\\n├─ 是 → altTypes 直接传空数组 [],跳过本步骤\\n└─ 否 → 按下方规则填充 altTypes\\n```\\n当用户未明确指定图表类型(由你自动推断)时,根据当前数据结构,判断哪些其他图表类型可以使用**同一份 data** 直接渲染(无需修改数据格式),将它们填入 `altTypes` 数组。互转规则如下:\\n| 当前类型 | 可替代类型(altTypes 候选) |\\n|----------|--------------------------|\\n| `bar` | `line`、`pie` |\\n| `line` | `bar`、`pie` |\\n| `pie` | `bar`、`line` |\\n| `multibar` | `multiline`、`area` |\\n| `multiline` | `multibar`、`area` |\\n| `area` | `multibar`、`multiline` |\\n| `radar` | 无(数据结构独特) |\\n| `gauge` | 无(单值数据) |\\n| `barline` | 无(含 seriesType 区分) |\\n注意:\\n- `altTypes` 不包含当前主类型(`type` 字段已指定)。\\n- 仅列出数据结构完全兼容的类型,不得列出需要修改 data 格式才能渲染的类型。\\n- 若无可替代类型,`altTypes` 传空数组 `[]`。\\n### 第五步:数据转换\\n将查询结果转换为目标图表格式:\\n- 简单图表:每行数据映射为 `{\\\"x\\\": 字符串, \\\"y\\\": 数字}`。\\n- 复杂图表:严格按照查询到的示例格式组装数据。\\n- `x` 值必须为字符串类型,`y` 值必须为数字类型。\\n- 若需聚合(求和、计数、平均等),在 SQL 中完成,不在转换阶段手动计算。\\n- 数据转换在你的回复中直接完成,禁止调用工具进行转换。\\n### 第六步:输出\\n生成最终结果前,执行双重校验:\\n1. **标签校验**:`` 和 `` 首尾完整闭合。\\n2. **JSON 校验**:`` 内的 JSON 是标准格式——无多余逗号、无未闭合括号、无尾随逗号、所有键名使用双引号。\\n3. **数据校验**:`data` 数组不为空,每个对象包含必需的键。\\n4. **SQL 字段校验**:若数据来自数据库查询,`sql` 字段必须包含原始数据查询 SQL,`dbSource` 字段必须与查询时使用的数据源一致,`columns` 字段必须包含原始数据 SQL 中所有 SELECT 字段的中文标题映射。\\n## 输出格式\\n最终输出必须且仅包含以下格式,`` 标签前后各保留两个空行。禁止在标签外添加额外说明、解释或修饰文字。如需对数据做简短说明,放在标签之前。\\n### 数据来自数据库查询时:\\n\\n{\\\"type\\\":\\\"图表类型\\\",\\\"altTypes\\\":[\\\"可替代类型1\\\",\\\"可替代类型2\\\"],\\\"data\\\":[{\\\"x\\\":\\\"数据项1\\\",\\\"y\\\":数值1},{\\\"x\\\":\\\"数据项2\\\",\\\"y\\\":数值2}],\\\"sql\\\":\\\"原始数据查询SQL\\\",\\\"dbSource\\\":\\\"数据源标识或空字符串\\\",\\\"columns\\\":{\\\"field1\\\":\\\"列标题1\\\",\\\"field2\\\":\\\"列标题2\\\"}}\\n\\n\\n### 数据由用户直接提供时:\\n\\n{\\\"type\\\":\\\"图表类型\\\",\\\"altTypes\\\":[\\\"可替代类型1\\\",\\\"可替代类型2\\\"],\\\"data\\\":[{\\\"x\\\":\\\"数据项1\\\",\\\"y\\\":数值1},{\\\"x\\\":\\\"数据项2\\\",\\\"y\\\":数值2}]}\\n\\n\\n### 字段说明\\n| 字段 | 类型 | 必填 | 说明 |\\n|------|------|------|------|\\n| `type` | string | 是 | 图表类型 |\\n| `altTypes` | string[] | 是 | 可替代的图表类型数组。系统会据此提供图表切换功能。无可替代类型时传 `[]` |\\n| `data` | array/object | 是 | 图表展示数据(聚合后的数据) |\\n| `sql` | string | 条件必填 | 原始数据查询 SQL(不含 LIMIT/分页,系统自动处理)。仅当数据来自数据库查询时必填 |\\n| `dbSource` | string | 条件必填 | 数据源标识。默认数据源传空字符串 `\\\"\\\"`,指定数据源传对应的 key。仅当数据来自数据库查询时必填 |\\n| `columns` | object | 条件必填 | 原始数据 SQL 中 SELECT 字段名到中文列标题的映射。仅当数据来自数据库查询时必填。key 为 SQL 中的字段名(或别名),value 为该字段的中文显示标题。标题来源于表结构的字段备注,若备注过长(超过 4 个字),需根据语义总结为 2~4 个字的简短标题 |\\n## 异常处理\\n按以下规则处理异常情况:\\n| 异常场景 | 处理方式 |\\n|----------|----------|\\n| 用户请求的表不在授权范围 | 告知用户该表不在可查询范围内,列出可用的相关表(如有) |\\n| SQL 执行报错 | 分析错误原因,修正 SQL 后重试一次;若仍失败,告知用户具体错误 |\\n| 查询结果为空 | 告知用户未查到符合条件的数据,建议调整筛选条件 |\\n| 工具返回身份验证失败/无权限 | 立即停止所有操作,告知用户:您当前账号没有该数据的访问权限,请登录有权限的账号或联系管理员授权 |\\n| 用户要求执行非 SELECT 操作 | 拒绝并说明仅支持数据查询,不支持数据修改操作 |\\n| 用户要求查看数据源列表 | 直接返回下方列表内容(若表数量超过 50 个则总结性回复),禁止调用 `queryDataSourceInfoText` 工具 |\\n| 用户请求与图表无关的任务 | 礼貌说明你是数据可视化助手,仅处理图表相关需求 |\\n## 禁止行为清单\\n1. 禁止虚构或编造任何数据。\\n2. 禁止执行 `queryDataSourceInfoText` 工具。\\n3. 禁止对简单图表(bar/line/pie)调用示例格式查询工具。\\n4. 禁止对已查询过的复杂图表类型重复调用示例格式查询工具。\\n5. 禁止逐个查询复杂图表示例格式(必须一次性用逗号分割查询)。\\n6. 禁止向用户提及 `jeecg-chart` 标签名称或图表格式的技术细节。\\n7. 禁止输出非 SELECT 的 SQL 语句。\\n8. 禁止输出包含 SQL 注释的查询。\\n9. 禁止输出未脱敏的敏感个人信息。\\n10. 禁止在无数据支撑的情况下生成图表标签。\\n## 默认数据源类型\\n{{defDbType}}\\n## 支持的数据源\\n{{allDbSource}}\\n> 注意:\\n> 当用户未指定数据源时,默认数据源应设为空。\\n> 以上是全部支持的数据源,禁止调用 `queryDataSourceInfoText` 工具。当用户询问可用数据源时,直接返回以上列表(表数量超过 50 个时总结性回复)。\\n\\n\"},{\"role\":\"user\",\"content\":\"{{问题}}\\n\\n\"}],\"plugins\":[{\"pluginId\":\"2006287314794676226\",\"pluginName\":\"数据库插件\",\"category\":\"mcp\"},{\"pluginId\":\"2006287314794676300\",\"pluginName\":\"Chat2BI\",\"category\":\"mcp\"}],\"showToolExecution\":true},\"inputParams\":[{\"field\":\"content\",\"name\":\"问题\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"result\",\"name\":\"allDbSource\",\"nodeId\":\"274495573258244096\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"result\",\"name\":\"defDbType\",\"nodeId\":\"276308429448634368\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":180}},{\"id\":\"271548872986722304\",\"type\":\"reply\",\"x\":2829,\"y\":631,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"{{回复}}\",\"stream\":true},\"inputParams\":[{\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[],\"width\":332,\"height\":114}},{\"id\":\"271554566412288000\",\"type\":\"switch\",\"x\":188,\"y\":419,\"properties\":{\"text\":\"历史记录是否为空\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"history\",\"operator\":\"EMPTY\",\"value\":\"\",\"type\":\"string[]\"}],\"next\":\"271481764802605056\"}],\"else\":{\"next\":\"271554622242668544\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"width\":332,\"height\":118}},{\"id\":\"271554622242668544\",\"type\":\"classifier\",\"x\":511,\"y\":605,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek-chat\",\"temperature\":0.7}},\"categories\":[{\"category\":\"用户希望查询或正在和Assistant聊图表相关数据、信息\",\"next\":\"271556843709317120\"}],\"else\":{\"next\":\"271481764802605056\"}},\"inputParams\":[{\"field\":\"history\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"分类描述\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271556843709317120\",\"type\":\"varMerge\",\"x\":1368,\"y\":620,\"properties\":{\"text\":\"聚合\",\"options\":{\"varGroups\":[{\"name\":\"用户问题\",\"type\":\"string\",\"vars\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"isCustom\":false,\"type\":\"string\"}]}]},\"inputParams\":[],\"outputParams\":[{\"field\":\"用户问题\",\"name\":\"用户问题\",\"type\":\"string\"}],\"width\":332,\"height\":92}},{\"id\":\"274495573258244096\",\"type\":\"tools\",\"x\":2105,\"y\":659,\"properties\":{\"text\":\"查询所有数据源\",\"options\":{\"tools\":{\"pluginId\":\"2006287314794676226\",\"pluginName\":\"数据库插件\",\"pluginCategory\":\"plugin\",\"toolName\":\"queryDataSourceInfoText\",\"toolDescr\":\"用于查询所有数据源的信息,不需要传递参数。\",\"toolParameters\":[],\"endpoint\":\"\",\"path\":\"/airag/mcp/database/queryDataSourceInfoText\",\"method\":\"GET\",\"headers\":{\"X-Sign\":\"true\"}}},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"执行结果\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"276308429448634368\",\"type\":\"tools\",\"x\":1736,\"y\":494,\"properties\":{\"text\":\"查询默认数据源类型\",\"options\":{\"tools\":{\"pluginId\":\"2006287314794676226\",\"pluginName\":\"数据库插件\",\"pluginCategory\":\"plugin\",\"toolName\":\"queryDataSourceType\",\"toolDescr\":\"获取默认数据源或指定数据的数据库类型\",\"toolParameters\":[{\"name\":\"dbSourceKey\",\"description\":\"数据源key,若为空则系统默认\",\"required\":false,\"type\":\"String\",\"location\":\"Query\",\"value\":\"\"}],\"endpoint\":\"\",\"path\":\"/airag/mcp/database/queryDataSourceType\",\"method\":\"GET\",\"headers\":{\"X-Sign\":\"true\"}}},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"执行结果\",\"type\":\"string\"}],\"width\":332,\"height\":158}}],\"edges\":[{\"id\":\"271482116671156224\",\"type\":\"base-edge\",\"sourceNodeId\":\"271481764802605056\",\"targetNodeId\":\"271480115023458304\",\"sourceAnchorId\":\"271481764802605056_case_else\",\"targetAnchorId\":\"271480115023458304_input\",\"pointsList\":[{\"x\":1020,\"y\":503},{\"x\":1120,\"y\":503},{\"x\":1106,\"y\":782},{\"x\":1206,\"y\":782}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271548872990916608\",\"type\":\"base-edge\",\"sourceNodeId\":\"271548210211192832\",\"targetNodeId\":\"271548872986722304\",\"sourceAnchorId\":\"271548210211192832_output\",\"targetAnchorId\":\"271548872986722304_input\",\"pointsList\":[{\"x\":2620,\"y\":374},{\"x\":2720,\"y\":374},{\"x\":2563,\"y\":605},{\"x\":2663,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271548929186201600\",\"type\":\"base-edge\",\"sourceNodeId\":\"271548872986722304\",\"targetNodeId\":\"271483924713975808\",\"sourceAnchorId\":\"271548872986722304_output\",\"targetAnchorId\":\"271483924713975808_input\",\"pointsList\":[{\"x\":2995,\"y\":605},{\"x\":3095,\"y\":605},{\"x\":2934,\"y\":393},{\"x\":3034,\"y\":393}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554566416482304\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"271554566412288000\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"271554566412288000_input\",\"pointsList\":[{\"x\":-31,\"y\":494},{\"x\":69,\"y\":494},{\"x\":-78,\"y\":391},{\"x\":22,\"y\":391}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554605561921536\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554566412288000\",\"targetNodeId\":\"271481764802605056\",\"sourceAnchorId\":\"271554566412288000_source_if\",\"targetAnchorId\":\"271481764802605056_input\",\"pointsList\":[{\"x\":354,\"y\":425},{\"x\":454,\"y\":425},{\"x\":588,\"y\":425},{\"x\":688,\"y\":425}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554741260238848\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554566412288000\",\"targetNodeId\":\"271554622242668544\",\"sourceAnchorId\":\"271554566412288000_source_else\",\"targetAnchorId\":\"271554622242668544_input\",\"pointsList\":[{\"x\":354,\"y\":451},{\"x\":454,\"y\":451},{\"x\":245,\"y\":568},{\"x\":345,\"y\":568}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271555105874907136\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554622242668544\",\"targetNodeId\":\"271481764802605056\",\"sourceAnchorId\":\"271554622242668544_case_else\",\"targetAnchorId\":\"271481764802605056_input\",\"pointsList\":[{\"x\":677,\"y\":646},{\"x\":777,\"y\":646},{\"x\":588,\"y\":425},{\"x\":688,\"y\":425}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271557184173555712\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554622242668544\",\"targetNodeId\":\"271556843709317120\",\"sourceAnchorId\":\"271554622242668544_case_1\",\"targetAnchorId\":\"271556843709317120_input\",\"pointsList\":[{\"x\":677,\"y\":602},{\"x\":777,\"y\":602},{\"x\":1102,\"y\":605},{\"x\":1202,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271822597635878912\",\"type\":\"base-edge\",\"sourceNodeId\":\"271481764802605056\",\"targetNodeId\":\"271556843709317120\",\"sourceAnchorId\":\"271481764802605056_case_1\",\"targetAnchorId\":\"271556843709317120_input\",\"pointsList\":[{\"x\":1020,\"y\":459},{\"x\":1120,\"y\":459},{\"x\":1102,\"y\":605},{\"x\":1202,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"274495644091650048\",\"type\":\"base-edge\",\"sourceNodeId\":\"274495573258244096\",\"targetNodeId\":\"271548210211192832\",\"sourceAnchorId\":\"274495573258244096_output\",\"targetAnchorId\":\"271548210211192832_input\",\"pointsList\":[{\"x\":2271,\"y\":622},{\"x\":2371,\"y\":622},{\"x\":2188,\"y\":374},{\"x\":2288,\"y\":374}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"276308429452828672\",\"type\":\"base-edge\",\"sourceNodeId\":\"271556843709317120\",\"targetNodeId\":\"276308429448634368\",\"sourceAnchorId\":\"271556843709317120_output\",\"targetAnchorId\":\"276308429448634368_input\",\"pointsList\":[{\"x\":1534,\"y\":605},{\"x\":1634,\"y\":605},{\"x\":1470,\"y\":446},{\"x\":1570,\"y\":446}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"276308503712980992\",\"type\":\"base-edge\",\"sourceNodeId\":\"276308429448634368\",\"targetNodeId\":\"274495573258244096\",\"sourceAnchorId\":\"276308429448634368_output\",\"targetAnchorId\":\"274495573258244096_input\",\"pointsList\":[{\"x\":1902,\"y\":446},{\"x\":2002,\"y\":446},{\"x\":1839,\"y\":622},{\"x\":1939,\"y\":622}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"index\",\"name\":\"d\",\"nodeId\":\"271481764802605056\",\"type\":\"number\"},{\"customValue\":\"\",\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
INSERT INTO `airag_flow` VALUES ('2009558848682360834', 'admin', '2026-01-09 17:32:20', 'admin', '2026-01-09 17:40:31', 'A01', NULL, 'jeecg', '示例_循环节点', '', '', 'THEN(\n start.tag(\'start-node\'),\n code_266871019099709440.tag(\'code_266871019099709440\'),\n WHILE(loop.tag(\'266871548223741952\')).DO(THEN(\n reply.tag(\'266871664426934272\'),\n loopContinue.tag(\'272660634657742848\')\n ).tag(\"266871664426934272\")),\n end.tag(\'266868341815451648\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":640,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"标题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"266868341815451648\",\"type\":\"end\",\"x\":1574,\"y\":513,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"------\\n测试结束\",\"outputType\":\"text\",\"cardConfig\":\"\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"content\",\"name\":\"ces\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string[]\"}],\"width\":332,\"height\":136}},{\"id\":\"code_266871019099709440\",\"type\":\"code\",\"x\":728,\"y\":560,\"properties\":{\"text\":\"JavaScript脚本\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main() {\\n return {\\n result: [\\n \'这是第一项\', \'这是第二项\', \'这是第三项\'\\n ]\\n }\\n}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string[]\",\"required\":false}],\"width\":332,\"height\":136}},{\"id\":\"266871548223741952\",\"type\":\"loop\",\"x\":1153,\"y\":701,\"properties\":{\"text\":\"循环\",\"groupType\":\"WHILE\",\"options\":{\"type\":\"array\",\"maxLoopTimes\":3,\"loopParams\":[],\"loopItemsParam\":{\"nodeId\":\"code_266871019099709440\",\"nodeName\":\"JavaScript脚本\",\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string[]\"}},\"inputParams\":[],\"outputParams\":[],\"width\":332,\"height\":114}},{\"id\":\"266871548223741952_loopBody\",\"type\":\"loopBody\",\"x\":1101.5,\"y\":1076.5,\"properties\":{\"text\":\"循环体\",\"options\":{},\"inputParams\":[],\"outputParams\":[],\"collapsible\":false,\"autoToFront\":false,\"transformWithContainer\":false,\"isRestrict\":true,\"autoResize\":true,\"children\":[\"266871664426934272\",\"272660634657742848\"],\"isCollapsed\":false,\"width\":1029,\"height\":255},\"children\":[\"266871664426934272\",\"272660634657742848\"]},{\"id\":\"266871664426934272\",\"type\":\"reply\",\"x\":873,\"y\":1107,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"当前循环了 {{idx}} 次,当前项为:“{{item}}”\",\"stream\":false},\"inputParams\":[{\"field\":\"currentLoopTimes\",\"name\":\"idx\",\"nodeId\":\"266871548223741952\",\"customValue\":\"\",\"type\":\"number\"},{\"field\":\"currentLoopItem\",\"name\":\"item\",\"nodeId\":\"266871548223741952\",\"customValue\":\"\",\"type\":\"any\"}],\"outputParams\":[],\"width\":332,\"height\":114}},{\"id\":\"272660634657742848\",\"type\":\"loopContinue\",\"x\":1330,\"y\":1080,\"properties\":{\"text\":\"继续循环\",\"options\":{},\"inputParams\":[],\"outputParams\":[],\"width\":332,\"height\":62}}],\"edges\":[{\"id\":\"266871559237984256\",\"type\":\"base-edge\",\"sourceNodeId\":\"266871548223741952\",\"targetNodeId\":\"266868341815451648\",\"sourceAnchorId\":\"266871548223741952_output\",\"targetAnchorId\":\"266868341815451648_input\",\"pointsList\":[{\"x\":1319,\"y\":675},{\"x\":1419,\"y\":675},{\"x\":1308,\"y\":476},{\"x\":1408,\"y\":476}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"272659834707501056\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"code_266871019099709440\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"code_266871019099709440_input\",\"pointsList\":[{\"x\":466,\"y\":625},{\"x\":566,\"y\":625},{\"x\":462,\"y\":523},{\"x\":562,\"y\":523}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"272659914713849856\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_266871019099709440\",\"targetNodeId\":\"266871548223741952\",\"sourceAnchorId\":\"code_266871019099709440_output\",\"targetAnchorId\":\"266871548223741952_input\",\"pointsList\":[{\"x\":894,\"y\":523},{\"x\":994,\"y\":523},{\"x\":887,\"y\":675},{\"x\":987,\"y\":675}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"272660634661937152\",\"type\":\"base-edge\",\"sourceNodeId\":\"266871664426934272\",\"targetNodeId\":\"272660634657742848\",\"sourceAnchorId\":\"266871664426934272_output\",\"targetAnchorId\":\"272660634657742848_input\",\"pointsList\":[{\"x\":1039,\"y\":1081},{\"x\":1139,\"y\":1081},{\"x\":1064,\"y\":1080},{\"x\":1164,\"y\":1080}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"266871548454428672\",\"type\":\"base-edge\",\"sourceNodeId\":\"266871548223741952\",\"targetNodeId\":\"266871548223741952_loopBody\",\"sourceAnchorId\":\"266871548223741952_link_body\",\"targetAnchorId\":\"266871548223741952_loopBody_link_loop\",\"pointsList\":[{\"x\":1153,\"y\":758},{\"x\":1153,\"y\":858},{\"x\":1101.5,\"y\":849},{\"x\":1101.5,\"y\":949}],\"properties\":{\"disabled\":true,\"runStatus\":\"\"}},{\"id\":\"266871664435322880\",\"type\":\"base-line-edge\",\"sourceNodeId\":\"266871548223741952_loopBody\",\"targetNodeId\":\"266871664426934272\",\"sourceAnchorId\":\"266871548223741952_loopBody_loop_start\",\"targetAnchorId\":\"266871664426934272_input\",\"pointsList\":[],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"content\",\"name\":\"ces\",\"nodeId\":\"start-node\",\"type\":\"string[]\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"标题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
INSERT INTO `airag_flow` VALUES ('2009561652150960129', 'admin', '2026-01-09 17:43:28', 'admin', '2026-03-17 10:48:31', 'A01', NULL, 'jeecg', '示例_变量聚合', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'264299940450762752\')).to(\n THEN(\n code_264301155456745472.tag(\'code_264301155456745472\'),\n varMerge.tag(\'264298765684932608\'),\n end.tag(\'264295300867915776\')\n ).tag(\"code_264301155456745472\"),\n THEN(\n code_264301257571270656.tag(\'code_264301257571270656\'),\n varMerge.tag(\'264298765684932608\'),\n end.tag(\'264295300867915776\')\n ).tag(\"code_264301257571270656\"),\n THEN(\n code_264300177714151424.tag(\'code_264300177714151424\'),\n varMerge.tag(\'264298765684932608\'),\n end.tag(\'264295300867915776\')\n ).tag(\"code_264300177714151424\"),\n end.tag(\'264302394055688192\')\n ).tag(\'264299940450762752\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":44,\"y\":535,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"姓名\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"264295300867915776\",\"type\":\"end\",\"x\":1908,\"y\":669,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"查询完毕\\n姓名: {{姓名}}\\n年龄:{{年龄}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"姓名\",\"name\":\"姓名\",\"nodeId\":\"264298765684932608\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"年龄\",\"name\":\"年龄\",\"nodeId\":\"264298765684932608\",\"customValue\":\"\",\"type\":\"number\"}],\"width\":332,\"height\":136}},{\"id\":\"264298765684932608\",\"type\":\"varMerge\",\"x\":1492,\"y\":571,\"properties\":{\"text\":\"变量聚合\",\"options\":{\"varGroups\":[{\"name\":\"姓名\",\"type\":\"string\",\"vars\":[{\"nodeId\":\"code_264301257571270656\",\"field\":\"name\",\"isCustom\":false,\"type\":\"string\"},{\"nodeId\":\"code_264301155456745472\",\"field\":\"name\",\"isCustom\":false,\"type\":\"string\"},{\"nodeId\":\"code_264300177714151424\",\"field\":\"name\",\"isCustom\":false,\"type\":\"string\"}]},{\"name\":\"年龄\",\"type\":\"number\",\"vars\":[{\"nodeId\":\"code_264301257571270656\",\"field\":\"age\",\"isCustom\":false,\"type\":\"number\"},{\"nodeId\":\"code_264301155456745472\",\"field\":\"age\",\"isCustom\":false,\"type\":\"number\"},{\"nodeId\":\"code_264300177714151424\",\"field\":\"age\",\"isCustom\":false,\"type\":\"number\"}]}]},\"inputParams\":[],\"outputParams\":[{\"field\":\"姓名\",\"name\":\"姓名\",\"type\":\"string\"},{\"field\":\"年龄\",\"name\":\"年龄\",\"type\":\"number\"}],\"width\":332,\"height\":114}},{\"id\":\"264299940450762752\",\"type\":\"switch\",\"x\":443,\"y\":497,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"EQUALS\",\"value\":\"张三\",\"type\":\"string\"}],\"next\":\"code_264301257571270656\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"EQUALS\",\"value\":\"李四\",\"type\":\"string\"}],\"next\":\"code_264301155456745472\"},{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"operator\":\"EQUALS\",\"value\":\"王五\",\"type\":\"string\"}],\"next\":\"code_264300177714151424\"}],\"else\":{\"next\":\"264302394055688192\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"width\":332,\"height\":170}},{\"id\":\"code_264300177714151424\",\"type\":\"code\",\"x\":938,\"y\":768,\"properties\":{\"text\":\"查询王五\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main() {\\n return {\\n name: \\\"王五\\\",\\n age: 18,\\n }\\n}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"name\",\"name\":\"姓名\",\"type\":\"string\",\"required\":false},{\"field\":\"age\",\"name\":\"年龄\",\"type\":\"number\",\"required\":false}],\"width\":332,\"height\":136}},{\"id\":\"code_264301155456745472\",\"type\":\"code\",\"x\":938,\"y\":559,\"properties\":{\"text\":\"查询李四\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main() {\\n return {\\n name: \\\"李四\\\",\\n age: 23,\\n }\\n}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"name\",\"name\":\"姓名\",\"type\":\"string\",\"required\":false},{\"field\":\"age\",\"name\":\"年龄\",\"type\":\"number\",\"required\":false}],\"width\":332,\"height\":136}},{\"id\":\"code_264301257571270656\",\"type\":\"code\",\"x\":937,\"y\":346,\"properties\":{\"text\":\"查询张三\",\"options\":{\"codeType\":\"javascript\",\"code\":\"function main() {\\n return {\\n name: \\\"张三\\\",\\n age: 33,\\n }\\n}\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"name\",\"name\":\"姓名\",\"type\":\"string\",\"required\":false},{\"field\":\"age\",\"name\":\"年龄\",\"type\":\"number\",\"required\":false}],\"width\":332,\"height\":136}},{\"id\":\"264302394055688192\",\"type\":\"end\",\"x\":936,\"y\":992,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"抱歉,我不知道你说的是谁\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"content\",\"name\":\"name\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"264299940454957056\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"264299940450762752\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"264299940450762752_input\",\"pointsList\":[{\"x\":210,\"y\":520},{\"x\":310,\"y\":520},{\"x\":177,\"y\":443},{\"x\":277,\"y\":443}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264300208160604160\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_264300177714151424\",\"targetNodeId\":\"264298765684932608\",\"sourceAnchorId\":\"code_264300177714151424_output\",\"targetAnchorId\":\"264298765684932608_input\",\"pointsList\":[{\"x\":1104,\"y\":731},{\"x\":1204,\"y\":731},{\"x\":1226,\"y\":545},{\"x\":1326,\"y\":545}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264300340352483328\",\"type\":\"base-edge\",\"sourceNodeId\":\"264298765684932608\",\"targetNodeId\":\"264295300867915776\",\"sourceAnchorId\":\"264298765684932608_output\",\"targetAnchorId\":\"264295300867915776_input\",\"pointsList\":[{\"x\":1658,\"y\":545},{\"x\":1758,\"y\":545},{\"x\":1642,\"y\":632},{\"x\":1742,\"y\":632}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264301239456071680\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_264301155456745472\",\"targetNodeId\":\"264298765684932608\",\"sourceAnchorId\":\"code_264301155456745472_output\",\"targetAnchorId\":\"264298765684932608_input\",\"pointsList\":[{\"x\":1104,\"y\":522},{\"x\":1204,\"y\":522},{\"x\":1226,\"y\":545},{\"x\":1326,\"y\":545}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264301250365456384\",\"type\":\"base-edge\",\"sourceNodeId\":\"264299940450762752\",\"targetNodeId\":\"code_264301155456745472\",\"sourceAnchorId\":\"264299940450762752_case_2\",\"targetAnchorId\":\"code_264301155456745472_input\",\"pointsList\":[{\"x\":609,\"y\":503},{\"x\":709,\"y\":503},{\"x\":672,\"y\":522},{\"x\":772,\"y\":522}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264301299698860032\",\"type\":\"base-edge\",\"sourceNodeId\":\"264299940450762752\",\"targetNodeId\":\"code_264301257571270656\",\"sourceAnchorId\":\"264299940450762752_source_if\",\"targetAnchorId\":\"code_264301257571270656_input\",\"pointsList\":[{\"x\":609,\"y\":477},{\"x\":709,\"y\":477},{\"x\":671,\"y\":309},{\"x\":771,\"y\":309}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264301304413257728\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_264301257571270656\",\"targetNodeId\":\"264298765684932608\",\"sourceAnchorId\":\"code_264301257571270656_output\",\"targetAnchorId\":\"264298765684932608_input\",\"pointsList\":[{\"x\":1103,\"y\":309},{\"x\":1203,\"y\":309},{\"x\":1226,\"y\":545},{\"x\":1326,\"y\":545}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264302200253677568\",\"type\":\"base-edge\",\"sourceNodeId\":\"264299940450762752\",\"targetNodeId\":\"code_264300177714151424\",\"sourceAnchorId\":\"264299940450762752_case_3\",\"targetAnchorId\":\"code_264300177714151424_input\",\"pointsList\":[{\"x\":609,\"y\":529},{\"x\":709,\"y\":529},{\"x\":672,\"y\":731},{\"x\":772,\"y\":731}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"264302474699571200\",\"type\":\"base-edge\",\"sourceNodeId\":\"264299940450762752\",\"targetNodeId\":\"264302394055688192\",\"sourceAnchorId\":\"264299940450762752_source_else\",\"targetAnchorId\":\"264302394055688192_input\",\"pointsList\":[{\"x\":609,\"y\":555},{\"x\":709,\"y\":555},{\"x\":670,\"y\":955},{\"x\":770,\"y\":955}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"姓名\",\"name\":\"姓名\",\"nodeId\":\"264298765684932608\",\"type\":\"string\"},{\"customValue\":\"\",\"field\":\"年龄\",\"name\":\"年龄\",\"nodeId\":\"264298765684932608\",\"type\":\"number\"},{\"customValue\":\"\",\"field\":\"content\",\"name\":\"name\",\"nodeId\":\"start-node\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"姓名\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
INSERT INTO `airag_flow` VALUES ('2009565806546157570', 'admin', '2026-01-09 17:59:59', 'admin', '2026-04-27 21:21:24', 'A01', NULL, 'jeecg', '示例_定时触发器', '', '', 'THEN(\n start.tag(\'start-node\'),\n code_266155066987638784.tag(\'code_266155066987638784\'),\n end.tag(\'266154958954950656\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":662,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":true,\"cronExp\":\"30 30 0/1 * * ?\",\"beginTime\":\"2026-01-01 12:30:30\",\"endTime\":null,\"inputParams\":{\"content\":\"你好\"},\"custom\":{\"time\":{\"second\":30,\"minute\":30},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":114}},{\"id\":\"266154958954950656\",\"type\":\"end\",\"x\":1219,\"y\":674,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"这里是定时触发,触发时间:{{当前时间}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"当前时间\",\"nodeId\":\"code_266155066987638784\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"code_266155066987638784\",\"type\":\"code\",\"x\":751,\"y\":673,\"properties\":{\"text\":\"脚本执行\",\"options\":{\"codeType\":\"javascript\",\"code\":\"\\nconst now = new Date();\\n\\nfunction formatDateTime(date) {\\n const year = date.getFullYear();\\n const month = String(date.getMonth() + 1).padStart(2, \'0\');\\n const day = String(date.getDate()).padStart(2, \'0\');\\n const hours = String(date.getHours()).padStart(2, \'0\');\\n const minutes = String(date.getMinutes()).padStart(2, \'0\');\\n const seconds = String(date.getSeconds()).padStart(2, \'0\');\\n\\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\\n}\\n\\nfunction main(params) {\\n return {\\n result: formatDateTime(now),\\n }\\n}\\n\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"当前时间\",\"type\":\"string\",\"required\":false}],\"width\":332,\"height\":136}}],\"edges\":[{\"id\":\"266155066991833088\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"code_266155066987638784\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"code_266155066987638784_input\",\"pointsList\":[{\"x\":466,\"y\":636},{\"x\":566,\"y\":636},{\"x\":485,\"y\":636},{\"x\":585,\"y\":636}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"266155314556432384\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_266155066987638784\",\"targetNodeId\":\"266154958954950656\",\"sourceAnchorId\":\"code_266155066987638784_output\",\"targetAnchorId\":\"266154958954950656_input\",\"pointsList\":[{\"x\":917,\"y\":636},{\"x\":1017,\"y\":636},{\"x\":953,\"y\":637},{\"x\":1053,\"y\":637}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"result\",\"name\":\"当前时间\",\"nodeId\":\"code_266155066987638784\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '{\"beginTime\":1767241830000,\"cronExp\":\"30 30 0/1 * * ?\",\"enabled\":true,\"inputParams\":{\"content\":\"你好\"}}');
INSERT INTO `airag_flow` VALUES ('2011769909807579138', 'admin', '2026-01-15 19:58:18', 'admin', '2026-01-20 18:01:01', 'A05A01A01', NULL, 'jeecg', 'AI写作_示例', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'274870264732975104\')).to(\n THEN(\n llm.tag(\'274870308194353152\'),\n reply.tag(\'275189628369862656\'),\n end.tag(\'274870895589851136\')\n ).tag(\"274870308194353152\"),\n THEN(\n llm.tag(\'274870324602470400\'),\n reply.tag(\'275189722339049472\'),\n end.tag(\'274870677188247552\')\n ).tag(\"274870324602470400\")\n ).tag(\'274870264732975104\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":493,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false},{\"field\":\"type\",\"name\":\"类型\",\"type\":\"string\",\"required\":true}],\"outputParams\":[],\"width\":332,\"height\":90}},{\"id\":\"274870264732975104\",\"type\":\"switch\",\"x\":786,\"y\":506,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"type\",\"operator\":\"EQUALS\",\"value\":\"polish\",\"type\":\"string\"}],\"next\":\"274870308194353152\"}],\"else\":{\"next\":\"274870324602470400\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"width\":332,\"height\":116}},{\"id\":\"274870308194353152\",\"type\":\"llm\",\"x\":1239,\"y\":410.5,\"properties\":{\"text\":\"文章润色\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"## 角色:专业文章编辑\\n你是一位经验丰富、技巧高超的专业编辑,擅长根据用户提供的原始内容,进行深度优化和润色,提升文章的整体质量、可读性和影响力。\\n## 目标:\\n1. 精准理解用户原文的核心思想、目标受众和写作意图,严格保留原文所有内容(包括图片格式及图片相关描述,绝不删除、修改图片路径或调整图片位置)。\\n2. 运用专业的编辑技巧(如结构调整、语言润色、逻辑强化、亮点突出等)对文章进行全面改进,仅优化文字部分,不触碰任何图片相关元素。\\n3. 在润色过程中,严格参考用户原文的长度、语气、格式和语言风格,确保优化后的文章与原文风格一致、节奏一致、篇幅保持相近,不随意扩展或压缩内容。\\n4. 输出一篇在保持原意、保留全部原文内容(含图片)的基础上,更精炼、流畅、有力且符合目标场景的优化版本。\\n## 技能:\\n1. 深度理解与分析:能快速把握文章主旨、论点、论据和情感基调,识别原文的亮点、待改进之处,同时精准定位图片位置及相关关联内容,确保文字优化与图片适配。\\n2. 结构优化大师:擅长重组段落顺序、调整句间逻辑、优化叙事流程,使文章结构清晰、层层递进,调整过程中严格保留图片的原有位置及上下文关联。\\n3. 语言润色专家:拥有丰富的词汇储备和敏锐的语感,能消除冗余、修正语病、替换平淡词汇,提升文字的表现力和专业性,不改动任何图片格式及图片描述。\\n4. 风格适配能力:能根据文章类型(如学术论文、商业文案、创意故事等)和目标读者,调整并统一全文的语言风格,确保文字风格与图片内容协调统一。\\n5. 风格复刻能力:能精准识别并模仿用户原文的语气(正式、口语、幽默、客观、感性等)、格式(标题层级、段落结构、列表方式等)、语言习惯(用词偏好、句式特点、节奏风格),使润色后的文章在风格上与原文保持高度一致。\\n## 工作流:\\n1. 接收与分析:首先,我会请求用户提供需要改进的文章全文(含图片格式)。收到后,我将仔细阅读,分析其核心观点、目标读者、现有结构、语言风格及主要问题(如逻辑不清、表达啰嗦、重点模糊等),同时标注图片位置及关联文字,确保优化不影响图片呈现。\\n2. 风格与格式识别:在分析阶段,我会特别关注用户原文的长度、语气、格式和语言风格,并将其作为润色的重要参考依据,确保优化后的文章与原文风格一致。\\n3. 制定编辑方案:基于分析,规划具体的改进方向(如开篇优化、论点强化、案例润色、结论升华等),明确所有方案均不涉及图片删除、修改,仅针对文字部分调整,可向用户简要确认理解与改进思路。\\n4. 执行优化编辑:按照既定方案,逐部分优化文字内容,包括重写开头结尾、调整段落布局、精炼句子、丰富细节、增强逻辑连接词、统一术语和语气。全程严格保留原文中的所有图片格式、图片路径及图片位置,确保图片与优化后文字衔接自然。\\n5. 风格一致性检查:在完成文字优化后,我会进行一次风格一致性复核,确保文章的语气、格式、语言风格与用户原文保持一致,篇幅长度不出现显著偏差。\\n6. 输出与核对:最终呈现优化后的完整文章,再次核对确认所有图片元素均未改动,仅文字部分得到提升,确保原文内容(含图片)无遗漏、无篡改。\\n## 输出格式:\\n- 输出优化后的完整文章,全文保留原文所有图片格式、图片路径及图片位置,仅优化文字部分,图片相关内容与位置完全复刻原文。\\n## 限制:\\n1. 严格忠实于用户原文的核心事实、核心观点及所有内容(含图片),不得歪曲、杜撰信息,不得删除、修改任何图片格式、图片路径或图片位置。\\n2. 所有优化需基于可靠的写作与编辑原则,仅针对文字部分开展,避免主观臆断或个人风格过度强加,确保文字优化不影响图片的呈现及上下文关联。\\n3. 若遇到原文中存在事实模糊或逻辑硬伤之处,应在优化版本中通过 [建议核实] 或调整表述予以提示,而非擅自修改事实,同时不触碰图片相关元素。\\n4. 不添加与原文主题无关的内容或评价,不新增、删减图片,不调整图片排列顺序。\\n5. 润色过程中必须参考用户原文的长度、语气、格式和语言风格,不得随意改变原文的整体风格或篇幅结构。\"},{\"role\":\"user\",\"content\":\"{{content}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":205,\"remarks\":\"文章润色\"}},{\"id\":\"274870324602470400\",\"type\":\"llm\",\"x\":1240,\"y\":682.5,\"properties\":{\"text\":\"文章创作,图文格式\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"## 角色:精准内容与段落配图生成专家\\n\\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\\n\\n## 任务类型识别\\n\\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\\n\\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\\n\\n## 目标\\n\\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\\n\\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\\n\\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\\n\\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\\n\\n\\n## 核心规则\\n\\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\\n\\n## 技能\\n\\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\\n\\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\\n\\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\\n\\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\\n\\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用search_photos(图片搜索工具)完成搜索,图片直接插入到对应段落的末尾。\\n\\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\\n\\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\\n\\n## 工作流(内部执行,不对外展示)\\n\\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\\n\\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\\n\\n3. **生成精准内容**:\\n\\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\\n\\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\\n\\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\\n\\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\\n\\n## 限制\\n\\n- 必须等待 搜索图片 工具返回结果后,再将图片与文字内容整合输出,禁止在工具调用过程中提前生成最终回复。\\n\\n- 禁止输出标题、解释、过程或额外说明。\\n\\n- 只对重点内容配图,非重点内容不配图。\\n\\n- 图片必须与重点内容高度相关。\\n\\n- 每个重点内容只配 1 张图,避免重复搜索。\\n\\n- 图片插入在重点内容附近,不集中放在结尾。\\n\\n- 语言必须符合用户指定的要求。\"},{\"role\":\"user\",\"content\":\"{{content}}\"}],\"showToolExecution\":false,\"plugins\":[{\"pluginId\":\"1988208474780168193\",\"pluginName\":\"图片搜索\",\"category\":\"mcp\"}]},\"inputParams\":[{\"field\":\"content\",\"name\":\"content\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":205,\"remarks\":\"文章创作,图文格式\"}},{\"id\":\"274870677188247552\",\"type\":\"end\",\"x\":2189,\"y\":631,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{result}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"result\",\"nodeId\":\"274870324602470400\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":134}},{\"id\":\"274870895589851136\",\"type\":\"end\",\"x\":2149,\"y\":366,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{result}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"result\",\"nodeId\":\"274870308194353152\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":134}},{\"id\":\"275189628369862656\",\"type\":\"reply\",\"x\":1725,\"y\":364,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"{{content}}\",\"stream\":true},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"274870308194353152\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[],\"width\":332,\"height\":112}},{\"id\":\"275189722339049472\",\"type\":\"reply\",\"x\":1725,\"y\":637,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"{{content}}\",\"stream\":true},\"inputParams\":[{\"field\":\"text\",\"name\":\"content\",\"nodeId\":\"274870324602470400\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[],\"width\":332,\"height\":112}}],\"edges\":[{\"id\":\"274870264774918144\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"274870264732975104\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"274870264732975104_input\",\"pointsList\":[{\"x\":466,\"y\":479},{\"x\":566,\"y\":479},{\"x\":520,\"y\":479},{\"x\":620,\"y\":479}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"274870308244684800\",\"type\":\"base-edge\",\"sourceNodeId\":\"274870264732975104\",\"targetNodeId\":\"274870308194353152\",\"sourceAnchorId\":\"274870264732975104_source_if\",\"targetAnchorId\":\"274870308194353152_input\",\"pointsList\":[{\"x\":952,\"y\":513},{\"x\":1052,\"y\":513},{\"x\":973,\"y\":339},{\"x\":1073,\"y\":339}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"274870324673773568\",\"type\":\"base-edge\",\"sourceNodeId\":\"274870264732975104\",\"targetNodeId\":\"274870324602470400\",\"sourceAnchorId\":\"274870264732975104_source_else\",\"targetAnchorId\":\"274870324602470400_input\",\"pointsList\":[{\"x\":952,\"y\":539},{\"x\":1052,\"y\":539},{\"x\":974,\"y\":611},{\"x\":1074,\"y\":611}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"275189628491497472\",\"type\":\"base-edge\",\"sourceNodeId\":\"274870308194353152\",\"targetNodeId\":\"275189628369862656\",\"sourceAnchorId\":\"274870308194353152_output\",\"targetAnchorId\":\"275189628369862656_input\",\"pointsList\":[{\"x\":1405,\"y\":339},{\"x\":1505,\"y\":339},{\"x\":1459,\"y\":339},{\"x\":1559,\"y\":339}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"275189651216236544\",\"type\":\"base-edge\",\"sourceNodeId\":\"275189628369862656\",\"targetNodeId\":\"274870895589851136\",\"sourceAnchorId\":\"275189628369862656_output\",\"targetAnchorId\":\"274870895589851136_input\",\"pointsList\":[{\"x\":1891,\"y\":339},{\"x\":1991,\"y\":339},{\"x\":1883,\"y\":330},{\"x\":1983,\"y\":330}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"275189722511015936\",\"type\":\"base-edge\",\"sourceNodeId\":\"274870324602470400\",\"targetNodeId\":\"275189722339049472\",\"sourceAnchorId\":\"274870324602470400_output\",\"targetAnchorId\":\"275189722339049472_input\",\"pointsList\":[{\"x\":1406,\"y\":611},{\"x\":1506,\"y\":611},{\"x\":1459,\"y\":612},{\"x\":1559,\"y\":612}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"275189728907329536\",\"type\":\"base-edge\",\"sourceNodeId\":\"275189722339049472\",\"targetNodeId\":\"274870677188247552\",\"sourceAnchorId\":\"275189722339049472_output\",\"targetAnchorId\":\"274870677188247552_input\",\"pointsList\":[{\"x\":1891,\"y\":612},{\"x\":1991,\"y\":612},{\"x\":1923,\"y\":595},{\"x\":2023,\"y\":595}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"text\",\"name\":\"result\",\"nodeId\":\"274870308194353152\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"},{\"field\":\"type\",\"name\":\"类型\",\"required\":true,\"type\":\"string\"}]}', '');
INSERT INTO `airag_flow` VALUES ('2014623894994300930', 'admin', '2026-01-23 16:59:01', 'admin', '2026-04-28 10:57:03', 'A04', '1', 'jeecg', '示例_聊天_OCR', '', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/temp/1dataOCR_1743065089791.png', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'167880707187527680\')).to(\n end.tag(\'167880856269869056\'),\n THEN(\n code_167881149430747136.tag(\'code_167881149430747136\'),\n llm.tag(\'167881839356006400\'),\n end.tag(\'167880661561888768\')\n ).tag(\"code_167881149430747136\")\n ).tag(\'167880707187527680\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":300,\"y\":421,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\"},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\"}},\"month\":{\"mode\":\"every\"}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":true},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"height\":92,\"width\":332}},{\"id\":\"167880661561888768\",\"type\":\"end\",\"x\":1474,\"y\":364,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{data}}\",\"outputType\":\"text\"},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"data\",\"nodeId\":\"167881839356006400\"}],\"height\":136,\"width\":332}},{\"id\":\"167880707187527680\",\"type\":\"switch\",\"x\":681,\"y\":233,\"properties\":{\"text\":\"条件分支\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"images\",\"operator\":\"EMPTY\",\"value\":\"\",\"type\":\"picture\"}],\"next\":\"167880856269869056\"}],\"else\":{\"next\":\"code_167881149430747136\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"height\":118,\"width\":332}},{\"id\":\"167880856269869056\",\"type\":\"end\",\"x\":1207,\"y\":207,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":true,\"outputContent\":\"{\\n \\\"message\\\": \\\"请提供图片\\\"\\n }\",\"outputType\":\"text\"},\"inputParams\":[],\"outputParams\":[],\"height\":114,\"width\":332}},{\"id\":\"code_167881149430747136\",\"type\":\"code\",\"x\":937,\"y\":459,\"properties\":{\"text\":\"脚本执行\",\"options\":{\"codeType\":\"groovy\",\"code\":\"def main(Map params) {\\n def newQuestion = params.question\\n if (!params.question) {\\n newQuestion = \\\"从图片中提取文字\\\"\\n }\\n return [result: newQuestion]\\n}\\n\"},\"inputParams\":[{\"field\":\"content\",\"name\":\"question\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"result\",\"name\":\"返回结果\",\"type\":\"string\"}],\"height\":158,\"width\":332}},{\"id\":\"167881839356006400\",\"type\":\"llm\",\"x\":1318,\"y\":606,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1890232564262739969\",\"params\":{\"model\":\"OpenAI\",\"temperature\":0.7}},\"history\":3,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色:OCR工具\\n作为一个智能OCR工具,你的主要职责是从图片中提取文字并将其输出为结构化数据。\\n## 目标:\\n1. 精确识别和提取图片中的文字信息。\\n2. 将提取的文字转换为结构化数据格式。\\n## 技能:\\n1. 高效的图像处理能力。\\n2. 精确的文字识别算法。\\n3. 数据格式化与输出能力。\\n## 工作流:\\n1. 输入图片,进行预处理(如去噪、二值化)。\\n2. 应用OCR算法识别图片中的文字,并记录识别结果。\\n3. 将识别的文字整理成结构化数据格式,如JSON或CSV。\\n## 输出格式:\\n\\n当前图中的内容为: ```提取的内容```\\n## 限制:\\n- 仅限于合法和合规的图片内容提取。\\n- 不得保存用户上传的图片数据。\\n- 需确保输出的数据准确无误,标注所有数据来源。\\n- 输出必须严格符合上述格式,字段名和层级结构不得随意更改。\"},{\"role\":\"user\",\"content\":\"{{question}}\"}],\"showToolExecution\":false},\"inputParams\":[{\"field\":\"images\",\"name\":\"images\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"picture\"},{\"field\":\"result\",\"name\":\"question\",\"nodeId\":\"code_167881149430747136\",\"customValue\":\"\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"height\":180,\"width\":332}}],\"edges\":[{\"id\":\"167880707195916288\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"167880707187527680\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"167880707187527680_input\",\"pointsList\":[{\"x\":466,\"y\":406},{\"x\":566,\"y\":406},{\"x\":415,\"y\":205},{\"x\":515,\"y\":205}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167880856274063360\",\"type\":\"base-edge\",\"sourceNodeId\":\"167880707187527680\",\"targetNodeId\":\"167880856269869056\",\"sourceAnchorId\":\"167880707187527680_source_if\",\"targetAnchorId\":\"167880856269869056_input\",\"pointsList\":[{\"x\":847,\"y\":239},{\"x\":947,\"y\":239},{\"x\":941,\"y\":181},{\"x\":1041,\"y\":181}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167881149434941440\",\"type\":\"base-edge\",\"sourceNodeId\":\"167880707187527680\",\"targetNodeId\":\"code_167881149430747136\",\"sourceAnchorId\":\"167880707187527680_source_else\",\"targetAnchorId\":\"code_167881149430747136_input\",\"pointsList\":[{\"x\":847,\"y\":265},{\"x\":947,\"y\":265},{\"x\":671,\"y\":411},{\"x\":771,\"y\":411}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167881839356006401\",\"type\":\"base-edge\",\"sourceNodeId\":\"code_167881149430747136\",\"targetNodeId\":\"167881839356006400\",\"sourceAnchorId\":\"code_167881149430747136_output\",\"targetAnchorId\":\"167881839356006400_input\",\"pointsList\":[{\"x\":1103,\"y\":411},{\"x\":1203,\"y\":411},{\"x\":1052,\"y\":547},{\"x\":1152,\"y\":547}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"167882293611712512\",\"type\":\"base-edge\",\"sourceNodeId\":\"167881839356006400\",\"targetNodeId\":\"167880661561888768\",\"sourceAnchorId\":\"167881839356006400_output\",\"targetAnchorId\":\"167880661561888768_input\",\"pointsList\":[{\"x\":1484,\"y\":547},{\"x\":1584,\"y\":547},{\"x\":1208,\"y\":327},{\"x\":1308,\"y\":327}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"field\":\"text\",\"name\":\"data\",\"nodeId\":\"167881839356006400\"},{\"field\":\"outputText\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":true,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-INSERT INTO `airag_flow` VALUES ('2037131053712568322', 'admin', '2026-03-26 19:34:26', 'admin', '2026-03-26 19:44:04', 'A01', '0', 'jeecg', 'Chat2BI生成图表_Online', '', '', 'THEN(\n start.tag(\'start-node\'),\n SWITCH(switch.tag(\'271554566412288000\')).to(\n SWITCH(classifier.tag(\'271481764802605056\')).to(\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\"),\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271481764802605056\'),\n SWITCH(classifier.tag(\'271554622242668544\')).to(\n SWITCH(classifier.tag(\'271481764802605056\')).to(\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\"),\n end.tag(\'271480115023458304\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271481764802605056\'),\n THEN(\n varMerge.tag(\'271556843709317120\'),\n tools.tag(\'276308429448634368\'),\n tools.tag(\'274495573258244096\'),\n llm.tag(\'271548210211192832\'),\n reply.tag(\'271548872986722304\'),\n end.tag(\'271483924713975808\')\n ).tag(\"271556843709317120\")\n ).tag(\'271554622242668544\')\n ).tag(\'271554566412288000\')\n).tag(\"start-node\")', '{\"nodes\":[{\"id\":\"start-node\",\"type\":\"start\",\"x\":-197,\"y\":509,\"properties\":{\"text\":\"开始\",\"remarks\":\"\",\"options\":{\"cronTrigger\":{\"enabled\":false,\"cronExp\":\"0 0 0 * * ?\",\"beginTime\":null,\"endTime\":null,\"inputParams\":{},\"custom\":{\"time\":{\"second\":0,\"minute\":0},\"hour\":{\"mode\":\"every\",\"range\":[0,23],\"values\":[],\"interval\":{\"start\":0,\"step\":1}},\"day\":{\"type\":\"day\",\"day\":{\"mode\":\"every\",\"range\":[1,31],\"values\":[],\"interval\":{\"start\":1,\"step\":1}},\"week\":{\"values\":[1]}},\"month\":{\"mode\":\"every\",\"values\":[]}}}},\"inputParams\":[{\"field\":\"content\",\"name\":\"用户问题\",\"type\":\"string\",\"required\":false},{\"field\":\"history\",\"name\":\"历史记录\",\"type\":\"string[]\",\"required\":false},{\"field\":\"images\",\"name\":\"图片\",\"type\":\"picture\",\"required\":false}],\"outputParams\":[],\"width\":332,\"height\":92}},{\"id\":\"271480115023458304\",\"type\":\"end\",\"x\":1372,\"y\":819,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"很抱歉,我无法回复您的这个问题,您可以向我询问图表相关的信息,比如:查询用户表的男女比例。\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"d\",\"nodeId\":\"271481764802605056\",\"customValue\":\"\",\"type\":\"number\"}],\"width\":332,\"height\":136}},{\"id\":\"271481764802605056\",\"type\":\"classifier\",\"x\":854,\"y\":462,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek-chat\",\"temperature\":0.7}},\"categories\":[{\"category\":\"用户希望查询图表、报表或相关数据、信息\",\"next\":\"271556843709317120\"}],\"else\":{\"next\":\"271480115023458304\"}},\"inputParams\":[{\"field\":\"content\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"分类描述\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271483924713975808\",\"type\":\"end\",\"x\":3200,\"y\":430,\"properties\":{\"text\":\"结束\",\"options\":{\"outputText\":false,\"outputContent\":\"{{回复}}\",\"outputType\":\"text\",\"cardConfig\":null},\"inputParams\":[],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"customValue\":\"\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271548210211192832\",\"type\":\"llm\",\"x\":2454,\"y\":433,\"properties\":{\"text\":\"LLM\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek\",\"temperature\":0.7,\"timeout\":60}},\"history\":99,\"messages\":[{\"role\":\"system\",\"content\":\"# 角色\\n你是一位严谨的数据可视化助手。你的唯一职责是:根据用户需求,从 Online 表单查询数据并生成 `` 图表标签。你不处理任何与图表生成无关的请求。\\n## 核心原则\\n1. **数据真实性**:所有图表数据必须来源于 SQL 查询结果或用户直接提供的数据,严禁虚构、编造、推测任何数据。\\n2. **格式严格性**:输出必须严格遵循指定的 `` 标签格式,不得有任何偏差。\\n3. **最小权限**:仅对下方列出的已授权 Online 表单执行 SELECT 查询,拒绝一切超出范围的操作。\\n4. **隐私合规**:禁止输出可识别个人身份的敏感信息(完整身份证号、详细住址、明文密码等),涉及此类字段必须脱敏或拒绝。\\n## 图表类型定义\\n### 简单图表(直接使用 x/y 格式)\\n| type | 名称 | data 格式 |\\n|------|------|-----------|\\n| `bar` | 柱状图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n| `line` | 折线图/曲线图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n| `pie` | 饼图 | `[{\\\"x\\\":\\\"类别\\\",\\\"y\\\":数值}, ...]` |\\n### 复杂图表(必须先查询示例格式)\\n| type | 名称 |\\n|------|------|\\n| `radar` | 雷达图 |\\n| `gauge` | 仪表盘 |\\n| `barline` | 折柱混合图 |\\n| `multibar` | 多列柱状图 |\\n| `multiline` | 多行折线图 |\\n| `area` | 面积图 |\\n## 工作流程(严格按顺序执行)\\n### 第一步:需求解析\\n分析用户请求,提取以下信息:\\n- **图表类型**:用户想要哪种图表?若未明确指定,根据数据特征推断最合适的类型。记录用户是否**明确指定**了图表类型(影响后续是否生成 `altTypes`)。\\n- **数据维度**:x 轴(分类/时间)和 y 轴(度量/指标)分别是什么?\\n- **数据来源**:用户是否指定了 Online 表单?是否直接提供了数据?\\n- **筛选条件**:是否有时间范围、分组条件、排序要求、数量限制等?\\n**若需求模糊不可执行**(无法确定表、字段或图表类型),必须向用户提问澄清,不得猜测执行。\\n### 第二步:判断数据来源\\n```\\n用户已直接提供数据?\\n├─ 是 → 跳到第四步(数据转换)\\n└─ 否 → 继续第三步(Online 表单查询)\\n```\\n### 第三步:Online 表单查询\\n**3.1 验证表范围**\\n检查需求涉及的表是否在下方「支持的 Online 表单」列表中。\\n- 若不在列表中 → 立即告知用户\\\"该表不在可查询的 Online 表单范围内\\\",终止流程。\\n- 若在列表中 → 继续。\\n**3.2 查询表结构**\\n调用 `queryOnlineFormMetadata` 工具查询相关表的字段结构,了解可用列名、数据类型和字段备注。\\n字段备注将用于数据表格的列标题显示,请在构建 `columns` 时使用。\\n工具返回的 `relations` 字段包含该表的关联关系(主子表关系、外键关联),请重点关注:\\n- `relationType`:关联类型(一对多 / 一对一)\\n- `targetTable`:关联的目标表名\\n- `joinCondition`:JOIN 条件(如 `order_item.order_id = demo_order.id`)\\n当用户需求涉及多个表的数据时(如\\\"统计每个订单的明细数量\\\"),必须查询相关表的元数据以获取 JOIN 条件,不得猜测关联关系。\\n**3.3 构建 SQL**\\n你需要构建两条 SQL:\\n1. **图表聚合 SQL**(用于图表渲染):包含 `GROUP BY`、聚合函数等,产出图表所需的汇总数据。\\n2. **原始数据 SQL**(用于数据表格展示):查询图表统计所依赖的原始明细数据,不包含 `GROUP BY` 和聚合函数,不添加 `LIMIT` 分页限制(系统会自动处理分页)。\\n**跨表查询规则**:\\n- 当需求涉及主子表关联数据时,使用 `JOIN` 连接表,JOIN 条件必须使用 `queryOnlineFormMetadata` 返回的 `relations.joinCondition`。\\n- 下方表单列表中已标注主子表关系和 JOIN 条件,可作为快速参考;但构建 SQL 前仍需调用 `queryOnlineFormMetadata` 查询完整字段信息。\\n- 禁止凭猜测构造 JOIN 条件。\\n两条 SQL 严格遵守以下规则:\\n- 仅允许 `SELECT` 语句,禁止 `INSERT`/`UPDATE`/`DELETE`/`DROP`/`ALTER`/`TRUNCATE` 等任何非查询操作。\\n- 禁止 SQL 注释(`--`、`/* */`)。\\n- 根据当前数据库类型(见「数据库类型」)使用对应的 SQL 方言。\\n- SQL 必须高效:使用适当的 `WHERE` 条件避免全表扫描。\\n- 图表聚合 SQL 在数据量可能较大时,默认添加合理的 `LIMIT`(建议不超过 100 条)。\\n- 原始数据 SQL 禁止添加 `LIMIT`,分页由系统自动处理。\\n- **SQL 中只能涉及已授权的 Online 表单对应的表**,不得查询其他任何表。\\n**3.4 执行查询**\\n调用 `sqlExecute` 工具执行**图表聚合 SQL**,获取结果集。若查询返回空数据,告知用户未查询到数据,终止流程。\\n**3.5 验证原始数据 SQL**\\n构建完原始数据 SQL 后,必须调用 `sqlPageExecute` 工具进行验证,参数设置为 `pageNo=1, pageSize=1`,仅查询 1 条数据用于验证 SQL 语法的正确性。\\n- 若验证通过 → 将该 SQL 放入输出的 `sql` 字段。\\n- 若验证失败 → 根据错误信息修正 SQL 后再次验证,最多重试 3 次。若仍失败,则不输出 `sql` 字段(图表仍正常渲染,但不提供数据表格功能)。\\n### 第四步:图表格式确定\\n```\\n图表类型是 bar/line/pie(简单图表)?\\n├─ 是 → 直接使用 [{\\\"x\\\":\\\"...\\\", \\\"y\\\":...}] 格式,禁止调用示例查询工具\\n└─ 否 → 该复杂图表的示例格式是否已在本次对话中查询过?\\n ├─ 是 → 复用已有格式,禁止重复调用\\n └─ 否 → 调用工具查询示例格式(支持逗号分割,一次性查询所有需要的复杂图表类型,禁止逐个查询)\\n```\\n### 第四步半:确定可替代图表类型\\n```\\n用户在第一步中明确指定了图表类型?\\n├─ 是 → altTypes 直接传空数组 [],跳过本步骤\\n└─ 否 → 按下方规则填充 altTypes\\n```\\n当用户未明确指定图表类型(由你自动推断)时,根据当前数据结构,判断哪些其他图表类型可以使用**同一份 data** 直接渲染(无需修改数据格式),将它们填入 `altTypes` 数组。互转规则如下:\\n| 当前类型 | 可替代类型(altTypes 候选) |\\n|----------|--------------------------|\\n| `bar` | `line`、`pie` |\\n| `line` | `bar`、`pie` |\\n| `pie` | `bar`、`line` |\\n| `multibar` | `multiline`、`area` |\\n| `multiline` | `multibar`、`area` |\\n| `area` | `multibar`、`multiline` |\\n| `radar` | 无(数据结构独特) |\\n| `gauge` | 无(单值数据) |\\n| `barline` | 无(含 seriesType 区分) |\\n注意:\\n- `altTypes` 不包含当前主类型(`type` 字段已指定)。\\n- 仅列出数据结构完全兼容的类型,不得列出需要修改 data 格式才能渲染的类型。\\n- 若无可替代类型,`altTypes` 传空数组 `[]`。\\n### 第五步:数据转换\\n将查询结果转换为目标图表格式:\\n- 简单图表:每行数据映射为 `{\\\"x\\\": 字符串, \\\"y\\\": 数字}`。\\n- 复杂图表:严格按照查询到的示例格式组装数据。\\n- `x` 值必须为字符串类型,`y` 值必须为数字类型。\\n- 若需聚合(求和、计数、平均等),在 SQL 中完成,不在转换阶段手动计算。\\n- 数据转换在你的回复中直接完成,禁止调用工具进行转换。\\n### 第六步:输出\\n生成最终结果前,执行双重校验:\\n1. **标签校验**:`` 和 `` 首尾完整闭合。\\n2. **JSON 校验**:`` 内的 JSON 是标准格式——无多余逗号、无未闭合括号、无尾随逗号、所有键名使用双引号。\\n3. **数据校验**:`data` 数组不为空,每个对象包含必需的键。\\n4. **SQL 字段校验**:若数据来自 Online 表单查询,`sql` 字段必须包含原始数据查询 SQL,`columns` 字段必须包含原始数据 SQL 中所有 SELECT 字段的中文标题映射。\\n## 输出格式\\n最终输出必须且仅包含以下格式,`` 标签前后各保留两个空行。禁止在标签外添加额外说明、解释或修饰文字。如需对数据做简短说明,放在标签之前。\\n### 数据来自 Online 表单查询时:\\n\\n{\\\"type\\\":\\\"图表类型\\\",\\\"altTypes\\\":[\\\"可替代类型1\\\",\\\"可替代类型2\\\"],\\\"data\\\":[{\\\"x\\\":\\\"数据项1\\\",\\\"y\\\":数值1},{\\\"x\\\":\\\"数据项2\\\",\\\"y\\\":数值2}],\\\"sql\\\":\\\"原始数据查询SQL\\\",\\\"dbSource\\\":\\\"\\\",\\\"columns\\\":{\\\"field1\\\":\\\"列标题1\\\",\\\"field2\\\":\\\"列标题2\\\"}}\\n\\n\\n### 数据由用户直接提供时:\\n\\n{\\\"type\\\":\\\"图表类型\\\",\\\"altTypes\\\":[\\\"可替代类型1\\\",\\\"可替代类型2\\\"],\\\"data\\\":[{\\\"x\\\":\\\"数据项1\\\",\\\"y\\\":数值1},{\\\"x\\\":\\\"数据项2\\\",\\\"y\\\":数值2}]}\\n\\n\\n### 字段说明\\n| 字段 | 类型 | 必填 | 说明 |\\n|------|------|------|------|\\n| `type` | string | 是 | 图表类型 |\\n| `altTypes` | string[] | 是 | 可替代的图表类型数组。系统会据此提供图表切换功能。无可替代类型时传 `[]` |\\n| `data` | array/object | 是 | 图表展示数据(聚合后的数据) |\\n| `sql` | string | 条件必填 | 原始数据查询 SQL(不含 LIMIT/分页,系统自动处理)。仅当数据来自 Online 表单查询时必填 |\\n| `dbSource` | string | 条件必填 | 数据源标识。Online 表单固定传空字符串 `\\\"\\\"`。仅当数据来自 Online 表单查询时必填 |\\n| `columns` | object | 条件必填 | 原始数据 SQL 中 SELECT 字段名到中文列标题的映射。仅当数据来自 Online 表单查询时必填。key 为 SQL 中的字段名(或别名),value 为该字段的中文显示标题。标题来源于表结构的字段备注,若备注过长(超过 4 个字),需根据语义总结为 2~4 个字的简短标题 |\\n## 异常处理\\n按以下规则处理异常情况:\\n| 异常场景 | 处理方式 |\\n|----------|----------|\\n| 用户请求的表不在 Online 表单范围 | 告知用户该表不在可查询范围内,列出可用的相关表(如有) |\\n| SQL 执行报错 | 分析错误原因,修正 SQL 后重试一次;若仍失败,告知用户具体错误 |\\n| 查询结果为空 | 告知用户未查到符合条件的数据,建议调整筛选条件 |\\n| 工具返回身份验证失败/无权限 | 立即停止所有操作,告知用户:您当前账号没有该数据的访问权限,请登录有权限的账号或联系管理员授权 |\\n| 用户要求执行非 SELECT 操作 | 拒绝并说明仅支持数据查询,不支持数据修改操作 |\\n| 用户要求查看可用表列表 | 直接返回下方列表内容(若表数量超过 50 个则总结性回复),禁止调用 `queryOnlineFormList` 工具 |\\n| 用户请求与图表无关的任务 | 礼貌说明你是数据可视化助手,仅处理图表相关需求 |\\n## 禁止行为清单\\n1. 禁止虚构或编造任何数据。\\n2. 禁止调用 `queryOnlineFormList` 工具(可用表列表已在下方提供)。\\n3. 禁止对简单图表(bar/line/pie)调用示例格式查询工具。\\n4. 禁止对已查询过的复杂图表类型重复调用示例格式查询工具。\\n5. 禁止逐个查询复杂图表示例格式(必须一次性用逗号分割查询)。\\n6. 禁止向用户提及 `jeecg-chart` 标签名称或图表格式的技术细节。\\n7. 禁止输出非 SELECT 的 SQL 语句。\\n8. 禁止输出包含 SQL 注释的查询。\\n9. 禁止输出未脱敏的敏感个人信息。\\n10. 禁止在无数据支撑的情况下生成图表标签。\\n11. 禁止查询不在 Online 表单范围内的任何数据库表。\\n## 数据库类型\\n{{defDbType}}\\n## 支持的 Online 表单\\n{{allOnlineFormList}}\\n> 注意:\\n> - 以上是全部可查询的 Online 表单,禁止调用 `queryOnlineFormList` 工具。当用户询问可用表时,直接返回以上列表(表数量超过 50 个时总结性回复)。\\n> - 列表中已标注表类型(`[单表]`/`[主表]`/`[附表]`)和主子表关联关系(包括关联类型和 JOIN 条件),跨表查询时可作为快速参考。\\n\\n\"},{\"role\":\"user\",\"content\":\"{{问题}}\\n\\n\"}],\"plugins\":[{\"pluginId\":\"2006287314794676301\",\"pluginName\":\"Online表单插件\",\"category\":\"mcp\"},{\"pluginId\":\"2006287314794676300\",\"pluginName\":\"Chat2BI\",\"category\":\"mcp\"}],\"showToolExecution\":true},\"inputParams\":[{\"field\":\"content\",\"name\":\"问题\",\"nodeId\":\"start-node\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"result\",\"name\":\"allOnlineFormList\",\"nodeId\":\"274495573258244096\",\"customValue\":\"\",\"type\":\"string\"},{\"field\":\"result\",\"name\":\"defDbType\",\"nodeId\":\"276308429448634368\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[{\"field\":\"text\",\"name\":\"回复内容\",\"type\":\"string\"}],\"width\":332,\"height\":180}},{\"id\":\"271548872986722304\",\"type\":\"reply\",\"x\":2829,\"y\":631,\"properties\":{\"text\":\"直接回复\",\"options\":{\"content\":\"{{回复}}\",\"stream\":true},\"inputParams\":[{\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"customValue\":\"\",\"type\":\"string\"}],\"outputParams\":[],\"width\":332,\"height\":114}},{\"id\":\"271554566412288000\",\"type\":\"switch\",\"x\":188,\"y\":419,\"properties\":{\"text\":\"历史记录是否为空\",\"options\":{\"if\":[{\"logic\":\"AND\",\"conditions\":[{\"nodeId\":\"start-node\",\"field\":\"history\",\"operator\":\"EMPTY\",\"value\":\"\",\"type\":\"string[]\"}],\"next\":\"271481764802605056\"}],\"else\":{\"next\":\"271554622242668544\"}},\"inputParams\":[],\"outputParams\":[{\"field\":\"index\",\"name\":\"分支索引\",\"type\":\"number\"}],\"width\":332,\"height\":118}},{\"id\":\"271554622242668544\",\"type\":\"classifier\",\"x\":511,\"y\":605,\"properties\":{\"text\":\"分类器\",\"options\":{\"model\":{\"modeId\":\"1897481367743143938\",\"params\":{\"model\":\"deepseek-chat\",\"temperature\":0.7}},\"categories\":[{\"category\":\"用户希望查询或正在和Assistant聊图表相关数据、信息\",\"next\":\"271556843709317120\"}],\"else\":{\"next\":\"271481764802605056\"}},\"inputParams\":[{\"field\":\"history\",\"nodeId\":\"start-node\"}],\"outputParams\":[{\"field\":\"index\",\"name\":\"分类索引\",\"type\":\"number\"},{\"field\":\"content\",\"name\":\"分类描述\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"271556843709317120\",\"type\":\"varMerge\",\"x\":1368,\"y\":620,\"properties\":{\"text\":\"聚合\",\"options\":{\"varGroups\":[{\"name\":\"用户问题\",\"type\":\"string\",\"vars\":[{\"nodeId\":\"start-node\",\"field\":\"content\",\"isCustom\":false,\"type\":\"string\"}]}]},\"inputParams\":[],\"outputParams\":[{\"field\":\"用户问题\",\"name\":\"用户问题\",\"type\":\"string\"}],\"width\":332,\"height\":92}},{\"id\":\"274495573258244096\",\"type\":\"tools\",\"x\":2105,\"y\":659,\"properties\":{\"text\":\"查询已同步Online表\",\"options\":{\"tools\":{\"pluginId\":\"2006287314794676301\",\"pluginName\":\"Online表单插件\",\"pluginCategory\":\"plugin\",\"toolName\":\"queryOnlineFormList\",\"toolDescr\":\"查询所有已同步的Online表单列表(含表类型标注和主子表关联关系)\",\"toolParameters\":[],\"endpoint\":\"\",\"path\":\"/online/cgform/airag/queryOnlineFormList\",\"method\":\"GET\",\"headers\":{\"X-Sign\":\"true\"}}},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"执行结果\",\"type\":\"string\"}],\"width\":332,\"height\":136}},{\"id\":\"276308429448634368\",\"type\":\"tools\",\"x\":1736,\"y\":494,\"properties\":{\"text\":\"查询默认数据源类型\",\"options\":{\"tools\":{\"pluginId\":\"2006287314794676226\",\"pluginName\":\"数据库插件\",\"pluginCategory\":\"plugin\",\"toolName\":\"queryDataSourceType\",\"toolDescr\":\"获取默认数据源或指定数据的数据库类型\",\"toolParameters\":[{\"name\":\"dbSourceKey\",\"description\":\"数据源key,若为空则系统默认\",\"required\":false,\"type\":\"String\",\"location\":\"Query\",\"value\":\"\"}],\"endpoint\":\"\",\"path\":\"/airag/mcp/database/queryDataSourceType\",\"method\":\"GET\",\"headers\":{\"X-Sign\":\"true\"}}},\"inputParams\":[],\"outputParams\":[{\"field\":\"result\",\"name\":\"执行结果\",\"type\":\"string\"}],\"width\":332,\"height\":158}}],\"edges\":[{\"id\":\"271482116671156224\",\"type\":\"base-edge\",\"sourceNodeId\":\"271481764802605056\",\"targetNodeId\":\"271480115023458304\",\"sourceAnchorId\":\"271481764802605056_case_else\",\"targetAnchorId\":\"271480115023458304_input\",\"pointsList\":[{\"x\":1020,\"y\":503},{\"x\":1120,\"y\":503},{\"x\":1106,\"y\":782},{\"x\":1206,\"y\":782}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271548872990916608\",\"type\":\"base-edge\",\"sourceNodeId\":\"271548210211192832\",\"targetNodeId\":\"271548872986722304\",\"sourceAnchorId\":\"271548210211192832_output\",\"targetAnchorId\":\"271548872986722304_input\",\"pointsList\":[{\"x\":2620,\"y\":374},{\"x\":2720,\"y\":374},{\"x\":2563,\"y\":605},{\"x\":2663,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271548929186201600\",\"type\":\"base-edge\",\"sourceNodeId\":\"271548872986722304\",\"targetNodeId\":\"271483924713975808\",\"sourceAnchorId\":\"271548872986722304_output\",\"targetAnchorId\":\"271483924713975808_input\",\"pointsList\":[{\"x\":2995,\"y\":605},{\"x\":3095,\"y\":605},{\"x\":2934,\"y\":393},{\"x\":3034,\"y\":393}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554566416482304\",\"type\":\"base-edge\",\"sourceNodeId\":\"start-node\",\"targetNodeId\":\"271554566412288000\",\"sourceAnchorId\":\"start-node_output\",\"targetAnchorId\":\"271554566412288000_input\",\"pointsList\":[{\"x\":-31,\"y\":494},{\"x\":69,\"y\":494},{\"x\":-78,\"y\":391},{\"x\":22,\"y\":391}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554605561921536\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554566412288000\",\"targetNodeId\":\"271481764802605056\",\"sourceAnchorId\":\"271554566412288000_source_if\",\"targetAnchorId\":\"271481764802605056_input\",\"pointsList\":[{\"x\":354,\"y\":425},{\"x\":454,\"y\":425},{\"x\":588,\"y\":425},{\"x\":688,\"y\":425}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271554741260238848\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554566412288000\",\"targetNodeId\":\"271554622242668544\",\"sourceAnchorId\":\"271554566412288000_source_else\",\"targetAnchorId\":\"271554622242668544_input\",\"pointsList\":[{\"x\":354,\"y\":451},{\"x\":454,\"y\":451},{\"x\":245,\"y\":568},{\"x\":345,\"y\":568}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271555105874907136\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554622242668544\",\"targetNodeId\":\"271481764802605056\",\"sourceAnchorId\":\"271554622242668544_case_else\",\"targetAnchorId\":\"271481764802605056_input\",\"pointsList\":[{\"x\":677,\"y\":646},{\"x\":777,\"y\":646},{\"x\":588,\"y\":425},{\"x\":688,\"y\":425}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271557184173555712\",\"type\":\"base-edge\",\"sourceNodeId\":\"271554622242668544\",\"targetNodeId\":\"271556843709317120\",\"sourceAnchorId\":\"271554622242668544_case_1\",\"targetAnchorId\":\"271556843709317120_input\",\"pointsList\":[{\"x\":677,\"y\":602},{\"x\":777,\"y\":602},{\"x\":1102,\"y\":605},{\"x\":1202,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"271822597635878912\",\"type\":\"base-edge\",\"sourceNodeId\":\"271481764802605056\",\"targetNodeId\":\"271556843709317120\",\"sourceAnchorId\":\"271481764802605056_case_1\",\"targetAnchorId\":\"271556843709317120_input\",\"pointsList\":[{\"x\":1020,\"y\":459},{\"x\":1120,\"y\":459},{\"x\":1102,\"y\":605},{\"x\":1202,\"y\":605}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"274495644091650048\",\"type\":\"base-edge\",\"sourceNodeId\":\"274495573258244096\",\"targetNodeId\":\"271548210211192832\",\"sourceAnchorId\":\"274495573258244096_output\",\"targetAnchorId\":\"271548210211192832_input\",\"pointsList\":[{\"x\":2271,\"y\":622},{\"x\":2371,\"y\":622},{\"x\":2188,\"y\":374},{\"x\":2288,\"y\":374}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"276308429452828672\",\"type\":\"base-edge\",\"sourceNodeId\":\"271556843709317120\",\"targetNodeId\":\"276308429448634368\",\"sourceAnchorId\":\"271556843709317120_output\",\"targetAnchorId\":\"276308429448634368_input\",\"pointsList\":[{\"x\":1534,\"y\":605},{\"x\":1634,\"y\":605},{\"x\":1470,\"y\":446},{\"x\":1570,\"y\":446}],\"properties\":{\"runStatus\":\"\"}},{\"id\":\"276308503712980992\",\"type\":\"base-edge\",\"sourceNodeId\":\"276308429448634368\",\"targetNodeId\":\"274495573258244096\",\"sourceAnchorId\":\"276308429448634368_output\",\"targetAnchorId\":\"274495573258244096_input\",\"pointsList\":[{\"x\":1902,\"y\":446},{\"x\":2002,\"y\":446},{\"x\":1839,\"y\":622},{\"x\":1939,\"y\":622}],\"properties\":{\"runStatus\":\"\"}}]}', 'enable', '{\"outputs\":[{\"customValue\":\"\",\"field\":\"index\",\"name\":\"d\",\"nodeId\":\"271481764802605056\",\"type\":\"number\"},{\"customValue\":\"\",\"field\":\"text\",\"name\":\"回复\",\"nodeId\":\"271548210211192832\",\"type\":\"string\"}],\"inputs\":[{\"field\":\"content\",\"name\":\"用户问题\",\"required\":false,\"type\":\"string\"},{\"field\":\"history\",\"name\":\"历史记录\",\"required\":false,\"type\":\"string[]\"},{\"field\":\"images\",\"name\":\"图片\",\"required\":false,\"type\":\"picture\"}]}', '');
-- ----------------------------
-- Table structure for airag_knowledge
@@ -333,9 +328,6 @@ INSERT INTO `airag_mcp` VALUES ('1988091188723412994', NULL, 'BraveSearch', '基
INSERT INTO `airag_mcp` VALUES ('1988208474780168193', NULL, 'Unsplash', '图片搜索插件,支持用关键词搜索相关图片', 'plugin', 'api', 'https://api.unsplash.com', '{\"Accept-Version\":\"v1\",\"Authorization\":\"Client-ID ???\"}', '[{\"name\":\"search_photos\",\"description\":\"通过接口查询与关键词相关的图片列表。\",\"path\":\"/search/photos\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"page\",\"description\":\"分页页码,数字类型\",\"type\":\"Number\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"1\"},{\"name\":\"per_page\",\"description\":\"每页数量\",\"type\":\"Number\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"1\"},{\"name\":\"query\",\"description\":\"关键词,对图片的描述(查询条件)\",\"type\":\"String\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"\"}],\"responses\":[{\"name\":\"results\",\"description\":\"查询到的结果集合\",\"type\":\"Array\"},{\"name\":\"urls\",\"description\":\"结果集合中的图片地址,根据清晰度有多个选项\",\"type\":\"Array\"}]}]', 'enable', 1, '{\"tokenParamName\":\"Authorization\",\"tool_count\":1,\"authType\":\"token\",\"tokenParamValue\":\"Client-ID Ixug6rX2j1PMb08A0HRpwny8dAWi1vBLN1gymow75LQ\"}', 'admin', '2025-11-11 19:33:34', 'admin', '2025-11-13 17:16:45', 'A05A01A01', NULL);
INSERT INTO `airag_mcp` VALUES ('1998661532445491201', NULL, 'stdio命令', NULL, 'mcp', 'stdio', 'python C:/Users/Administrator/Desktop/image/main.py', '', '[{\"name\":\"get_time\",\"description\":\"获取当前时间\",\"parameters\":[{\"name\":\"format\",\"description\":\"时间格式\"}]},{\"name\":\"text_process\",\"description\":\"文本处理工具\",\"parameters\":[{\"name\":\"text\",\"description\":\"输入文本\",\"required\":true},{\"name\":\"operation\",\"description\":\"操作类型\"}]},{\"name\":\"format_data\",\"description\":\"格式化数据\",\"parameters\":[{\"name\":\"data\",\"description\":\"原始数据\",\"required\":true},{\"name\":\"format\",\"description\":\"格式类型\"}]}]', 'enable', 1, '{\"tool_count\":3}', 'admin', '2025-12-10 15:50:17', 'admin', '2025-12-30 10:53:03', 'A05A01A01', NULL);
INSERT INTO `airag_mcp` VALUES ('2001570058113265665', NULL, '百度地图http', NULL, 'mcp', 'http', 'https://mcp.map.baidu.com/mcp?ak=', '{\"Accept-Version\":\"V2.6\"}', '[{\"name\":\"map_geocode\",\"description\":\"地理编码服务: 将地址解析为对应的位置坐标.地址结构越完整, 地址内容越准确, 解析的坐标精度越高.\",\"parameters\":[{\"name\":\"address\",\"description\":\"待解析的地址.最多支持84个字节.可以输入两种样式的值, 分别是:\\n1、标准的结构化地址信息, 如北京市海淀区上地十街十号\\n2、支持*路与*路交叉口描述方式, 如北一环路和阜阳路的交叉路口\\n第二种方式并不总是有返回结果, 只有当地址库中存在该地址描述时才有返回\",\"required\":true},{\"name\":\"city\",\"description\":\"地址所在的城市名.用于限制同名地址的检索范围, 如\'北京市\'\"},{\"name\":\"inarea\",\"description\":\"在哪个地区范围内进行搜索, 仅在is_china为false时有效, 需要使用对应区域的国家代码, 如\'USA\', 多个地区可用\',\'分割, 如\'USA,PHL,CAN,MEX\'\"},{\"name\":\"is_china\",\"description\":\"查询地是否在中国大陆以外地区, 可选值为`true`或`false`, 默认为`true`\"}]},{\"name\":\"map_reverse_geocode\",\"description\":\"逆地理编码服务: 根据纬经度坐标, 获取对应位置的地址描述, 所在行政区划, 道路以及相关POI等信息\",\"parameters\":[{\"name\":\"latitude\",\"description\":\"纬度 (bd09ll)\",\"required\":true},{\"name\":\"longitude\",\"description\":\"经度 (bd09ll)\",\"required\":true}]},{\"name\":\"map_search_places\",\"description\":\"地点检索服务: 支持检索城市内的地点信息(最小到city级别), 也可支持圆形区域内的周边地点信息检索.\\n城市内检索: 检索某一城市内(目前最细到城市级别)的地点信息.\\n周边检索: 设置圆心和半径, 检索圆形区域内的地点信息(常用于周边检索场景).\",\"parameters\":[{\"name\":\"query\",\"description\":\"检索关键字, 可直接使用名称或类型, 如\'天安门\', 且可以至多10个关键字, 用英文逗号隔开\",\"required\":true},{\"name\":\"tag\",\"description\":\"检索分类, 以中文字符输入, 如\'美食\', 多个分类用英文逗号隔开, 如\'美食,购物\'\"},{\"name\":\"region\",\"description\":\"检索的城市名称, 可为行政区划名或citycode, 格式如\'北京市\'或\'131\', 不传默认为\'全国\', 当is_china为false时, 该参数必传且只能传文本, 如\'东京\'\"},{\"name\":\"location\",\"description\":\"圆形区域检索的中心点纬经度坐标, 格式为lat,lng\"},{\"name\":\"radius\",\"description\":\"JsonIntegerSchema {description = \\\"圆形区域检索半径, 单位:米\\\" }\"},{\"name\":\"language\",\"description\":\"指定输入参数和召回参数的语言类型, 需要传入的是语言名称的英文缩写. \\n可选值如下: \'zh\'(中文) \'en\'(英语) \'yue\'(粤语) \'wyw\'(文言文) \'jp\'(日语) \'kor\'(韩语) \'fra\'(法语) \'spa\'(西班牙语) \'th\'(泰语) \'ara\'(阿拉伯语) \'ru\'(俄语) \'pt\'(葡萄牙语) \'de\'(德语) \'it\'(意大利语) \'el\'(希腊语) \'nl\'(荷兰语) \'pl\'(波兰语) \'bul\'(保加利亚语) \'est\'(爱沙尼亚语) \'dan\'(丹麦语) \'fin\'(芬兰语) \'cs\'(捷克语) \'rom\'(罗马尼亚语) \'slo\'(斯洛文尼亚语) \'swe\'(瑞典语) \'hu\'(匈牙利语) \'cht\'(繁体中文) \'vie\'(越南语), 不传默认为空.\"},{\"name\":\"is_china\",\"description\":\"检索地是否在中国大陆以外地区, 可选值为`true`或`false`, 默认为`true`\"}]},{\"name\":\"map_place_details\",\"description\":\"地点详情检索服务: 地点详情检索针对指定POI, 检索其相关的详情信息.\\n通过地点检索服务获取POI uid.使用地点详情检索功能, 传入uid, 即可检索POI详情信息, 如评分、营业时间等(不同类型POI对应不同类别详情数据).\",\"parameters\":[{\"name\":\"uid\",\"description\":\"POI的唯一标识\",\"required\":true},{\"name\":\"is_china\",\"description\":\"查询地是否在中国大陆以外地区, 可选值为`true`或`false`, 默认为`true`\"}]},{\"name\":\"map_directions_matrix\",\"description\":\"批量算路服务: 根据起点和终点坐标计算路线规划距离和行驶时间.\\n批量算路目前支持驾车、骑行、步行.\\n步行时任意起终点之间的距离不得超过200KM, 超过此限制会返回参数错误.\\n驾车批量算路一次最多计算100条路线, 起终点个数之积不能超过100.\",\"parameters\":[{\"name\":\"origins\",\"description\":\"多个起点纬经度坐标, 纬度在前, 经度在后, 多个起点用|分隔\",\"required\":true},{\"name\":\"destinations\",\"description\":\"多个终点纬经度坐标, 纬度在前, 经度在后, 多个终点用|分隔\",\"required\":true},{\"name\":\"model\",\"description\":\"批量算路类型(driving, riding, walking)\"}]},{\"name\":\"map_directions\",\"description\":\"路线规划服务: 根据起终点`位置名称`或`纬经度坐标`规划出行路线.\\n驾车路线规划: 根据起终点`位置名称`或`纬经度坐标`规划驾车出行路线.\\n骑行路线规划: 根据起终点`位置名称`或`纬经度坐标`规划骑行出行路线.\\n步行路线规划: 根据起终点`位置名称`或`纬经度坐标`规划步行出行路线.\\n公交路线规划: 根据起终点`位置名称`或`纬经度坐标`规划公共交通出行路线.\",\"parameters\":[{\"name\":\"model\",\"description\":\"路线规划类型(driving, riding, walking, transit)\"},{\"name\":\"origin\",\"description\":\"起点位置名称或纬经度坐标, 纬度在前, 经度在后\",\"required\":true},{\"name\":\"destination\",\"description\":\"终点位置名称或纬经度坐标, 纬度在前, 经度在后\",\"required\":true},{\"name\":\"is_china\",\"description\":\"查询地是否在中国(含香港,澳门;不包含台湾)以外地区, 可选值为`true`或`false`, 默认为`true`\"}]},{\"name\":\"map_weather\",\"description\":\"天气查询服务: 通过行政区划或是经纬度坐标查询实时天气信息及未来5天天气预报.\",\"parameters\":[{\"name\":\"location\",\"description\":\"经纬度坐标, 经度在前纬度在后, 逗号分隔\"},{\"name\":\"district_id\",\"description\":\"行政区划代码, 需保证为6位无符号整数\"},{\"name\":\"is_china\",\"description\":\"查询地是否在中国大陆以外地区, 可选值为`true`或`false`, 默认为`true`\"}]},{\"name\":\"map_ip_location\",\"description\":\"IP定位服务: 通过所给IP获取具体位置信息和城市名称, 可用于定位IP或用户当前位置.\",\"parameters\":[{\"name\":\"ip\",\"description\":\"需要定位的IP地址, 如果为空则获取用户当前IP地址(支持IPv4和IPv6)\"}]},{\"name\":\"map_road_traffic\",\"description\":\"实时路况查询服务: 查询实时交通拥堵情况, 可通过指定道路名和区域形状(矩形, 多边形, 圆形)进行实时路况查询.\\n道路实时路况查询: 查询具体道路的实时拥堵评价和拥堵路段、拥堵距离、拥堵趋势等信息.\\n矩形区域实时路况查询: 查询指定矩形地理范围的实时拥堵情况和各拥堵路段信息.\\n多边形区域实时路况查询: 查询指定多边形地理范围的实时拥堵情况和各拥堵路段信息.\\n圆形区域(周边)实时路况查询: 查询某中心点周边半径范围内的实时拥堵情况和各拥堵路段信息.\",\"parameters\":[{\"name\":\"model\",\"description\":\"路况查询类型(road, bound, polygon, around)\",\"required\":true},{\"name\":\"road_name\",\"description\":\"道路名称和道路方向, model=road时必传 (如:朝阳路南向北)\"},{\"name\":\"city\",\"description\":\"城市名称或城市adcode, model=road时必传 (如:北京市)\"},{\"name\":\"bounds\",\"description\":\"区域左下角和右上角的纬经度坐标, 纬度在前, 经度在后, model=bound时必传\"},{\"name\":\"vertexes\",\"description\":\"多边形区域的顶点纬经度坐标, 纬度在前, 经度在后, model=polygon时必传\"},{\"name\":\"center\",\"description\":\"圆形区域的中心点纬经度坐标, 纬度在前, 经度在后, model=around时必传\"},{\"name\":\"radius\",\"description\":\"JsonIntegerSchema {description = \\\"圆形区域的半径(米), 取值[1,1000], model=around时必传\\\" }\"}]},{\"name\":\"map_search_pro\",\"description\":\"多维检索服务: 提供对用户自然语言查询的多定语多维度检索, 支持模糊匹配和语义理解.\\n仅在需求模糊的场景下再做优先使用, 可检索行政区划、道路、门址、POI、AOI等GIS信息. 参考示例: “可以带狗的餐厅”, “适合自驾的旅游景点”类的复杂泛搜.\",\"parameters\":[{\"name\":\"query\",\"description\":\"检索关键字, 用户输入的搜索词, 如\'宠物友好餐厅\'\",\"required\":true},{\"name\":\"region\",\"description\":\"检索区域, 指定的城市或区域名称, 如\'北京市\'\",\"required\":true},{\"name\":\"type\",\"description\":\"检索类型, 需要对query的召回结果进行二次筛选时指定, 如\'餐厅\'、\'酒店\'等用于限制类型, 如\'火锅\'、\'民宿\'等用于提供泛搜类型, \"},{\"name\":\"center\",\"description\":\"检索的中心点, 格式为\'纬度,经度\', 用于指定检索的中心位置, 用于辅助检索结果按距离排序与返回\"}]},{\"name\":\"map_district_search\",\"description\":\"行政区划检索服务: 查询行政区划信息, 可根据用户输入的检索行政区划关键字快速查找目标行政区域adcode、边界坐标、下一级子行政区划名称等信息.\",\"parameters\":[{\"name\":\"keyword\",\"description\":\"检索关键字, 用户输入的行政区划名称, 关键字可填写:行政区名称(\'中华人民共和国\'\'中国\'\'全国\'\'河北省\'\'深圳市\',省、市、区和镇名称)以及 adcode\",\"required\":true},{\"name\":\"boundary\",\"description\":\"是否返回行政区划边界信息, 取值为\'1\'表示返回, \'0\'表示不返回, 默认为\'0\'\"}]},{\"name\":\"map_uri\",\"description\":\"地图调起服务: 生成百度地图调起链接, 支持路线规划和地点检索两种功能. 通过service参数决定使用哪种功能.\",\"parameters\":[{\"name\":\"service\",\"description\":\"服务类型, 可选值: \'direction\'(路线规划) 或 \'search\'(地点检索)\",\"required\":true},{\"name\":\"origin\",\"description\":\"起点的名称和经纬度, 当service为\'direction\'时使用. 格式: name:天安门|latlng:39.98871,116.43234. 名称只作为展示, 不进行实际搜索\"},{\"name\":\"destination\",\"description\":\"终点的名称和经纬度, 当service为\'direction\'时使用. 格式同origin\"},{\"name\":\"mode\",\"description\":\"导航模式, 当service为\'direction\'时使用. 可选值: \'transit\'(公交)、\'driving\'(驾车)、\'walking\'(步行), 默认为\'driving\'\"},{\"name\":\"region\",\"description\":\"城市名或县名. 当service为\'direction\'且给定region时, 认为起点和终点都在同一城市, 除非单独给定起点或终点的城市\"},{\"name\":\"origin_region\",\"description\":\"起点所在的城市名, 当service为\'direction\'时使用. 如果未提供且origin包含坐标, 将自动通过逆地理编码获取\"},{\"name\":\"destination_region\",\"description\":\"终点所在的城市名, 当service为\'direction\'时使用. 如果未提供且destination包含坐标, 将自动通过逆地理编码获取\"},{\"name\":\"query\",\"description\":\"检索关键字, 当service为\'search\'时使用. 如\'海底捞\'\"},{\"name\":\"location\",\"description\":\"检索中心点经纬度, 当service为\'search\'时使用. 格式: 纬度,经度\"},{\"name\":\"radius\",\"description\":\"检索半径(米), 当service为\'search\'时使用. 如\'1000\'\"}]},{\"name\":\"map_mark\",\"description\":\"根据旅游规划生成地图规划展示, 当根据用户的需求申城完旅游规划后, 在给用户详细讲解旅游规划的同时, 也需要使用该工具生成旅游规划地图. 该工具只会生成一个分享用的url, 并对针对该url生成一个二维码便于用户分享.\",\"parameters\":[{\"name\":\"text_content\",\"description\":\"旅行规划的文本描述(注意避免传入特殊字符, 如\\\\等)\",\"required\":true}]}]', 'enable', 1, '{\"tool_count\":13}', 'admin', '2025-12-18 16:27:44', 'admin', '2026-04-28 09:42:41', 'A05A01A01', NULL);
-INSERT INTO `airag_mcp` VALUES ('2006287314794676226', NULL, '数据库插件', '用于执行数据库操作', 'plugin', 'api', '', '{\"X-Sign\":\"true\"}', '[{\"name\":\"queryTableMetadata\",\"description\":\"用于查询表的表结构(元数据)\",\"path\":\"/airag/mcp/database/queryTableMetadata\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"tableName\",\"description\":\"表名\",\"type\":\"String\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"\"},{\"name\":\"dbSourceKey\",\"description\":\"数据源key\",\"type\":\"String\",\"location\":\"Query\",\"required\":false,\"defaultValue\":\"\"}],\"responses\":[{\"name\":\"success\",\"description\":\"是否成功\",\"type\":\"Boolean\"},{\"name\":\"message\",\"description\":\"若失败则返回失败原因\",\"type\":\"String\"},{\"name\":\"result.tableName\",\"description\":\"表名(数据库实际表名)\",\"type\":\"Object\"},{\"name\":\"result.tableComment\",\"description\":\"表注释(业务含义)\",\"type\":\"Object\"},{\"name\":\"result.columns[].columnName\",\"description\":\"字段名\",\"type\":\"Array\"},{\"name\":\"result.columns[].columnComment\",\"description\":\"字段注释(核心,帮助大模型理解业务)\",\"type\":\"Array\"},{\"name\":\"result.columns[].dataType\",\"description\":\"数据类型(如varchar、int、datetime)\",\"type\":\"Array\"},{\"name\":\"result.columns[].isPrimaryKey\",\"description\":\"是否主键\",\"type\":\"Array\"}]},{\"name\":\"sqlExecute\",\"description\":\"用于执行 SQL 语句,仅能支持执行SELECT语句,不要输入注释等无关信息。\",\"path\":\"/airag/mcp/database/sqlExecute\",\"method\":\"POST\",\"enabled\":true,\"parameters\":[{\"name\":\"sql\",\"description\":\"要执行的SQL\",\"type\":\"String\",\"location\":\"Body\",\"required\":true,\"defaultValue\":\"\"},{\"name\":\"dbSourceKey\",\"description\":\"数据源key\",\"type\":\"String\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"\"}],\"responses\":[{\"name\":\"success\",\"description\":\"是否成功\",\"type\":\"Boolean\"},{\"name\":\"message\",\"description\":\"若失败则返回失败原因\",\"type\":\"String\"},{\"name\":\"result\",\"description\":\"返回查询的结果,是个对象数组,数组的每一项都是一条数据,每条数据的key都是传入的查询的列。\",\"type\":\"Array\"}]},{\"name\":\"queryTablesInfoText\",\"description\":\"用于查询指定数据源的所有表名和描述\",\"path\":\"/airag/mcp/database/queryTablesInfoText\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"dbSourceKey\",\"description\":\"数据源code,不填则系统默认\",\"type\":\"String\",\"location\":\"Query\",\"required\":false,\"defaultValue\":\"\"}],\"responses\":[]},{\"name\":\"queryDataSourceInfoText\",\"description\":\"用于查询所有数据源的信息,不需要传递参数。\",\"path\":\"/airag/mcp/database/queryDataSourceInfoText\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[],\"responses\":[]},{\"name\":\"queryDataSourceType\",\"description\":\"获取默认数据源或指定数据的数据库类型\",\"path\":\"/airag/mcp/database/queryDataSourceType\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"dbSourceKey\",\"description\":\"数据源key,若为空则系统默认\",\"type\":\"String\",\"location\":\"Query\",\"required\":false,\"defaultValue\":\"\"}],\"responses\":[]},{\"name\":\"sqlPageExecute\",\"description\":\"分页执行 SQL 查询(仅支持 SELECT)\",\"path\":\"/airag/mcp/database/sqlPageExecute\",\"method\":\"POST\",\"enabled\":true,\"parameters\":[{\"name\":\"sql\",\"description\":\"原始sql,无需传入分页sql\",\"type\":\"String\",\"location\":\"Body\",\"required\":true,\"defaultValue\":\"\"},{\"name\":\"dbSourceKey\",\"description\":\"数据源,可为空\",\"type\":\"String\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"\"},{\"name\":\"pageNo\",\"description\":\"当前页码\",\"type\":\"Number\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"1\"},{\"name\":\"pageSize\",\"description\":\"每页页数\",\"type\":\"Number\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"10\"}],\"responses\":[{\"name\":\"records\",\"description\":\"数据行\",\"type\":\"Array\"},{\"name\":\"total\",\"description\":\"总数\",\"type\":\"Number\"}]}]', 'enable', 1, '{\"authType\": \"token\", \"tool_count\": 6, \"tokenParamName\": \"X-Access-Token\", \"tokenParamValue\": \"\"}', 'admin', '2025-12-31 16:52:26', 'admin', '2026-03-26 19:23:33', 'A01', NULL);
-INSERT INTO `airag_mcp` VALUES ('2006287314794676300', NULL, 'Chat2BI', '用于获取图表示例数据', 'plugin', 'api', '', '{\"X-Sign\":\"true\"}', '[{\"name\":\"getChartExampleJson\",\"description\":\"获取图表示例数据,返回指定类型的图表JSON格式示例\",\"path\":\"/airag/mcp/database/getChartExampleJson\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"type\",\"description\":\"图表类型,多个用英文逗号分割\",\"type\":\"String\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"\"}],\"responses\":[]}]', 'enable', 1, '{\"tokenParamName\":\"X-Access-Token\",\"tool_count\":1,\"authType\":\"token\",\"tokenParamValue\":\"\"}', 'admin', '2026-03-26 19:22:47', 'admin', NULL, 'A01', NULL);
-INSERT INTO `airag_mcp` VALUES ('2006287314794676301', NULL, 'Online表单插件', '用于查询Online表单的元数据和数据', 'plugin', 'api', '', '{\"X-Sign\":\"true\"}', '[{\"name\":\"queryOnlineFormList\",\"description\":\"查询所有已同步的Online表单列表(含表类型标注和主子表关联关系)\",\"path\":\"/online/cgform/airag/queryOnlineFormList\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[],\"responses\":[]},{\"name\":\"queryOnlineFormMetadata\",\"description\":\"查询指定Online表单的字段结构(字段名、备注、类型、是否主键)及关联关系(主子表JOIN条件)\",\"path\":\"/online/cgform/airag/queryOnlineFormMetadata\",\"method\":\"GET\",\"enabled\":true,\"parameters\":[{\"name\":\"tableName\",\"description\":\"表名\",\"type\":\"String\",\"location\":\"Query\",\"required\":true,\"defaultValue\":\"\"}],\"responses\":[{\"name\":\"success\",\"description\":\"是否成功\",\"type\":\"Boolean\"},{\"name\":\"message\",\"description\":\"若失败则返回失败原因\",\"type\":\"String\"},{\"name\":\"result.tableName\",\"description\":\"表名\",\"type\":\"Object\"},{\"name\":\"result.tableComment\",\"description\":\"表说明(业务含义)\",\"type\":\"Object\"},{\"name\":\"result.columns[].columnName\",\"description\":\"字段名\",\"type\":\"Array\"},{\"name\":\"result.columns[].columnComment\",\"description\":\"字段备注(核心,帮助大模型理解业务)\",\"type\":\"Array\"},{\"name\":\"result.columns[].dataType\",\"description\":\"数据类型(如varchar、int、datetime)\",\"type\":\"Array\"},{\"name\":\"result.columns[].isPrimaryKey\",\"description\":\"是否主键\",\"type\":\"Array\"},{\"name\":\"result.relations[].relationType\",\"description\":\"关联类型(一对多/一对一)\",\"type\":\"Array\"},{\"name\":\"result.relations[].targetTable\",\"description\":\"关联的目标表名\",\"type\":\"Array\"},{\"name\":\"result.relations[].targetTableComment\",\"description\":\"目标表说明\",\"type\":\"Array\"},{\"name\":\"result.relations[].joinCondition\",\"description\":\"JOIN条件(如 sub_table.fk_field = main_table.id)\",\"type\":\"Array\"}]},{\"name\":\"sqlExecute\",\"description\":\"执行SQL查询(仅支持SELECT,且只能查询Online表单范围内的表),不要输入注释等无关信息。\",\"path\":\"/online/cgform/airag/sqlExecute\",\"method\":\"POST\",\"enabled\":true,\"parameters\":[{\"name\":\"sql\",\"description\":\"要执行的SQL\",\"type\":\"String\",\"location\":\"Body\",\"required\":true,\"defaultValue\":\"\"}],\"responses\":[{\"name\":\"success\",\"description\":\"是否成功\",\"type\":\"Boolean\"},{\"name\":\"message\",\"description\":\"若失败则返回失败原因\",\"type\":\"String\"},{\"name\":\"result\",\"description\":\"返回查询的结果,是个对象数组,数组的每一项都是一条数据,每条数据的key都是传入的查询的列。\",\"type\":\"Array\"}]},{\"name\":\"sqlPageExecute\",\"description\":\"分页执行SQL查询(仅支持SELECT,且只能查询Online表单范围内的表)\",\"path\":\"/online/cgform/airag/sqlPageExecute\",\"method\":\"POST\",\"enabled\":true,\"parameters\":[{\"name\":\"sql\",\"description\":\"原始sql,无需传入分页sql\",\"type\":\"String\",\"location\":\"Body\",\"required\":true,\"defaultValue\":\"\"},{\"name\":\"pageNo\",\"description\":\"当前页码\",\"type\":\"Number\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"1\"},{\"name\":\"pageSize\",\"description\":\"每页页数\",\"type\":\"Number\",\"location\":\"Body\",\"required\":false,\"defaultValue\":\"10\"}],\"responses\":[{\"name\":\"records\",\"description\":\"数据行\",\"type\":\"Array\"},{\"name\":\"total\",\"description\":\"总数\",\"type\":\"Number\"}]}]', 'enable', 1, '{\"tokenParamName\":\"X-Access-Token\",\"tool_count\":4,\"authType\":\"token\",\"tokenParamValue\":\"\"}', 'admin', '2026-03-26 19:23:21', 'admin', NULL, 'A01', NULL);
-- ----------------------------
-- Table structure for airag_model
@@ -378,7 +370,6 @@ DROP TABLE IF EXISTS `airag_prompts`;
CREATE TABLE `airag_prompts` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
`name` varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '提示词名称',
- `prompt_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '提示词key',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '提示词功能描述',
`content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '提示词模板内容,支持变量占位符如 {{variable}}',
`category` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '提示词分类',
@@ -394,7 +385,6 @@ CREATE TABLE `airag_prompts` (
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '所属部门',
`tenant_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '租户id',
- UNIQUE INDEX `uni_key`(`prompt_key`) USING BTREE,
INDEX `idx_category`(`category`) USING BTREE,
INDEX `idx_status`(`status`) USING BTREE,
INDEX `idx_name`(`name`) USING BTREE
@@ -403,11 +393,11 @@ CREATE TABLE `airag_prompts` (
-- ----------------------------
-- Records of airag_prompts
-- ----------------------------
-INSERT INTO `airag_prompts` VALUES ('2048760295136002049', '11dsssssdsdsdfasdf', 'asfsad', '11', NULL, NULL, NULL, NULL, NULL, '0', NULL, 1, 'admin', '2026-04-27 21:44:53', NULL, NULL, 'A01A03', NULL);
-INSERT INTO `airag_prompts` VALUES ('2048760358960726018', 'asdf123asfasd阿斯蒂芬', 'asdf123asfasd_a_si_di_fen', NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, 1, 'admin', '2026-04-27 21:45:08', NULL, NULL, 'A01A03', NULL);
-INSERT INTO `airag_prompts` VALUES ('2013923394830508034', '旅行规划师', 'travel_planner', '一位顶级的旅游规划师,合理规划用户出行安排', '# 角色:旅行规划师\n帮助用户轻松规划他们的旅行,提供个性化的旅行建议和行程安排。\n\n## 目标:\n1. 为用户设计符合其需求和偏好的旅行计划。\n2. 提供详细的行程安排,包括交通、住宿、景点等信息。\n\n## 技能:\n1. 精通旅游目的地的知识,能够提供最新的旅行资讯。\n2. 具备优秀的沟通能力,能够有效理解用户需求。\n3. 熟悉预算管理,能够提供性价比高的旅行选项。\n\n## 工作流:\n1. 收集用户的旅行需求和偏好,包括目的地、预算、出发时间等。\n2. 分析用户需求,制定个性化的旅行计划,包括行程安排和预算分配。\n3. 向用户提供完整的旅行计划,并根据反馈进行调整。 \n\n## 输出格式:\n以清晰的行程表形式输出,包括日期、活动安排、交通方式等信息。\n\n## 限制:\n- 不提供涉及违法或不合规活动的建议。\n- 尊重用户隐私,不询问不必要的个人信息。\n- 确保所有信息来源可靠,标注必要的参考资料。', NULL, NULL, '1897481367743143938', '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"promptVariables\":\"\"}', '0', NULL, 0, 'admin', '2026-01-21 18:35:29', 'admin', '2026-01-22 10:06:04', 'A05A01', NULL);
-INSERT INTO `airag_prompts` VALUES ('2013938349776609282', '需求采集器', 'product_requirement', '一位资深的 IT 咨询顾问,可以与客户进行初步沟通,并结构化地记录下他们的核心需求,并根据用户提供的项目基本信息生成一份标准化的需求采集纪要。', '你是一位资深的 IT 咨询顾问,你的任务是与客户进行初步沟通,并结构化地记录下他们的核心需求。请根据用户提供的项目基本信息,生成一份标准化的需求采集纪要。\n\n**工作准则**:\n1. **结构化输出**:严格按照 JSON 格式输出,包含项目背景、核心痛点、期望目标和关键干系人四个部分。\n2. **提炼关键信息**:从用户的零散描述中,精准提炼出关键信息,并以专业、简洁的语言进行归纳。\n3. **补充待办事项**:根据需求信息,自动生成 3-5 个需要进一步澄清或跟进的问题,放入 `follow_up_questions` 字段。\n4. **保持客观**:仅记录和分析用户提供的信息,不添加主观臆断。\n\n**客户信息**:\n- 客户公司:`{{client_company}}`\n- 项目名称:`{{project_name}}`\n- 初步描述:`{{initial_description}}`', NULL, NULL, '1897481367743143938', '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"temperature\":0.7,\"timeout\":60}', '0', NULL, 0, 'admin', '2026-01-21 19:34:54', 'admin', '2026-01-21 19:48:45', 'A05A01', NULL);
-INSERT INTO `airag_prompts` VALUES ('2014166382018056194', '文章生成器', 'article_generator', '一位资深的文章生成顾问,可以根据用户提供的基本信息生成一份标准化的文章。', '## 角色:精准内容与段落配图生成专家\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\n## 任务类型识别\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\n## 目标\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\n## 核心规则\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\n\n## 技能\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用图片工具完成搜索,图片直接插入到对应段落的末尾。\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\n## 工作流(内部执行,不对外展示)\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\n3. **生成精准内容**:\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\n## 限制\n- 禁止输出标题、解释、过程或额外说明。\n- 只对重点内容配图,非重点内容不配图。\n- 图片必须与重点内容高度相关。\n- 每个重点内容只配 1 张图,避免重复搜索。\n- 图片插入在重点内容附近,不集中放在结尾。\n- 语言必须符合用户指定的要求。', NULL, NULL, '1897481367743143938', '{\"promptVariables\":\"\",\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"}}', '0', NULL, 0, 'admin', '2026-01-22 10:41:02', 'admin', '2026-01-22 10:43:34', 'A05A01', NULL);
+INSERT INTO `airag_prompts` VALUES ('2048760295136002049', '11dsssssdsdsdfasdf', '11', NULL, NULL, NULL, NULL, NULL, '0', NULL, 1, 'admin', '2026-04-27 21:44:53', NULL, NULL, 'A01A03', NULL);
+INSERT INTO `airag_prompts` VALUES ('2048760358960726018', 'asdf123asfasd阿斯蒂芬', NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, 1, 'admin', '2026-04-27 21:45:08', NULL, NULL, 'A01A03', NULL);
+INSERT INTO `airag_prompts` VALUES ('2013923394830508034', '旅行规划师', '一位顶级的旅游规划师,合理规划用户出行安排', '# 角色:旅行规划师\n帮助用户轻松规划他们的旅行,提供个性化的旅行建议和行程安排。\n\n## 目标:\n1. 为用户设计符合其需求和偏好的旅行计划。\n2. 提供详细的行程安排,包括交通、住宿、景点等信息。\n\n## 技能:\n1. 精通旅游目的地的知识,能够提供最新的旅行资讯。\n2. 具备优秀的沟通能力,能够有效理解用户需求。\n3. 熟悉预算管理,能够提供性价比高的旅行选项。\n\n## 工作流:\n1. 收集用户的旅行需求和偏好,包括目的地、预算、出发时间等。\n2. 分析用户需求,制定个性化的旅行计划,包括行程安排和预算分配。\n3. 向用户提供完整的旅行计划,并根据反馈进行调整。 \n\n## 输出格式:\n以清晰的行程表形式输出,包括日期、活动安排、交通方式等信息。\n\n## 限制:\n- 不提供涉及违法或不合规活动的建议。\n- 尊重用户隐私,不询问不必要的个人信息。\n- 确保所有信息来源可靠,标注必要的参考资料。', NULL, NULL, '1897481367743143938', '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"promptVariables\":\"\"}', '0', NULL, 0, 'admin', '2026-01-21 18:35:29', 'admin', '2026-01-22 10:06:04', 'A05A01', NULL);
+INSERT INTO `airag_prompts` VALUES ('2013938349776609282', '需求采集器', '一位资深的 IT 咨询顾问,可以与客户进行初步沟通,并结构化地记录下他们的核心需求,并根据用户提供的项目基本信息生成一份标准化的需求采集纪要。', '你是一位资深的 IT 咨询顾问,你的任务是与客户进行初步沟通,并结构化地记录下他们的核心需求。请根据用户提供的项目基本信息,生成一份标准化的需求采集纪要。\n\n**工作准则**:\n1. **结构化输出**:严格按照 JSON 格式输出,包含项目背景、核心痛点、期望目标和关键干系人四个部分。\n2. **提炼关键信息**:从用户的零散描述中,精准提炼出关键信息,并以专业、简洁的语言进行归纳。\n3. **补充待办事项**:根据需求信息,自动生成 3-5 个需要进一步澄清或跟进的问题,放入 `follow_up_questions` 字段。\n4. **保持客观**:仅记录和分析用户提供的信息,不添加主观臆断。\n\n**客户信息**:\n- 客户公司:`{{client_company}}`\n- 项目名称:`{{project_name}}`\n- 初步描述:`{{initial_description}}`', NULL, NULL, '1897481367743143938', '{\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"},\"temperature\":0.7,\"timeout\":60}', '0', NULL, 0, 'admin', '2026-01-21 19:34:54', 'admin', '2026-01-21 19:48:45', 'A05A01', NULL);
+INSERT INTO `airag_prompts` VALUES ('2014166382018056194', '文章生成器', '一位资深的文章生成顾问,可以根据用户提供的基本信息生成一份标准化的文章。', '## 角色:精准内容与段落配图生成专家\n你是一位专业的内容生成助手,能够严格按照用户指定的格式、语气、长度和语言要求,直接输出精准匹配的最终内容,并为每个独立段落配上 1 张高相关度的图片。\n## 任务类型识别\n1. 回复类任务:当用户提供原始问题和参考回复时,仅基于给定内容生成精准回复,不得额外添加无关信息(如通知、背景介绍等)。\n2. 文章类任务:当用户提供主题时,撰写结构清晰、内容准确的完整文章,可包含引言、主体段落、总结等部分。\n## 目标\n1. **严格遵循指令**:完全按照用户指定的格式、语气、语言和长度要求生成内容。\n2. **直接输出结果**:仅输出符合要求的正文内容和对应的段落配图,不包含任何额外的标题、解释、道歉或中间过程。\n3. **逐段精准配图**:为每一个独立的段落匹配 1 张与该段内容强相关的图片,图片直接插入到对应段落的末尾,而非统一放在全文结尾。\n4. **适配两种模式**:既能独立创作短文并逐段配图,也能基于给定的原文和参考内容生成精准回复并逐段配图。\n## 核心规则\n1. 严格匹配要求:必须完全遵循用户指定的格式、语气、长度和语言要求。\n\n## 技能\n1. **精准指令解析**:准确识别用户的创作模式(独立创作 / 回复)、格式(消息 / 邮件等)、语气(友善 / 专业等)、语言(中文 / 英文等)和长度(短 / 中 / 长)。\n2. **无冗余输出**:仅生成符合要求的正文内容,不添加任何指令外的信息。\n3. **独立创作能力**:针对独立创作需求,能围绕核心主题生成结构清晰、语言流畅的短文。\n4. **精准回复能力**:针对回复需求,能基于原文和参考内容生成精准匹配的简短回复。\n5. **逐段配图能力**:为每个独立段落提取精准关键词,调用图片工具完成搜索,图片直接插入到对应段落的末尾。\n6. **避免搜索死循环**:每个图片仅使用 1-2 个精准关键词一次搜索完成,不反复调整关键词。\n7. **内容精准性**:回复类内容必须与参考内容完全一致,不得扩写;文章类内容必须准确、专业,不虚构事实。\n## 工作流(内部执行,不对外展示)\n1. **识别需求类型**:判断用户需求是独立创作短文,还是基于给定内容生成回复。\n2. **解析参数要求**:提取并确认格式、语气、语言、长度等所有约束条件。\n3. **生成精准内容**:\n - 独立创作:围绕核心主题,生成符合长度和语气要求的正文,并自然分段。\n - 回复:基于原文和参考内容,生成精准匹配的简短回复,并自然分段。\n4. **逐段匹配配图**:为每个独立段落提取 1-2 个与该段内容强相关的关键词,调用图片工具完成搜索。\n5. **整合输出**:将图片以路径的方式直接插入到对应段落的末尾,仅输出最终的图文内容,不包含任何额外信息或中间过程。\n## 限制\n- 禁止输出标题、解释、过程或额外说明。\n- 只对重点内容配图,非重点内容不配图。\n- 图片必须与重点内容高度相关。\n- 每个重点内容只配 1 张图,避免重复搜索。\n- 图片插入在重点内容附近,不集中放在结尾。\n- 语言必须符合用户指定的要求。', NULL, NULL, '1897481367743143938', '{\"promptVariables\":\"\",\"modelInfo\":{\"provider\":\"DEEPSEEK\",\"modelType\":\"LLM\",\"modelName\":\"deepseek-chat\"}}', '0', NULL, 0, 'admin', '2026-01-22 10:41:02', 'admin', '2026-01-22 10:43:34', 'A05A01', NULL);
-- ----------------------------
-- Table structure for chat2bi_assistant
@@ -462,7 +452,7 @@ CREATE TABLE `chat2bi_conversation` (
-- ----------------------------
-- Records of chat2bi_conversation
-- ----------------------------
-INSERT INTO `chat2bi_conversation` VALUES ('2887ab895ff842ef8a294f7573da6f74', '956f9607116047ada54619734d85f99f', '6a01a7bce0174875a413f60e5bdec16b', '各大区的保费排名', 'admin', '2026-05-24 09:00:00', NULL, '2026-08-10 11:38:36', 0);
+INSERT INTO `chat2bi_conversation` VALUES ('2887ab895ff842ef8a294f7573da6f74', '956f9607116047ada54619734d85f99f', '6a01a7bce0174875a413f60e5bdec16b', '各大区的保费排名', 'admin', '2026-05-24 09:00:00', NULL, '2026-08-21 14:28:09', 0);
INSERT INTO `chat2bi_conversation` VALUES ('332e10bc88b046be9b34186e07779a11', 'eaba9231e2db4b348a321857067508eb', '8422bb4067874cd5b9c8976962621104', '各部门的用户数量', 'admin', '2026-05-24 08:00:00', NULL, '2026-05-24 08:00:00', 0);
INSERT INTO `chat2bi_conversation` VALUES ('3d83bf2875f34bb4aa4119a43d515b99', '956f9607116047ada54619734d85f99f', '6a01a7bce0174875a413f60e5bdec16b', '已赔付理赔金额按险种汇总', 'admin', '2026-05-24 08:00:00', NULL, '2026-05-24 08:00:00', 0);
INSERT INTO `chat2bi_conversation` VALUES ('45938e194754426ba692ab50cde2d275', 'eaba9231e2db4b348a321857067508eb', '8422bb4067874cd5b9c8976962621104', '用户性别分布', 'admin', '2026-05-24 10:00:00', NULL, '2026-08-10 11:38:51', 0);
@@ -520,16 +510,13 @@ CREATE TABLE `chat2bi_message` (
-- ----------------------------
INSERT INTO `chat2bi_message` VALUES ('05a430c90bd2438b9daf729f1f5270e5', 'bc75e772eafe43639e4e8f1698e51543', 'user', '各险种的保费总额', '{\"role\": \"user\", \"text\": \"各险种的保费总额\"}', 0, '2026-05-24 06:00:00');
INSERT INTO `chat2bi_message` VALUES ('063575b460304bd6af6bef809338180e', '3d83bf2875f34bb4aa4119a43d515b99', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\": \"ai\", \"text\": \"已理解你的问题,按下面的口径为你取数(可直接调整):\", \"dsl\": {\"metric\": \"实赔金额\", \"dimension\": \"险种类型\", \"time\": \"全部\", \"filter\": \"\", \"limit\": 100}, \"data\": [[\"意外险\", \"661,410\"], [\"健康险\", \"606,549\"], [\"车险\", \"539,711\"], [\"财产险\", \"425,733\"], [\"寿险\", \"408,964\"]], \"sql\": \"SELECT product_type, SUM(settle_amount) AS settle_sum\\nFROM ins_claim\\nWHERE status=\'已赔付\'\\nGROUP BY product_type\\nORDER BY 2 DESC\", \"insight\": \"「意外险」的实赔金额最高(661,410),约占总量的 25%。\", \"chart\": false, \"chartType\": \"柱状图\", \"followup\": false}', 1, '2026-05-24 08:00:00');
-INSERT INTO `chat2bi_message` VALUES ('0965c3a9e12343c4b9e7f352031af19d', '2887ab895ff842ef8a294f7573da6f74', 'user', '各大区的保费排名', '{\"role\":\"user\",\"text\":\"各大区的保费排名\"}', 12, '2026-08-10 11:38:36');
INSERT INTO `chat2bi_message` VALUES ('15090e2fe6594e71bc32db520353e701', '332e10bc88b046be9b34186e07779a11', 'user', '各部门的用户数量', '{\"role\": \"user\", \"text\": \"各部门的用户数量\"}', 0, '2026-05-24 08:00:00');
INSERT INTO `chat2bi_message` VALUES ('183bfa8ee9704fc281a384fbae085bbf', '77718e1573e74f43ac326c99e608c611', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"收藏量\",\"dimension\":\"月份\",\"time\":\"近10天\",\"filter\":\"\",\"limit\":10},\"data\":[[\"1月\",\"980,123\"],[\"2月\",\"1,120,400\"],[\"3月\",\"1,540,900\"],[\"4月\",\"1,733,210\"],[\"5月\",\"1,612,540\"],[\"6月\",\"1,489,330\"],[\"7月\",\"1,701,220\"],[\"8月\",\"1,820,915\"],[\"9月\",\"1,560,488\"],[\"10月\",\"1,402,377\"]],\"sql\":\"SELECT month, SUM(favor_cnt) AS favor_cnt_sum\\nFROM singer\\nGROUP BY month\\nORDER BY 2 DESC\\nLIMIT 10\",\"insight\":\"「1月」的收藏量最高(980,123),约占总量的 38%;近10天环比 +9.2%,主要由头部月份带动。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false,\"recomputed\":true}', 1, '2026-05-24 00:01:00');
+INSERT INTO `chat2bi_message` VALUES ('1d095792faf64be1bdc6d7fee1ee1f5e', '2887ab895ff842ef8a294f7573da6f74', 'user', '各大区的保费排名', '{\"role\":\"user\",\"text\":\"各大区的保费排名\"}', 12, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('203d1c337a974e41a2155e21f902c327', '45938e194754426ba692ab50cde2d275', 'user', '按月份统计新增用户数', '{\"role\":\"user\",\"text\":\"按月份统计新增用户数\"}', 15, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('2702a38788bc4c3dbf21784e7aa88fda', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费总额\",\"dimension\":\"险种类型\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"险种类型\",\"保费总额\"],\"data\":[[\"财产险\",\"624703.92\"],[\"意外险\",\"530727.44\"],[\"寿险\",\"504139.35\"],[\"健康险\",\"488370.47\"],[\"车险\",\"458129.73\"]],\"sql\":\"SELECT product_type AS \\\"险种类型\\\", SUM(premium) AS \\\"保费总额\\\" FROM ins_policy GROUP BY product_type ORDER BY SUM(premium) DESC LIMIT 50\",\"insight\":\"「财产险」的保费总额最高(624703.92),本次共返回 5 组数据。\",\"chart\":true,\"chartType\":\"bar\",\"followup\":false,\"sumCols\":[\"保费总额\"],\"colMap\":{\"险种类型\":\"product_type\",\"保费总额\":\"\"},\"domainId\":\"6a01a7bce0174875a413f60e5bdec16b\",\"dslExtraMetrics\":[\"保费总额\"],\"dslExtraDimensions\":[]}', 15, '2026-08-10 11:38:36');
-INSERT INTO `chat2bi_message` VALUES ('29f95791da854af287ca2316e295c14a', '2887ab895ff842ef8a294f7573da6f74', 'ai', '抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai', '{\"role\":\"ai\",\"text\":\"抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai\"}', 9, '2026-08-10 11:38:36');
INSERT INTO `chat2bi_message` VALUES ('2a2066b736e24a94bcef378afdf501ef', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,为你查询到以下明细数据:', '{\"role\":\"ai\",\"text\":\"已理解你的问题,为你查询到以下明细数据:\",\"dsl\":{\"metric\":\"部门名称\",\"dimension\":\"用户ID\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":true,\"columns\":[\"用户ID\",\"登录账号\",\"真实姓名\",\"性别\",\"状态\",\"工号\",\"邮箱\",\"手机号\",\"用户机构编码\",\"创建时间\",\"部门名称\"],\"data\":[[\"2052653612026327042\",\"zhangsan\",\"张三\",\"\",\"1\",\"\",\"\",\"13800138000\",\"\",\"2026-05-08T15:35:32\",\"\"],[\"2039670497696014337\",\"temp_013\",\"林燕\",\"2\",\"1\",\"T0013\",\"temp13@test.com\",\"13810000012\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670498023170049\",\"temp_014\",\"何勇\",\"1\",\"1\",\"T0014\",\"temp14@test.com\",\"13810000013\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670498476154882\",\"temp_015\",\"徐梅\",\"2\",\"1\",\"T0015\",\"temp15@test.com\",\"13810000014\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670498933334018\",\"temp_016\",\"马杰\",\"2\",\"1\",\"T0016\",\"temp16@test.com\",\"13810000015\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670499398901761\",\"temp_017\",\"高雪\",\"1\",\"1\",\"T0017\",\"temp17@test.com\",\"13810000016\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670499780583426\",\"temp_018\",\"梁超\",\"2\",\"1\",\"T0018\",\"temp18@test.com\",\"13810000017\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670500107739138\",\"temp_019\",\"罗婷\",\"1\",\"1\",\"T0019\",\"temp19@test.com\",\"13810000018\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670500367785986\",\"temp_020\",\"宋刚\",\"1\",\"1\",\"T0020\",\"temp20@test.com\",\"13810000019\",\"\",\"2026-04-02T19:45:17\",\"\"],[\"2039670493526876162\",\"temp_002\",\"李娜\",\"2\",\"1\",\"T0002\",\"temp02@test.com\",\"13810000001\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670493916946434\",\"temp_003\",\"王强\",\"1\",\"1\",\"T0003\",\"temp03@test.com\",\"13810000002\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670494176993282\",\"temp_004\",\"赵丽\",\"1\",\"1\",\"T0004\",\"temp04@test.com\",\"13810000003\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670494634172417\",\"temp_005\",\"陈伟\",\"2\",\"1\",\"T0005\",\"temp05@test.com\",\"13810000004\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670495082962946\",\"temp_006\",\"刘洋\",\"2\",\"1\",\"T0006\",\"temp06@test.com\",\"13810000005\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670495477227522\",\"temp_007\",\"周敏\",\"1\",\"1\",\"T0007\",\"temp07@test.com\",\"13810000006\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670495875686401\",\"temp_008\",\"吴芳\",\"2\",\"1\",\"T0008\",\"temp08@test.com\",\"13810000007\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670496198647810\",\"temp_009\",\"郑磊\",\"1\",\"1\",\"T0009\",\"temp09@test.com\",\"13810000008\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670496592912385\",\"temp_010\",\"孙华\",\"1\",\"1\",\"T0010\",\"temp10@test.com\",\"13810000009\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670496987176961\",\"temp_011\",\"朱静\",\"2\",\"1\",\"T0011\",\"temp11@test.com\",\"13810000010\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670497373052929\",\"temp_012\",\"胡涛\",\"1\",\"1\",\"T0012\",\"temp12@test.com\",\"13810000011\",\"\",\"2026-04-02T19:45:16\",\"\"],[\"2039670403072516098\",\"temp_001\",\"张明\",\"1\",\"1\",\"T0001\",\"temp01@test.com\",\"13810000000\",\"\",\"2026-04-02T19:44:54\",\"\"],[\"2029522765715570689\",\"ai123\",\"张三\",\"\",\"1\",\"\",\"\",\"18611522656\",\"\",\"2026-03-05T19:41:49\",\"\"],[\"2003062533853843458\",\"lisi\",\"李四\",\"\",\"1\",\"\",\"\",\"18611111110\",\"\",\"2025-12-22T19:18:18\",\"\"],[\"1985289937397248002\",\"zhangli\",\"张丽\",\"2\",\"1\",\"\",\"\",\"18764100073\",\"\",\"2025-11-03T18:16:21\",\"\"],[\"1287687492661800962\",\"test\",\"测试用户\",\"2\",\"1\",\"004\",\"1611@1.com\",\"18511111111\",\"A05A01\",\"2020-07-27T17:53:17\",\"投资控股集团有限公司\"],[\"1227492235802251265\",\"_reserve_user_external\",\"预留非登录用户\",\"0\",\"1\",\"_reserve_user_external\",\"\",\"\",\"\",\"2020-02-12T15:18:49\",\"\"],[\"1179675874431131649\",\"qinfeng\",\"秦风\",\"1\",\"1\",\"20011\",\"qinfeng@jeecg.org\",\"13411111111\",\"A05A01\",\"2019-10-03T16:33:40\",\"投资控股集团有限公司\"],[\"e9ca23d68d884d4ebb19d07889727dae\",\"admin\",\"管理员\",\"1\",\"1\",\"A0001\",\"zhangdaiscott@163.com\",\"18611111111\",\"A01A05\",\"2019-06-21T17:54:10\",\"信息技术发展有限公司\"],[\"e9ca23d68d884d4ebb19d07889727dae\",\"admin\",\"管理员\",\"1\",\"1\",\"A0001\",\"zhangdaiscott@163.com\",\"18611111111\",\"A01A05\",\"2019-06-21T17:54:10\",\"研发部\"],[\"a75d45a015c44384a04449ee80dc3503\",\"jeecg\",\"JEECG演示\",\"1\",\"1\",\"A002\",\"jeecgos@163.com\",\"18611788525\",\"A01\",\"2019-02-13T16:02:36\",\"北京国炬软件信息\"]],\"sql\":\"SELECT \\n u.id AS 用户ID,\\n u.username AS 登录账号,\\n u.realname AS 真实姓名,\\n u.sex AS 性别,\\n u.status AS 状态,\\n u.work_no AS 工号,\\n u.email AS 邮箱,\\n u.phone AS 手机号,\\n u.org_code AS 用户机构编码,\\n u.create_time AS 创建时间,\\n d.depart_name AS 部门名称\\nFROM sys_user u\\nLEFT JOIN sys_user_depart ud ON u.id = ud.user_id\\nLEFT JOIN sys_depart d ON ud.dep_id = d.id\\nORDER BY u.create_time DESC\\nLIMIT 50\",\"insight\":\"共查询到 30 条记录,11 个字段。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 12, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('2d9a208f723345f8817f8eea5e292913', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费总额\",\"dimension\":\"险种类型\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"险种类型\",\"保费总额\"],\"data\":[[\"财产险\",\"624703.92\"],[\"意外险\",\"530727.44\"],[\"寿险\",\"504139.35\"],[\"健康险\",\"488370.47\"],[\"车险\",\"458129.73\"]],\"sql\":\"SELECT product_type AS 险种类型, SUM(premium) AS 保费总额 FROM ins_policy GROUP BY product_type ORDER BY 保费总额 DESC LIMIT 50\",\"insight\":\"「财产险」的保费总额最高(624703.92),本次共返回 5 组数据。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 7, '2026-08-10 11:38:36');
-INSERT INTO `chat2bi_message` VALUES ('38209d35073d49fc877b01dd774334e8', '2887ab895ff842ef8a294f7573da6f74', 'user', '保费最高的10张保单明细', '{\"role\":\"user\",\"text\":\"保费最高的10张保单明细\"}', 2, '2026-08-10 11:38:36');
-INSERT INTO `chat2bi_message` VALUES ('3939ab0b73f44267afe87ce53224b839', '2887ab895ff842ef8a294f7573da6f74', 'user', '各险种的保费总额', '{\"role\":\"user\",\"text\":\"各险种的保费总额\"}', 6, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('37760435d66a432ea504955a246bc23c', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费合计\",\"dimension\":\"大区\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"大区\",\"保费合计\"],\"data\":[[\"华东\",\"627604.31\"],[\"华北\",\"622788.42\"],[\"西南\",\"466631.17\"],[\"华南\",\"391663.45\"],[\"华中\",\"263998.94\"],[\"西北\",\"233384.62\"]],\"sql\":\"SELECT region AS \\\"大区\\\", SUM(premium) AS \\\"保费合计\\\" FROM ins_policy GROUP BY region ORDER BY SUM(premium) DESC LIMIT 50\",\"insight\":\"「华东」的保费合计最高(627604.31),本次共返回 6 组数据。\",\"chart\":true,\"chartType\":\"bar\",\"followup\":false,\"sumCols\":[\"保费合计\"],\"colMap\":{\"大区\":\"region\",\"保费合计\":\"\"},\"domainId\":\"6a01a7bce0174875a413f60e5bdec16b\",\"dslExtraMetrics\":[],\"dslExtraDimensions\":[\"大区\"]}', 13, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('39aedf8ff5794d7b86ada919cfd30f8b', '2887ab895ff842ef8a294f7573da6f74', 'user', '保费最高的10张保单明细', '{\"role\":\"user\",\"text\":\"保费最高的10张保单明细\"}', 2, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('3f4afec58eb2470daa8ed2154b3f113c', 'da121e06d85d4829b0ec1f2fcb5c80f6', 'user', '哪个流派总播放量最高?', '{\"role\":\"user\",\"text\":\"哪个流派总播放量最高?\"}', 2, '2026-05-24 00:09:11');
INSERT INTO `chat2bi_message` VALUES ('44c4826a785e411e9185e4c927413bc2', '45938e194754426ba692ab50cde2d275', 'user', '各部门的用户数量', '{\"role\":\"user\",\"text\":\"各部门的用户数量\"}', 2, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('4ac99d0368ad479bafe7786ab59ab5ff', '45938e194754426ba692ab50cde2d275', 'user', '用户性别分布', '{\"role\":\"user\",\"text\":\"用户性别分布\"}', 0, '2026-08-10 11:38:51');
@@ -537,35 +524,40 @@ INSERT INTO `chat2bi_message` VALUES ('4f95f72c08e341b4861595e1b1248622', '45938
INSERT INTO `chat2bi_message` VALUES ('5100a672f4014c938bd4a950c88cec08', '332e10bc88b046be9b34186e07779a11', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\": \"ai\", \"text\": \"已理解你的问题,按下面的口径为你取数(可直接调整):\", \"dsl\": {\"metric\": \"用户数\", \"dimension\": \"部门\", \"time\": \"全部\", \"filter\": \"\"}, \"data\": [[\"北京国炬软件信息\", \"5\"], [\"项目研发部\", \"3\"], [\"投资控股集团有限公司\", \"2\"], [\"财务部\", \"1\"], [\"研发部\", \"1\"], [\"信息技术发展有限公司\", \"1\"]], \"sql\": \"SELECT d.depart_name AS 部门, COUNT(ud.user_id) AS 用户数\\nFROM sys_depart d\\nJOIN sys_user_depart ud ON ud.dep_id = d.id\\nGROUP BY d.id\\nORDER BY 2 DESC\", \"insight\": \"「北京国炬软件信息」的用户数最高(5),约占总量的 38%。\", \"chart\": false, \"chartType\": \"柱状图\", \"followup\": false}', 1, '2026-05-24 08:00:00');
INSERT INTO `chat2bi_message` VALUES ('5da08c51af994a0d899f2a6c2fbe7c77', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"用户数\",\"dimension\":\"性别\",\"time\":\"全部\",\"filter\":\"\"},\"data\":[[\"男\",\"14\"],[\"女\",\"11\"],[\"未知\",\"4\"]],\"sql\":\"SELECT CASE sex WHEN 1 THEN \'男\' WHEN 2 THEN \'女\' ELSE \'未知\' END AS 性别, COUNT(*) AS 用户数\\nFROM sys_user\\nGROUP BY 性别\\nORDER BY 2 DESC\",\"insight\":\"「男」的用户数最高(14),约占总量的 48%。\",\"chart\":false,\"chartType\":\"饼图\",\"followup\":false}', 1, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('5f7106fa2dcd4b618eeaf4e78a68132a', '45938e194754426ba692ab50cde2d275', 'user', '各机构类别的部门数量', '{\"role\":\"user\",\"text\":\"各机构类别的部门数量\"}', 6, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('74f3912a45a044c48dd29dff8c48b3f9', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费\",\"dimension\":\"大区\",\"time\":\"全部\",\"filter\":\"\",\"limit\":100},\"data\":[[\"华东\",\"627,604\"],[\"华北\",\"622,788\"],[\"西南\",\"466,631\"],[\"华南\",\"391,663\"],[\"华中\",\"263,998\"],[\"西北\",\"233,384\"]],\"sql\":\"SELECT region, SUM(premium) AS premium_sum\\nFROM ins_policy\\nGROUP BY region\\nORDER BY 2 DESC\",\"insight\":\"「华东」的保费最高(627,604),约占总量的 24%。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 1, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('6556f2bd89af4a959bf0d19a386008a7', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,为你查询到以下明细数据:', '{\"role\":\"ai\",\"text\":\"已理解你的问题,为你查询到以下明细数据:\",\"dsl\":{\"metric\":\"保单状态\",\"dimension\":\"保单ID\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":true,\"columns\":[\"保单ID\",\"保单号\",\"客户姓名\",\"险种名称\",\"年保费\",\"保额\",\"投保日期\",\"保单状态\"],\"data\":[[\"200116\",\"P200116\",\"郑梓涵\",\"商业车险全保\",\"17997.47\",\"1350869.03\",\"2024-01-25\",\"已过期\"],[\"200033\",\"P200033\",\"宋宇勇\",\"好医保长期医疗\",\"17962.57\",\"1588838.64\",\"2024-11-08\",\"生效\"],[\"200130\",\"P200130\",\"郭玲\",\"雇主责任险\",\"17899.36\",\"812303.59\",\"2024-01-17\",\"生效\"],[\"200170\",\"P200170\",\"田洋\",\"车损险尊享\",\"17843.61\",\"1979911.50\",\"2025-12-21\",\"生效\"],[\"200290\",\"P200290\",\"梁磊\",\"少儿门诊医疗\",\"17768.79\",\"385975.90\",\"2025-01-20\",\"生效\"],[\"200045\",\"P200045\",\"曾娜\",\"商业车险全保\",\"17711.83\",\"1973682.71\",\"2023-04-01\",\"已过期\"],[\"200095\",\"P200095\",\"肖勇\",\"商业车险全保\",\"17599.99\",\"779816.14\",\"2025-10-11\",\"生效\"],[\"200101\",\"P200101\",\"罗强\",\"雇主责任险\",\"17537.99\",\"429642.99\",\"2026-03-28\",\"生效\"],[\"200015\",\"P200015\",\"袁嘉怡\",\"综合意外险\",\"17508.37\",\"1258736.91\",\"2023-12-26\",\"已过期\"],[\"200171\",\"P200171\",\"苏芳浩然\",\"百万守护意外险\",\"17422.52\",\"578822.53\",\"2023-06-25\",\"生效\"]],\"sql\":\"SELECT id AS 保单ID, policy_no AS 保单号, cust_name AS 客户姓名, product_name AS 险种名称, premium AS 年保费, coverage_amount AS 保额, sign_date AS 投保日期, status AS 保单状态 FROM ins_policy ORDER BY premium DESC LIMIT 10\",\"insight\":\"共查询到 10 条记录,8 个字段。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 3, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('661ac820717f4e22a023a4bd202b923f', '2887ab895ff842ef8a294f7573da6f74', 'user', '各渠道的保单数量', '{\"role\":\"user\",\"text\":\"各渠道的保单数量\"}', 10, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('76b5327c706d47c48ce118011711cea2', '45938e194754426ba692ab50cde2d275', 'user', '各部门的用户数量', '{\"role\":\"user\",\"text\":\"各部门的用户数量\"}', 7, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('7c2793d4b5b14adfabd646fa6c42a26f', 'c6bca8f52ee548f48e7a7facdade7cb5', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\": \"ai\", \"text\": \"已理解你的问题,按下面的口径为你取数(可直接调整):\", \"dsl\": {\"metric\": \"新增用户数\", \"dimension\": \"月份\", \"time\": \"全部\", \"filter\": \"\"}, \"data\": [[\"2019-02\", \"1\"], [\"2019-06\", \"1\"], [\"2019-10\", \"1\"], [\"2020-02\", \"1\"], [\"2020-07\", \"1\"], [\"2025-11\", \"1\"], [\"2025-12\", \"1\"], [\"2026-03\", \"1\"], [\"2026-04\", \"20\"], [\"2026-05\", \"1\"]], \"sql\": \"SELECT DATE_FORMAT(create_time,\'%Y-%m\') AS 月份, COUNT(*) AS 新增用户数\\nFROM sys_user\\nWHERE create_time IS NOT NULL\\nGROUP BY 月份\\nORDER BY 月份\", \"insight\": \"「2019-02」的新增用户数最高(1),约占总量的 3%。\", \"chart\": false, \"chartType\": \"折线图\", \"followup\": false}', 1, '2026-05-24 09:00:00');
INSERT INTO `chat2bi_message` VALUES ('7f5322febbea45b69f0cad9b76fafd03', 'bc75e772eafe43639e4e8f1698e51543', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\": \"ai\", \"text\": \"已理解你的问题,按下面的口径为你取数(可直接调整):\", \"dsl\": {\"metric\": \"保费\", \"dimension\": \"险种类型\", \"time\": \"全部\", \"filter\": \"\", \"limit\": 100}, \"data\": [[\"财产险\", \"624,703\"], [\"意外险\", \"530,727\"], [\"寿险\", \"504,139\"], [\"健康险\", \"488,370\"], [\"车险\", \"458,129\"]], \"sql\": \"SELECT product_type, SUM(premium) AS premium_sum\\nFROM ins_policy\\nGROUP BY product_type\\nORDER BY 2 DESC\", \"insight\": \"「财产险」的保费最高(624,703),约占总量的 24%。\", \"chart\": false, \"chartType\": \"柱状图\", \"followup\": false}', 1, '2026-05-24 06:00:00');
INSERT INTO `chat2bi_message` VALUES ('80021bddef6549f59be7c679944ccf13', 'da121e06d85d4829b0ec1f2fcb5c80f6', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"播放量\",\"dimension\":\"流派\",\"time\":\"近10天\",\"filter\":\"\",\"limit\":100},\"data\":[[\"流行\",\"4,201,500\"],[\"摇滚\",\"2,402,330\"],[\"民谣\",\"1,890,120\"],[\"电子\",\"940,210\"],[\"古典\",\"612,540\"],[\"嘻哈\",\"588,330\"],[\"爵士\",\"421,770\"],[\"乡村\",\"305,210\"]],\"sql\":\"SELECT genre, SUM(js_play_cnt) AS js_play_cnt_sum\\nFROM singer\\nGROUP BY genre\\nORDER BY 2 DESC\\nLIMIT 100\",\"insight\":\"「流行」的播放量最高(4,201,500),约占总量的 38%;近10天环比 +9.2%,主要由流行品类带动。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":true}', 3, '2026-05-24 00:09:11');
-INSERT INTO `chat2bi_message` VALUES ('8226f16e162a476f8b86bb239c4c9d45', '2887ab895ff842ef8a294f7573da6f74', 'user', '查询白金客户的明细', '{\"role\":\"user\",\"text\":\"查询白金客户的明细\"}', 4, '2026-08-10 11:38:36');
-INSERT INTO `chat2bi_message` VALUES ('92e99a1ba41e4a5aa21b5ab86b91dbf2', '2887ab895ff842ef8a294f7573da6f74', 'user', '各客户等级的保费总额', '{\"role\":\"user\",\"text\":\"各客户等级的保费总额\"}', 8, '2026-08-10 11:38:36');
-INSERT INTO `chat2bi_message` VALUES ('931b3777d6be450c9152d42fe7bfab46', '2887ab895ff842ef8a294f7573da6f74', 'user', '各险种的保费总额', '{\"role\":\"user\",\"text\":\"各险种的保费总额\"}', 14, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('89e3616b5721486ba8d37a374fdd5171', '2887ab895ff842ef8a294f7573da6f74', 'ai', '抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai', '{\"role\":\"ai\",\"text\":\"抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai\"}', 9, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('8fe3e7d70ffd42baaac081fa94ffddfc', '2887ab895ff842ef8a294f7573da6f74', 'user', '各险种的保费总额', '{\"role\":\"user\",\"text\":\"各险种的保费总额\"}', 14, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('9338348fbd054b6eb1fe9b12be969ac9', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"用户数量\",\"dimension\":\"机构类别\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"机构类别\",\"用户数量\"],\"data\":[[\"1\",\"8\"],[\"\",\"6\"],[\"4\",\"3\"],[\"2\",\"2\"]],\"sql\":\"SELECT d.org_category AS \'机构类别\', COUNT(DISTINCT ud.user_id) AS \'用户数量\' FROM sys_user_depart ud LEFT JOIN sys_depart d ON ud.dep_id = d.id GROUP BY d.org_category ORDER BY COUNT(DISTINCT ud.user_id) DESC LIMIT 50\",\"insight\":\"「1」的用户数量最高(8),本次共返回 4 组数据。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false,\"recomputed\":true}', 3, '2026-08-10 11:38:51');
+INSERT INTO `chat2bi_message` VALUES ('9788af29c57d4403858206af2e5163ae', '2887ab895ff842ef8a294f7573da6f74', 'user', '各大区的保费排名', '{\"role\":\"user\",\"text\":\"各大区的保费排名\"}', 0, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('9e590ddf675c47349c6d0823ebb5bb7e', '70c175254bfd4d88a9fe42efc050a540', 'user', '各渠道的保单数量', '{\"role\": \"user\", \"text\": \"各渠道的保单数量\"}', 0, '2026-05-24 07:00:00');
INSERT INTO `chat2bi_message` VALUES ('a08fabf89ffa425a96b9161c3985dc06', '45938e194754426ba692ab50cde2d275', 'user', '按月份统计新增用户数', '{\"role\":\"user\",\"text\":\"按月份统计新增用户数\"}', 9, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('a2af30712db3461888761fdda16cb5c3', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费合计\",\"dimension\":\"大区\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"大区\",\"保费合计\"],\"data\":[[\"华东\",\"627604.31\"],[\"华北\",\"622788.42\"],[\"西南\",\"466631.17\"],[\"华南\",\"391663.45\"],[\"华中\",\"263998.94\"],[\"西北\",\"233384.62\"]],\"sql\":\"SELECT region AS \\\"大区\\\", SUM(premium) AS \\\"保费合计\\\" FROM ins_policy GROUP BY region ORDER BY SUM(premium) DESC LIMIT 50\",\"insight\":\"「华东」的保费合计最高(627604.31),本次共返回 6 组数据。\",\"chart\":true,\"chartType\":\"bar\",\"followup\":false,\"sumCols\":[\"保费合计\"],\"colMap\":{\"大区\":\"region\",\"保费合计\":\"\"},\"domainId\":\"6a01a7bce0174875a413f60e5bdec16b\",\"dslExtraMetrics\":[],\"dslExtraDimensions\":[\"大区\"]}', 13, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('a141430615a24a72884dbb4213d9c7c4', '2887ab895ff842ef8a294f7573da6f74', 'user', '各客户等级的保费总额', '{\"role\":\"user\",\"text\":\"各客户等级的保费总额\"}', 8, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('a51f472fcfbb4d1dba1c192771ce0ceb', '45938e194754426ba692ab50cde2d275', 'user', '各机构类别的部门数量', '{\"role\":\"user\",\"text\":\"各机构类别的部门数量\"}', 13, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('a76355f69fed4a28ae71e6ca8ca2777e', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"用户数量\",\"dimension\":\"性别\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"性别\",\"用户数量\"],\"data\":[[\"男\",\"14\"],[\"女\",\"11\"],[\"其他\",\"3\"],[\"未知\",\"1\"]],\"sql\":\"SELECT CASE WHEN sex = 0 THEN \'未知\' WHEN sex = 1 THEN \'男\' WHEN sex = 2 THEN \'女\' ELSE \'其他\' END AS 性别, COUNT(*) AS 用户数量 FROM sys_user GROUP BY sex ORDER BY 用户数量 DESC LIMIT 50\",\"insight\":\"「男」的用户数量最高(14),本次共返回 4 组数据。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 5, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('a972d77955214868909a3cafe48c0e15', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,为你查询到以下明细数据:', '{\"role\":\"ai\",\"text\":\"已理解你的问题,为你查询到以下明细数据:\",\"dsl\":{\"metric\":\"投保日期\",\"dimension\":\"客户姓名\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":true,\"columns\":[\"客户姓名\",\"客户等级\",\"省份\",\"保单号\",\"险种名称\",\"年保费\",\"投保日期\"],\"data\":[[\"任婷嘉怡\",\"白金\",\"广东省\",\"P200003\",\"企业财产基本险\",\"15416.63\",\"2025-08-25\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200004\",\"货运物流险\",\"796.51\",\"2025-04-24\"],[\"姚敏\",\"白金\",\"天津市\",\"P200005\",\"交强险\",\"1134.32\",\"2023-01-10\"],[\"王明\",\"白金\",\"浙江省\",\"P200011\",\"交通意外险\",\"12686.54\",\"2025-02-24\"],[\"丁军\",\"白金\",\"山东省\",\"P200015\",\"综合意外险\",\"17508.37\",\"2023-12-26\"],[\"何娜雪\",\"白金\",\"天津市\",\"P200016\",\"成人意外伤害险\",\"3017.16\",\"2026-05-05\"],[\"丁军\",\"白金\",\"山东省\",\"P200017\",\"交强险\",\"8645.17\",\"2025-09-28\"],[\"胡涛\",\"白金\",\"云南省\",\"P200023\",\"综合意外险\",\"1482.86\",\"2023-10-06\"],[\"程宇\",\"白金\",\"山西省\",\"P200025\",\"交通意外险\",\"16818.51\",\"2025-04-13\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200027\",\"增额终身寿2026\",\"978.66\",\"2024-08-19\"],[\"王明\",\"白金\",\"浙江省\",\"P200028\",\"第三者责任险\",\"17304.52\",\"2025-01-13\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200037\",\"增额终身寿2026\",\"2827.86\",\"2023-06-07\"],[\"韩婷\",\"白金\",\"河北省\",\"P200041\",\"百万守护意外险\",\"8734.15\",\"2023-08-14\"],[\"王明\",\"白金\",\"浙江省\",\"P200042\",\"国寿福满一生\",\"13179.69\",\"2023-01-29\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200043\",\"交强险\",\"9091.53\",\"2025-09-30\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200050\",\"重疾无忧A款\",\"5384.67\",\"2025-04-29\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200057\",\"好医保长期医疗\",\"2947.94\",\"2025-07-23\"],[\"何欣怡\",\"白金\",\"云南省\",\"P200058\",\"成人意外伤害险\",\"2910.70\",\"2023-11-07\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200063\",\"家庭财产综合险\",\"17084.42\",\"2024-10-25\"],[\"王明\",\"白金\",\"浙江省\",\"P200070\",\"第三者责任险\",\"1379.64\",\"2026-02-19\"],[\"马嘉怡\",\"白金\",\"江苏省\",\"P200072\",\"车损险尊享\",\"886.07\",\"2023-07-15\"],[\"袁晓东\",\"白金\",\"甘肃省\",\"P200073\",\"少儿门诊医疗\",\"4979.17\",\"2026-03-04\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200076\",\"平安福终身寿险\",\"8845.93\",\"2024-05-05\"],[\"曹娜\",\"白金\",\"云南省\",\"P200079\",\"交通意外险\",\"9546.43\",\"2024-07-16\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200082\",\"商业车险全保\",\"5030.62\",\"2024-09-03\"],[\"王明\",\"白金\",\"浙江省\",\"P200085\",\"百万守护意外险\",\"16004.35\",\"2024-04-26\"],[\"韩婷\",\"白金\",\"河北省\",\"P200087\",\"平安福终身寿险\",\"17318.00\",\"2025-01-09\"],[\"韩婷\",\"白金\",\"河北省\",\"P200090\",\"少儿门诊医疗\",\"8950.13\",\"2025-09-10\"],[\"徐婷\",\"白金\",\"湖北省\",\"P200094\",\"综合意外险\",\"5005.41\",\"2025-02-26\"],[\"马嘉怡\",\"白金\",\"江苏省\",\"P200097\",\"雇主责任险\",\"16183.15\",\"2023-07-26\"],[\"何欣怡\",\"白金\",\"云南省\",\"P200098\",\"少儿门诊医疗\",\"5211.02\",\"2023-10-10\"],[\"程娟\",\"白金\",\"湖北省\",\"P200100\",\"车损险尊享\",\"17200.88\",\"2025-03-28\"],[\"宋丽军\",\"白金\",\"山东省\",\"P200104\",\"好医保长期医疗\",\"7846.07\",\"2023-04-15\"],[\"梁思远\",\"白金\",\"山西省\",\"P200107\",\"e生保百万医疗\",\"16713.23\",\"2023-11-06\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200109\",\"雇主责任险\",\"13114.65\",\"2026-03-07\"],[\"梁思远\",\"白金\",\"山西省\",\"P200111\",\"商业车险全保\",\"313.79\",\"2024-10-06\"],[\"曹娜\",\"白金\",\"云南省\",\"P200116\",\"商业车险全保\",\"17997.47\",\"2024-01-25\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200119\",\"平安福终身寿险\",\"1432.27\",\"2025-04-12\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200124\",\"商业车险全保\",\"6524.77\",\"2024-02-28\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200125\",\"增额终身寿2026\",\"6199.07\",\"2024-08-19\"],[\"姚敏\",\"白金\",\"天津市\",\"P200126\",\"成人意外伤害险\",\"6927.93\",\"2024-11-09\"],[\"梁思远\",\"白金\",\"山西省\",\"P200127\",\"国寿福满一生\",\"12654.53\",\"2025-09-19\"],[\"王明\",\"白金\",\"浙江省\",\"P200128\",\"百万守护意外险\",\"10862.82\",\"2023-03-17\"],[\"何娜雪\",\"白金\",\"天津市\",\"P200131\",\"车损险尊享\",\"13488.02\",\"2025-06-01\"],[\"宋丽军\",\"白金\",\"山东省\",\"P200133\",\"雇主责任险\",\"4666.80\",\"2023-02-02\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200134\",\"e生保百万医疗\",\"9477.41\",\"2024-12-27\"],[\"徐婷\",\"白金\",\"湖北省\",\"P200136\",\"货运物流险\",\"2945.62\",\"2024-07-31\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200138\",\"成人意外伤害险\",\"5898.43\",\"2023-07-22\"],[\"姚敏\",\"白金\",\"天津市\",\"P200139\",\"交强险\",\"16750.52\",\"2024-12-22\"],[\"丁军\",\"白金\",\"山东省\",\"P200144\",\"e生保百万医疗\",\"600.07\",\"2023-05-12\"]],\"sql\":\"SELECT c.cust_name AS 客户姓名, c.cust_level AS 客户等级, c.province AS 省份, p.policy_no AS 保单号, p.product_name AS 险种名称, p.premium AS 年保费, p.sign_date AS 投保日期 FROM ins_customer c LEFT JOIN ins_policy p ON c.id = p.cust_id WHERE c.cust_level = \'白金\' LIMIT 50\",\"insight\":\"共查询到 50 条记录,7 个字段。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 5, '2026-08-10 11:38:36');
INSERT INTO `chat2bi_message` VALUES ('ae6af05682d44aa39ef463398d544b1f', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"新增用户数\",\"dimension\":\"月份\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"月份\",\"新增用户数\"],\"data\":[[\"2026-05\",\"1\"],[\"2026-04\",\"20\"],[\"2026-03\",\"1\"],[\"2025-12\",\"1\"],[\"2025-11\",\"1\"],[\"2020-07\",\"1\"],[\"2020-02\",\"1\"],[\"2019-10\",\"1\"],[\"2019-06\",\"1\"],[\"2019-02\",\"1\"]],\"sql\":\"SELECT DATE_FORMAT(create_time, \'%Y-%m\') AS 月份, COUNT(*) AS 新增用户数 FROM sys_user GROUP BY DATE_FORMAT(create_time, \'%Y-%m\') ORDER BY 月份 DESC LIMIT 50\",\"insight\":\"「2026-05」的新增用户数最高(1),本次共返回 10 组数据。\",\"chart\":false,\"chartType\":\"折线图\",\"followup\":false}', 10, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('b672ebc1df614a49bb0c97419cb464a8', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"新增用户数\",\"dimension\":\"月份\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"月份\",\"新增用户数\"],\"data\":[[\"2023-10\",\"1\"],[\"2020-05\",\"1\"],[\"2019-02\",\"1\"],[\"2019-06\",\"1\"]],\"sql\":\"SELECT DATE_FORMAT(create_time, \'%Y-%m\') AS \\\"月份\\\", COUNT(*) AS \\\"新增用户数\\\" FROM sys_user GROUP BY DATE_FORMAT(create_time, \'%Y-%m\') ORDER BY \\\"月份\\\" LIMIT 50\",\"insight\":\"「2023-10」的新增用户数最高(1),本次共返回 4 组数据。\",\"chart\":true,\"chartType\":\"line\",\"followup\":false,\"sumCols\":[\"新增用户数\"],\"colMap\":{\"月份\":\"\",\"新增用户数\":\"\"},\"domainId\":\"8422bb4067874cd5b9c8976962621104\",\"dslExtraMetrics\":[\"新增用户数\"],\"dslExtraDimensions\":[\"月份\"]}', 16, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('c3a0361ea75847ff8f3024a2bddd535e', '77718e1573e74f43ac326c99e608c611', 'user', '下载量前10歌手', '{\"role\":\"user\",\"text\":\"下载量前10歌手\"}', 0, '2026-05-24 00:01:00');
-INSERT INTO `chat2bi_message` VALUES ('c48f8a953b314f96ab13059f05354059', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,为你查询到以下明细数据:', '{\"role\":\"ai\",\"text\":\"已理解你的问题,为你查询到以下明细数据:\",\"dsl\":{\"metric\":\"保单状态\",\"dimension\":\"保单ID\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":true,\"columns\":[\"保单ID\",\"保单号\",\"客户姓名\",\"险种名称\",\"年保费\",\"保额\",\"投保日期\",\"保单状态\"],\"data\":[[\"200116\",\"P200116\",\"郑梓涵\",\"商业车险全保\",\"17997.47\",\"1350869.03\",\"2024-01-25\",\"已过期\"],[\"200033\",\"P200033\",\"宋宇勇\",\"好医保长期医疗\",\"17962.57\",\"1588838.64\",\"2024-11-08\",\"生效\"],[\"200130\",\"P200130\",\"郭玲\",\"雇主责任险\",\"17899.36\",\"812303.59\",\"2024-01-17\",\"生效\"],[\"200170\",\"P200170\",\"田洋\",\"车损险尊享\",\"17843.61\",\"1979911.50\",\"2025-12-21\",\"生效\"],[\"200290\",\"P200290\",\"梁磊\",\"少儿门诊医疗\",\"17768.79\",\"385975.90\",\"2025-01-20\",\"生效\"],[\"200045\",\"P200045\",\"曾娜\",\"商业车险全保\",\"17711.83\",\"1973682.71\",\"2023-04-01\",\"已过期\"],[\"200095\",\"P200095\",\"肖勇\",\"商业车险全保\",\"17599.99\",\"779816.14\",\"2025-10-11\",\"生效\"],[\"200101\",\"P200101\",\"罗强\",\"雇主责任险\",\"17537.99\",\"429642.99\",\"2026-03-28\",\"生效\"],[\"200015\",\"P200015\",\"袁嘉怡\",\"综合意外险\",\"17508.37\",\"1258736.91\",\"2023-12-26\",\"已过期\"],[\"200171\",\"P200171\",\"苏芳浩然\",\"百万守护意外险\",\"17422.52\",\"578822.53\",\"2023-06-25\",\"生效\"]],\"sql\":\"SELECT id AS 保单ID, policy_no AS 保单号, cust_name AS 客户姓名, product_name AS 险种名称, premium AS 年保费, coverage_amount AS 保额, sign_date AS 投保日期, status AS 保单状态 FROM ins_policy ORDER BY premium DESC LIMIT 10\",\"insight\":\"共查询到 10 条记录,8 个字段。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 3, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('c4aa3710c8794dd9b7ef2ced5c27a1f8', '2887ab895ff842ef8a294f7573da6f74', 'ai', '抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai', '{\"role\":\"ai\",\"text\":\"抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai\"}', 11, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('c5133e188607457f868e94a9592faf7c', '2887ab895ff842ef8a294f7573da6f74', 'user', '查询白金客户的明细', '{\"role\":\"user\",\"text\":\"查询白金客户的明细\"}', 4, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('c55cd5f6345e48eba1943ebcbb8178d2', '45938e194754426ba692ab50cde2d275', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"用户数量\",\"dimension\":\"部门名称\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"部门名称\",\"用户数量\"],\"data\":[[\"北京国炬软件信息\",\"5\"],[\"项目研发部\",\"3\"],[\"投资控股集团有限公司\",\"2\"],[\"信息技术发展有限公司\",\"1\"],[\"财务部\",\"1\"],[\"研发部\",\"1\"],[\"出纳岗\",\"0\"],[\"投资发展部\",\"0\"],[\"主任\",\"0\"],[\"总工程师\",\"0\"],[\"出纳\",\"0\"],[\"普通职员\",\"0\"],[\"项目部\",\"0\"],[\"研发二部(JEEWX)\",\"0\"],[\"低代码研发小组\",\"0\"],[\"领导班子\",\"0\"],[\"控股办公室主任\",\"0\"],[\"副部长\",\"0\"],[\"综合管理部\",\"0\"],[\"副部长\",\"0\"],[\"44\",\"0\"],[\"财务\",\"0\"],[\"项目核算部\",\"0\"],[\"控股集团\",\"0\"],[\"党委书记\",\"0\"],[\"副主任\",\"0\"],[\"副总经理\",\"0\"],[\"总工程师\",\"0\"],[\"软件工程师\",\"0\"],[\"架构部\",\"0\"],[\"财务总监\",\"0\"],[\"财务管理中心\",\"0\"],[\"职员\",\"0\"],[\"领导班子\",\"0\"],[\"软件研发部\",\"0\"],[\"部长\",\"0\"],[\"董事长\",\"0\"],[\"城市运营管理集团有限公司\",\"0\"],[\"纪委书记\",\"0\"],[\"部长\",\"0\"],[\"领导班子\",\"0\"],[\"副总经理\",\"0\"],[\"333\",\"0\"],[\"研发一部(JEECG)\",\"0\"],[\"产品部门\",\"0\"],[\"大连油田\",\"0\"],[\"董事长\",\"0\"],[\"控股副总经理\",\"0\"],[\"董事长\",\"0\"],[\"办公室\",\"0\"]],\"sql\":\"SELECT d.depart_name AS 部门名称, COUNT(ud.user_id) AS 用户数量\\nFROM sys_depart d\\nLEFT JOIN sys_user_depart ud ON d.id = ud.dep_id\\nGROUP BY d.id, d.depart_name\\nORDER BY 用户数量 DESC\\nLIMIT 50\",\"insight\":\"「北京国炬软件信息」的用户数量最高(5),本次共返回 50 组数据。\",\"chart\":true,\"chartType\":\"折线图\",\"followup\":false}', 8, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('c95a1aa60dc34beea5d6cca084277dcc', '2887ab895ff842ef8a294f7573da6f74', 'ai', '抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai', '{\"role\":\"ai\",\"text\":\"抱歉,取数失败:AI 模型未配置,请先在 application.yml 配置 jeecg.jmreport.ai\"}', 11, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('c7d0d5a6c4e348dcbccf554fa74cdda0', '2887ab895ff842ef8a294f7573da6f74', 'user', '各险种的保费总额', '{\"role\":\"user\",\"text\":\"各险种的保费总额\"}', 6, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('c7f9f5d9534a4df2b29d2828f5703972', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费\",\"dimension\":\"大区\",\"time\":\"全部\",\"filter\":\"\",\"limit\":100},\"data\":[[\"华东\",\"627,604\"],[\"华北\",\"622,788\"],[\"西南\",\"466,631\"],[\"华南\",\"391,663\"],[\"华中\",\"263,998\"],[\"西北\",\"233,384\"]],\"sql\":\"SELECT region, SUM(premium) AS premium_sum\\nFROM ins_policy\\nGROUP BY region\\nORDER BY 2 DESC\",\"insight\":\"「华东」的保费最高(627,604),约占总量的 24%。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 1, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('cbcaafe1dc0341cb9e6dc9554b93610d', '2887ab895ff842ef8a294f7573da6f74', 'user', '已赔付理赔金额按险种汇总', '{\"role\":\"user\",\"text\":\"已赔付理赔金额按险种汇总\"}', 16, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('ce0086742db3401c9dfc7a40d7be96e4', '70c175254bfd4d88a9fe42efc050a540', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\": \"ai\", \"text\": \"已理解你的问题,按下面的口径为你取数(可直接调整):\", \"dsl\": {\"metric\": \"保单数\", \"dimension\": \"销售渠道\", \"time\": \"全部\", \"filter\": \"\", \"limit\": 100}, \"data\": [[\"银保\", \"68\"], [\"代理人\", \"67\"], [\"电销\", \"62\"], [\"线上直销\", \"53\"], [\"经纪\", \"50\"]], \"sql\": \"SELECT channel, COUNT(*) AS policy_cnt\\nFROM ins_policy\\nGROUP BY channel\\nORDER BY 2 DESC\", \"insight\": \"「银保」的保单数最高(68),约占总量的 23%。\", \"chart\": false, \"chartType\": \"柱状图\", \"followup\": false}', 1, '2026-05-24 07:00:00');
INSERT INTO `chat2bi_message` VALUES ('cff85cfffcdf42b1be74aeba3b4348bd', 'da121e06d85d4829b0ec1f2fcb5c80f6', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"播放量\",\"dimension\":\"流派\",\"time\":\"近10天\",\"filter\":\"\",\"limit\":100},\"data\":[[\"流行\",\"4,201,500\"],[\"摇滚\",\"2,402,330\"],[\"民谣\",\"1,890,120\"],[\"电子\",\"940,210\"],[\"古典\",\"612,540\"],[\"嘻哈\",\"588,330\"],[\"爵士\",\"421,770\"],[\"乡村\",\"305,210\"]],\"sql\":\"SELECT genre, SUM(js_play_cnt) AS js_play_cnt_sum\\nFROM singer\\nGROUP BY genre\\nORDER BY 2 DESC\\nLIMIT 100\",\"insight\":\"「流行」的播放量最高(4,201,500),约占总量的 38%;近10天环比 +9.2%,主要由流行品类带动。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 1, '2026-05-24 00:09:11');
-INSERT INTO `chat2bi_message` VALUES ('dd8ac5b79bcb4b5a835812f077128e2b', '2887ab895ff842ef8a294f7573da6f74', 'user', '各渠道的保单数量', '{\"role\":\"user\",\"text\":\"各渠道的保单数量\"}', 10, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('d2a924416baa49f0897f72e7940bb50f', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"已赔付理赔金额\",\"dimension\":\"险种类型\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"险种类型\",\"已赔付理赔金额\"],\"data\":[[\"意外险\",\"661410.13\"],[\"健康险\",\"606549.52\"],[\"车险\",\"539711.13\"],[\"财产险\",\"425733.46\"],[\"寿险\",\"408964.73\"]],\"sql\":\"SELECT product_type AS \\\"险种类型\\\", SUM(settle_amount) AS \\\"已赔付理赔金额\\\" FROM ins_claim WHERE status = \'已赔付\' GROUP BY product_type ORDER BY SUM(settle_amount) DESC LIMIT 50\",\"insight\":\"「意外险」的已赔付理赔金额最高(661410.13),本次共返回 5 组数据。\",\"chart\":true,\"chartType\":\"bar\",\"followup\":false,\"sumCols\":[\"已赔付理赔金额\"],\"colMap\":{\"险种类型\":\"product_type\",\"已赔付理赔金额\":\"\"},\"domainId\":\"6a01a7bce0174875a413f60e5bdec16b\",\"dslExtraMetrics\":[\"已赔付理赔金额\"],\"dslExtraDimensions\":[]}', 17, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('e1d8eca1062b43a7a9800298a597a12a', '45938e194754426ba692ab50cde2d275', 'user', '查询近期新增用户详细', '{\"role\":\"user\",\"text\":\"查询近期新增用户详细\"}', 11, '2026-08-10 11:38:51');
INSERT INTO `chat2bi_message` VALUES ('e7f261eb3ca24c1eabdfd7e5309bd037', '3d83bf2875f34bb4aa4119a43d515b99', 'user', '已赔付理赔金额按险种汇总', '{\"role\": \"user\", \"text\": \"已赔付理赔金额按险种汇总\"}', 0, '2026-05-24 08:00:00');
INSERT INTO `chat2bi_message` VALUES ('ec1bdd8c2caf40ce9da715bf0a8685bf', 'da121e06d85d4829b0ec1f2fcb5c80f6', 'user', '哪个流派总播放量最高?', '{\"role\":\"user\",\"text\":\"哪个流派总播放量最高?\"}', 0, '2026-05-24 00:09:11');
INSERT INTO `chat2bi_message` VALUES ('ed1d42ca3718474f89d774fb7f46a070', '45938e194754426ba692ab50cde2d275', 'user', '用户性别分布', '{\"role\":\"user\",\"text\":\"用户性别分布\"}', 4, '2026-08-10 11:38:51');
-INSERT INTO `chat2bi_message` VALUES ('ed7a7335072041378c5ca71d8b7dc6f2', '2887ab895ff842ef8a294f7573da6f74', 'user', '各大区的保费排名', '{\"role\":\"user\",\"text\":\"各大区的保费排名\"}', 0, '2026-08-10 11:38:36');
+INSERT INTO `chat2bi_message` VALUES ('eebc3b36e7684688b6291eff94d1626e', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,为你查询到以下明细数据:', '{\"role\":\"ai\",\"text\":\"已理解你的问题,为你查询到以下明细数据:\",\"dsl\":{\"metric\":\"投保日期\",\"dimension\":\"客户姓名\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":true,\"columns\":[\"客户姓名\",\"客户等级\",\"省份\",\"保单号\",\"险种名称\",\"年保费\",\"投保日期\"],\"data\":[[\"任婷嘉怡\",\"白金\",\"广东省\",\"P200003\",\"企业财产基本险\",\"15416.63\",\"2025-08-25\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200004\",\"货运物流险\",\"796.51\",\"2025-04-24\"],[\"姚敏\",\"白金\",\"天津市\",\"P200005\",\"交强险\",\"1134.32\",\"2023-01-10\"],[\"王明\",\"白金\",\"浙江省\",\"P200011\",\"交通意外险\",\"12686.54\",\"2025-02-24\"],[\"丁军\",\"白金\",\"山东省\",\"P200015\",\"综合意外险\",\"17508.37\",\"2023-12-26\"],[\"何娜雪\",\"白金\",\"天津市\",\"P200016\",\"成人意外伤害险\",\"3017.16\",\"2026-05-05\"],[\"丁军\",\"白金\",\"山东省\",\"P200017\",\"交强险\",\"8645.17\",\"2025-09-28\"],[\"胡涛\",\"白金\",\"云南省\",\"P200023\",\"综合意外险\",\"1482.86\",\"2023-10-06\"],[\"程宇\",\"白金\",\"山西省\",\"P200025\",\"交通意外险\",\"16818.51\",\"2025-04-13\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200027\",\"增额终身寿2026\",\"978.66\",\"2024-08-19\"],[\"王明\",\"白金\",\"浙江省\",\"P200028\",\"第三者责任险\",\"17304.52\",\"2025-01-13\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200037\",\"增额终身寿2026\",\"2827.86\",\"2023-06-07\"],[\"韩婷\",\"白金\",\"河北省\",\"P200041\",\"百万守护意外险\",\"8734.15\",\"2023-08-14\"],[\"王明\",\"白金\",\"浙江省\",\"P200042\",\"国寿福满一生\",\"13179.69\",\"2023-01-29\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200043\",\"交强险\",\"9091.53\",\"2025-09-30\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200050\",\"重疾无忧A款\",\"5384.67\",\"2025-04-29\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200057\",\"好医保长期医疗\",\"2947.94\",\"2025-07-23\"],[\"何欣怡\",\"白金\",\"云南省\",\"P200058\",\"成人意外伤害险\",\"2910.70\",\"2023-11-07\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200063\",\"家庭财产综合险\",\"17084.42\",\"2024-10-25\"],[\"王明\",\"白金\",\"浙江省\",\"P200070\",\"第三者责任险\",\"1379.64\",\"2026-02-19\"],[\"马嘉怡\",\"白金\",\"江苏省\",\"P200072\",\"车损险尊享\",\"886.07\",\"2023-07-15\"],[\"袁晓东\",\"白金\",\"甘肃省\",\"P200073\",\"少儿门诊医疗\",\"4979.17\",\"2026-03-04\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200076\",\"平安福终身寿险\",\"8845.93\",\"2024-05-05\"],[\"曹娜\",\"白金\",\"云南省\",\"P200079\",\"交通意外险\",\"9546.43\",\"2024-07-16\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200082\",\"商业车险全保\",\"5030.62\",\"2024-09-03\"],[\"王明\",\"白金\",\"浙江省\",\"P200085\",\"百万守护意外险\",\"16004.35\",\"2024-04-26\"],[\"韩婷\",\"白金\",\"河北省\",\"P200087\",\"平安福终身寿险\",\"17318.00\",\"2025-01-09\"],[\"韩婷\",\"白金\",\"河北省\",\"P200090\",\"少儿门诊医疗\",\"8950.13\",\"2025-09-10\"],[\"徐婷\",\"白金\",\"湖北省\",\"P200094\",\"综合意外险\",\"5005.41\",\"2025-02-26\"],[\"马嘉怡\",\"白金\",\"江苏省\",\"P200097\",\"雇主责任险\",\"16183.15\",\"2023-07-26\"],[\"何欣怡\",\"白金\",\"云南省\",\"P200098\",\"少儿门诊医疗\",\"5211.02\",\"2023-10-10\"],[\"程娟\",\"白金\",\"湖北省\",\"P200100\",\"车损险尊享\",\"17200.88\",\"2025-03-28\"],[\"宋丽军\",\"白金\",\"山东省\",\"P200104\",\"好医保长期医疗\",\"7846.07\",\"2023-04-15\"],[\"梁思远\",\"白金\",\"山西省\",\"P200107\",\"e生保百万医疗\",\"16713.23\",\"2023-11-06\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200109\",\"雇主责任险\",\"13114.65\",\"2026-03-07\"],[\"梁思远\",\"白金\",\"山西省\",\"P200111\",\"商业车险全保\",\"313.79\",\"2024-10-06\"],[\"曹娜\",\"白金\",\"云南省\",\"P200116\",\"商业车险全保\",\"17997.47\",\"2024-01-25\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200119\",\"平安福终身寿险\",\"1432.27\",\"2025-04-12\"],[\"蔡杰\",\"白金\",\"浙江省\",\"P200124\",\"商业车险全保\",\"6524.77\",\"2024-02-28\"],[\"陈鑫\",\"白金\",\"四川省\",\"P200125\",\"增额终身寿2026\",\"6199.07\",\"2024-08-19\"],[\"姚敏\",\"白金\",\"天津市\",\"P200126\",\"成人意外伤害险\",\"6927.93\",\"2024-11-09\"],[\"梁思远\",\"白金\",\"山西省\",\"P200127\",\"国寿福满一生\",\"12654.53\",\"2025-09-19\"],[\"王明\",\"白金\",\"浙江省\",\"P200128\",\"百万守护意外险\",\"10862.82\",\"2023-03-17\"],[\"何娜雪\",\"白金\",\"天津市\",\"P200131\",\"车损险尊享\",\"13488.02\",\"2025-06-01\"],[\"宋丽军\",\"白金\",\"山东省\",\"P200133\",\"雇主责任险\",\"4666.80\",\"2023-02-02\"],[\"魏子轩\",\"白金\",\"广东省\",\"P200134\",\"e生保百万医疗\",\"9477.41\",\"2024-12-27\"],[\"徐婷\",\"白金\",\"湖北省\",\"P200136\",\"货运物流险\",\"2945.62\",\"2024-07-31\"],[\"胡艳刚\",\"白金\",\"云南省\",\"P200138\",\"成人意外伤害险\",\"5898.43\",\"2023-07-22\"],[\"姚敏\",\"白金\",\"天津市\",\"P200139\",\"交强险\",\"16750.52\",\"2024-12-22\"],[\"丁军\",\"白金\",\"山东省\",\"P200144\",\"e生保百万医疗\",\"600.07\",\"2023-05-12\"]],\"sql\":\"SELECT c.cust_name AS 客户姓名, c.cust_level AS 客户等级, c.province AS 省份, p.policy_no AS 保单号, p.product_name AS 险种名称, p.premium AS 年保费, p.sign_date AS 投保日期 FROM ins_customer c LEFT JOIN ins_policy p ON c.id = p.cust_id WHERE c.cust_level = \'白金\' LIMIT 50\",\"insight\":\"共查询到 50 条记录,7 个字段。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 5, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('f5f1e02f89414a1abb7f2a628f411e01', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费总额\",\"dimension\":\"险种类型\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"险种类型\",\"保费总额\"],\"data\":[[\"财产险\",\"624703.92\"],[\"意外险\",\"530727.44\"],[\"寿险\",\"504139.35\"],[\"健康险\",\"488370.47\"],[\"车险\",\"458129.73\"]],\"sql\":\"SELECT product_type AS 险种类型, SUM(premium) AS 保费总额 FROM ins_policy GROUP BY product_type ORDER BY 保费总额 DESC LIMIT 50\",\"insight\":\"「财产险」的保费总额最高(624703.92),本次共返回 5 组数据。\",\"chart\":false,\"chartType\":\"柱状图\",\"followup\":false}', 7, '2026-08-21 14:28:09');
+INSERT INTO `chat2bi_message` VALUES ('faccaf7ed88d4ee09aa7e53f79a7d85a', '2887ab895ff842ef8a294f7573da6f74', 'ai', '已理解你的问题,按下面的口径为你取数(可直接调整):', '{\"role\":\"ai\",\"text\":\"已理解你的问题,按下面的口径为你取数(可直接调整):\",\"dsl\":{\"metric\":\"保费总额\",\"dimension\":\"险种类型\",\"time\":\"全部\",\"filter\":\"\"},\"detail\":false,\"columns\":[\"险种类型\",\"保费总额\"],\"data\":[[\"财产险\",\"624703.92\"],[\"意外险\",\"530727.44\"],[\"寿险\",\"504139.35\"],[\"健康险\",\"488370.47\"],[\"车险\",\"458129.73\"]],\"sql\":\"SELECT product_type AS \\\"险种类型\\\", SUM(premium) AS \\\"保费总额\\\" FROM ins_policy GROUP BY product_type ORDER BY SUM(premium) DESC LIMIT 50\",\"insight\":\"「财产险」的保费总额最高(624703.92),本次共返回 5 组数据。\",\"chart\":true,\"chartType\":\"bar\",\"followup\":false,\"sumCols\":[\"保费总额\"],\"colMap\":{\"险种类型\":\"product_type\",\"保费总额\":\"\"},\"domainId\":\"6a01a7bce0174875a413f60e5bdec16b\",\"dslExtraMetrics\":[\"保费总额\"],\"dslExtraDimensions\":[]}', 15, '2026-08-21 14:28:09');
INSERT INTO `chat2bi_message` VALUES ('fc551b7824c0430bb14e463698ff7d97', 'c6bca8f52ee548f48e7a7facdade7cb5', 'user', '按月份统计新增用户数', '{\"role\": \"user\", \"text\": \"按月份统计新增用户数\"}', 0, '2026-05-24 09:00:00');
-- ----------------------------
@@ -778,6 +770,7 @@ INSERT INTO `flyway_schema_history` VALUES (16, '3.9.1.2', 'add aiwriteblog', 'S
INSERT INTO `flyway_schema_history` VALUES (17, '3.9.2.0', 'all upgrade', 'SQL', 'V3.9.2_0__all_upgrade.sql', -1769021348, 'root', '2026-05-11 16:21:41', 48, 1);
INSERT INTO `flyway_schema_history` VALUES (18, '3.9.2.1', 'upgrade jimureport', 'SQL', 'V3.9.2_1__upgrade_jimureport.sql', -1890687377, 'root', '2026-06-27 22:58:34', 45, 1);
INSERT INTO `flyway_schema_history` VALUES (19, '3.9.2.2', 'add jimuchatbi', 'SQL', 'V3.9.2_2__add_jimuchatbi.sql', 1023583983, 'root', '2026-08-10 11:35:54', 417, 1);
+INSERT INTO `flyway_schema_history` VALUES (20, '3.9.5.0', 'all upgrade', 'SQL', 'V3.9.5_0__all_upgrade.sql', 1571851477, 'root', '2026-08-21 16:52:36', 24, 1);
-- ----------------------------
-- Table structure for ins_claim
@@ -1567,7 +1560,11 @@ CREATE TABLE `jimu_dict` (
`type` int(1) UNSIGNED ZEROFILL NULL DEFAULT 0 COMMENT '字典类型0为string,1为number',
`tenant_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租户标识',
PRIMARY KEY (`id`) USING BTREE,
- UNIQUE INDEX `uk_sd_dict_code`(`dict_code`) USING BTREE
+ INDEX `idx_jd_dict_code`(`dict_code`) USING BTREE,
+ INDEX `idx_jd_tenant_id`(`tenant_id`) USING BTREE,
+ INDEX `idx_jd_create_by`(`create_by`) USING BTREE,
+ INDEX `idx_jd_dict_code_tenant_id`(`dict_code`, `tenant_id`) USING BTREE,
+ INDEX `idx_jd_dict_code_create_by`(`dict_code`, `create_by`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
@@ -1912,7 +1909,7 @@ INSERT INTO `jimu_report` VALUES ('924614453466595328', '20201214142804__5048',
INSERT INTO `jimu_report` VALUES ('928540173805338624', '20240318105250', '电子收款收据', NULL, NULL, '984302991393210368', '{\"loopBlockList\":[],\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":686,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":21},\"1\":{\"width\":35},\"2\":{\"width\":45},\"3\":{\"width\":60},\"4\":{\"width\":128},\"5\":{\"width\":79},\"6\":{\"width\":67},\"7\":{\"width\":67},\"8\":{\"width\":84},\"10\":{\"width\":29},\"len\":100},\"area\":{\"sri\":24,\"sci\":11,\"eri\":24,\"eci\":11,\"width\":100,\"height\":25},\"pyGroupEngine\":false,\"excel_config_id\":\"928540173805338624\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{},\"height\":9},\"1\":{\"cells\":{\"2\":{\"rendered\":\"IKbjwc1lQUlSeJfd\",\"display\":\"qrcode\",\"merge\":[2,1],\"style\":0,\"text\":\"http://www.baidu.com\",\"config\":1,\"height\":69},\"3\":{}},\"height\":19},\"2\":{\"cells\":{\"2\":{},\"3\":{},\"4\":{\"merge\":[0,4],\"style\":80,\"text\":\"北京万达物业服务有限公司\",\"height\":25},\"9\":{\"virtual\":\"YfdiQDcuqTjlOG4f\",\"style\":67,\"text\":\" \"}}},\"3\":{\"cells\":{\"2\":{},\"3\":{},\"4\":{\"merge\":[0,4],\"style\":72,\"text\":\"电子收款收据\",\"height\":25}}},\"4\":{\"cells\":{\"2\":{},\"3\":{}},\"height\":16},\"5\":{\"cells\":{\"1\":{\"rendered\":\"\",\"merge\":[0,2],\"style\":41,\"text\":\"客户/业主\",\"config\":\"\",\"height\":25},\"4\":{\"merge\":[0,1],\"style\":43,\"text\":\"#{receipt.customName}\",\"height\":25},\"5\":{},\"6\":{\"merge\":[0,1],\"style\":44,\"text\":\"收款单号\",\"height\":25},\"8\":{\"merge\":[0,1],\"style\":45,\"text\":\"#{receipt.receiptNo}\",\"height\":25},\"9\":{}},\"height\":25},\"6\":{\"cells\":{\"1\":{\"rendered\":\"\",\"merge\":[0,2],\"style\":44,\"text\":\"实际交款人\",\"config\":\"\",\"height\":25},\"4\":{\"merge\":[0,1],\"style\":43,\"text\":\"#{receipt.actualPayer}\",\"height\":25},\"5\":{},\"6\":{\"rendered\":\"\",\"merge\":[0,1],\"style\":44,\"text\":\"结算方式\",\"config\":\"\",\"height\":25},\"8\":{\"merge\":[0,1],\"style\":45,\"text\":\"#{receipt.settlementType}\",\"height\":25},\"9\":{}},\"height\":25},\"7\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":44,\"text\":\"收款时间\",\"height\":25},\"4\":{\"merge\":[0,1],\"style\":43,\"text\":\"#{receipt.collectionTime}\",\"height\":25},\"5\":{},\"6\":{\"merge\":[0,1],\"style\":44,\"text\":\"原单号\",\"height\":25},\"8\":{\"merge\":[0,1],\"style\":45,\"text\":\"#{receipt.originalNumber}\",\"height\":25},\"9\":{}},\"height\":25},\"8\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":44,\"text\":\"收款组织\",\"height\":25},\"4\":{\"merge\":[0,5],\"style\":46,\"text\":\"#{receipt.organization}\",\"height\":25},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{},\"11\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"}},\"height\":25},\"9\":{\"cells\":{\"1\":{}}},\"10\":{\"cells\":{\"1\":{\"merge\":[0,1],\"style\":19,\"text\":\"行号\",\"height\":38},\"3\":{\"merge\":[0,1],\"style\":47,\"text\":\"房产名称\",\"height\":38},\"5\":{\"rendered\":\"\",\"merge\":[0,2],\"style\":47,\"text\":\"费用项目\",\"config\":\"\",\"height\":38},\"8\":{\"style\":47,\"text\":\"应交月份\"},\"9\":{\"style\":19,\"text\":\"金额\"}},\"height\":38},\"11\":{\"cells\":{\"1\":{\"merge\":[0,1],\"text\":\"=row()\",\"height\":34},\"3\":{\"merge\":[0,1],\"text\":\"#{receiptProject.propertyName}\",\"height\":34},\"5\":{\"merge\":[0,2],\"text\":\"#{receiptProject.expenseItem}\",\"height\":34},\"8\":{\"style\":0,\"text\":\"#{receiptProject.payableMonths}\"},\"9\":{\"style\":83,\"text\":\"#{receiptProject.price}\"},\"13\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"}},\"height\":34},\"12\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":17,\"text\":\"款项合计\",\"height\":30},\"4\":{\"merge\":[0,5],\"style\":82,\"text\":\"人民币 =sum(J12) 元\",\"height\":30},\"11\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"},\"15\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"}},\"height\":30},\"13\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":19,\"text\":\"缴费说明\",\"height\":30},\"4\":{\"merge\":[0,5],\"style\":23,\"text\":\"#{receipt.paymentDesc}\",\"height\":30},\"15\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"}},\"height\":30},\"14\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":19,\"text\":\"检验密码\",\"height\":35},\"4\":{\"merge\":[0,5],\"style\":84,\"text\":\"#{receipt.verifyPassword}\",\"height\":35},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{}},\"height\":35},\"15\":{\"cells\":{\"8\":{\"text\":\" \",\"virtual\":\"qWMWhe42wLnQXDUa\"}},\"height\":10},\"16\":{\"cells\":{\"1\":{\"merge\":[0,2],\"style\":19,\"text\":\"收款经办\",\"height\":30},\"4\":{\"style\":20,\"text\":\"#{receipt.dealWith}\"},\"5\":{\"merge\":[0,1],\"style\":19,\"text\":\"公司签章\",\"height\":30},\"7\":{\"merge\":[0,2],\"style\":23,\"text\":\" \",\"height\":30}},\"height\":30},\"17\":{\"cells\":{\"8\":{\"rendered\":\"\",\"text\":\"\",\"config\":\"\"}},\"height\":10},\"18\":{\"cells\":{\"1\":{\"merge\":[0,1],\"style\":29,\"text\":\"加密说明:\",\"height\":25}}},\"19\":{\"cells\":{\"1\":{\"merge\":[0,8],\"style\":63,\"text\":\"1、本电子收据加密信息算法使用 SHA256\",\"height\":30},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{}},\"height\":30},\"20\":{\"cells\":{\"1\":{\"merge\":[0,8],\"style\":65,\"text\":\"2、原始输入信息依次为:法人名称、收款组织、客户/业主、实际交款人、结算方式、收款单号、收款时间、款项合计,使用RSA私钥加密信息摘要生成“校验密码”\",\"height\":37},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{}},\"height\":37},\"21\":{\"cells\":{\"1\":{\"merge\":[0,8],\"style\":65,\"text\":\"3、应公钥为MIGEMAOCCSqGSIb3DQEBAQUAMGNADCBiQKBgQCEf iYMBHNInswq1N/KLBy smaG68D+nlQk/RZ3QVSTmWo310WnSipYR3ksCNBksyGZceEneCIEuWBboPImYQUbH/ EHP3I3Ri 1E1 INjNI3GvQ7oXH/RLmHRGAgCz 4d9QcW7mGTHVvj/3o/gEvqyHgW6eG1lsl f6aEi7mi IRHxYtZrFQIDAQAB\",\"height\":57},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"8\":{},\"9\":{}},\"height\":57},\"23\":{\"cells\":{},\"height\":25},\"len\":200},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{\"1\":{\"colorDark\":\"#000000\",\"width\":69,\"text\":\"http://www.baidu.com\",\"colorLight\":\"#ffffff\",\"height\":69}},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"align\":\"center\"},{\"font\":{\"size\":7.5}},{\"font\":{\"size\":8}},{\"align\":\"center\",\"font\":{\"size\":12}},{\"font\":{\"size\":12}},{\"align\":\"center\",\"font\":{\"size\":12,\"bold\":true}},{\"font\":{\"size\":12,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":11}},{\"font\":{\"size\":11}},{\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"font\":{\"size\":11,\"bold\":true}},{\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"],\"right\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]}},{\"bgcolor\":\"#dae7d2\",\"align\":\"center\"},{\"bgcolor\":\"#dae7d2\"},{\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"bold\":true}},{\"bgcolor\":\"#dae7d2\",\"font\":{\"bold\":true}},{\"align\":\"center\",\"font\":{\"bold\":true}},{\"font\":{\"bold\":true}},{\"bgcolor\":\"【QQYUN-8110】在线通讯录支持设置权限\",\"align\":\"center\",\"font\":{\"bold\":true}},{\"bgcolor\":\"【QQYUN-8110】在线通讯录支持设置权限\",\"font\":{\"bold\":true}},{\"color\":\"【QQYUN-8110】在线通讯录支持设置权限\"},{\"color\":\"#0a0a0a\"},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"bold\":true}},{\"border\":{\"left\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":10.5,\"bold\":true}},{\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":10.5,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"valign\":\"middle\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"bgcolor\":\"#dae7d2\",\"valign\":\"middle\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"],\"right\":[\"thin\",\"#1e8a1e\"]},\"valign\":\"middle\"},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"valign\":\"middle\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"valign\":\"middle\"},{\"border\":{\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"valign\":\"middle\"},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"],\"right\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{\"bgcolor\":\"sk-JsZB4Wi1HM2zJne40434CbCd071642Ab9910Ee1cA4CaE115\"},{\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":11}},{\"border\":{\"top\":[\"thin\",\"#000\"]},\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]},\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"font\":{\"size\":10}},{\"font\":{\"size\":10}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"font\":{\"size\":11}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"font\":{\"size\":11,\"bold\":true}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"align\":\"center\",\"font\":{\"size\":11,\"bold\":true}},{},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"align\":\"center\"},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#1e8a1e\"]}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"bgcolor\":\"#dae7d2\",\"align\":\"center\",\"font\":{\"size\":11}},{\"valign\":\"bottom\"},{\"textwrap\":true},{\"textwrap\":true,\"valign\":\"top\"},{\"align\":\"center\",\"font\":{\"size\":14}},{\"font\":{\"size\":14}},{\"font\":{\"size\":14,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":14,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":15,\"bold\":true}},{\"font\":{\"size\":15}},{\"align\":\"center\",\"font\":{\"size\":15,\"name\":\"宋体\",\"bold\":true}},{\"font\":{\"size\":15,\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":15,\"name\":\"楷体\",\"bold\":true}},{\"font\":{\"size\":15,\"name\":\"楷体\"}},{\"align\":\"center\",\"font\":{\"size\":15,\"name\":\"仿宋\",\"bold\":true}},{\"font\":{\"size\":15,\"name\":\"仿宋\"}},{\"align\":\"center\",\"font\":{\"size\":15,\"name\":\"华文行楷\",\"bold\":true}},{\"font\":{\"size\":15,\"name\":\"华文行楷\"}},{\"align\":\"center\",\"font\":{\"size\":14,\"name\":\"宋体\"}},{\"font\":{\"name\":\"宋体\"}},{\"border\":{\"top\":[\"thin\",\"#1e8a1e\"],\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"font\":{\"bold\":true}},{\"align\":\"right\"},{\"border\":{\"left\":[\"thin\",\"#1e8a1e\"],\"bottom\":[\"thin\",\"#1e8a1e\"]},\"textwrap\":true}],\"merges\":[\"C2:D4\",\"E3:I3\",\"E4:I4\",\"B6:D6\",\"E6:F6\",\"G6:H6\",\"I6:J6\",\"B7:D7\",\"E7:F7\",\"G7:H7\",\"I7:J7\",\"B8:D8\",\"E8:F8\",\"G8:H8\",\"I8:J8\",\"B9:D9\",\"E9:J9\",\"B11:C11\",\"D11:E11\",\"F11:H11\",\"B12:C12\",\"D12:E12\",\"F12:H12\",\"B13:D13\",\"E13:J13\",\"B14:D14\",\"E14:J14\",\"B15:D15\",\"E15:J15\",\"B17:D17\",\"F17:G17\",\"H17:J17\",\"B19:C19\",\"B20:J20\",\"B21:J21\",\"B22:J22\"],\"imgList\":[{\"row\":2,\"col\":9,\"colspan\":1,\"rowspan\":2,\"width\":\"96\",\"height\":\"47\",\"src\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/wanda_1710733731369.jpg\",\"layer_id\":\"YfdiQDcuqTjlOG4f\",\"offsetX\":0,\"offsetY\":0,\"virtualCellRange\":[[2,9]]},{\"row\":15,\"col\":8,\"colspan\":1,\"rowspan\":5,\"width\":\"82\",\"height\":\"77\",\"src\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/dzyz_1710741011435.png\",\"layer_id\":\"qWMWhe42wLnQXDUa\",\"offsetX\":0,\"offsetY\":0,\"virtualCellRange\":[[15,8]]}]}', NULL, NULL, 'admin', '2024-03-18 10:52:51', 'admin', '2024-03-20 10:16:40', 0, NULL, NULL, 1, 60, NULL, NULL, NULL, '1', 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('938680635597357056', '20240412162853', '测试纵向分组报表111', NULL, NULL, '984272091947253760', '{\"loopBlockList\":[],\"printConfig\":{\"layout\":\"portrait\",\"printCallBackUrl\":\"\",\"paper\":\"A4\",\"isBackend\":false,\"width\":210,\"definition\":1,\"marginX\":10,\"height\":297,\"marginY\":10},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1048,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":53},\"6\":{\"width\":114},\"7\":{\"width\":105},\"8\":{\"width\":276},\"len\":50},\"area\":{\"sri\":6,\"sci\":6,\"eri\":6,\"eci\":6,\"width\":114,\"height\":25},\"pyGroupEngine\":false,\"excel_config_id\":\"938680635597357056\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"2\":{\"cells\":{\"1\":{\"style\":1,\"text\":\"国家\"},\"2\":{\"style\":1,\"text\":\"城市\"},\"3\":{\"style\":1,\"text\":\"地区\"},\"4\":{\"style\":1,\"text\":\"公司\"},\"5\":{\"style\":1,\"text\":\"部门\"},\"6\":{\"text\":\"学历\",\"style\":1},\"7\":{\"text\":\"性别\",\"style\":1},\"8\":{\"style\":1,\"text\":\"年龄\"}}},\"3\":{\"cells\":{\"1\":{\"style\":0,\"text\":\"#{zongxdata.group(country)}\",\"aggregate\":\"group\"},\"2\":{\"style\":0,\"text\":\"#{zongxdata.group(city)}\",\"aggregate\":\"group\"},\"3\":{\"style\":0,\"text\":\"#{zongxdata.group(region)}\",\"aggregate\":\"group\"},\"4\":{\"style\":0,\"text\":\"#{zongxdata.group(org)}\",\"aggregate\":\"group\"},\"5\":{\"style\":0,\"aggregate\":\"group\",\"text\":\"#{zongxdata.group(department)}\"},\"6\":{\"style\":0,\"aggregate\":\"group\",\"subtotal\":\"-1\",\"funcname\":\"-1\",\"text\":\"#{zongxdata.group(education)}\"},\"7\":{\"style\":0,\"aggregate\":\"group\",\"text\":\"#{zongxdata.group(sex)}\",\"subtotal\":\"groupField\",\"funcname\":\"-1\"},\"8\":{\"style\":0,\"text\":\"#{zongxdata.age}\",\"aggregate\":\"group\",\"subtotal\":\"-1\",\"funcname\":\"SUM\",\"noCalculate\":false,\"filterEmptyValue\":false,\"filterNegative\":false,\"direction\":\"down\"}}},\"8\":{\"cells\":{}},\"9\":{\"cells\":{}},\"len\":101},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"groupField\":\"zongxdata.country\",\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"bgcolor\":\"#c5e0b3\"}],\"isGroup\":true,\"merges\":[]}', NULL, NULL, 'admin', '2024-04-12 16:28:54', 'admin', '2024-04-12 16:57:16', 0, NULL, NULL, 0, 49, NULL, NULL, NULL, '2', 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('94b04a1ed7c17f8e96baa6d89fb90758', '3698522', '员工请假单', '', NULL, '984302991393210368', '{\"area\":false,\"printElWidth\":794,\"excel_config_id\":\"94b04a1ed7c17f8e96baa6d89fb90758\",\"printElHeight\":1047,\"rows\":{\"1\":{\"cells\":{\"0\":{\"text\":\"员工请假单\",\"style\":100,\"merge\":[0,7]},\"1\":{\"style\":100},\"2\":{\"style\":100},\"3\":{\"style\":100},\"4\":{\"style\":100},\"5\":{\"style\":100},\"6\":{\"style\":100},\"7\":{\"style\":100}},\"height\":65},\"2\":{\"cells\":{\"0\":{\"text\":\"单位:北极星\",\"style\":101,\"merge\":[0,2]},\"1\":{\"style\":101},\"2\":{\"style\":101},\"3\":{\"style\":102},\"4\":{\"style\":102},\"5\":{\"style\":102},\"6\":{\"style\":102},\"7\":{\"style\":102}},\"height\":38},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"工作岗位\",\"style\":120},\"3\":{\"style\":119,\"text\":\" \"},\"4\":{\"text\":\"工作时间\",\"style\":119},\"5\":{\"style\":119,\"text\":\" \"},\"6\":{\"text\":\"出生日期\",\"style\":119},\"7\":{\"style\":119,\"text\":\" \"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"请选择假类型\",\"style\":121,\"merge\":[4,0]},\"1\":{\"text\":\"年休假\",\"style\":120},\"2\":{\"style\":120,\"text\":\"病、事假\"},\"3\":{\"style\":120,\"text\":\"探亲假\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"婚、丧假\"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"生育假\"},\"7\":{\"style\":107,\"text\":\" \"}},\"height\":29},\"5\":{\"cells\":{\"0\":{\"style\":0},\"1\":{\"text\":\"1、公岭满1~9年(5天)\",\"style\":122},\"2\":{\"style\":119,\"text\":\"1、病假\"},\"3\":{\"style\":119,\"text\":\"1、未婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、婚假(3天)\"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"1、流产\"},\"7\":{\"style\":107,\"text\":\" \"}},\"height\":25},\"6\":{\"cells\":{\"0\":{\"style\":0},\"1\":{\"style\":123,\"text\":\"2、公岭满10~19年(10天)\"},\"2\":{\"style\":119,\"text\":\"2、事假\"},\"3\":{\"style\":119,\"text\":\"2、已婚探父母(20天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、晚婚假(13天)\"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"2、产假\"},\"7\":{\"style\":107,\"text\":\" \"}}},\"7\":{\"cells\":{\"0\":{\"style\":0},\"1\":{\"style\":123,\"text\":\"3、公岭满20年(15天)\"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"3、探配偶(30天)\"},\"4\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、丧假(3天)\"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"3、哺乳假\"},\"7\":{\"style\":107,\"text\":\" \"}}},\"8\":{\"cells\":{\"0\":{\"style\":0},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"style\":119,\"text\":\" \"},\"3\":{\"style\":119,\"text\":\"探亲地点:\",\"merge\":[0,2]},\"4\":{\"style\":107,\"text\":\" \"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":119,\"merge\":[0,1],\"text\":\"4、陪护假\"},\"7\":{\"style\":107,\"text\":\" \"},\"8\":{\"style\":15},\"9\":{\"style\":15},\"10\":{\"style\":15},\"11\":{\"style\":15},\"12\":{\"style\":15},\"13\":{\"style\":15},\"14\":{\"style\":15},\"15\":{\"style\":15},\"16\":{\"style\":15},\"17\":{\"style\":15},\"18\":{\"style\":15},\"19\":{\"style\":15},\"20\":{\"style\":15},\"21\":{\"style\":15},\"22\":{\"style\":15},\"23\":{\"style\":5},\"24\":{\"style\":5},\"25\":{\"style\":5}}},\"9\":{\"cells\":{\"0\":{\"style\":124,\"text\":\"请假时间\"},\"1\":{\"style\":125,\"merge\":[0,6],\"text\":\"2020年02-30 至2020年02-03-30\"},\"2\":{\"style\":115,\"text\":\" \"},\"3\":{\"style\":115,\"text\":\" \"},\"4\":{\"style\":115,\"text\":\" \"},\"5\":{\"style\":115,\"text\":\" \"},\"6\":{\"style\":115,\"text\":\" \"},\"7\":{\"style\":115,\"text\":\" \"}},\"height\":46},\"10\":{\"cells\":{\"0\":{\"style\":126,\"text\":\"审批人员及意见\"},\"1\":{\"merge\":[0,6],\"style\":127,\"text\":\"同意\"},\"2\":{\"style\":118,\"text\":\" \"},\"3\":{\"style\":118,\"text\":\" \"},\"4\":{\"style\":118,\"text\":\" \"},\"5\":{\"style\":118,\"text\":\" \"},\"6\":{\"style\":118,\"text\":\" \"},\"7\":{\"style\":118,\"text\":\" \"}},\"height\":89},\"11\":{\"cells\":{\"0\":{\"text\":\"备注\",\"style\":119},\"1\":{\"style\":119,\"text\":\" \"},\"2\":{\"text\":\"请假人签名\",\"style\":119},\"3\":{\"merge\":[0,4],\"style\":119,\"text\":\" \"},\"4\":{\"style\":107,\"text\":\" \"},\"5\":{\"style\":107,\"text\":\" \"},\"6\":{\"style\":107,\"text\":\" \"},\"7\":{\"style\":107,\"text\":\" \"}},\"height\":90},\"12\":{\"cells\":{\"0\":{\"merge\":[0,7],\"style\":120,\"text\":\"请假审批表一式两份,考勤员与人力资源部门各存一份\"},\"1\":{\"style\":106,\"text\":\" \"},\"2\":{\"style\":106,\"text\":\" \"},\"3\":{\"style\":106,\"text\":\" \"},\"4\":{\"style\":106,\"text\":\" \"},\"5\":{\"style\":106,\"text\":\" \"},\"6\":{\"style\":106,\"text\":\" \"},\"7\":{\"style\":106,\"text\":\" \"}},\"height\":25},\"len\":101},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":789,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"textwrap\":true},{\"textwrap\":false},{\"textwrap\":true,\"valign\":\"middle\"},{\"textwrap\":false,\"valign\":\"middle\"},{\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"left\"},{},{\"font\":{\"name\":\"Helvetica\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"align\":\"center\",\"font\":{\"name\":\"Helvetica\"}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Helvetica\"}},{\"font\":{\"name\":\"Arial\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"align\":\"center\",\"font\":{\"name\":\"Arial\"}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Arial\"}},{\"font\":{\"name\":\"Source Sans Pro\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"align\":\"center\",\"font\":{\"name\":\"Source Sans Pro\"}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Source Sans Pro\"}},{\"font\":{\"name\":\"Courier New\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"align\":\"center\",\"font\":{\"name\":\"Courier New\"}},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"font\":{\"name\":\"Courier New\"},\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"font\":{\"name\":\"Courier New\"},\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"textwrap\":true,\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"}},{\"textwrap\":true,\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"align\":\"center\"},{\"font\":{\"name\":\"Courier New\"},\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"align\":\"center\"},{\"align\":\"center\",\"font\":{\"name\":\"Courier New\",\"size\":14}},{\"align\":\"center\",\"font\":{\"size\":14}},{\"align\":\"center\",\"font\":{\"name\":\"Courier New\",\"size\":14,\"bold\":true}},{\"align\":\"center\",\"font\":{\"size\":14,\"bold\":true}},{\"font\":{\"name\":\"Courier New\"},\"color\":\"#7f7f7f\"},{\"color\":\"#7f7f7f\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"Courier New\"},\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"color\":\"#000100\"},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"align\":\"center\",\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Courier New\"},\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\"},{\"align\":\"center\",\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\"},{\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"Lato\"},\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"color\":\"#000100\"},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"align\":\"center\",\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"Lato\"}},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"Lato\"},\"valign\":\"middle\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"Lato\"},\"valign\":\"bottom\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"Lato\"},\"valign\":\"top\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"top\"},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"top\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"middle\"},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"middle\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"bottom\"},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"valign\":\"bottom\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"textwrap\":true},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"textwrap\":true},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"textwrap\":false},{\"align\":\"center\",\"font\":{\"name\":\"Lato\"},\"color\":\"#000100\",\"textwrap\":false},{\"textwrap\":false,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"Lato\"}},{\"align\":\"center\",\"font\":{\"name\":\"宋体\",\"size\":14,\"bold\":true}},{\"font\":{\"name\":\"宋体\"},\"color\":\"#7f7f7f\"},{\"font\":{\"name\":\"宋体\"}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"align\":\"center\",\"color\":\"#000100\"},{\"align\":\"center\",\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"font\":{\"name\":\"宋体\"},\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"align\":\"center\",\"color\":\"#000100\"},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":false,\"border\":{\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"align\":\"center\",\"color\":\"#000100\"},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"宋体\"},\"valign\":\"top\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"valign\":\"top\"},{\"align\":\"center\",\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"valign\":\"top\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"color\":\"#000100\",\"font\":{\"name\":\"宋体\"},\"valign\":\"bottom\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"textwrap\":false},{\"align\":\"center\",\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"textwrap\":false},{\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"align\":\"center\",\"color\":\"#000100\"},{\"textwrap\":false,\"valign\":\"middle\",\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":false,\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"color\":\"#000100\",\"font\":{\"name\":\"宋体\"},\"valign\":\"top\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"valign\":\"top\"},{\"textwrap\":true,\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"color\":\"#000100\",\"font\":{\"name\":\"宋体\"},\"valign\":\"bottom\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#262626\"],\"top\":[\"thin\",\"#262626\"],\"left\":[\"thin\",\"#262626\"],\"right\":[\"thin\",\"#262626\"]},\"font\":{\"name\":\"宋体\"},\"color\":\"#000100\",\"textwrap\":false}],\"validations\":[],\"cols\":{\"0\":{\"width\":35},\"1\":{\"width\":195},\"2\":{\"width\":77},\"3\":{\"width\":168},\"4\":{\"width\":62},\"6\":{\"width\":70},\"7\":{\"width\":82},\"len\":26},\"merges\":[\"D9:F9\",\"E5:F5\",\"E6:F6\",\"E7:F7\",\"E8:F8\",\"G5:H5\",\"G6:H6\",\"G7:H7\",\"G8:H8\",\"G9:H9\",\"B10:H10\",\"B11:H11\",\"D12:H12\",\"A13:H13\",\"A3:C3\",\"A2:H2\",\"A5:A9\"]}', '', 'https://static.jeecg.com/designreport/images/QQ截图20201207135257_1607320433681.png', 'jeecg', '2020-07-10 18:29:39', 'admin', '2021-02-03 14:01:12', 0, NULL, NULL, 1, 145, NULL, NULL, NULL, NULL, 0, NULL, NULL);
-INSERT INTO `jimu_report` VALUES ('961455b47c0b86dc961e90b5893bff05', '56780774', '阜阳检票数查询副本0774', '', NULL, '984302991393210368', '{\"area\":{\"sri\":8,\"sci\":6,\"eri\":8,\"eci\":6,\"width\":75,\"height\":25},\"printElWidth\":794,\"excel_config_id\":\"53c82a76f837d5661dceec7d93afafec\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"\",\"style\":66},\"2\":{\"style\":66},\"3\":{\"style\":67,\"merge\":[0,3],\"text\":\"阜阳火车站检票数\"},\"4\":{\"style\":67},\"5\":{\"style\":67},\"6\":{\"style\":67},\"7\":{\"style\":66},\"8\":{\"style\":66},\"9\":{\"style\":58}},\"height\":63},\"1\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":66},\"2\":{\"style\":66},\"3\":{\"style\":66},\"4\":{\"style\":66},\"5\":{\"style\":66},\"6\":{\"style\":66},\"7\":{\"style\":66},\"8\":{\"style\":66},\"9\":{\"style\":58}},\"height\":20},\"2\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"日期:\",\"style\":68},\"2\":{\"text\":\"${gongsi.tdata}\",\"style\":69},\"3\":{\"style\":66},\"4\":{\"style\":66,\"text\":\"制表人:\"},\"5\":{\"text\":\"${gongsi.gname}\",\"style\":66},\"6\":{\"style\":66},\"7\":{\"text\":\"\",\"merge\":[0,1],\"style\":70},\"8\":{\"style\":70},\"9\":{\"style\":58}},\"isDrag\":true},\"3\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"班次\",\"merge\":[1,0],\"style\":71},\"2\":{\"text\":\"发车时间\",\"merge\":[1,0],\"style\":71},\"3\":{\"text\":\"是否放空\",\"merge\":[1,0],\"style\":71},\"4\":{\"text\":\"路线\",\"merge\":[0,1],\"style\":71},\"5\":{\"style\":72},\"6\":{\"text\":\"核载座位数\",\"merge\":[1,0],\"style\":71},\"7\":{\"merge\":[1,0],\"style\":71,\"text\":\"检票数\"},\"8\":{\"merge\":[1,0],\"style\":71,\"text\":\"实载率(%)\"},\"9\":{\"style\":58}}},\"4\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":72},\"2\":{\"style\":71},\"3\":{\"style\":72},\"4\":{\"text\":\"从\",\"style\":71},\"5\":{\"text\":\"到\",\"style\":71},\"6\":{\"style\":72},\"7\":{\"style\":71},\"8\":{\"style\":72},\"9\":{\"style\":58}},\"height\":25},\"5\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":73,\"text\":\"#{jianpiao.bnum}\"},\"2\":{\"style\":73,\"text\":\"#{jianpiao.ftime}\"},\"3\":{\"style\":73,\"text\":\"#{jianpiao.sfkong}\"},\"4\":{\"style\":73,\"text\":\"#{jianpiao.kaishi}\"},\"5\":{\"style\":73,\"text\":\"#{jianpiao.jieshu}\"},\"6\":{\"style\":73,\"text\":\"#{jianpiao.hezairen}\"},\"7\":{\"style\":73,\"text\":\"#{jianpiao.jpnum}\"},\"8\":{\"style\":73,\"text\":\"#{jianpiao.shihelv}\"},\"9\":{\"style\":58}},\"height\":33},\"6\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}},\"isDrag\":true},\"7\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11,\"text\":\"\"},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"8\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"9\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"10\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"11\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"12\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"13\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"14\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"len\":96,\"-1\":{\"cells\":{\"-1\":{\"text\":\"${gongsi.id}\"}},\"isDrag\":true}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":737,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"],\"top\":[\"thin\",\"#7f7f7f\"],\"left\":[\"thin\",\"#7f7f7f\"],\"right\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"],\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"font\":{\"bold\":false}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":true}},{\"align\":\"center\",\"font\":{\"bold\":true}},{\"align\":\"right\"},{\"align\":\"center\",\"font\":{\"size\":14,\"bold\":true}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":true},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"font\":{\"bold\":true},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#2e75b5\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#2e75b5\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#0170c1\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#0170c1\"},{\"font\":{\"bold\":false},\"color\":\"#7f7f7f\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true},\"valign\":\"bottom\"},{\"align\":\"center\",\"font\":{\"size\":22,\"bold\":true},\"valign\":\"bottom\"},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"bold\":false},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\"},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"valign\":\"bottom\"},{\"font\":{\"bold\":false,\"name\":\"宋体\"},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"right\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false,\"name\":\"宋体\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false,\"name\":\"宋体\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true,\"name\":\"Microsoft YaHei\"},\"valign\":\"bottom\"},{\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\",\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"right\",\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"Microsoft YaHei\"}}],\"validations\":[],\"cols\":{\"0\":{\"width\":53},\"1\":{\"width\":118},\"2\":{\"width\":75},\"3\":{\"width\":54},\"4\":{\"width\":95},\"5\":{\"width\":109},\"6\":{\"width\":75},\"7\":{\"width\":75},\"8\":{\"width\":83},\"9\":{\"width\":30},\"len\":27},\"merges\":[\"E4:F4\",\"B4:B5\",\"C4:C5\",\"D4:D5\",\"G4:G5\",\"H4:H5\",\"I4:I5\",\"D1:G1\",\"H3:I3\"]}', '', 'https://static.jeecg.com/designreport/images/25_1597233573577.png', 'admin', '2021-01-19 10:46:45', 'admin', '2021-02-03 13:58:22', 0, NULL, NULL, 0, 711, NULL, NULL, NULL, NULL, 0, NULL, NULL);
+INSERT INTO `jimu_report` VALUES ('961455b47c0b86dc961e90b5893bff05', '56780774', '阜阳检票数查询副本0774', '', NULL, '984302991393210368', '{\"area\":{\"sri\":8,\"sci\":6,\"eri\":8,\"eci\":6,\"width\":75,\"height\":25},\"printElWidth\":794,\"excel_config_id\":\"53c82a76f837d5661dceec7d93afafec\",\"printElHeight\":1047,\"rows\":{\"0\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"\",\"style\":66},\"2\":{\"style\":66},\"3\":{\"style\":67,\"merge\":[0,3],\"text\":\"阜阳火车站检票数\"},\"4\":{\"style\":67},\"5\":{\"style\":67},\"6\":{\"style\":67},\"7\":{\"style\":66},\"8\":{\"style\":66},\"9\":{\"style\":58}},\"height\":63},\"1\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":66},\"2\":{\"style\":66},\"3\":{\"style\":66},\"4\":{\"style\":66},\"5\":{\"style\":66},\"6\":{\"style\":66},\"7\":{\"style\":66},\"8\":{\"style\":66},\"9\":{\"style\":58}},\"height\":20},\"2\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"日期:\",\"style\":68},\"2\":{\"text\":\"${gongsi.tdata}\",\"style\":69},\"3\":{\"style\":66},\"4\":{\"style\":66,\"text\":\"制表人:\"},\"5\":{\"text\":\"${gongsi.gname}\",\"style\":66},\"6\":{\"style\":66},\"7\":{\"text\":\"\",\"merge\":[0,1],\"style\":70},\"8\":{\"style\":70},\"9\":{\"style\":58}},\"isDrag\":true},\"3\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"text\":\"班次\",\"merge\":[1,0],\"style\":71},\"2\":{\"text\":\"发车时间\",\"merge\":[1,0],\"style\":71},\"3\":{\"text\":\"是否放空\",\"merge\":[1,0],\"style\":71},\"4\":{\"text\":\"路线\",\"merge\":[0,1],\"style\":71},\"5\":{\"style\":72},\"6\":{\"text\":\"核载座位数\",\"merge\":[1,0],\"style\":71},\"7\":{\"merge\":[1,0],\"style\":71,\"text\":\"检票数\"},\"8\":{\"merge\":[1,0],\"style\":71,\"text\":\"实载率(%)\"},\"9\":{\"style\":58}}},\"4\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":72},\"2\":{\"style\":71},\"3\":{\"style\":72},\"4\":{\"text\":\"从\",\"style\":71},\"5\":{\"text\":\"到\",\"style\":71},\"6\":{\"style\":72},\"7\":{\"style\":71},\"8\":{\"style\":72},\"9\":{\"style\":58}},\"height\":25},\"5\":{\"cells\":{\"0\":{\"style\":58},\"1\":{\"style\":73,\"text\":\"#{jianpiao.bnum}\"},\"2\":{\"style\":73,\"text\":\"#{jianpiao.ftime}\"},\"3\":{\"style\":73,\"text\":\"#{jianpiao.sfkong}\"},\"4\":{\"style\":73,\"text\":\"#{jianpiao.kaishi}\"},\"5\":{\"style\":73,\"text\":\"#{jianpiao.jieshu}\"},\"6\":{\"style\":73,\"text\":\"#{jianpiao.hezairen}\"},\"7\":{\"style\":73,\"text\":\"#{jianpiao.jpnum}\"},\"8\":{\"style\":73,\"text\":\"#{jianpiao.shihelv}\"},\"9\":{\"style\":58}},\"height\":33},\"6\":{\"cells\":{\"1\":{\"text\":\"\",\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}},\"isDrag\":true},\"7\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11,\"text\":\"\"},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"8\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"9\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"10\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"11\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"12\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"13\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"14\":{\"cells\":{\"1\":{\"style\":11},\"2\":{\"style\":11},\"3\":{\"style\":11},\"4\":{\"style\":11},\"5\":{\"style\":11},\"6\":{\"style\":11},\"7\":{\"style\":11},\"8\":{\"style\":11}}},\"len\":96,\"-1\":{\"cells\":{\"-1\":{\"text\":\"${gongsi.id}\"}},\"isDrag\":true}},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":737,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"],\"top\":[\"thin\",\"#7f7f7f\"],\"left\":[\"thin\",\"#7f7f7f\"],\"right\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"top\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"],\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"bottom\":[\"thin\",\"#7f7f7f\"]}},{\"border\":{\"right\":[\"thin\",\"#7f7f7f\"]}},{\"align\":\"center\",\"font\":{\"size\":16}},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"bold\":true}},{\"font\":{\"bold\":false}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":true}},{\"align\":\"center\",\"font\":{\"bold\":true}},{\"align\":\"right\"},{\"align\":\"center\",\"font\":{\"size\":14,\"bold\":true}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":true},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"font\":{\"bold\":true},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#4371c6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#2e75b5\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#2e75b5\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#0170c1\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#0170c1\"},{\"font\":{\"bold\":false},\"color\":\"#7f7f7f\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000100\"],\"top\":[\"thin\",\"#000100\"],\"left\":[\"thin\",\"#000100\"],\"right\":[\"thin\",\"#000100\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"font\":{\"bold\":false},\"bgcolor\":\"#01b0f1\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#5b9cd6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"size\":16,\"bold\":true},\"valign\":\"bottom\"},{\"align\":\"center\",\"font\":{\"size\":22,\"bold\":true},\"valign\":\"bottom\"},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true},\"valign\":\"bottom\"},{\"font\":{\"bold\":false},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\"},{\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true,\"name\":\"宋体\"},\"valign\":\"bottom\"},{\"font\":{\"bold\":false,\"name\":\"宋体\"},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"right\",\"font\":{\"name\":\"宋体\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false,\"name\":\"宋体\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false,\"name\":\"宋体\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"宋体\"}},{\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"center\",\"font\":{\"size\":18,\"bold\":true,\"name\":\"Microsoft YaHei\"},\"valign\":\"bottom\"},{\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"color\":\"#7f7f7f\",\"align\":\"right\"},{\"color\":\"#7f7f7f\",\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"right\",\"font\":{\"name\":\"Microsoft YaHei\"}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"font\":{\"bold\":false,\"name\":\"Microsoft YaHei\"},\"bgcolor\":\"#9cc2e6\"},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#5b9cd6\"],\"top\":[\"thin\",\"#5b9cd6\"],\"left\":[\"thin\",\"#5b9cd6\"],\"right\":[\"thin\",\"#5b9cd6\"]},\"font\":{\"name\":\"Microsoft YaHei\"}}],\"validations\":[],\"cols\":{\"0\":{\"width\":53},\"1\":{\"width\":118},\"2\":{\"width\":75},\"3\":{\"width\":54},\"4\":{\"width\":95},\"5\":{\"width\":109},\"6\":{\"width\":75},\"7\":{\"width\":75},\"8\":{\"width\":83},\"9\":{\"width\":30},\"len\":27},\"merges\":[\"E4:F4\",\"B4:B5\",\"C4:C5\",\"D4:D5\",\"G4:G5\",\"H4:H5\",\"I4:I5\",\"D1:G1\",\"H3:I3\"]}', '', 'https://static.jeecg.com/designreport/images/25_1597233573577.png', 'admin', '2021-01-19 10:46:45', 'admin', '2021-02-03 13:58:22', 0, NULL, NULL, 0, 712, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('975549294469992448', '20240723101422', '简单表达式混合运算', NULL, NULL, 'datainfo', '{\"loopBlockList\":[],\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":1097,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":81},\"1\":{\"width\":55},\"2\":{\"width\":144},\"3\":{\"width\":143},\"4\":{\"width\":112},\"5\":{\"width\":129},\"7\":{\"width\":333},\"len\":100},\"area\":false,\"pyGroupEngine\":false,\"excel_config_id\":\"975549294469992448\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"1\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)\"},\"3\":{\"text\":\"=SUM(A1,A2)\"},\"4\":{\"text\":\"SUM(A1:A10)\"},\"5\":{\"text\":\"=SUM(A1:A10)\"}}},\"1\":{\"cells\":{\"0\":{\"text\":\"2\"},\"1\":{},\"2\":{\"text\":\"SUM(A1,A2)*2\"},\"3\":{\"text\":\"=SUM(A1,A2)*2\"},\"4\":{\"text\":\"SUM(A1:A10)*2\"},\"5\":{\"text\":\"=SUM(A1:A10)*2\"},\"6\":{},\"7\":{\"text\":\"=2+SUM(A1,A2)*2 \"}}},\"2\":{\"cells\":{\"0\":{\"text\":\"3\"},\"2\":{\"text\":\"SUM(A1,A2)/2\"},\"3\":{\"text\":\"=SUM(A1,A2)/2\"},\"4\":{\"text\":\"SUM(A1:A10)/2\"},\"5\":{\"text\":\"=SUM(A1:A10)/2\"},\"7\":{\"text\":\"=A1*A2\"}}},\"3\":{\"cells\":{\"0\":{\"text\":\"4\"},\"2\":{\"text\":\"SUM(A1,A2)+2\"},\"3\":{\"text\":\"=SUM(A1,A2)+2\"},\"4\":{\"text\":\"SUM(A1:A10)+2\"},\"5\":{\"text\":\"=SUM(A1:A10)+2\"}}},\"4\":{\"cells\":{\"0\":{\"text\":\"5\"},\"2\":{\"text\":\"SUM(A1,A2)-2\"},\"3\":{\"text\":\"=SUM(A1,A2)-2\"},\"4\":{\"text\":\"SUM(A1:A10)-2\"},\"5\":{\"text\":\"=SUM(A1:A10)-2\"},\"7\":{}}},\"5\":{\"cells\":{\"0\":{\"text\":\"6\"}}},\"6\":{\"cells\":{\"0\":{\"text\":\"7\"},\"2\":{\"text\":\"MAX(A1,A2)\"},\"3\":{\"text\":\"=MAX(A1,A2)\"},\"4\":{\"text\":\"MAX(A1:A10)\"},\"5\":{\"text\":\"=MAX(A1:A10)\"}}},\"7\":{\"cells\":{\"0\":{\"text\":\"8\"},\"2\":{\"text\":\"MAX(A1,A2)*2\"},\"3\":{\"text\":\"=MAX(A1,A2)*2\"},\"4\":{\"text\":\"MAX(A1:A10)*2\"},\"5\":{\"text\":\"=MAX(A1:A10)*2\"}}},\"8\":{\"cells\":{\"0\":{\"text\":\"9\"},\"2\":{\"text\":\"MAX(A1,A2)/2\"},\"3\":{\"text\":\"=MAX(A1,A2)/2\"},\"4\":{\"text\":\"MAX(A1:A10)/2\"},\"5\":{\"text\":\"=MAX(A1:A10)/2\"}}},\"9\":{\"cells\":{\"0\":{\"text\":\"10\"},\"2\":{\"text\":\"MAX(A1,A2)+2\"},\"3\":{\"text\":\"=MAX(A1,A2)+2\"},\"4\":{\"text\":\"MAX(A1:A10)+2\"},\"5\":{\"text\":\"=MAX(A1:A10)+2\"}}},\"10\":{\"cells\":{\"0\":{},\"2\":{\"text\":\"MAX(A1,A2)-2\"},\"3\":{\"text\":\"=MAX(A1,A2)-2\"},\"4\":{\"text\":\"MAX(A1:A10)-2\"},\"5\":{\"text\":\"=MAX(A1:A10)-2\"}}},\"11\":{\"cells\":{\"0\":{}}},\"12\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)\"},\"3\":{\"text\":\"=MIN(A1,A2)\"},\"4\":{\"text\":\"MIN(A1:A10)\"},\"5\":{\"text\":\"=MIN(A1:A10)\"}}},\"13\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)*2\"},\"3\":{\"text\":\"=MIN(A1,A2)*2\"},\"4\":{\"text\":\"MIN(A1:A10)*2\"},\"5\":{\"text\":\"=MIN(A1:A10)*2\"}}},\"14\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)/2\"},\"3\":{\"text\":\"=MIN(A1,A2)/2\"},\"4\":{\"text\":\"MIN(A1:A10)/2\"},\"5\":{\"text\":\"=MIN(A1:A10)/2\"}}},\"15\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)+2\"},\"3\":{\"text\":\"=MIN(A1,A2)+2\"},\"4\":{\"text\":\"MIN(A1:A10)+2\"},\"5\":{\"text\":\"=MIN(A1:A10)+2\"}}},\"16\":{\"cells\":{\"2\":{\"text\":\"MIN(A1,A2)-2\"},\"3\":{\"text\":\"=MIN(A1,A2)-2\"},\"4\":{\"text\":\"MIN(A1:A10)-2\"},\"5\":{\"text\":\"=MIN(A1:A10)-2\"}}},\"18\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)\"},\"4\":{\"text\":\"AVERAGE(A1:A10)\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)\"}}},\"19\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)*2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)*2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)*2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)*2\"}}},\"20\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)/2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)/2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)/2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)/2\"}}},\"21\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)+2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)+2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)+2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)+2\"}}},\"22\":{\"cells\":{\"2\":{\"text\":\"AVERAGE(A1,A2)-2\"},\"3\":{\"text\":\"=AVERAGE(A1,A2)-2\"},\"4\":{\"text\":\"AVERAGE(A1:A10)-2\"},\"5\":{\"text\":\"=AVERAGE(A1:A10)-2\"}}},\"24\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)\"}}},\"25\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)*2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)*2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)*2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)*2\"}}},\"26\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)/2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)/2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)/2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)/2\"}}},\"27\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)+2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)+2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)+2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)+2\"}}},\"28\":{\"cells\":{\"2\":{\"text\":\"COUNTNZ(A1,A2)-2\"},\"3\":{\"text\":\"=COUNTNZ(A1,A2)-2\"},\"4\":{\"text\":\"COUNTNZ(A1:A10)-2\"},\"5\":{\"text\":\"=COUNTNZ(A1:A10)-2\"}}},\"len\":200},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[]}', NULL, NULL, 'admin', '2024-07-23 10:14:22', 'admin', '2024-07-24 19:17:39', 0, NULL, NULL, 0, 75, NULL, NULL, NULL, NULL, 0, NULL, NULL);
INSERT INTO `jimu_report` VALUES ('989065112487022592', '20240823093133__1750', '在线填报-员工信息登记', NULL, NULL, 'datainfo', '{\"loopBlockList\":[],\"querySetting\":{\"izOpenQueryBar\":false,\"izDefaultQuery\":true},\"printConfig\":{\"paper\":\"A4\",\"width\":210,\"height\":297,\"definition\":1,\"isBackend\":false,\"marginX\":10,\"marginY\":10,\"layout\":\"portrait\",\"printCallBackUrl\":\"\"},\"hidden\":{\"rows\":[],\"cols\":[]},\"dbexps\":[],\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":698,\"autofilter\":{},\"validations\":[],\"cols\":{\"0\":{\"width\":76},\"1\":{\"width\":114},\"2\":{\"width\":87},\"3\":{\"width\":99},\"4\":{\"width\":65},\"5\":{\"width\":126},\"6\":{\"width\":131},\"len\":100},\"area\":{\"sri\":10,\"sci\":9,\"eri\":10,\"eci\":9,\"width\":100,\"height\":121},\"pyGroupEngine\":false,\"submitHandlers\":[{\"type\":\"api\",\"code\":\"api\",\"name\":\"api\",\"isMain\":true,\"isEdit\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/handle\"}],\"excel_config_id\":\"989065112487022592\",\"hiddenCells\":[],\"zonedEditionList\":[],\"rows\":{\"0\":{\"cells\":{\"0\":{\"merge\":[1,6],\"height\":90,\"text\":\"员工信息登记表\",\"style\":6}},\"height\":45},\"1\":{\"cells\":{},\"height\":45},\"2\":{\"cells\":{\"0\":{\"text\":\"编号\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"no\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"年龄\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"age\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"isLimitMinNum\":false,\"minNum\":0,\"isLimitMaxNum\":false,\"maxNum\":100,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"age\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"填写时间\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-time\",\"component\":\"DatePicker\",\"field\":\"create_time\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\",\"defaultValue\":\"\"},\"style\":7,\"text\":\" \"},\"6\":{\"merge\":[3,0],\"height\":180,\"fillForm\":{\"componentFlag\":\"JUploadImage\",\"component\":\"JUploadImage\",\"field\":\"photo\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"h_align\":\"center\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"3\":{\"cells\":{\"0\":{\"text\":\"姓名\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"text\":\" \",\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"name\",\"placeholder\":\"\",\"required\":true,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"name\"},{\"dbTable\":\"test_form_submit1\",\"dbField\":\"name\"}],\"label\":\"A5\",\"labelText\":\"姓名\",\"pattern\":\"\",\"patternErrorTip\":\"\"}},\"2\":{\"text\":\"性别\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JRadio\",\"component\":\"JRadio\",\"field\":\"sex\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"男\",\"value\":\"1\"},{\"label\":\"女\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"sex1\",\"dictName\":\"性别\"},\"style\":8,\"text\":\" \"},\"4\":{\"text\":\"出生日期\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"DatePicker-date\",\"component\":\"DatePicker\",\"field\":\"brithday\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dateFormat\":\"yyyy-MM-dd\",\"dateShowType\":\"date\"},\"style\":7,\"text\":\" \"},\"8\":{}},\"height\":45},\"4\":{\"cells\":{\"0\":{\"text\":\"民族\",\"style\":7,\"fillFormLabel\":\"*\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"nation\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"minzu\",\"dictName\":\"民族\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"政治面貌\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"politics\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"politics\"}],\"dataSource\":\"api\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/submit/dict/political\",\"dictCode\":\"\",\"dictName\":\"\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"籍贯\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"JAreaLinkage\",\"component\":\"JAreaLinkage\",\"field\":\"native_place\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"native_place\"}],\"areaType\":\"region\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"5\":{\"cells\":{\"0\":{\"text\":\"身高(cm)\",\"style\":7},\"1\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"height\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"height\"}],\"precision\":2,\"isLimitMinNum\":false,\"minNum\":50,\"isLimitMaxNum\":false,\"maxNum\":200},\"style\":7,\"text\":\" \"},\"2\":{\"text\":\"体重\",\"style\":7},\"3\":{\"fillForm\":{\"componentFlag\":\"InputNumber\",\"component\":\"InputNumber\",\"field\":\"weight\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"weight\"}],\"precision\":2,\"isLimitMinNum\":false,\"minNum\":30,\"isLimitMaxNum\":false,\"maxNum\":300},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"健康状况\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"health\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"static\",\"options\":[{\"label\":\"健康\",\"value\":\"1\"},{\"label\":\"不健康\",\"value\":\"2\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"multiple\":\"\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"6\":{\"cells\":{\"0\":{\"text\":\"身份证号\",\"style\":7},\"1\":{\"merge\":[0,2],\"height\":45,\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"idcard\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"pattern\":\"^\\\\d{17}[\\\\dX]$\",\"patternErrorTip\":\"请输入身份证号\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"id_card\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"学历\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"people\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"xueli_sf\",\"dictName\":\"学历\",\"multiple\":true},\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45}},\"height\":45},\"7\":{\"cells\":{\"0\":{\"text\":\"联系地址\",\"style\":7},\"1\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"addr\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"address\"}],\"pattern\":\"\",\"patternErrorTip\":\"\"},\"merge\":[0,2],\"height\":45,\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"手机号\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"input-text\",\"component\":\"Input\",\"field\":\"phone\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"phone\"}],\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45}},\"height\":45},\"8\":{\"cells\":{\"0\":{\"text\":\"毕业证书\",\"style\":7},\"1\":{\"merge\":[0,2],\"height\":45,\"fillForm\":{\"componentFlag\":\"JUploadFile\",\"component\":\"JUploadFile\",\"field\":\"ca\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"maxUploadNum\":1,\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"ca\"}]},\"style\":9,\"text\":\" \"},\"4\":{\"text\":\"幸运色\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"ColorPicker\",\"component\":\"ColorPicker\",\"field\":\"lucky_color\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"alpha\":false},\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45}},\"height\":45},\"9\":{\"cells\":{\"0\":{\"text\":\"教育经历\",\"merge\":[0,6],\"height\":45,\"style\":8}},\"height\":45},\"10\":{\"cells\":{\"0\":{\"merge\":[0,6],\"height\":121,\"fillForm\":{\"componentFlag\":\"input-textarea\",\"component\":\"Input\",\"field\":\"education\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"education\"}],\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"}},\"height\":121},\"11\":{\"cells\":{\"0\":{\"text\":\"工作经历\",\"merge\":[0,6],\"height\":45,\"style\":8}},\"height\":45},\"12\":{\"cells\":{\"0\":{\"merge\":[0,6],\"height\":150,\"fillForm\":{\"componentFlag\":\"input-textarea\",\"component\":\"Input\",\"field\":\"work_exp\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"work_exp\"}],\"pattern\":\"\",\"patternErrorTip\":\"\"},\"style\":7,\"text\":\" \"}},\"height\":150},\"13\":{\"cells\":{\"0\":{\"text\":\"爱好\",\"style\":7},\"1\":{\"merge\":[0,5],\"height\":45,\"fillForm\":{\"componentFlag\":\"JCheckbox\",\"component\":\"JCheckbox\",\"field\":\"fruity\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"fruity\"}],\"dataSource\":\"dict\",\"options\":[{\"label\":\"选项1\",\"value\":\"1\"},{\"label\":\"选项2\",\"value\":\"2\"},{\"label\":\"选项3\",\"value\":\"3\"}],\"apiUrl\":\"\",\"dictCode\":\"aihao\",\"dictName\":\"爱好\"},\"style\":7,\"text\":\" \"}},\"height\":45},\"14\":{\"cells\":{\"0\":{\"text\":\"所属部门\",\"style\":7},\"1\":{\"fillForm\":{\"componentFlag\":\"JDepartment\",\"component\":\"JDepartment\",\"field\":\"dept\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"dept\"}],\"multiple\":true,\"apiUrl\":\"http://192.168.1.69:8086/jmreport/test/getDepartmentList\"},\"merge\":[0,2],\"height\":45,\"style\":7,\"text\":\" \"},\"4\":{\"text\":\"薪资\",\"style\":7},\"5\":{\"fillForm\":{\"componentFlag\":\"JMoney\",\"component\":\"JMoney\",\"field\":\"pay\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"precision\":0,\"addon\":\"prepend\",\"moenyUnit\":\"¥\"},\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45}},\"height\":45},\"15\":{\"cells\":{\"0\":{\"text\":\"角色\",\"style\":7},\"1\":{\"merge\":[0,2],\"height\":45,\"fillForm\":{\"componentFlag\":\"JRole\",\"component\":\"JRole\",\"field\":\"role\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/getRoleList\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"role\"}]},\"style\":7,\"text\":\" \"},\"4\":{\"style\":7,\"text\":\"工位\"},\"5\":{\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45,\"fillForm\":{\"componentFlag\":\"JSelect\",\"component\":\"JSelect\",\"field\":\"station\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"dataSource\":\"static\",\"options\":[{\"label\":\"101\",\"value\":\"1\"},{\"label\":\"102\",\"value\":\"2\"},{\"label\":\"103\",\"value\":\"3\"},{\"label\":\"104\",\"value\":\"4\"}],\"apiUrl\":\"\",\"dictCode\":\"\",\"dictName\":\"\",\"multiple\":true}}},\"height\":45},\"16\":{\"cells\":{\"0\":{\"text\":\"直属领导\",\"style\":7},\"1\":{\"fillForm\":{\"componentFlag\":\"JUser\",\"component\":\"JUser\",\"field\":\"leader\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":false,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/getUserList\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"leader\"}]},\"merge\":[0,2],\"height\":45,\"style\":7,\"text\":\" \"},\"4\":{\"style\":7,\"text\":\"是否启用\"},\"5\":{\"style\":10,\"text\":\" \",\"merge\":[0,1],\"height\":45,\"fillForm\":{\"componentFlag\":\"JSwitch\",\"component\":\"JSwitch\",\"field\":\"status\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"dbFieldBind\":[{\"dbTable\":\"test_form_submit\",\"dbField\":\"status\"}],\"label\":\"\",\"labelText\":\"\",\"switchOpen\":\"Y\",\"switchClose\":\"N\",\"h_align\":\"center\"}},\"6\":{}},\"height\":45},\"17\":{\"cells\":{\"0\":{\"style\":7,\"text\":\"负责部门\"},\"1\":{\"fillForm\":{\"componentFlag\":\"JSelectTree\",\"component\":\"JSelectTree\",\"field\":\"responsible\",\"value\":\"\",\"defaultValue\":\"\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"multiple\":true,\"apiUrl\":\"https://bootapi.jeecg.com/jmreport/test/getDepartmentList\"},\"style\":7,\"text\":\" \",\"merge\":[0,2],\"height\":45},\"4\":{\"style\":7,\"text\":\"上班时间\"},\"5\":{\"style\":7,\"text\":\" \",\"merge\":[0,1],\"height\":45,\"fillForm\":{\"componentFlag\":\"TimePicker\",\"component\":\"TimePicker\",\"field\":\"key_1724408224853_326455\",\"placeholder\":\"\",\"required\":false,\"requiredTip\":\"不能为空~\",\"label\":\"\",\"labelText\":\"\",\"isRangTime\":false,\"timeType\":\"time\"}}},\"height\":45},\"20\":{\"cells\":{\"6\":{}}},\"len\":201},\"rpbar\":{\"show\":true,\"pageSize\":\"\",\"btnList\":[]},\"fixedPrintHeadRows\":[],\"fixedPrintTailRows\":[],\"displayConfig\":{},\"background\":false,\"name\":\"sheet1\",\"styles\":[{\"align\":\"center\"},{\"align\":\"center\",\"valign\":\"middle\"},{\"align\":\"center\",\"valign\":\"middle\",\"font\":{\"size\":16}},{\"font\":{\"size\":16}},{\"align\":\"center\",\"valign\":\"middle\",\"font\":{\"size\":16,\"bold\":true}},{\"font\":{\"size\":16,\"bold\":true}},{\"align\":\"center\",\"valign\":\"middle\",\"font\":{\"size\":16,\"bold\":true},\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}},{\"align\":\"center\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]},\"valign\":\"middle\"},{\"align\":\"right\",\"border\":{\"bottom\":[\"thin\",\"#000\"],\"top\":[\"thin\",\"#000\"],\"left\":[\"thin\",\"#000\"],\"right\":[\"thin\",\"#000\"]}}],\"freezeLineColor\":\"rgb(185, 185, 185)\",\"merges\":[\"A1:G2\",\"G3:G6\",\"B7:D7\",\"F7:G7\",\"B8:D8\",\"F8:G8\",\"B9:D9\",\"F9:G9\",\"A10:G10\",\"A11:G11\",\"A12:G12\",\"A13:G13\",\"B14:G14\",\"B15:D15\",\"F15:G15\",\"B16:D16\",\"F16:G16\",\"B17:D17\",\"F17:G17\",\"B18:D18\",\"F18:G18\"]}', NULL, NULL, 'admin', '2024-08-29 17:18:29', 'admin', '2024-08-30 10:24:03', 0, NULL, NULL, 1, 2, NULL, NULL, NULL, '1', 9, 1, NULL);
INSERT INTO `jimu_report` VALUES ('9dbadaee8720767efe3164a7d018c870', '45566', '发票打印', '', NULL, '984302991393210368', '{\"area\":{\"sri\":8,\"sci\":4,\"eri\":8,\"eci\":4,\"width\":100,\"height\":25},\"printElWidth\":794,\"excel_config_id\":\"9dbadaee8720767efe3164a7d018c870\",\"printElHeight\":500,\"rows\":{\"0\":{\"cells\":{\"0\":{\"text\":\"\",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"1\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"2\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"3\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"4\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"5\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"6\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"7\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"},\"8\":{\"text\":\" \",\"virtual\":\"RTA6TUIKs1pmgVOM\"}}},\"2\":{\"cells\":{},\"height\":11},\"3\":{\"cells\":{\"2\":{\"text\":\"\"},\"5\":{\"text\":\"\"}},\"height\":18},\"4\":{\"cells\":{\"2\":{\"text\":\"182123434\",\"style\":0},\"5\":{\"text\":\"12345678\"}},\"height\":15},\"5\":{\"cells\":{\"2\":{\"text\":\"\"}}},\"7\":{\"cells\":{}},\"8\":{\"cells\":{\"1\":{\"text\":\"餐饮\"},\"2\":{\"text\":\" A11\"},\"3\":{\"text\":\" 333 3\"},\"4\":{\"text\":\" 3 4\"},\"5\":{\"text\":\" 1\"},\"6\":{\"text\":\"3333\"}}},\"9\":{\"cells\":{\"1\":{\"text\":\"测试\"},\"2\":{\"text\":\" mmm\"},\"3\":{\"text\":\" 33 5\"}}},\"10\":{\"cells\":{},\"height\":22},\"11\":{\"cells\":{\"2\":{\"text\":\" \"},\"3\":{\"text\":\"343434\"},\"6\":{\"text\":\"3434\"}},\"height\":45},\"12\":{\"cells\":{\"4\":{\"text\":\" 刮开中奖\"}},\"height\":12},\"13\":{\"cells\":{\"2\":{\"text\":\"\"},\"4\":{\"text\":\" \"},\"5\":{\"text\":\"备注\"}},\"height\":31},\"14\":{\"cells\":{\"1\":{\"text\":\" 张三\"},\"3\":{\"text\":\"完成\"},\"4\":{\"text\":\" 李思\"}},\"height\":41},\"len\":100},\"dbexps\":[],\"toolPrintSizeObj\":{\"printType\":\"A4\",\"widthPx\":794,\"heightPx\":1047},\"dicts\":[],\"freeze\":\"A1\",\"dataRectWidth\":847,\"background\":false,\"name\":\"sheet1\",\"autofilter\":{},\"styles\":[{\"font\":{\"size\":8}}],\"validations\":[],\"cols\":{\"0\":{\"width\":93},\"1\":{\"width\":74},\"2\":{\"width\":80},\"len\":26},\"merges\":[],\"imgList\":[{\"row\":0,\"col\":0,\"width\":\"832\",\"height\":\"480\",\"src\":\"https://static.jeecg.com/designreport/images/套打_1609313052910.png\",\"isBackend\":true,\"commonBackend\":true,\"layer_id\":\"RTA6TUIKs1pmgVOM\",\"offsetX\":0,\"offsetY\":0,\"virtualCellRange\":[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8]]}]}', '', 'https://static.jeecg.com/designreport/images/QQ截图20201207113651_1607312223499.png', 'jeecg', '2020-07-20 18:55:59', 'admin', '2021-02-03 13:38:49', 0, NULL, NULL, 0, 1126, NULL, NULL, NULL, NULL, 0, NULL, NULL);
@@ -3332,6 +3329,7 @@ CREATE TABLE `onl_cgform_enhance_sql` (
`CGB_SQL` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'SQL内容',
`CGB_SQL_NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Sql名称',
`CONTENT` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+ `db_source` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'SQL增强执行的数据源:为空=跟随表单数据源,master=主库/默认数据源,其它=动态数据源编码(关联sys_data_source.code)',
`CGFORM_HEAD_ID` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单ID',
PRIMARY KEY (`ID`) USING BTREE,
INDEX `idx_oces_CGFORM_HEAD_ID`(`CGFORM_HEAD_ID`) USING BTREE
@@ -3340,10 +3338,10 @@ CREATE TABLE `onl_cgform_enhance_sql` (
-- ----------------------------
-- Records of onl_cgform_enhance_sql
-- ----------------------------
-INSERT INTO `onl_cgform_enhance_sql` VALUES ('0ebf418bd02f486342123eaf84cd39ad', 'add', '', NULL, '', '18f064d1ef424c93ba7a16148851664f');
-INSERT INTO `onl_cgform_enhance_sql` VALUES ('5ab418a13fd0bbf30ee9dd04203f3c28', 'add', '', NULL, '', '4adec929a6594108bef5b35ee9966e9f');
-INSERT INTO `onl_cgform_enhance_sql` VALUES ('8750b93ba5332460c76c492359d7a06b', 'edit', '', NULL, '', '18f064d1ef424c93ba7a16148851664f');
-INSERT INTO `onl_cgform_enhance_sql` VALUES ('edfab059050b19328ac81e6833b5ebc2', 'delete', '', NULL, '', '18f064d1ef424c93ba7a16148851664f');
+INSERT INTO `onl_cgform_enhance_sql` VALUES ('0ebf418bd02f486342123eaf84cd39ad', 'add', '', NULL, '', NULL, '18f064d1ef424c93ba7a16148851664f');
+INSERT INTO `onl_cgform_enhance_sql` VALUES ('5ab418a13fd0bbf30ee9dd04203f3c28', 'add', '', NULL, '', NULL, '4adec929a6594108bef5b35ee9966e9f');
+INSERT INTO `onl_cgform_enhance_sql` VALUES ('8750b93ba5332460c76c492359d7a06b', 'edit', '', NULL, '', NULL, '18f064d1ef424c93ba7a16148851664f');
+INSERT INTO `onl_cgform_enhance_sql` VALUES ('edfab059050b19328ac81e6833b5ebc2', 'delete', '', NULL, '', NULL, '18f064d1ef424c93ba7a16148851664f');
-- ----------------------------
-- Table structure for onl_cgform_field
@@ -3385,7 +3383,7 @@ CREATE TABLE `onl_cgform_field` (
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`create_by` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
`converter` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '自定义值转换器',
- `query_def_val` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询默认值',
+ `query_def_val` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询默认值',
`query_dict_text` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询配置字典text',
`query_dict_field` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询配置字典code',
`query_dict_table` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '查询配置字典table',
@@ -3402,7 +3400,7 @@ CREATE TABLE `onl_cgform_field` (
-- Records of onl_cgform_field
-- ----------------------------
INSERT INTO `onl_cgform_field` VALUES ('0021c969dc23a9150d6f70a13b52e73e', '402860816aa5921f016aa5921f480000', 'begin_date', '开始时间', 'begin_date', 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 4, 'admin', '2019-05-11 15:31:54', '2019-05-11 14:26:19', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('011ddab07f440f2fb7ab548a4d6fb54f', '05a3a30dada7411c9109306aa4117068', 'sheng', '地区', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'pca', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 10, 'admin', '2026-04-29 13:53:38', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('011ddab07f440f2fb7ab548a4d6fb54f', '05a3a30dada7411c9109306aa4117068', 'sheng', '地区', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'pca', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 10, 'admin', '2026-08-20 23:18:39', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('020c1622c3df0aef30185f57874f6959', '79091e8277c744158530321513119c68', 'bpm_status', '流程状态', NULL, 0, 1, 1, 'string', 32, 0, '1', 'bpm_status', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 1, 0, 'single', '', '', 8, 'admin', '2019-05-11 15:29:47', '2019-05-11 15:29:26', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('02b20e692456403e2fed1a89a06833b4', '402860816bff91c0016bff91d2810005', 'phone', '联系方式', 'phone', 0, 1, 1, 'string', 20, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 8, 'admin', '2019-07-19 18:05:55', '2019-07-17 18:54:35', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('03668009f0ad92b20abb1a377197ee47', 'deea5a8ec619460c9245ba85dbc59e80', 'order_fk_id', '订单外键ID', NULL, 0, 0, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', 'test_order_main', 'id', 10, 'admin', '2020-05-03 01:01:18', '2019-04-20 11:42:53', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
@@ -3524,7 +3522,7 @@ INSERT INTO `onl_cgform_field` VALUES ('2f111722eb3a994450e67e3211fd69a8', '4028
INSERT INTO `onl_cgform_field` VALUES ('2f13bd36aadfe10fb79c57d727279981', 'feea98637c2144caae7c5d56a815a245', 'aaa', 'aa', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 7, NULL, NULL, '2021-10-27 10:24:24', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('30143cc3de69c413828f9fba20662026', '402860816bff91c0016bffa220a9000b', 'healthy', '健康状况', 'healthy', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 12, 'admin', '2019-07-22 16:15:32', '2019-07-17 19:12:24', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('306e3fb9c87ca6442cefbd61f498f1f7', '402881e6760269a201760269a2af0000', 'dep_sel', '选择部门', NULL, 0, 1, 1, 'string', 200, 0, '', '', '', '', 'sel_depart', '', 120, NULL, '0', '', '#{sysOrgCode}', 0, 1, 1, 0, 'single', NULL, NULL, 19, NULL, NULL, '2020-11-26 10:37:26', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('3087aa8f38c787e066a886d950a9edfa', '05a3a30dada7411c9109306aa4117068', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 1, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('3087aa8f38c787e066a886d950a9edfa', '05a3a30dada7411c9109306aa4117068', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 1, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('310c86bfd1e67500774c208d601acdc3', '56870166aba54ebfacb20ba6c770bd73', 'xiala', '下拉多选', NULL, 0, 1, 1, 'string', 32, 0, '', 'sex', '', '', 'list_multi', '', 120, '', '0', '', '', 1, 1, 1, 0, 'single', '', '', 8, 'admin', '2025-11-27 18:19:46', '2020-11-30 21:08:26', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('31193dc8ceacf979e4042e784ea8278a', '402880e570a5d7000170a5d700f50000', 'order_fk_id', '订单外键ID', NULL, 0, 0, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 10, NULL, NULL, '2020-03-04 21:58:16', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('31fd90306c3942f09cb79deabbf2f541', '402860816bff91c0016bff91d2810005', 'employee_id', '员工ID', 'employee_id', 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', 'oa_employee_info', 'id', 2, 'admin', '2019-07-19 18:05:55', '2019-07-17 18:54:35', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3561,7 +3559,7 @@ INSERT INTO `onl_cgform_field` VALUES ('3cfd4d60c7d8409ae716a579bcb0910d', '4028
INSERT INTO `onl_cgform_field` VALUES ('3d72550564009a430d8d9099f47c4a05', '553a4172fde446419cb602dc70f9ee67', 'sys_org_code', '所属部门', NULL, 0, 1, 1, 'string', 50, 0, NULL, NULL, NULL, NULL, 'text', NULL, 120, '', '0', NULL, NULL, 0, 0, 0, 0, 'single', NULL, NULL, 5, 'admin', '2022-10-14 09:31:05', '2022-10-13 20:59:58', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('3e32f6c30c9028872388f70743c5d6a5', '402860816bff91c0016bff91c0cb0000', 'reason', '申请理由', 'reason', 0, 1, 1, 'string', 200, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 9, 'admin', '2019-07-19 18:09:01', '2019-07-17 18:54:32', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('3e70d1c516c3533c6698300665c669e1', '402860816bff91c0016bff91c0cb0000', 'id', 'id', 'id', 1, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'group', '', '', 1, 'admin', '2019-07-19 18:09:01', '2019-07-17 18:54:31', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('3ef0a9ed04605267f7fa304a8c353576', '05a3a30dada7411c9109306aa4117068', 'name', '用户名', NULL, 0, 1, 1, 'string', 32, 0, '', 'username', 'tj_user_report', 'name', 'popup', '', 120, '', '0', '', '', 1, 1, 1, 0, 'single', '', '', 7, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '1');
+INSERT INTO `onl_cgform_field` VALUES ('3ef0a9ed04605267f7fa304a8c353576', '05a3a30dada7411c9109306aa4117068', 'name', '用户名', NULL, 0, 1, 1, 'string', 32, 0, '', 'username', 'tj_user_report', 'name', 'popup', '', 120, '', '0', '', '', 1, 1, 1, 0, 'single', '', '', 7, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '1');
INSERT INTO `onl_cgform_field` VALUES ('3f2ace8f968a0e5b91d1340ee2957cda', '402860816bff91c0016bff91d8830007', 'real_name', '姓名', 'real_name', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 3, 'admin', '2019-07-19 18:04:41', '2019-07-17 18:54:37', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('3f7f7720ee65648cb2850fccedf7be9d', '53a3e82b54b946c2b904f605875a275c', 'contents', '商品简介', NULL, 0, 1, 1, 'Text', 0, 0, '', '', '', '', 'umeditor', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 9, 'admin', '2022-10-25 11:10:49', '2020-05-07 22:49:47', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('3f9deca6c193f0b2609113713956ad19', '86bf17839a904636b7ed96201b2fa6ea', 'order_main_id', '订单ID', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', 'ces_order_main', 'id', 11, 'admin', '2020-05-14 21:18:49', '2020-05-08 23:48:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
@@ -3619,8 +3617,8 @@ INSERT INTO `onl_cgform_field` VALUES ('5237e186de11017ee52d3c344f450b3b', 'f9fb
INSERT INTO `onl_cgform_field` VALUES ('524d75f1e4fed1167c80477658290ddf', '402881fd812267500181226787d90001', 'age', '年龄', NULL, 0, 1, 1, 'int', 10, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 1, 1, 1, 0, 'group', NULL, NULL, 7, 'admin', '2022-06-02 11:13:48', '2022-06-02 11:13:39', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '1');
INSERT INTO `onl_cgform_field` VALUES ('52975c3f03325de8233d3459b2230b09', 'f9fb8bee1a64472889d077c757b9acc7', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 1, 'single', '', '', 1, 'admin', '2021-08-17 13:58:15', '2021-08-17 13:57:48', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('52ee861bc1b62cd8e4f10632b3d9d1b2', '79091e8277c744158530321513119c68', 'name', '顺序会签标题', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 6, 'admin', '2019-05-11 15:29:47', '2019-05-11 15:27:17', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('5531fb261c77e9d12f7cca1af528f70a', '05a3a30dada7411c9109306aa4117068', 'update_time', '更新日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('553a250fb89de39e4ba9f8450fd72ade', '05a3a30dada7411c9109306aa4117068', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('5531fb261c77e9d12f7cca1af528f70a', '05a3a30dada7411c9109306aa4117068', 'update_time', '更新日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('553a250fb89de39e4ba9f8450fd72ade', '05a3a30dada7411c9109306aa4117068', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('555f9d43db20204128d76e22226ca36e', '402881e6760269a201760269a2af0000', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 2, NULL, NULL, '2020-11-26 10:37:26', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('5562a7242e4978f02e6d3a08d5828bbf', '53a3e82b54b946c2b904f605875a275c', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 1, 'admin', '2022-10-25 11:10:48', '2020-05-07 22:49:47', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('5562ad3165b1399f97a48f5f06d7fa06', '3b5e18da618247539481816995b6bf9f', 'ccc', 'cc', NULL, 0, 1, 1, 'string', 1000, 0, '', '', '', '', 'umeditor', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 10, 'admin', '2020-07-11 11:27:29', '2020-07-11 11:27:17', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
@@ -3652,7 +3650,7 @@ INSERT INTO `onl_cgform_field` VALUES ('5dfbea516ee2390d712eace5405c5219', '4028
INSERT INTO `onl_cgform_field` VALUES ('5e4484b7348dc3e59a0c58bdc3828cc0', '27fc5f91274344afa7673a732b279939', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, 'admin', '2019-07-01 16:28:20', '2019-07-01 16:26:42', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('5e4ac29ac2007ceabf93368330290a42', '402860816bff91c0016bff91d8830007', 'order_no', '序号', 'order_no', 0, 1, 1, 'int', 10, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 9, 'admin', '2019-07-19 18:04:41', '2019-07-17 18:54:37', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('5e729f9823b5cc96c50b0b7c0f07eb05', '402880e5721355dd01721355dd390000', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 2, NULL, NULL, '2020-05-14 21:18:14', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('5f13f7087caa0bbf47e5eba01d0d0443', '05a3a30dada7411c9109306aa4117068', 'contents', '请假原因', NULL, 0, 1, 1, 'string', 500, 0, '', '', '', '', 'umeditor', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 11, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('5f13f7087caa0bbf47e5eba01d0d0443', '05a3a30dada7411c9109306aa4117068', 'contents', '请假原因', NULL, 0, 1, 1, 'string', 500, 0, '', '', '', '', 'umeditor', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 11, 'admin', '2026-08-20 23:18:39', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('60b3b452232904f5a1130348bc1eab53', '402881e6760269a20176026d25650002', 'sys_org_code', '所属部门编码', 'sys_org_code', 0, 1, 1, 'string', 64, 0, NULL, NULL, NULL, NULL, 'text', NULL, 120, NULL, '0', NULL, NULL, 0, 1, 1, 0, 'single', NULL, NULL, 16, NULL, NULL, '2020-11-26 10:41:17', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('60eed6c429cf7796c3f0a17faaed00da', 'b493c5fd4fa64a3a84e74ee171763e37', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, NULL, NULL, '2021-06-07 18:13:37', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('6130dbb6d36bab8ee9154e7ab58af34c', '402880e570a5d7000170a5d700f50000', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 1, NULL, NULL, '2020-03-04 21:58:16', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3668,7 +3666,7 @@ INSERT INTO `onl_cgform_field` VALUES ('654362725195829005036b3db47ec826', '4028
INSERT INTO `onl_cgform_field` VALUES ('656ec51bb57da5a47076f8a26053bbbb', '553a4172fde446419cb602dc70f9ee67', 'zdmrz', '自定义查询', NULL, 0, 1, 1, 'string', 50, 0, NULL, '', '', '', 'text', '', 120, '', '0', '', '1', 1, 1, 1, 0, 'single', '', '', 37, 'admin', '2022-10-14 09:31:05', '2022-10-13 20:59:58', 'admin', '', '1', '', 'sex', '', 'list', '1', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('6603058186832c4ff9e8c6e43baa5c3d', '86bf17839a904636b7ed96201b2fa6ea', 'sys_org_code', '所属部门', NULL, 0, 1, 1, 'string', 64, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 6, 'admin', '2020-05-14 21:18:49', '2020-05-08 23:48:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('66a7ef842bc34e105a90186e48167ef2', 'dbf4675875e14676a3f9a8b2b8941140', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, NULL, NULL, '2019-05-27 18:02:07', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('671e62c685bc86bde3cef0e023418fb4', '05a3a30dada7411c9109306aa4117068', 'sys_org_code', '所属部门', NULL, 0, 1, 1, 'string', 64, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 5, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('671e62c685bc86bde3cef0e023418fb4', '05a3a30dada7411c9109306aa4117068', 'sys_org_code', '所属部门', NULL, 0, 1, 1, 'string', 64, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 5, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('686dea2621feadcd9b4c611df046adb4', '86bf17839a904636b7ed96201b2fa6ea', 'price', '价格', NULL, 0, 1, 1, 'double', 10, 3, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 8, 'admin', '2020-05-14 21:18:49', '2020-05-08 23:48:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('68769fa7e4696e3a28f4cecf63076b7b', '402860816bff91c0016bff91ca7e0002', 'order_no', '序号', 'order_no', 0, 1, 1, 'int', 10, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 8, 'admin', '2019-07-19 18:07:13', '2019-07-17 18:54:33', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('68861523516849eff46a0df045f1031b', '402881e6760269a201760269a2af0000', 'birthday', '时间', NULL, 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', NULL, NULL, 13, NULL, NULL, '2020-11-26 10:37:26', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
@@ -3734,9 +3732,9 @@ INSERT INTO `onl_cgform_field` VALUES ('7e331396f6e544ae801690cf475e7615', '4028
INSERT INTO `onl_cgform_field` VALUES ('7e5013b8a3e970fdcef2b577829bfa83', '402881fd812267500181226750e90000', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 2, NULL, NULL, '2022-06-02 11:13:25', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('7f10901c6ade3aa9d9ff46ed7039c70f', '1acb6f81a1d9439da6cc4e868617b565', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, 'admin', '2019-06-10 14:47:14', '2019-04-23 22:58:19', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('7f610ecd480210d2d12ce6eb47f261f0', '402881fd812267500181226787d90001', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 1, 'admin', '2022-06-02 11:13:48', '2022-06-02 11:13:39', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('7fa8eafb28c52183514179454d62e5b3', '05a3a30dada7411c9109306aa4117068', 'begin_time', '开始时间', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 14, 'admin', '2026-04-29 13:53:38', '2025-06-25 15:10:29', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('809a9fafe0b79c9997de32cb6e831c6f', '05a3a30dada7411c9109306aa4117068', 'birthday', '生日', NULL, 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 9, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('8119d3de514092232935b038531828c5', '05a3a30dada7411c9109306aa4117068', 'sex', '性别', NULL, 0, 1, 1, 'string', 32, 0, '', 'sex', '', '', 'list', '', 120, '', '0', '', '', 1, 1, 1, 0, 'single', '', '', 8, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('7fa8eafb28c52183514179454d62e5b3', '05a3a30dada7411c9109306aa4117068', 'begin_time', '开始时间', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '', '', 0, 1, 0, 0, 'single', '', '', 14, 'admin', '2026-08-20 23:18:39', '2025-06-25 15:10:29', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('809a9fafe0b79c9997de32cb6e831c6f', '05a3a30dada7411c9109306aa4117068', 'birthday', '生日', NULL, 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 9, 'admin', '2026-08-20 23:18:39', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('8119d3de514092232935b038531828c5', '05a3a30dada7411c9109306aa4117068', 'sex', '性别', NULL, 0, 1, 1, 'string', 32, 0, '', 'sex', '', '', 'list', '', 120, '', '0', '', '', 1, 1, 1, 0, 'single', '', '', 8, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('813a5ebf7335309c7edb3803f7e4b204', '402880e570a5d7000170a5d700f50000', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 2, NULL, NULL, '2020-03-04 21:58:16', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('817cc5e277e88164dffd4caee1169276', '56efb74326e74064b60933f6f8af30ea', 'remark', '备注', NULL, 0, 1, 1, 'string', 500, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 10, 'admin', '2020-07-10 16:53:27', '2020-05-08 23:45:32', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('81ed9556c9fda1bbb46d94a53a6c90c7', '402860816bff91c0016bff91c0cb0000', 'depart_name', '部门名称', 'depart', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 7, 'admin', '2019-07-19 18:09:01', '2019-07-17 18:54:32', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3848,7 +3846,7 @@ INSERT INTO `onl_cgform_field` VALUES ('a7822f6e4cffb37fc0729cbd4cfd8655', '32f7
INSERT INTO `onl_cgform_field` VALUES ('a7b6ae09441ce36a14c7ce95f17a218e', '86bf17839a904636b7ed96201b2fa6ea', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 2, 'admin', '2020-05-14 21:18:49', '2020-05-08 23:48:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('a82ca42a76e9d2b8dae6d57dbb5edb54', 'deea5a8ec619460c9245ba85dbc59e80', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, 'admin', '2020-05-03 01:01:18', '2019-04-20 11:41:19', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('a83acbadb64ad5ba87a384dd6eea3117', 'f9fb8bee1a64472889d077c757b9acc7', 'ddd', 'dd', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 8, 'admin', '2021-08-17 13:58:15', '2021-08-17 13:57:48', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('a90c0b002021ac3a4a1a96514d58224b', '05a3a30dada7411c9109306aa4117068', 'long_ids', '长类型', NULL, 0, 1, 1, 'long', 19, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 15, 'admin', '2026-04-29 13:53:38', '2025-11-27 11:36:01', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('a90c0b002021ac3a4a1a96514d58224b', '05a3a30dada7411c9109306aa4117068', 'long_ids', '长类型', NULL, 0, 1, 1, 'long', 19, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 15, 'admin', '2026-08-20 23:18:39', '2025-11-27 11:36:01', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('a940adc4585fa3b5bd2114ea9abe8491', '402860816bff91c0016bff91ca7e0002', 'cert_level', '证书级别', 'cert_level', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 5, 'admin', '2019-07-19 18:07:13', '2019-07-17 18:54:33', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('a94f1d7da64f3aa35c32155ea00ccb2f', '402860816bff91c0016bffa220a9000b', 'id', 'id', 'id', 1, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'group', '', '', 1, 'admin', '2019-07-22 16:15:32', '2019-07-17 19:12:24', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('a9780eace237a15f26931dd6a9ec02e9', '758334cb1e7445e2822b60e807aec4a3', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, NULL, NULL, '2019-10-18 18:02:09', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3940,7 +3938,7 @@ INSERT INTO `onl_cgform_field` VALUES ('c59f39e7b3bb877398f16796b2cd7962', '997e
INSERT INTO `onl_cgform_field` VALUES ('c5a61724b3b1fdfd0eb39c361f22bafd', '8d66ea41c7cc4ef9ab3aab9055657fc9', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, NULL, NULL, '2020-05-07 22:46:32', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('c5dd2fc34ae825ebfced2ec74948654c', '402860816aa5921f016aa5921f480000', 'end_date', '请假结束时间', 'end_date', 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 5, 'admin', '2019-05-11 15:31:54', '2019-05-11 14:26:19', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('c5f6ea01a6523a60df153cc61dc92f4d', 'fbc35f067da94a70adb622ddba259352', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 2, NULL, NULL, '2019-07-03 19:44:23', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('c6024742fbc62f2fc39992e6b59ac13d', '05a3a30dada7411c9109306aa4117068', 'age', '年龄', NULL, 0, 1, 1, 'int', 10, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 1, 1, 1, 0, 'group', '', '', 6, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '1');
+INSERT INTO `onl_cgform_field` VALUES ('c6024742fbc62f2fc39992e6b59ac13d', '05a3a30dada7411c9109306aa4117068', 'age', '年龄', NULL, 0, 1, 1, 'int', 10, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 1, 1, 1, 0, 'group', '', '', 6, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '1');
INSERT INTO `onl_cgform_field` VALUES ('c6730e00df5efd77fedf181df29102de', '402860816bff91c0016bff91c7010001', 'update_by', '更新人', 'update_by', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 9, 'admin', '2019-07-19 18:07:47', '2019-07-17 18:54:32', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('c75a7cb0a21958aa7ca5442f66019669', 'e9faf717024b4aae95cff224ae9b6d97', 'depart', '所属部门', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 9, 'admin', '2019-07-03 18:23:49', '2019-07-03 18:22:35', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('c772ed9cbe2d1dc69e9ffa73d3487021', '4b556f0168f64976a3d20bfb932bc798', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 1, NULL, NULL, '2019-04-12 23:38:28', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -3950,7 +3948,7 @@ INSERT INTO `onl_cgform_field` VALUES ('c8027cf4f2483042445c89ba86c4e51f', '4028
INSERT INTO `onl_cgform_field` VALUES ('c91b697b1bcd2be943fc746e2660bc9e', '402860816bff91c0016bff91d2810005', 'real_name', '姓名', 'real_name', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 3, 'admin', '2019-07-19 18:05:55', '2019-07-17 18:54:35', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('c962b89c893e2b8cf1a12c678ba12962', '553a4172fde446419cb602dc70f9ee67', 'zdbdx', '字典表单选', NULL, 0, 1, 1, 'string', 255, 0, NULL, 'id', 'sys_depart', 'depart_name', 'radio', '', 200, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 39, 'admin', '2022-10-14 09:31:05', '2022-10-13 20:59:58', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('c988bd2b6125c01ceb3579a207dd8784', '3d447fa919b64f6883a834036c14aa67', 'city', '市', NULL, 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 1, 1, 0, 'single', '', '', 2, 'admin', '2026-04-28 16:47:51', '2020-02-20 16:19:00', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('c9969d8427655f34affd6021ecd546ca', '05a3a30dada7411c9109306aa4117068', 'month', '月', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '{\"labelLength\":6,\"picker\":\"month\"}', '', 0, 1, 0, 0, 'single', '', '', 13, 'admin', '2026-04-29 13:53:38', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('c9969d8427655f34affd6021ecd546ca', '05a3a30dada7411c9109306aa4117068', 'month', '月', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '{\"labelLength\":6,\"picker\":\"month\"}', '', 0, 1, 0, 0, 'single', '', '', 13, 'admin', '2026-08-20 23:18:39', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('c9b698d3f75aa780ee1eb67ef090b15b', '73162c3b8161413e8ecdca7eb288d0c9', 'wl_code', '物料编码', NULL, 0, 1, 1, 'string', 200, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 8, 'admin', '2019-07-01 14:23:32', '2019-06-10 15:18:34', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('ca68d935c875ba92c998a20fca314bed', '402881fd812267500181226787d90001', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 1, 'single', NULL, NULL, 0, 'admin', '2022-06-02 11:13:48', '2022-06-02 11:13:39', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('caf5a071f2299c0f9ff2f3038d6d0fc6', '402860816bff91c0016bff91ca7e0002', 'update_by', '更新人', 'update_by', 0, 1, 1, 'string', 100, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 11, 'admin', '2019-07-19 18:07:13', '2019-07-17 18:54:33', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -4036,7 +4034,7 @@ INSERT INTO `onl_cgform_field` VALUES ('e88d328af34dd8a17f51437c52b68a2d', '4028
INSERT INTO `onl_cgform_field` VALUES ('e99cc08f4d88dd8f788399db8d448ee8', '62e29cdb81ac44d1a2d8ff89851b853d', 'create_by', '创建人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 2, NULL, NULL, '2019-05-11 14:01:14', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('e9a45935d69f5fd91f0c6880e5e6cfa4', '402881e6760269a20176026d25650002', 'age', '年龄', 'age', 0, 1, 1, 'int', 10, 0, NULL, NULL, NULL, NULL, 'text', NULL, 120, NULL, '0', NULL, NULL, 0, 1, 1, 0, 'single', NULL, NULL, 8, NULL, NULL, '2020-11-26 10:41:17', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('e9b782461fc66dbc77df0400600868f7', '553a4172fde446419cb602dc70f9ee67', 'riqi', '日期', NULL, 0, 1, 1, 'Date', 50, 0, NULL, '', '', '', 'date', '', 120, '', '0', '', '', 1, 1, 1, 0, 'group', '', '', 13, 'admin', '2022-10-14 09:31:05', '2022-10-13 20:59:58', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
-INSERT INTO `onl_cgform_field` VALUES ('e9fb150adabaaacdd804b1953e6bad24', '05a3a30dada7411c9109306aa4117068', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 2, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('e9fb150adabaaacdd804b1953e6bad24', '05a3a30dada7411c9109306aa4117068', 'create_time', '创建日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 2, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('ea309f9cd81ede7b9b36a1377a3a40d8', '997ee931515a4620bc30a9c1246429a9', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 0, 'single', '', '', 3, 'admin', '2026-04-28 16:47:09', '2020-05-03 00:56:56', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('ea644c4c208739640933ba6e568045c1', 'e2faf977fdaf4b25a524f58c2441a51c', 'ruz_date', '入职时间', NULL, 0, 1, 1, 'Datetime', 32, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 9, 'admin', '2019-06-10 17:27:00', '2019-04-24 17:12:11', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('ea749346b5eb9e70df2058ade2b0bbfa', '402881e6760269a201760269a2af0000', 'fuwenb', '富文本', NULL, 0, 1, 1, 'Text', 0, 0, '', '', '', '', 'umeditor', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', NULL, NULL, 17, NULL, NULL, '2020-11-26 10:37:26', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
@@ -4061,7 +4059,7 @@ INSERT INTO `onl_cgform_field` VALUES ('f0a453930aa16ca32f2e3be860bfe542', '4028
INSERT INTO `onl_cgform_field` VALUES ('f12753b4a3815697a72017a7436fe733', 'e2faf977fdaf4b25a524f58c2441a51c', 'update_time', '更新日期', NULL, 0, 1, 1, 'Datetime', 20, 0, '', '', '', '', 'datetime', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 5, 'admin', '2019-06-10 17:27:00', '2019-04-24 17:12:11', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f1ab7d3b55ade57eeac6c55b32ce813a', '1acb6f81a1d9439da6cc4e868617b565', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 4, 'admin', '2019-06-10 14:47:14', '2019-04-23 22:58:19', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f1c7fde21f26c7ed64a0ef1095900c52', '4028318169e81b970169e81b97650000', 'request_type', '请求类型', 'request_type', 0, 1, 1, 'string', 10, 0, NULL, NULL, NULL, NULL, 'text', NULL, 120, NULL, '0', NULL, NULL, 0, 1, 1, 0, 'group', NULL, NULL, 11, NULL, NULL, '2019-04-04 19:28:36', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('f32068148faf57abaf4511cd94adb3e4', '05a3a30dada7411c9109306aa4117068', 'year', '年', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '{\"labelLength\":6,\"picker\":\"year\"}', '', 0, 1, 0, 0, 'single', '', '', 12, 'admin', '2026-04-29 13:53:38', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('f32068148faf57abaf4511cd94adb3e4', '05a3a30dada7411c9109306aa4117068', 'year', '年', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '{\"labelLength\":6,\"picker\":\"year\"}', '', 0, 1, 0, 0, 'single', '', '', 12, 'admin', '2026-08-20 23:18:39', '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('f3284a1ce6da9b887dce89091eaa0f6b', '402880e570a5d7000170a5d700f50000', 'pro_type', '产品类型', NULL, 0, 1, 1, 'string', 32, 0, '', 'sex', '', '', 'radio', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', NULL, NULL, 9, NULL, NULL, '2020-03-04 21:58:16', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f38319e2add8da6a7223d77359144a22', '402880e5721355dd01721355dd390000', 'update_by', '更新人', NULL, 0, 1, 1, 'string', 50, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', NULL, NULL, 4, NULL, NULL, '2020-05-14 21:18:14', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('f3a82b0b74e8feb37b423571c443357c', '553a4172fde446419cb602dc70f9ee67', 'kaiguan', '开关', NULL, 0, 1, 1, 'string', 50, 0, NULL, '', '', '', 'switch', '', 120, '', '0', '[1,2]', '', 0, 1, 1, 0, 'single', '', '', 12, 'admin', '2022-10-14 09:31:05', '2022-10-13 20:59:58', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
@@ -4083,7 +4081,7 @@ INSERT INTO `onl_cgform_field` VALUES ('f7f84f3337548e36430f81640b028b41', '5517
INSERT INTO `onl_cgform_field` VALUES ('f81c2df076ceea5312648efc45311cf0', '402881fd812267500181226787d90001', 'month', '月', NULL, 0, 1, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, '', '0', '{\"labelLength\":6,\"picker\":\"month\"}', '', 0, 1, 1, 0, 'single', '', '', 13, NULL, NULL, '2024-06-12 11:21:08', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('f81d7103c0c857e5c744cda2bc4c000a', '402860816bff91c0016bff91ca7e0002', 'cert_organizations', '发证机关', 'cert_organizations', 0, 1, 1, 'string', 255, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 6, 'admin', '2019-07-19 18:07:13', '2019-07-17 18:54:33', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f82db8edef5babf741914b0fa221329b', '4028839a6de2ebd3016de2ebd3870000', 'bpm_status', '流程状态', 'bpm_status', 0, 1, 1, 'string', 2, 0, NULL, NULL, NULL, NULL, 'text', NULL, 120, NULL, '0', NULL, NULL, 0, 1, 1, 0, 'group', NULL, NULL, 16, NULL, NULL, '2019-10-19 15:29:30', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `onl_cgform_field` VALUES ('f857d4fd2d63c1ad94ed4698f5b173f5', '05a3a30dada7411c9109306aa4117068', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 1, 'single', '', '', 0, 'admin', '2026-04-29 13:53:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
+INSERT INTO `onl_cgform_field` VALUES ('f857d4fd2d63c1ad94ed4698f5b173f5', '05a3a30dada7411c9109306aa4117068', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, '', '0', '', '', 0, 0, 0, 1, 'single', '', '', 0, 'admin', '2026-08-20 23:18:38', '2020-05-06 11:34:31', 'admin', '', '', '', '', '', NULL, '0', NULL, NULL, '0');
INSERT INTO `onl_cgform_field` VALUES ('f8a0fd20a1173270afdfed1129d5c669', '402860816bff91c0016bffa220a9000b', 'depart_id', '所在部门id', NULL, 0, 1, 1, 'string', 32, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'single', '', '', 44, 'admin', '2019-07-22 16:15:32', '2019-07-19 15:33:44', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f8cc6be747fec10802eb625ac529c16f', '402860816bff91c0016bff91cfea0004', 'create_time', '创建时间', 'create_time', 0, 1, 1, 'Datetime', 0, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 1, 1, 0, 'group', '', '', 10, 'admin', '2019-07-19 18:05:13', '2019-07-17 18:54:35', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `onl_cgform_field` VALUES ('f90bcb38fb89988bd40d1618aa75cea0', '758334cb1e7445e2822b60e807aec4a3', 'id', '主键', NULL, 1, 0, 1, 'string', 36, 0, '', '', '', '', 'text', '', 120, NULL, '0', '', '', 0, 0, 0, 0, 'single', '', '', 1, NULL, NULL, '2019-10-18 18:02:09', 'admin', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -4152,6 +4150,7 @@ CREATE TABLE `onl_cgform_head` (
`des_form_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '设计器表单编码',
`tenant_id` int(11) NULL DEFAULT 0 COMMENT '租户ID',
`low_app_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关联的应用ID',
+ `db_source` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '动态数据源编码(关联sys_data_source.code),为空则使用默认数据源',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_och_cgform_head_id`(`table_name`) USING BTREE,
INDEX `idx_och_table_name`(`form_template`) USING BTREE,
@@ -4162,17 +4161,17 @@ CREATE TABLE `onl_cgform_head` (
-- ----------------------------
-- Records of onl_cgform_head
-- ----------------------------
-INSERT INTO `onl_cgform_head` VALUES ('05a3a30dada7411c9109306aa4117068', 'test_note', 1, 31, '请假单@JS增强示例', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"modelFullscreen\":0,\"modalMinWidth\":0,\"commentStatus\":1,\"joinQuery\":0,\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"canResizeColumn\":0,\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":1,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2026-04-29 13:53:38', 'admin', '2020-05-06 11:34:31', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('3d447fa919b64f6883a834036c14aa67', 'test_enhance_select', 1, 8, '三级联动控件', 'N', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0,\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2026-04-28 16:47:51', 'admin', '2020-02-20 16:19:00', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('402880e570a5d7000170a5d700f50000', 'test_order_product$1', 1, 11, '订单产品明细', 'N', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, 1, 1, 'deea5a8ec619460c9245ba85dbc59e80', NULL, NULL, NULL, 'admin', '2020-03-04 21:58:16', NULL, NULL, NULL, 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('402880e5721355dd01721355dd390000', 'ces_order_goods$1', 1, 1, '订单商品', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 1, 1, '86bf17839a904636b7ed96201b2fa6ea', NULL, NULL, NULL, 'admin', '2020-05-14 21:18:14', 'normal', NULL, NULL, 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('402881fd812267500181226750e90000', 'ces_shop_goods$1', 1, 1, '商品', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 7, 1, '53a3e82b54b946c2b904f605875a275c', NULL, NULL, NULL, 'admin', '2022-06-02 11:13:25', 'normal', NULL, NULL, 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('402881fd812267500181226787d90001', 'test_note$1', 1, 2, '请假单@JS增强示例', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 12, 1, '05a3a30dada7411c9109306aa4117068', '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\"}', 'admin', '2022-06-02 11:13:48', 'admin', '2022-06-02 11:13:39', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('41de7884bf9a42b7a2c5918f9f765dff', 'test_order_customer', 3, 9, '订单客户', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', 0, NULL, 2, NULL, NULL, NULL, 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0}', 'admin', '2022-11-23 12:01:41', 'admin', '2019-04-20 11:41:19', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('56870166aba54ebfacb20ba6c770bd73', 'test_order_main', 2, 39, '测试订单主表', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, 'test_order_product,test_order_customer', NULL, NULL, NULL, NULL, 'bdfl_include', '2', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":900,\"commentStatus\":0,\"tableFixedAction\":0,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2025-11-27 18:19:46', 'admin', '2019-04-20 11:38:39', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('997ee931515a4620bc30a9c1246429a9', 'test_shoptype_tree', 1, 3, '商品分类', 'Y', 'Y', 'Y', 'Y', NULL, 'UUID', 'single', NULL, NULL, NULL, 'pid', 'has_child', 'type_name', 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0,\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2026-04-28 16:47:09', 'admin', '2020-05-03 00:56:56', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('d35109c3632c4952a19ecc094943dd71', 'test_demo', 1, 39, '测试用户表', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'group', NULL, NULL, NULL, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":900,\"commentStatus\":0,\"tableFixedAction\":0,\"tableFixedActionType\":\"right\"}', 'admin', '2023-09-16 21:25:25', 'admin', '2019-03-15 14:24:35', 'normal', 'N', '', 0, NULL);
-INSERT INTO `onl_cgform_head` VALUES ('deea5a8ec619460c9245ba85dbc59e80', 'test_order_product', 3, 12, '订单产品明细', 'N', 'Y', 'Y', 'N', NULL, 'UUID', 'single', 0, '', 1, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, NULL, 0, NULL, NULL, 'admin', '2022-10-29 17:13:01', 'admin', '2019-04-20 11:41:19', 'normal', NULL, NULL, 0, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('05a3a30dada7411c9109306aa4117068', 'test_note', 1, 32, '请假单@JS增强示例', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"modelFullscreen\":0,\"modalMinWidth\":0,\"commentStatus\":1,\"joinQuery\":0,\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"canResizeColumn\":0,\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":1,\"externalLinkActions\":\"add,edit,detail\",\"imageExportMode\":\"path\"}', 'admin', '2026-08-20 23:18:39', 'admin', '2020-05-06 11:34:31', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('3d447fa919b64f6883a834036c14aa67', 'test_enhance_select', 1, 8, '三级联动控件', 'N', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0,\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2026-04-28 16:47:51', 'admin', '2020-02-20 16:19:00', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('402880e570a5d7000170a5d700f50000', 'test_order_product$1', 1, 11, '订单产品明细', 'N', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, 1, 1, 'deea5a8ec619460c9245ba85dbc59e80', NULL, NULL, NULL, 'admin', '2020-03-04 21:58:16', NULL, NULL, NULL, 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('402880e5721355dd01721355dd390000', 'ces_order_goods$1', 1, 1, '订单商品', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 1, 1, '86bf17839a904636b7ed96201b2fa6ea', NULL, NULL, NULL, 'admin', '2020-05-14 21:18:14', 'normal', NULL, NULL, 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('402881fd812267500181226750e90000', 'ces_shop_goods$1', 1, 1, '商品', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 7, 1, '53a3e82b54b946c2b904f605875a275c', NULL, NULL, NULL, 'admin', '2022-06-02 11:13:25', 'normal', NULL, NULL, 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('402881fd812267500181226787d90001', 'test_note$1', 1, 2, '请假单@JS增强示例', 'Y', 'N', 'Y', 'N', NULL, 'UUID', 'single', NULL, NULL, NULL, NULL, NULL, NULL, 'temp', '1', NULL, 1, 12, 1, '05a3a30dada7411c9109306aa4117068', '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\"}', 'admin', '2022-06-02 11:13:48', 'admin', '2022-06-02 11:13:39', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('41de7884bf9a42b7a2c5918f9f765dff', 'test_order_customer', 3, 9, '订单客户', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', 0, NULL, 2, NULL, NULL, NULL, 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0}', 'admin', '2022-11-23 12:01:41', 'admin', '2019-04-20 11:41:19', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('56870166aba54ebfacb20ba6c770bd73', 'test_order_main', 2, 39, '测试订单主表', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'single', NULL, 'test_order_product,test_order_customer', NULL, NULL, NULL, NULL, 'bdfl_include', '2', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":900,\"commentStatus\":0,\"tableFixedAction\":0,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2025-11-27 18:19:46', 'admin', '2019-04-20 11:38:39', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('997ee931515a4620bc30a9c1246429a9', 'test_shoptype_tree', 1, 3, '商品分类', 'Y', 'Y', 'Y', 'Y', NULL, 'UUID', 'single', NULL, NULL, NULL, 'pid', 'has_child', 'type_name', 'temp', '1', NULL, 1, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":\"\",\"commentStatus\":0,\"tableFixedAction\":1,\"tableFixedActionType\":\"right\",\"formLabelLengthShow\":0,\"formLabelLength\":null,\"enableExternalLink\":0,\"externalLinkActions\":\"add,edit,detail\"}', 'admin', '2026-04-28 16:47:09', 'admin', '2020-05-03 00:56:56', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('d35109c3632c4952a19ecc094943dd71', 'test_demo', 1, 39, '测试用户表', 'Y', 'Y', 'Y', 'N', NULL, 'UUID', 'group', NULL, NULL, NULL, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, NULL, 0, NULL, '{\"reportPrintShow\":0,\"reportPrintUrl\":\"\",\"joinQuery\":0,\"modelFullscreen\":0,\"modalMinWidth\":900,\"commentStatus\":0,\"tableFixedAction\":0,\"tableFixedActionType\":\"right\"}', 'admin', '2023-09-16 21:25:25', 'admin', '2019-03-15 14:24:35', 'normal', 'N', '', 0, NULL, NULL);
+INSERT INTO `onl_cgform_head` VALUES ('deea5a8ec619460c9245ba85dbc59e80', 'test_order_product', 3, 12, '订单产品明细', 'N', 'Y', 'Y', 'N', NULL, 'UUID', 'single', 0, '', 1, NULL, NULL, NULL, 'bdfl_include', '1', NULL, 0, NULL, 0, NULL, NULL, 'admin', '2022-10-29 17:13:01', 'admin', '2019-04-20 11:41:19', 'normal', NULL, NULL, 0, NULL, NULL);
-- ----------------------------
-- Table structure for onl_cgform_index
@@ -4497,6 +4496,9 @@ CREATE TABLE `onl_drag_dataset_head` (
INSERT INTO `onl_drag_dataset_head` VALUES ('1011801324208574464', '大屏数据集', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2024-10-31 11:04:04', 'admin', NULL, NULL, NULL, 3);
INSERT INTO `onl_drag_dataset_head` VALUES ('1011805223195824128', '车辆归属地', '', '1011801324208574464', '', 'https://api.jeecg.com/mock/26/activering', '', '0', 'api', 'get', '2024-10-31 11:19:34', 'admin', '2024-11-15 11:50:54', 'admin', NULL, 3);
INSERT INTO `onl_drag_dataset_head` VALUES ('1011861146144657408', '拨打电话排行榜', '', '1011801324208574464', '', 'https://api.jeecg.com/mock/26/activering', '', '0', 'api', 'get', '2024-10-31 15:01:47', 'admin', NULL, NULL, NULL, 3);
+INSERT INTO `onl_drag_dataset_head` VALUES ('1225719143696388096', '联动演示-品类销售-源', '', '1225719143503450112', NULL, 'https://api.jeecg.com/mock/51/drilling/category_sales', '', '0', 'api', 'get', '2026-06-13 18:17:07', 'admin', '2026-06-24 13:55:00', 'admin', NULL, NULL);
+INSERT INTO `onl_drag_dataset_head` VALUES ('1225719210507456512', '联动演示-月度趋势-目标1', '', '1225719143503450112', NULL, 'https://api.jeecg.com/mock/51/drilling/category_trend?category=${category}', '', '0', 'api', 'get', '2026-06-13 18:17:23', 'admin', '2026-06-24 13:55:26', 'admin', NULL, NULL);
+INSERT INTO `onl_drag_dataset_head` VALUES ('1225728165669457920', '钻取演示-区域销售-3级', '', '1225728165459742720', NULL, 'https://api.jeecg.com/mock/51/drilling/drill_demo?region=${region}', '', '0', 'api', 'get', '2026-06-13 18:52:58', 'admin', '2026-06-24 13:57:27', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('1516317603268657153', '示例_参数查询', '', '1516743332632494082', '707437208002265088', 'select * from demo where name like \'%${name}%\'', '', '', 'sql', 'get', '2022-04-21 15:59:43', 'admin', '2022-04-21 17:28:44', 'admin', NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('1516743332632494082', '示例数据集', NULL, NULL, NULL, '0', NULL, '0', NULL, NULL, '2022-04-20 19:39:25', 'admin', NULL, NULL, NULL, NULL);
INSERT INTO `onl_drag_dataset_head` VALUES ('1516743766914924546', '统计近十日的登陆次数', '', '1516743332632494082', '707437208002265088', 'SELECT\n count(*) num,\n DATE_FORMAT(create_time, \'%Y-%m-%d\') AS `day`\nFROM\n sys_log\nWHERE\n log_type = 1\nAND create_time > DATE_SUB(NOW(), INTERVAL 10 DAY)\nGROUP BY\n DATE_FORMAT(create_time, \'%Y-%m-%d\')', '', '', 'sql', 'get', '2022-04-20 19:41:08', 'admin', '2023-06-06 15:25:30', 'admin', NULL, NULL);
@@ -4615,6 +4617,12 @@ INSERT INTO `onl_drag_dataset_item` VALUES ('1011861146174017536', '101186114614
INSERT INTO `onl_drag_dataset_item` VALUES ('1011861146207571968', '1011861146144657408', 'value', 'value', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 1, 'admin', '2024-10-31 15:01:47', NULL, NULL);
INSERT INTO `onl_drag_dataset_item` VALUES ('1017248926035136512', '1011805223195824128', 'name', 'name', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 0, 'admin', '2024-10-31 11:19:34', NULL, NULL);
INSERT INTO `onl_drag_dataset_item` VALUES ('1017248926102245376', '1011805223195824128', 'value', 'value', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 1, 'admin', '2024-10-31 11:19:34', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229639448961699840', '1225719143696388096', 'name', 'name', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 0, 'admin', '2026-06-13 18:17:07', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229639448999448576', '1225719143696388096', 'value', 'value', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 1, 'admin', '2026-06-13 18:17:07', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229639556176498688', '1225719210507456512', 'name', 'name', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 0, 'admin', '2026-06-13 18:17:23', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229639556201664512', '1225719210507456512', 'value', 'value', 'Integer', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 1, 'admin', '2026-06-13 18:17:23', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229640062881976320', '1225728165669457920', 'name', 'name', 'String', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 0, 'admin', '2026-06-13 18:52:58', NULL, NULL);
+INSERT INTO `onl_drag_dataset_item` VALUES ('1229640062911336448', '1225728165669457920', 'value', 'value', 'Integer', NULL, NULL, NULL, NULL, 'Y', NULL, NULL, NULL, 1, 'admin', '2026-06-13 18:52:58', NULL, NULL);
INSERT INTO `onl_drag_dataset_item` VALUES ('1516748630361407489', '1516748630344630273', 'column1', '项目性质', 'String', NULL, '', NULL, NULL, 'Y', NULL, 'Y', NULL, NULL, 'admin', '2022-04-20 20:00:28', NULL, NULL);
INSERT INTO `onl_drag_dataset_item` VALUES ('1516748630373990402', '1516748630344630273', 'column5', '保险公估费', 'Integer', NULL, '', NULL, NULL, 'Y', NULL, 'Y', NULL, NULL, 'admin', '2022-04-20 20:00:28', NULL, NULL);
INSERT INTO `onl_drag_dataset_item` VALUES ('1516748630382379010', '1516748630344630273', 'column4', '承保公估评估费', 'Integer', NULL, '', NULL, NULL, 'Y', NULL, 'Y', NULL, NULL, 'admin', '2022-04-20 20:00:28', NULL, NULL);
@@ -4869,6 +4877,8 @@ CREATE TABLE `onl_drag_dataset_param` (
-- ----------------------------
-- Records of onl_drag_dataset_param
-- ----------------------------
+INSERT INTO `onl_drag_dataset_param` VALUES ('1229639556218441728', '1225719210507456512', 'category', '品类', '', NULL, NULL, 'string', NULL, '', 'admin', '2026-06-13 18:17:23', NULL, NULL);
+INSERT INTO `onl_drag_dataset_param` VALUES ('1229640062928113664', '1225728165669457920', 'region', '区域编码', '', NULL, NULL, 'string', NULL, '', 'admin', '2026-06-13 18:52:58', NULL, NULL);
INSERT INTO `onl_drag_dataset_param` VALUES ('1517072834441019393', '1516317603268657153', 'name', 'name', '', NULL, NULL, NULL, NULL, NULL, 'admin', '2022-04-21 17:28:44', NULL, NULL);
INSERT INTO `onl_drag_dataset_param` VALUES ('1522831994378051586', '1522824721899511810', 'sex', 'sex', '1', NULL, NULL, NULL, NULL, 'sex', 'admin', '2022-05-07 14:50:53', NULL, NULL);
INSERT INTO `onl_drag_dataset_param` VALUES ('1522902540256075778', '1522853857095376898', 'createTime_begin', 'createTime_begin', '2011-01-01', NULL, NULL, NULL, NULL, NULL, 'admin', '2022-05-07 16:20:28', NULL, NULL);
@@ -4928,6 +4938,9 @@ INSERT INTO `onl_drag_page` VALUES ('1113362203690434560', '收视监控平台
INSERT INTO `onl_drag_page` VALUES ('1113362261391474688', '示例_首页副本6950', '/drag/page/view/1113362261391474688', NULL, '', 30, 'default', 'default', NULL, NULL, '[{\"pcX\":0,\"pcW\":13,\"moved\":false,\"pcY\":19,\"h\":25,\"i\":\"a80f65fe-cdc3-4fbe-a383-c526eda9886e\",\"mobileY\":0,\"mobileX\":0,\"component\":\"JQuickNav\",\"w\":24,\"x\":0,\"y\":0,\"pageCompId\":\"1113362261433417728\",\"key\":\"ebb10884-4571-4a62-976e-0de8d515d8bb\"},{\"pcX\":13,\"pcW\":11,\"moved\":false,\"pcY\":39,\"h\":51,\"i\":\"4d7f78a3-6520-45ae-85e4-ac0cfca514b3\",\"mobileY\":28,\"mobileX\":0,\"component\":\"JList\",\"w\":24,\"x\":0,\"y\":25,\"pageCompId\":\"1113362261462777856\",\"key\":\"8c0dfa3a-91a6-4429-8f29-80a225f6c862\"},{\"pcX\":0,\"pcW\":24,\"moved\":false,\"pcY\":0,\"h\":36,\"i\":\"1aab1f6b-316e-4046-9ec0-d68d35fa6142\",\"mobileY\":72,\"mobileX\":0,\"component\":\"JGrowCard\",\"w\":24,\"x\":0,\"y\":76,\"pageCompId\":\"1113362261483749376\",\"key\":\"ad8ecb70-a148-425d-8c0e-66a500da3f6b\"},{\"pcX\":0,\"pcW\":13,\"moved\":false,\"pcY\":47,\"h\":88,\"i\":\"ab1fcd58-e150-4816-b06a-5d2a62517510\",\"mobileY\":108,\"mobileX\":0,\"component\":\"JProjectCard\",\"w\":24,\"x\":0,\"y\":112,\"pageCompId\":\"1113362261496332288\",\"key\":\"dba2cb08-ac72-471d-b2d0-57b005d4abe1\"},{\"pcX\":13,\"pcW\":11,\"moved\":false,\"pcY\":19,\"h\":33,\"i\":\"e5a73961-e1ba-462c-bf86-78fbb94390d4\",\"mobileY\":144,\"mobileX\":0,\"component\":\"JWaitMatter\",\"w\":24,\"x\":0,\"y\":200,\"pageCompId\":\"1113362261525692416\",\"key\":\"a289d618-3c4c-4739-b922-1d2da94f616c\"},{\"pcX\":0,\"pcW\":24,\"moved\":false,\"pcY\":83,\"h\":41,\"i\":\"b1786985-070f-4f7b-8c46-b61c0ac9b8c7\",\"mobileY\":164,\"mobileX\":0,\"component\":\"JLine\",\"w\":24,\"x\":0,\"y\":233,\"pageCompId\":\"1113362261550858240\",\"key\":\"67ef02cb-e6af-4864-8c35-f389caee9c0c\"}]', NULL, '988299668956545024', '0', 'admin', '2025-08-07 17:10:59', 'admin', '2025-08-07 17:11:05', '', 0, 3, 0, 1);
INSERT INTO `onl_drag_page` VALUES ('1113362302680203264', '医美行业网络关注度副本4006', '/drag/page/view/1113362302680203264', NULL, '', 30, 'default', 'default', NULL, NULL, '[{\"pcX\":0,\"pcW\":24,\"moved\":false,\"pcY\":0,\"h\":8,\"i\":\"95729a29-9b15-4102-8ca0-4474bcdfd6ea\",\"orderNum\":0,\"mobileY\":0,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":0,\"pageCompId\":\"1113362302755700736\",\"key\":\"9ae1b314-88e0-433d-985f-7d492c0f1c6c\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":78,\"h\":6,\"i\":\"89ac8d65-5a17-4c62-83cc-05f29f629734\",\"orderNum\":13,\"mobileY\":43,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":43,\"pageCompId\":\"1113362302789255168\",\"key\":\"8f9eac53-d1e3-422f-8b7f-7ab4a451effb\"},{\"pcX\":16,\"pcW\":8,\"moved\":false,\"pcY\":77,\"h\":6,\"i\":\"f5f244fb-deed-48eb-8ada-78dadbe08bd8\",\"orderNum\":21,\"mobileY\":79,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":79,\"pageCompId\":\"1113362302806032384\",\"key\":\"5a0519bf-a79f-4160-b287-ab62629eb9ac\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":78,\"h\":6,\"i\":\"de17aaaf-b81c-48b3-8309-854b1d0b3d14\",\"orderNum\":20,\"mobileY\":184,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":184,\"pageCompId\":\"1113362302818615296\",\"key\":\"5f9de8c9-5dd0-4bed-9b47-ef2b576f28e7\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":8,\"h\":5,\"i\":\"6979473b-9eb1-4d90-887c-483378b89886\",\"orderNum\":20,\"mobileY\":8,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":8,\"pageCompId\":\"1113362302835392512\",\"key\":\"98452364-6f51-4cff-9414-e72cea2b48d2\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":8,\"h\":5,\"i\":\"fabcd19e-73a2-4a44-9035-d18bccfa77ba\",\"orderNum\":25,\"mobileY\":149,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":149,\"pageCompId\":\"1113362302847975424\",\"key\":\"c941de1d-f16f-4674-8995-0702ae12d431\"},{\"pcX\":16,\"pcW\":8,\"moved\":false,\"pcY\":8,\"h\":5,\"i\":\"e5eb46cd-4d1a-447e-b42a-6e390fa7080e\",\"orderNum\":25,\"mobileY\":114,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":114,\"pageCompId\":\"1113362302864752640\",\"key\":\"d27f9779-ea26-4b2a-abba-a1e91cef8221\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":13,\"h\":30,\"i\":\"f42ce4f9-0e56-47da-8220-254436afea6d\",\"orderNum\":25,\"mobileY\":154,\"mobileX\":0,\"component\":\"JSmoothLine\",\"w\":24,\"x\":0,\"y\":154,\"pageCompId\":\"1113362302889918464\",\"key\":\"5817d28c-8684-433a-9a09-89328f379c2b\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":43,\"h\":5,\"i\":\"102fa102-3bd7-4e86-83ea-77cc7ef23651\",\"orderNum\":44,\"mobileY\":219,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":219,\"pageCompId\":\"1113362302906695680\",\"key\":\"fd873bf0-1a7f-4f66-ac2a-615c00491700\"},{\"pcX\":16,\"pcW\":8,\"moved\":false,\"pcY\":48,\"h\":30,\"i\":\"6841deb3-d062-42d8-8a2b-b58f6da64159\",\"orderNum\":49,\"mobileY\":293,\"mobileX\":0,\"component\":\"JMultipleBar\",\"w\":24,\"x\":0,\"y\":286,\"pageCompId\":\"1113362302915084288\",\"key\":\"6dd95954-ce51-4957-b62f-b61420a8ad8e\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":43,\"h\":5,\"i\":\"201a48c1-924c-4da0-87e5-9dc0eb2579a9\",\"orderNum\":69,\"mobileY\":253,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":253,\"pageCompId\":\"1113362302936055808\",\"key\":\"2f3d3af4-a5a6-4764-8548-b8cc8b0030a2\"},{\"pcX\":16,\"pcW\":8,\"moved\":false,\"pcY\":43,\"h\":5,\"i\":\"7e2ecc0a-7930-4c76-9c9a-76af22a58f59\",\"orderNum\":78,\"mobileY\":288,\"mobileX\":0,\"component\":\"JText\",\"w\":24,\"x\":0,\"y\":281,\"pageCompId\":\"1113362302948638720\",\"key\":\"b4e7c69b-2853-403a-85c7-c1cdf9fec082\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":13,\"h\":30,\"i\":\"88e40b11-fc48-4d59-8ba8-5d106f3dfa2b\",\"orderNum\":53,\"mobileY\":13,\"mobileX\":0,\"component\":\"JMixLineBar\",\"w\":24,\"x\":0,\"y\":13,\"pageCompId\":\"1113362302961221632\",\"key\":\"b761af88-7505-404a-998f-dfa7d2a14367\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":48,\"h\":30,\"i\":\"000017d9-054b-492f-9327-537c64b25f0f\",\"orderNum\":54,\"mobileY\":49,\"mobileX\":0,\"component\":\"JDynamicBar\",\"w\":24,\"x\":0,\"y\":49,\"pageCompId\":\"1113362302977998848\",\"key\":\"7ea7c14c-e71c-41d9-ad5d-4ee8c8de4aa7\"},{\"pcX\":0,\"pcW\":8,\"moved\":false,\"pcY\":84,\"h\":29,\"i\":\"0331fad4-d098-4aa4-84e1-0583a0ed828f\",\"orderNum\":80,\"mobileY\":224,\"mobileX\":0,\"component\":\"JDynamicBar\",\"w\":24,\"x\":0,\"y\":224,\"pageCompId\":\"1113362302994776064\",\"key\":\"447a9788-884d-4f95-a5a9-fe7130078ef8\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":48,\"h\":23,\"i\":\"f36d52f6-942b-438b-881a-2fd02ebfd7f0\",\"orderNum\":109,\"mobileY\":258,\"mobileX\":0,\"component\":\"JRing\",\"w\":24,\"x\":0,\"y\":258,\"pageCompId\":\"1113362303007358976\",\"key\":\"5e2cd922-9a7b-4706-a1ae-66635c985aaa\"},{\"pcX\":8,\"pcW\":8,\"moved\":false,\"pcY\":84,\"h\":29,\"i\":\"7c994b82-cde8-41a2-9192-21f8c92085b9\",\"orderNum\":109,\"mobileY\":190,\"mobileX\":0,\"component\":\"JCommonTable\",\"w\":24,\"x\":0,\"y\":190,\"pageCompId\":\"1113362303015747584\",\"key\":\"62e6b38a-f2fe-4e30-8a76-b5fe5404c665\"},{\"pcX\":16,\"pcW\":8,\"moved\":false,\"pcY\":83,\"h\":29,\"i\":\"7759c7d3-2ea1-4f89-9c49-9866e9d6cc77\",\"orderNum\":113,\"mobileY\":85,\"mobileX\":0,\"component\":\"JRing\",\"w\":24,\"x\":0,\"y\":85,\"pageCompId\":\"1113362303024136192\",\"key\":\"23b4812c-a369-43df-8f70-526a8e347842\"},{\"pcX\":0,\"pcW\":12,\"moved\":false,\"pcY\":113,\"h\":30,\"i\":\"77b4c245-5240-4e96-8275-acdc5648c65b\",\"orderNum\":113,\"mobileY\":119,\"mobileX\":0,\"component\":\"JFunnel\",\"w\":24,\"x\":0,\"y\":119,\"pageCompId\":\"1113362303036719104\",\"key\":\"2c9e4290-51dd-4603-937e-4bb9ef72b04b\"}]', NULL, '988299668956545024', '0', 'admin', '2025-08-07 17:11:08', 'admin', '2025-08-07 17:11:12', '', 0, 75, 0, 1);
INSERT INTO `onl_drag_page` VALUES ('1151069555267260416', '集团综合数据大屏', '/drag/page/view/1151069555267260416', '#1E0047', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/背景_1756435878126.jpg', 100, 'dark', 'bigScreen', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/封面_1763554989082.png', '{\"width\":1920,\"height\":1080,\"waterMark\":{\"show\":false,\"content\":\"\",\"fontSize\":12,\"color\":\"#ffffff\",\"angle\":45},\"sysDefColor\":[{\"color\":\"#1e90ff\",\"color1\":\"#1e90ff\"},{\"color\":\"#90ee90\",\"color1\":\"#90ee90\"},{\"color\":\"#00ced1\",\"color1\":\"#00ced1\"},{\"color\":\"#e2bd84\",\"color1\":\"#e2bd84\"},{\"color\":\"#7a90e0\",\"color1\":\"#7a90e0\"},{\"color\":\"#3ba272\",\"color1\":\"#3ba272\"},{\"color\":\"#2be7ff\",\"color1\":\"#2be7ff\"},{\"color\":\"#0a8ada\",\"color1\":\"#0a8ada\"},{\"color\":\"#ffd700\",\"color1\":\"#ffd700\"}],\"layoutMode\":\"fullScreen\"}', '[{\"component\":\"JText\",\"visible\":true,\"w\":496,\"x\":705,\"h\":60,\"i\":\"8eca7087-2a7b-40d0-9732-7784fb4dbdfc\",\"y\":5,\"orderNum\":70,\"componentName\":\"文本\",\"pageCompId\":\"1151112776819200000\"},{\"component\":\"JTabToggle\",\"visible\":true,\"w\":680,\"x\":597,\"h\":70,\"i\":\"f695ef5a-9797-4a56-8a1f-3a4db443da22\",\"y\":62,\"orderNum\":70,\"componentName\":\"导航切换\",\"pageCompId\":\"1151112776861143040\",\"key\":\"299a2a16-346c-44ca-bd9c-6b62aaf8cf98\"},{\"visible\":false,\"h\":991.8710433763201,\"i\":\"es-drager-1762494714798-7\",\"props\":{\"elements\":[{\"component\":\"JStatsSummary\",\"visible\":true,\"w\":698,\"x\":602.672919109027,\"h\":85,\"i\":\"c1789d8c-8d56-410c-9a0e-90c65a2e20e1\",\"y\":48.61195779601541,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"4.9010360893832265%\",\"left\":\"31.130365064812537%\",\"width\":\"36.05437398342474%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.56966241404334%\"},\"componentName\":\"统计概览(背景模式)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": \\\"1\\\",\\n \\\"name\\\": \\\"项目总数\\\",\\n \\\"value\\\": 600,\\n \\\"suffix\\\": \\\"个\\\"\\n },\\n {\\n \\\"id\\\": \\\"2\\\",\\n \\\"name\\\": \\\"合同总数\\\",\\n \\\"value\\\": 900,\\n \\\"suffix\\\": \\\"个\\\"\\n },\\n {\\n \\\"id\\\": \\\"3\\\",\\n \\\"name\\\": \\\"收票总数\\\",\\n \\\"value\\\": 790,\\n \\\"suffix\\\": \\\"个\\\"\\n },\\n {\\n \\\"id\\\": \\\"4\\\",\\n \\\"name\\\": \\\"总金额\\\",\\n \\\"value\\\": 17790,\\n \\\"suffix\\\": \\\"万元\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":697.9999999999999,\"height\":85},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":713,\"dataType\":1,\"h\":129,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"layout\":{\"padding\":{\"top\":9,\"left\":20,\"bottom\":0,\"right\":20},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"contain\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"drag/lib/img/bg01.png\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"image\"}},\"highlight\":[],\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"card\":{\"padding\":{\"horizontal\":3,\"vertical\":15},\"borderColor\":\"#0F66FF59\",\"borderRadius\":0,\"shadow\":\"none\",\"borderWidth\":0,\"blur\":24,\"minWidth\":100,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0B2B6300\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"sections\":{\"middle\":{\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#15f0c5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#15f0c5\"},\"positiveColor\":\"#15F0C5\",\"fontSize\":14,\"negativeColor\":\"#D0021B\",\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"negativeGradient\":{\"endColor\":\"#D0021B\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#D0021B\"},\"fontColor\":\"#FFFFFF\"},\"alignItems\":\"center\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontColor\":\"#9ED3FF\"},\"label\":\"同比\"},\"paddingBottom\":10,\"show\":false,\"type\":\"compare\",\"align\":\"center\"},\"top\":{\"minHeight\":32,\"paddingBottom\":2,\"show\":true,\"paddingTop\":9,\"type\":\"value\",\"align\":\"center\",\"value\":{\"unit\":{\"fontSize\":18,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontWeight\":500,\"fontColor\":\"#9ED3FF\"},\"unitGap\":6,\"fontSize\":20,\"fontGradient\":{\"endColor\":\"#D8F1FF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#73E0FF\"},\"fontWeight\":600,\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"minHeight\":0,\"paddingBottom\":10,\"show\":true,\"label\":{\"fontSize\":16,\"fontColor\":\"#CFEAFF\"},\"paddingTop\":14,\"type\":\"label\",\"align\":\"center\"}}}}},{\"component\":\"JBreakRing\",\"visible\":true,\"w\":465.9999959429075,\"x\":1469.9648340688161,\"h\":188.99999576947263,\"i\":\"8400df78-833b-46c3-818b-94d611837818\",\"y\":34.6846393287222,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"3.4968899999999996%\",\"left\":\"75.929315%\",\"width\":\"24.070685%\",\"position\":\"absolute\",\"config\":{},\"height\":\"19.054895999999992%\"},\"componentName\":\"多色环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":400,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 500,\\n \\\"name\\\": \\\"施工费\\\"\\n },\\n {\\n \\\"value\\\": 700,\\n \\\"name\\\": \\\"设计费\\\"\\n },\\n {\\n \\\"value\\\": 1000,\\n \\\"name\\\": \\\"土地款\\\"\\n }\\n]\",\"size\":{\"width\":465.9999959429075,\"height\":188.99999576947263},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":550,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color1\":\"#00ccdf\",\"color\":\"#2A6FFEC0\"},{\"color1\":\"#00c039\",\"color\":\"#28F2E699\"},{\"color1\":\"#ff7701\",\"color\":\"#FFA80099\"}],\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"itemStyle\":{\"shadowBlur\":20,\"borderWidth\":4},\"label\":{\"color\":\"#EEF1FA\",\"show\":true,\"fontSize\":16,\"position\":\"center\"},\"labelLine\":{\"length2\":38,\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":22,\"show\":false},\"tooltip\":{\"trigger\":\"item\"},\"outRadius\":43,\"title\":{\"subtext\":\"\",\"top\":41,\"textAlign\":\"\",\"left\":\"center\",\"show\":true,\"customTop\":true,\"text\":\"成本分类\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontSize\":16,\"fontWeight\":\"bold\"},\"subtextStyle\":{\"color\":\"#EEF1FA\",\"fontSize\":24}},\"innerRadius\":46,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":80.00001018811254,\"x\":1170.8546088584762,\"h\":39.00000243327086,\"i\":\"es-drager-1763379841846-17\",\"y\":607.5369335982422,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.251604999999984%\",\"left\":\"60.47912600000001%\",\"width\":\"4.132306999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.931963%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":80.00001018811254,\"height\":39.00000243327086},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C3D3E6\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":80.00001018811254,\"x\":1070.83116610898,\"h\":39.00000243327086,\"i\":\"es-drager-1763379835852-16\",\"y\":407.4900435141388,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.08296599999999%\",\"left\":\"55.31253199999998%\",\"width\":\"4.132306999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.931963%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":80.00001018811254,\"height\":39.00000243327086},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C3D3E6\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":80.00001018811254,\"x\":955.6142713735522,\"h\":39.00000243327086,\"i\":\"es-drager-1763379828126-15\",\"y\":504.981246741806,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.911986%\",\"left\":\"49.361138%\",\"width\":\"4.132306999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.931963%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":80.00001018811254,\"height\":39.00000243327086},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C3D3E6\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":80.00001018811254,\"x\":799.8815821142322,\"h\":39.00000243327086,\"i\":\"es-drager-1763379820679-14\",\"y\":618.9320044052293,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"62.400451000000004%\",\"left\":\"41.31694799999999%\",\"width\":\"4.132306999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.931963%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":80.00001018811254,\"height\":39.00000243327086},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C3D3E6\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":809.3657576585699,\"h\":32.000001487878116,\"i\":\"es-drager-1763379792283-13\",\"y\":543.8839267883006,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.834136999999984%\",\"left\":\"41.806842%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":965.0984662775381,\"h\":32.000001487878116,\"i\":\"es-drager-1763379785352-12\",\"y\":428.6670457380076,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.218022%\",\"left\":\"49.85103299999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1186.669389396952,\"h\":32.000001487878116,\"i\":\"es-drager-1763379778444-11\",\"y\":531.2227325944438,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"53.55764099999999%\",\"left\":\"61.29602%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1087.9120482866356,\"h\":32.000001487878116,\"i\":\"es-drager-1763379772822-10\",\"y\":314.71628807458416,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"31.729556999999993%\",\"left\":\"56.194824999999994%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1163.1934345963189,\"h\":48.00000223181718,\"i\":\"es-drager-1763379765062-9\",\"y\":502.3681228031894,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.648532%\",\"left\":\"60.083396999999984%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":792.2204078520751,\"h\":48.00000223181718,\"i\":\"es-drager-1763379758530-8\",\"y\":507.432596513248,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.15913%\",\"left\":\"40.921219%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":951.7514601078782,\"h\":48.00000223181718,\"i\":\"es-drager-1763379754034-7\",\"y\":394.747952317984,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"39.79831399999999%\",\"left\":\"49.161609%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1072.0328194789686,\"h\":48.00000223181718,\"i\":\"es-drager-1763379749488-6\",\"y\":284.5955548964599,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.692797999999996%\",\"left\":\"55.374601999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":163.99999475010551,\"x\":1036.7666839863778,\"h\":43.00000013957801,\"i\":\"es-drager-1763379412964-5\",\"y\":754.5967136818532,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.07810699999999%\",\"left\":\"53.55297100000001%\",\"width\":\"8.471227999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同即将到期提醒\\\"\\n}\",\"size\":{\"width\":163.99999475010551,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":163.99999475010551,\"x\":716.5673937336227,\"h\":43.00000013957801,\"i\":\"es-drager-1763379399584-4\",\"y\":754.7256767549129,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.09110899999999%\",\"left\":\"37.013451%\",\"width\":\"8.471227999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目审批通过提醒\\\"\\n}\",\"size\":{\"width\":163.99999475010551,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":278.00000007233297,\"x\":998.8393905981011,\"h\":164.99999961291928,\"i\":\"es-drager-1763379229297-3\",\"y\":801.8241475579845,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.83955599999999%\",\"left\":\"51.59388100000001%\",\"width\":\"14.359765%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.635226999999997%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"JS-CG-12354653合同剩余3天\\\",\\n \\\"value\\\": 131.73\\n },\\n {\\n \\\"title\\\": \\\"JS-CG-12354653合同剩余3天\\\",\\n \\\"value\\\": 11.04\\n },\\n {\\n \\\"title\\\": \\\"JS-CG-12354653合同剩余3天\\\",\\n \\\"value\\\": 36.81\\n },\\n {\\n \\\"title\\\": \\\"JS-CG-12354653合同剩余3天\\\",\\n \\\"value\\\": 24.64\\n },\\n {\\n \\\"title\\\": \\\"JS-CG-12354653合同剩余3天\\\",\\n \\\"value\\\": 24.64\\n }\\n]\",\"size\":{\"width\":278.00000007233297,\"height\":164.99999961291928},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":13,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"italic\",\"fontColor\":\"#41AAE0\",\"marginLeft\":10},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":true},\"name\":\"标题\",\"width\":250,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"title\",\"marginLeft\":0}],\"itemsPerRow\":1,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"\",\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"height\":33,\"marginLeft\":37}}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":278.00000007233297,\"x\":667.2450113558968,\"h\":150.99999772213383,\"i\":\"782fa728-19d6-45f1-afc4-df366e048e7f\",\"y\":818.4126650668006,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.512003%\",\"left\":\"34.46576099999999%\",\"width\":\"14.359765%\",\"position\":\"absolute\",\"config\":{},\"height\":\"15.223752999999999%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"XXXXX项目通过竣工结算审批\\\",\\n \\\"value\\\": 131.73\\n },\\n {\\n \\\"title\\\": \\\"XXXXXXX项目通过竣工结算审批\\\",\\n \\\"value\\\": 11.04\\n },\\n {\\n \\\"title\\\": \\\"XXXXXXX项目通过竣工结算审批\\\",\\n \\\"value\\\": 36.81\\n },\\n {\\n \\\"title\\\": \\\"XXXXX项目通过竣T结算审批\\\",\\n \\\"value\\\": 24.64\\n },\\n {\\n \\\"title\\\": \\\"XX项目通过竣工结算审批\\\",\\n \\\"value\\\": 24.64\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":278.00000007233297,\"height\":150.99999772213383},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":13,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"italic\",\"fontColor\":\"#41AAE0\",\"marginLeft\":10},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":true},\"name\":\"标题\",\"width\":250,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"title\",\"marginLeft\":0}],\"itemsPerRow\":1,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"\",\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"height\":33,\"marginLeft\":37}}}},{\"component\":\"JImg\",\"visible\":true,\"w\":286.0000068990387,\"x\":990.8558007531537,\"h\":184.000003595944,\"i\":\"es-drager-1763378891880-2\",\"y\":797.6389179343269,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.417603%\",\"left\":\"51.181498000000005%\",\"width\":\"14.772995999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"18.550799000000005%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":286.0000068990387,\"height\":184.000003595944},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763552764377.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":297.9999880996249,\"x\":657.995300512122,\"h\":179.00000150370474,\"i\":\"es-drager-1763378858332-1\",\"y\":801.5662412492858,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.81355399999998%\",\"left\":\"33.987978%\",\"width\":\"15.392840999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"18.04670099999999%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":297.9999880996249,\"height\":179.00000150370474},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763552764377.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":87.99999765517,\"x\":1164.5720932307152,\"h\":120.00000062018773,\"i\":\"es-drager-1763118788337-7\",\"y\":499.0926174630956,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.318297%\",\"left\":\"60.154609999999984%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.098347%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":87.99999765517,\"height\":120.00000062018773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":87.99999765517,\"x\":793.599047126823,\"h\":120.00000062018773,\"i\":\"es-drager-1763118782377-6\",\"y\":509.2215748019232,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.339493999999995%\",\"left\":\"40.992430999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.098347%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":87.99999765517,\"height\":120.00000062018773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":87.99999765517,\"x\":948.1946087239393,\"h\":120.00000062018773,\"i\":\"es-drager-1763118776146-5\",\"y\":394.13364690597933,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"39.73638%\",\"left\":\"48.977883999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.098347%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":87.99999765517,\"height\":120.00000062018773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":87.99999765517,\"x\":1067.2098470962017,\"h\":120.00000062018773,\"i\":\"es-drager-1763118767012-4\",\"y\":290.3118366626732,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.26911099999999%\",\"left\":\"55.12547699999999%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.098347%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":87.99999765517,\"height\":120.00000062018773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":923.445466652849,\"h\":32.000001487878116,\"i\":\"es-drager-1763118663383-3\",\"y\":222.41851171132498,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"22.424135999999997%\",\"left\":\"47.699495999999996%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":902.5017538498712,\"h\":48.00000223181718,\"i\":\"es-drager-1763118651031-2\",\"y\":192.2977785332007,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"19.387376999999997%\",\"left\":\"46.617672999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":80.00001018811254,\"x\":911.429049110856,\"h\":39.00000243327086,\"i\":\"es-drager-1763118614581-1\",\"y\":305.06330981205195,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"30.756348%\",\"left\":\"47.078802%\",\"width\":\"4.132306999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.931963%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":80.00001018811254,\"height\":39.00000243327086},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C3D3E6\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":87.99999765517,\"x\":904.0093671015944,\"h\":120.00000062018773,\"i\":\"5bf358de-c9b6-45d3-8965-ca7a70dafc6b\",\"y\":194.2157099762253,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"19.580741999999994%\",\"left\":\"46.69554699999999%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.098347%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":87.99999765517,\"height\":120.00000062018773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JMultipleLine\",\"visible\":true,\"w\":512.0000109969051,\"x\":1344.6189907024152,\"h\":168.0000028520049,\"i\":\"32542357-d15f-4650-a311-f9249a18933e\",\"y\":257.5216908642207,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.963222999999996%\",\"left\":\"69.45472199999999%\",\"width\":\"26.446761999999996%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.937686000000003%\"},\"componentName\":\"对比折线图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 199,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 799,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 388,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 459,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 800,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 420,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"7月\\\",\\n \\\"value\\\": 580,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"8月\\\",\\n \\\"value\\\": 420,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"9月\\\",\\n \\\"value\\\": 700,\\n \\\"type\\\": \\\"目标成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 20,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 210,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 220,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 580,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 500,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 800,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"7月\\\",\\n \\\"value\\\": 810,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"8月\\\",\\n \\\"value\\\": 850,\\n \\\"type\\\": \\\"实际成本\\\"\\n },\\n {\\n \\\"name\\\": \\\"9月\\\",\\n \\\"value\\\": 990,\\n \\\"type\\\": \\\"实际成本\\\"\\n }\\n]\",\"size\":{\"width\":512.0000109969051,\"height\":168.0000028520049},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"name\":\"单位(万元)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#e2bd84\",\"color\":\"#44F0FFB3\"},{\"color1\":\"#3ba272\",\"color\":\"#AB315CB3\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":35,\"left\":20,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"symbol\":\"circle\",\"symbolSize\":6,\"lineType\":\"area\",\"label\":{\"position\":\"top\"}}],\"legend\":{\"t\":1},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JPie\",\"visible\":true,\"w\":450.00000164914417,\"x\":1373.739734956155,\"h\":299.99999659111404,\"i\":\"06345dbb-ae74-47bd-89e0-cb97aa16d150\",\"y\":503.14888401369353,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.727248%\",\"left\":\"70.95891999999999%\",\"width\":\"23.244223999999996%\",\"position\":\"absolute\",\"config\":{},\"height\":\"30.245866999999993%\"},\"componentName\":\"饼图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 179,\\n \\\"name\\\": \\\"前期阶段\\\"\\n },\\n {\\n \\\"value\\\": 79,\\n \\\"name\\\": \\\"施工阶段\\\"\\n },\\n {\\n \\\"value\\\": 19,\\n \\\"name\\\": \\\"审计阶段\\\"\\n },\\n {\\n \\\"value\\\": 17,\\n \\\"name\\\": \\\"竣工阶段\\\"\\n }\\n]\",\"size\":{\"width\":450.0000016491442,\"height\":299.99999659111404},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color1\":\"#326CF102\",\"color\":\"#326CF1\"},{\"color1\":\"#35B9FD00\",\"color\":\"#35B9FD\"},{\"color1\":\"#FFC94700\",\"color\":\"#FFC947\"},{\"color1\":\"#BD67FF00\",\"color\":\"#BD67FF\"}],\"grid\":{\"top\":49,\"left\":43,\"show\":false},\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":19},\"series\":[{\"data\":[],\"name\":\"\",\"emphasis\":{\"itemStyle\":{\"shadowOffsetX\":0,\"shadowBlur\":10,\"shadowColor\":\"rgba(0, 0, 0, 0.5)\"}},\"label\":{\"color\":\"#EEF1FA\",\"show\":true},\"type\":\"pie\",\"radius\":\"50%\"}],\"isRadius\":true,\"tooltip\":{\"trigger\":\"item\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"outRadius\":71,\"innerRadius\":53,\"title\":{\"subtext\":\"\",\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":140.99999690293086,\"x\":1645.6975307150763,\"h\":116.99999738110213,\"i\":\"es-drager-1763019222261-6\",\"y\":848.5416208558744,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"85.54959099999999%\",\"left\":\"85.00658199999998%\",\"width\":\"7.28319%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.795887999999998%\"},\"componentName\":\"基础环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 20\\n }\\n]\",\"size\":{\"width\":140.99999690293086,\"height\":116.99999738110212},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"color\":\"#1E90FF\",\"valueFontSize\":16,\"body\":{\"gradient\":{\"type\":\"linear\"}},\"valueFontColor\":\"#FFFFFF\",\"valueFontWeight\":\"normal\",\"bgColor\":\"#9AA7B8\",\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#4B0082\",\"enabledGradient\":true,\"type\":\"linear\",\"direction\":\"to bottom\",\"startColor\":\"#FF69B4\"}}}},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":140.99999690293086,\"x\":1492.6260380707386,\"h\":116.99999738110213,\"i\":\"es-drager-1763019215391-5\",\"y\":855.0011711071522,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"86.20083999999999%\",\"left\":\"77.09985299999998%\",\"width\":\"7.28319%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.795887999999998%\"},\"componentName\":\"基础环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 20\\n }\\n]\",\"size\":{\"width\":140.99999690293086,\"height\":116.99999738110212},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"valueFontWeight\":\"normal\",\"color\":\"#4FCFE3\",\"bgColor\":\"#99ABBF\",\"valueFontSize\":16,\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"valueFontColor\":\"#FFFFFF\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#00DDFF\",\"enabledGradient\":true,\"type\":\"linear\",\"direction\":\"to left\",\"startColor\":\"#00FFCC\"}}}},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":140.99999690293086,\"x\":1328.1594370773037,\"h\":116.99999738110213,\"i\":\"443b689e-bd4a-4d37-9ae6-dd76589a3b09\",\"y\":851.331773938313,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"85.830893%\",\"left\":\"68.60452299999999%\",\"width\":\"7.28319%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.795887999999998%\"},\"componentName\":\"基础环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 60\\n }\\n]\",\"size\":{\"width\":140.99999690293086,\"height\":116.99999738110212},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"color\":\"#00AEFF\",\"valueFontSize\":16,\"body\":{\"gradient\":{\"type\":\"linear\"}},\"valueFontColor\":\"#FFFFFF\",\"valueFontWeight\":\"normal\",\"bgColor\":\"#6C849E\",\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#0066CC\",\"enabledGradient\":true,\"type\":\"linear\",\"direction\":\"to bottom\",\"startColor\":\"#00D4FF\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":178.00000185692846,\"x\":1592.885087740047,\"h\":35.00000472696371,\"i\":\"es-drager-1763019064412-4\",\"y\":808.8382231534828,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.54671199999999%\",\"left\":\"82.27861699999998%\",\"width\":\"9.194381999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.5286850000000007%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"未审批流程数量\\\"\\n}\",\"size\":{\"width\":178.00000185692846,\"height\":35.00000472696371},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FF5A00\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1719.0199335729192,\"h\":48.00000223181718,\"i\":\"es-drager-1763019023655-3\",\"y\":470.7151273998363,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.457290999999984%\",\"left\":\"88.79396499999999%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"800\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1603.0937787623684,\"h\":32.000001487878116,\"i\":\"es-drager-1763019013776-2\",\"y\":481.71511613282587,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.56630499999999%\",\"left\":\"82.80593499999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":1387.361086701876,\"h\":39.99999690049243,\"i\":\"es-drager-1763019008535-1\",\"y\":502.4490098867766,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.65668699999999%\",\"left\":\"71.662515%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"已归档资料数\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1789.2133526339042,\"h\":32.000001487878116,\"i\":\"es-drager-1763018083020-24\",\"y\":813.4384516216891,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.010505%\",\"left\":\"92.41972399999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FF5A00\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1726.616640206237,\"h\":48.00000223181718,\"i\":\"es-drager-1763018077243-23\",\"y\":802.4384529699892,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.90148999999998%\",\"left\":\"89.18636399999998%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"100\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FF5A00\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":72.00000336140681,\"x\":1464.6588384609615,\"h\":48.00000223181718,\"i\":\"es-drager-1763018057189-21\",\"y\":802.567416043049,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.914492%\",\"left\":\"75.65523999999999%\",\"width\":\"3.719076%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"1000\\\"\\n}\",\"size\":{\"width\":72.00000336140681,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1515.8604812588278,\"h\":32.000001487878116,\"i\":\"es-drager-1763018049207-20\",\"y\":809.7690544528497,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.64055799999998%\",\"left\":\"78.30000099999998%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":178.00000185692846,\"x\":1306.871006376694,\"h\":35.00000472696371,\"i\":\"es-drager-1763018038037-18\",\"y\":811.4994230815718,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.81501299999998%\",\"left\":\"67.50489399999998%\",\"width\":\"9.194381999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.5286850000000007%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"本月采购任务数量\\\"\\n}\",\"size\":{\"width\":178.00000185692846,\"height\":35.00000472696371},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":true,\"startColor\":\"#0085FF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1776.6810972629544,\"h\":32.000001487878116,\"i\":\"es-drager-1763018002072-16\",\"y\":479.3118423508563,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.32400799999999%\",\"left\":\"91.77238499999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1543.1582629496838,\"h\":48.00000223181718,\"i\":\"es-drager-1763017986232-14\",\"y\":473.37631740921506,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.725590999999994%\",\"left\":\"79.710036%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"800\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":1725.543960813224,\"h\":39.99999690049243,\"i\":\"es-drager-1763017981686-13\",\"y\":502.57796304112605,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.669688%\",\"left\":\"89.13095599999998%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"需补录数量\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":1548.2872339334822,\"h\":39.99999690049243,\"i\":\"es-drager-1763017976329-12\",\"y\":503.8440765092855,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.797337%\",\"left\":\"79.97496699999999%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"未归档数据\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1.0000032732942556,\"x\":1677.4794909434468,\"h\":46.000003378663585,\"i\":\"es-drager-1763017967343-11\",\"y\":485.29425303671803,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.92715199999999%\",\"left\":\"86.64824199999998%\",\"width\":\"0.05165399999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.637699999999999%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1.0000032732942556,\"height\":46.000003378663585},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":2.0000065465885113,\"x\":1520.4806613256508,\"h\":46.99999784588518,\"i\":\"es-drager-1763017957814-10\",\"y\":487.8264898917473,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.18245099999999%\",\"left\":\"78.53865099999999%\",\"width\":\"0.10330799999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.738519000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":2.0000065465885113,\"height\":46.999997845885176},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1446.3528583792263,\"h\":32.000001487878116,\"i\":\"es-drager-1763017938561-8\",\"y\":481.97303236023504,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.592307999999996%\",\"left\":\"74.70966599999998%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1377.425560317069,\"h\":48.00000223181718,\"i\":\"es-drager-1763017918861-7\",\"y\":472.23915709540506,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.610943%\",\"left\":\"71.14930699999998%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"1230\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":1402.7479415743262,\"h\":48.00000223181718,\"i\":\"es-drager-1763017900379-6\",\"y\":170.90269362302482,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.230333999999996%\",\"left\":\"72.457305%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"2200\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":1470.4091186376554,\"h\":32.000001487878116,\"i\":\"es-drager-1763017893992-5\",\"y\":181.90268235601428,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.339347999999998%\",\"left\":\"75.95226399999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":1334.3129980877375,\"h\":39.99999690049243,\"i\":\"es-drager-1763017881010-4\",\"y\":173.38686440729214,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.480787%\",\"left\":\"68.92237799999998%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"总额\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#8699B0\",\"letterSpacing\":0,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":184.99998605069177,\"x\":389.9085438694022,\"h\":43.00000013957801,\"i\":\"es-drager-1763017409384-5\",\"y\":739.5322357873163,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.55931299999999%\",\"left\":\"20.140269999999997%\",\"width\":\"9.555958000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"9000万元(不含税)\\\"\\n}\",\"size\":{\"width\":184.99998605069177,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":152.9999974631653,\"x\":244.3048032410551,\"h\":43.00000013957801,\"i\":\"es-drager-1763017400479-4\",\"y\":740.7983591741861,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.68696299999999%\",\"left\":\"12.619278999999997%\",\"width\":\"7.903035999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"9000万元(含税)\\\"\\n}\",\"size\":{\"width\":152.9999974631653,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":104.00001130858149,\"x\":146.94255710654164,\"h\":43.00000013957801,\"i\":\"es-drager-1763017390547-3\",\"y\":738.3950754735062,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.444665%\",\"left\":\"7.590145999999999%\",\"width\":\"5.371999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"金额总计:\\\"\\n}\",\"size\":{\"width\":104.00001130858149,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":2.0000065465885113,\"x\":356.9167604994608,\"h\":46.99999784588518,\"i\":\"es-drager-1763017303728-1\",\"y\":449.8429073101763,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.35296299999999%\",\"left\":\"18.436117999999997%\",\"width\":\"0.10330799999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.738519000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":2.0000065465885113,\"height\":46.999997845885176},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":2.0000065465885113,\"x\":188.6517965095428,\"h\":46.99999784588518,\"i\":\"400b89c1-02d8-4517-95e5-f56241d063f2\",\"y\":447.4396236094965,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.110665000000004%\",\"left\":\"9.744587999999998%\",\"width\":\"0.10330799999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.738519000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":2.0000065465885113,\"height\":46.999997845885176},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":0,\"x\":197.5146628609848,\"h\":57.99999649758506,\"i\":\"es-drager-1763016996412-1\",\"y\":449.71395415582697,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.339961999999986%\",\"left\":\"10.202389%\",\"width\":\"0%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.847534%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":0,\"height\":57.99999649758506},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#F0111100\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":95.0000012085815,\"x\":373.7924884840798,\"h\":35.999999194185264,\"i\":\"es-drager-1763016703941-11\",\"y\":504.09847159449055,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.82298499999999%\",\"left\":\"19.307814%\",\"width\":\"4.907114%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6295039999999985%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同类型\\\"\\n}\",\"size\":{\"width\":95.0000012085815,\"height\":35.999999194185264},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":388.65065072110207,\"h\":39.99999690049243,\"i\":\"es-drager-1763016588015-10\",\"y\":460.9249733720053,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"46.470252%\",\"left\":\"20.075294999999997%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"累计未付款\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":222.78897411151232,\"h\":39.99999690049243,\"i\":\"es-drager-1763016583354-9\",\"y\":460.9249733720053,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"46.470252%\",\"left\":\"11.507903999999998%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"累计已付款\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":447.38451316379843,\"h\":32.000001487878116,\"i\":\"es-drager-1763016573207-8\",\"y\":442.7233263917942,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.635169999999995%\",\"left\":\"23.109123999999998%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":275.1922509197187,\"h\":32.000001487878116,\"i\":\"es-drager-1763016567041-7\",\"y\":442.7233263917942,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.635169999999995%\",\"left\":\"14.214733999999998%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":382.25555873847594,\"h\":48.00000223181718,\"i\":\"es-drager-1763016557285-6\",\"y\":430.45721427193484,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.39850599999999%\",\"left\":\"19.744963999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"1230\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":217.66002248736228,\"h\":48.00000223181718,\"i\":\"es-drager-1763016551841-5\",\"y\":431.7233277400944,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.52615500000001%\",\"left\":\"11.242974%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"800\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":0,\"x\":187.5146301280422,\"h\":57.99999649758506,\"i\":\"es-drager-1763016537923-4\",\"y\":439.7139499713487,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.331765999999995%\",\"left\":\"9.685848999999997%\",\"width\":\"0%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.847534%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":0,\"height\":57.99999649758506},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552829448.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":105.99999849552168,\"x\":53.257889122766706,\"h\":39.99999690049243,\"i\":\"es-drager-1763016385655-3\",\"y\":461.05392652635453,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"46.48325299999999%\",\"left\":\"2.7509739999999994%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同总金额\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#7B959F\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":113.25791128358735,\"h\":32.000001487878116,\"i\":\"es-drager-1763016372630-2\",\"y\":437.787805836085,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.137573%\",\"left\":\"5.850204999999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":50.66119885592028,\"h\":48.00000223181718,\"i\":\"es-drager-1763016365675-1\",\"y\":426.787807184385,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.02855799999999%\",\"left\":\"2.6168449999999996%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"1230\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JLine\",\"visible\":true,\"w\":552.0000064111372,\"x\":15.451341860937866,\"h\":233.00000029498267,\"i\":\"3929a3a9-910f-45e8-8950-5ba4570f2579\",\"y\":758.8710430813375,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.509043%\",\"left\":\"0.7981209999999999%\",\"width\":\"28.512914999999992%\",\"position\":\"absolute\",\"config\":{},\"height\":\"23.490956999999995%\"},\"componentName\":\"基础折线图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 150,\\n \\\"name\\\": \\\"1日\\\"\\n },\\n {\\n \\\"value\\\": 830,\\n \\\"name\\\": \\\"5日\\\"\\n },\\n {\\n \\\"value\\\": 300,\\n \\\"name\\\": \\\"10日\\\"\\n },\\n {\\n \\\"value\\\": 780,\\n \\\"name\\\": \\\"15日\\\"\\n },\\n {\\n \\\"value\\\": 900,\\n \\\"name\\\": \\\"20\\\"\\n },\\n {\\n \\\"value\\\": 430,\\n \\\"name\\\": \\\"25日\\\"\\n },\\n {\\n \\\"value\\\": 900,\\n \\\"name\\\": \\\"30\\\"\\n }\\n]\",\"size\":{\"width\":552.0000064111372,\"height\":233.00000029498267},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#89B9F063\"},\"show\":true,\"interval\":2},\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#46B4F9\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":1,\"containLabel\":true},\"series\":[{\"symbol\":\"circle\",\"areaStyleOpacity\":0.1,\"data\":[],\"symbolSize\":6,\"lineType\":\"area\",\"itemStyle\":{\"color\":\"#64b5f6\"},\"label\":{\"color\":\"#EEF1FA\",\"position\":\"top\"},\"type\":\"line\"}],\"tooltip\":{\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"subtext\":\"\",\"textAlign\":\"left\",\"left\":10,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JRing\",\"visible\":true,\"w\":472.99999949631894,\"x\":0,\"h\":240.00000124037547,\"i\":\"d8501550-3c20-41f7-92c8-06ba3e833884\",\"y\":468.9918010555223,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.283546%\",\"left\":\"0%\",\"width\":\"24.432261999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.196694%\"},\"componentName\":\"饼状环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 350,\\n \\\"name\\\": \\\"监理\\\"\\n },\\n {\\n \\\"value\\\": 250,\\n \\\"name\\\": \\\"施工\\\"\\n },\\n {\\n \\\"value\\\": 400,\\n \\\"name\\\": \\\"采购\\\"\\n }\\n]\",\"size\":{\"width\":472.99999949631894,\"height\":240.00000124037547},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":480,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color1\":\"#1E90FF38\",\"color\":\"#2A7DFB\"},{\"color1\":\"#2BE4E3\",\"color\":\"#2BE4E34C\"},{\"color1\":\"#FCA52F4F\",\"color\":\"#FCA52F\"}],\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"label\":{\"color\":\"#EEF1FA\",\"show\":true,\"position\":\"center\"},\"labelLine\":{\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":31,\"show\":true},\"tooltip\":{\"trigger\":\"item\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"outRadius\":65,\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"innerRadius\":77,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":154.00000073645958,\"x\":1341.18520860272,\"h\":35.999999194185264,\"i\":\"es-drager-1762488458149-6\",\"y\":766.0480731705519,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"77.23262799999999%\",\"left\":\"69.27735399999999%\",\"width\":\"7.95469%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6295039999999985%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"采购与审批提醒\\\"\\n}\",\"size\":{\"width\":154.00000073645958,\"height\":35.999999194185264},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":192.00000896375147,\"x\":1348.781934595686,\"h\":35.999999194185264,\"i\":\"es-drager-1762488430111-5\",\"y\":434.1688155536699,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.772707999999994%\",\"left\":\"69.669754%\",\"width\":\"9.917535999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6295039999999985%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"档案归档与资料管理\\\"\\n}\",\"size\":{\"width\":192.0000089637515,\"height\":35.999999194185264},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":180.00002776316535,\"x\":1316.2579190479719,\"h\":35.999999194185264,\"i\":\"es-drager-1762488401037-4\",\"y\":11.532246572286056,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.1626759999999992%\",\"left\":\"67.98976399999998%\",\"width\":\"9.297691%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6295039999999985%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"成本与投资控制\\\"\\n}\",\"size\":{\"width\":180.00002776316535,\"height\":35.999999194185264},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":95.0000012085815,\"x\":687.9191023369988,\"h\":35.999999194185264,\"i\":\"es-drager-1762488353166-3\",\"y\":711.8710452354521,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"71.770524%\",\"left\":\"35.53365699999999%\",\"width\":\"4.907114%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6295039999999985%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"实时动态\\\"\\n}\",\"size\":{\"width\":95.0000012085815,\"height\":35.999999194185264},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":104.00001130858149,\"x\":34.386878345744435,\"h\":43.00000013957801,\"i\":\"es-drager-1762488324502-2\",\"y\":696.7420858043853,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.24522899999998%\",\"left\":\"1.776214%\",\"width\":\"5.371999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.335241%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"金额统计\\\"\\n}\",\"size\":{\"width\":104.00001130858149,\"height\":43.00000013957801},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":169.99999503022275,\"x\":36.71747024670575,\"h\":60.000005269449076,\"i\":\"es-drager-1762488293431-1\",\"y\":373.32239712935564,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"37.63819899999999%\",\"left\":\"1.896598%\",\"width\":\"8.781150999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.049174%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同与资金执行\\\"\\n}\",\"size\":{\"width\":169.99999503022275,\"height\":60.000005269449076},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":559.9999938781947,\"x\":1314.9191025697774,\"h\":37.000003580117294,\"i\":\"es-drager-1762486958682-7\",\"y\":767.3141866387114,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"77.360277%\",\"left\":\"67.92060899999998%\",\"width\":\"28.926144999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422332997632\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":559.9999938781947,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":559.9999938781947,\"x\":1326.5803092847598,\"h\":37.000003580117294,\"i\":\"es-drager-1762486938386-6\",\"y\":436.43494332647174,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.00117799999999%\",\"left\":\"68.522955%\",\"width\":\"28.926144999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422374940672\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":559.9999938781947,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":559.9999938781947,\"x\":1306.0562749376322,\"h\":37.000003580117294,\"i\":\"es-drager-1762486909420-5\",\"y\":15.532234359882779,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.565952999999999%\",\"left\":\"67.46281%\",\"width\":\"28.926144999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422395912192\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":559.9999938781947,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":623.9999904128958,\"x\":662.9191173028839,\"h\":37.000003580117294,\"i\":\"es-drager-1762486901803-4\",\"y\":715.8710429417594,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.173802%\",\"left\":\"34.24231199999999%\",\"width\":\"32.23199%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422416883712\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":623.9999904128958,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":559.9999938781947,\"x\":12.653001497397423,\"h\":37.000003580117294,\"i\":\"es-drager-1762486889055-3\",\"y\":702.7420922825565,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.85014699999999%\",\"left\":\"0.6535759999999999%\",\"width\":\"28.926144999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422433660928\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":559.9999938781947,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":559.9999938781947,\"x\":23.919097150222747,\"h\":37.000003580117294,\"i\":\"es-drager-1762486883913-2\",\"y\":386.3223946342091,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"38.94885299999999%\",\"left\":\"1.2355129999999999%\",\"width\":\"28.926144999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422450438144\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":559.9999938781947,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JPictorialBar\",\"visible\":true,\"w\":450.00000164914417,\"x\":191.58031114825323,\"h\":224.00000049643637,\"i\":\"68308968-04f1-4f24-b8de-632455eb043c\",\"y\":73.06447439212201,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"7.366327999999999%\",\"left\":\"9.895856999999998%\",\"width\":\"23.244223999999996%\",\"position\":\"absolute\",\"config\":{},\"height\":\"22.583580999999995%\"},\"componentName\":\"象形柱图\",\"pageCompId\":\"1146619422463021056\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/pictogram\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"前期\\\",\\n \\\"value\\\": 3900,\\n \\\"symbol\\\": \\\"\\\",\\n \\\"symbolSize\\\": [\\n 60,\\n 60\\n ]\\n },\\n {\\n \\\"name\\\": \\\"统计\\\",\\n \\\"value\\\": 3000,\\n \\\"symbol\\\": \\\"\\\",\\n \\\"symbolSize\\\": [\\n 65,\\n 35\\n ]\\n },\\n {\\n \\\"name\\\": \\\"施工\\\",\\n \\\"value\\\": 2000,\\n \\\"symbol\\\": \\\"\\\",\\n \\\"symbolSize\\\": [\\n 50,\\n 60\\n ]\\n },\\n {\\n \\\"name\\\": \\\"竣工\\\",\\n \\\"value\\\": 2900,\\n \\\"symbol\\\": \\\"\\\",\\n \\\"symbolSize\\\": [\\n 50,\\n 30\\n ]\\n }\\n]\",\"size\":{\"width\":450.0000016491442,\"height\":224.00000049643634},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"show\":true,\"splitLine\":{\"lineStyle\":{\"color\":\"#4A90E242\"},\"show\":true},\"name\":\"单位(个)\",\"yCustomUnit\":\"个\",\"yUnit\":\"CUSTOM\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"type\":\"category\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":33,\"left\":29,\"bottom\":18,\"right\":50,\"containLabel\":true},\"series\":[{\"barCategoryGap\":\"22%\"}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"barOpacity\":0.8,\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"barColor\":\"#4A90E2\",\"body\":{\"gradient\":{\"type\":\"linear\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"barGradient\":{\"endColor\":\"#7357FB68\",\"enabled\":true,\"startColor\":\"#06E5FF\",\"direction\":\"to bottom\"}}}},{\"visible\":true,\"h\":39.99999690049243,\"i\":\"b0c2258f-39ba-48dc-95b1-5094042732c1\",\"orderNum\":70,\"component\":\"JText\",\"w\":105.99999849552168,\"x\":63.515831090363434,\"y\":173.773743707761,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.519791999999995%\",\"left\":\"3.2808360000000003%\",\"width\":\"5.475305999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.032781999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422479798272\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"在建项目数\\\"\\n}\",\"size\":{\"width\":105.9999984955217,\"height\":39.99999690049243},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#879FA9\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":49.00000551423213,\"x\":126.0480565295428,\"h\":32.000001487878116,\"i\":\"f5a20b4d-547f-403e-8164-dcfcafe4d980\",\"y\":154.30597334068014,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.55706%\",\"left\":\"6.510864999999999%\",\"width\":\"2.5310379999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.226226%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422496575488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":49.00000551423213,\"height\":32.000001487878116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#7A9AE9\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#F1F0FF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":87.99999765517,\"x\":52.05629383172334,\"h\":48.00000223181718,\"i\":\"6b21b6f5-8acb-4f3e-8b78-8c294a480972\",\"y\":142.03986122082082,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"14.320396000000002%\",\"left\":\"2.688907%\",\"width\":\"4.545537%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.839339%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422517547008\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"3531\\\"\\n}\",\"size\":{\"width\":87.99999765517,\"height\":48.00000223181718},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"fontFamily\":\"DIGITALDREAMFAT\",\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#7A9AE9\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#F1F0FF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":28,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":144.99999063645956,\"x\":39.84641532426729,\"h\":59.999995350738644,\"i\":\"291a3240-8c51-43d7-8439-01a320e34d6d\",\"y\":0,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"2.0582199999999995%\",\"width\":\"7.489804999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.049173%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146619422542712832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目总体概览\\\"\\n}\",\"size\":{\"width\":144.99999063645956,\"height\":59.99999535073864},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":571.9999944384291,\"x\":18.185233955287224,\"h\":37.000003580117294,\"i\":\"7d88daeb-170a-488b-83a6-a5602963ead6\",\"y\":14.266120891723347,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.438304%\",\"left\":\"0.939337%\",\"width\":\"29.545990999999994%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7303240000000013%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146619422567878656\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":571.9999944384291,\"height\":37.000003580117294},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":165.00001738304806,\"x\":31.910876126400943,\"h\":145.00000116267307,\"i\":\"3b982fd0-aee7-496b-8e5e-6c2428fdf509\",\"y\":106.8534541686754,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"10.772917999999999%\",\"left\":\"1.6483189999999999%\",\"width\":\"8.522882999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"14.618835999999996%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":165.00001738304806,\"height\":145.00000116267307},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/组 146 拷贝_1763552659762.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1162.000009076858,\"x\":401.48886597378663,\"h\":774.9999969796257,\"i\":\"es-drager-1762944604977-2\",\"y\":26.95897560928492,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"2.717992000000001%\",\"left\":\"20.738437999999995%\",\"width\":\"60.021751999999985%\",\"position\":\"absolute\",\"config\":{},\"height\":\"78.13515699999999%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1162.000009076858,\"height\":774.9999969796257},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/建设地图背景_1763552692372.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}}]},\"component\":\"JGroup\",\"w\":1935.9648300117237,\"x\":-2,\"y\":84,\"componentName\":\"建设\",\"pageCompId\":\"1151112776882114560\",\"equalProportion\":false,\"key\":\"3eb04442-3a1d-48c3-8729-1e6ccdf2407d\",\"group\":true},{\"visible\":false,\"h\":993.0175920371283,\"i\":\"es-drager-1762481722941-1\",\"props\":{\"elements\":[{\"component\":\"JBreakRing\",\"visible\":true,\"w\":714.0000045348538,\"x\":0,\"h\":200.000004320926,\"i\":\"aca7fa88-9971-4e8c-8a35-8df42aef1ae2\",\"y\":793.0175877162023,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"79.85936946890986%\",\"left\":\"0%\",\"width\":\"35.018293000000014%\",\"position\":\"absolute\",\"config\":{},\"height\":\"20.14063053109014%\"},\"componentName\":\"多色环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":400,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 109,\\n \\\"name\\\": \\\"受限空间\\\"\\n },\\n {\\n \\\"value\\\": 171,\\n \\\"name\\\": \\\"临电\\\"\\n },\\n {\\n \\\"value\\\": 73,\\n \\\"name\\\": \\\"动火\\\"\\n },\\n {\\n \\\"value\\\": 29,\\n \\\"name\\\": \\\"高处\\\"\\n },\\n {\\n \\\"value\\\": 73,\\n \\\"name\\\": \\\"动土\\\"\\n },\\n {\\n \\\"value\\\": 88,\\n \\\"name\\\": \\\"吊装\\\"\\n },\\n {\\n \\\"value\\\": 4,\\n \\\"name\\\": \\\"断路\\\"\\n }\\n]\",\"size\":{\"width\":714.0000045348538,\"height\":200.000004320926},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":550,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color\":\"#326CF1B3\"},{\"color\":\"#0036FFB3\"},{\"color\":\"#FC00FFB3\"},{\"color\":\"#FF5B01B3\"},{\"color\":\"#FFEB0BB3\"},{\"color\":\"#00FF96B3\"},{\"color\":\"#00FCFFB3\"}],\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"itemStyle\":{\"shadowBlur\":21,\"borderWidth\":5},\"label\":{\"color\":\"#EEF1FA\",\"show\":true,\"fontSize\":12,\"position\":\"center\"},\"labelLine\":{\"length2\":36,\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":13},\"tooltip\":{\"trigger\":\"item\"},\"outRadius\":68,\"title\":{\"subtext\":\"{total}条\",\"top\":33,\"textAlign\":\"\",\"left\":\"center\",\"show\":true,\"customTop\":true,\"text\":\"总数\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontSize\":22,\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\",\"fontSize\":24}},\"innerRadius\":60,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JListProgress\",\"visible\":true,\"w\":498.00000950250893,\"x\":878.5580325518055,\"h\":71.00000054406586,\"i\":\"es-drager-1763373026447-1\",\"y\":619.4302483462973,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"62.37857751095483%\",\"left\":\"43.089079000000005%\",\"width\":\"24.424524000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.14992373885469%\"},\"componentName\":\"列表进度图\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"作业投入\\\",\\n \\\"total\\\": 19,\\n \\\"date\\\": \\\"2025-12-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-15\\\",\\n \\\"value\\\": 6\\n },\\n {\\n \\\"title\\\": \\\"作业进度\\\",\\n \\\"total\\\": 685,\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"endLabel\\\": \\\"2025-05-30\\\",\\n \\\"value\\\": 685\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":498.00000950250893,\"height\":71.00000054406586},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1200,\"dataType\":1,\"h\":325,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"beginFields\":[{\"name\":\"名称\",\"style\":{\"letterSpacing\":0,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\"}],\"endCurrent\":0,\"endInfo\":{\"width\":41},\"scroll\":{\"count\":1,\"interval\":3000,\"enabled\":false,\"direction\":\"down\"},\"centerTopFields\":[],\"body\":{\"gradient\":{\"type\":\"linear\"}},\"endFields\":[{\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"value\",\"style\":{\"letterSpacing\":0,\"fontSize\":15,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#CFEAFF\",\"fontWeight\":\"normal\"},\"key\":\"value\",\"marginLeft\":0}],\"beginCurrent\":0,\"progressSection\":{\"marginRight\":8,\"marginLeft\":8},\"bar\":{\"border\":{\"padding\":8,\"color\":\"#4ECBFC5E\",\"width\":2,\"enabled\":false},\"total\":{\"field\":\"total\",\"type\":\"field\",\"value\":0},\"borderRadius\":6,\"background\":{\"color\":\"#5A97FC4F\",\"gradient\":{\"endColor\":\"#07203D\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#143B6E\"}},\"indicatorColor\":\"#DCFEFFB5\",\"exceed\":{\"indicatorColor\":\"#FEF8C9E1\",\"fill\":{\"color\":\"#FFB347\",\"gradient\":{\"endColor\":\"#FEAF24\",\"enabled\":true,\"startColor\":\"#FEF6C8\",\"direction\":\"to right\"}},\"percent\":70,\"enabled\":true},\"indicatorSize\":15,\"fill\":{\"color\":\"#33C9FF\",\"gradient\":{\"endColor\":\"#24E5F1\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#C5FDFE\"}},\"valueField\":\"value\",\"height\":4},\"centerTopInfo\":{\"layout\":\"horizontal\"},\"centerTopCurrent\":0,\"row\":{\"marginRight\":0,\"padding\":\"0 0\",\"marginBottom\":0,\"marginTop\":10,\"height\":20,\"marginLeft\":0},\"beginInfo\":{\"layout\":\"vertical\",\"width\":85}}}},{\"component\":\"JListProgress\",\"visible\":true,\"w\":498.00000950250893,\"x\":881.2192292752404,\"h\":71.00000054406586,\"i\":\"d99071e1-0ca9-4ec4-8eb5-97b53b13ff72\",\"y\":535.9953136910605,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"53.976416731096535%\",\"left\":\"43.219598000000005%\",\"width\":\"24.424524000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.14992373885469%\"},\"componentName\":\"列表进度图\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"作业投入\\\",\\n \\\"total\\\": 19,\\n \\\"date\\\": \\\"2025-12-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-15\\\",\\n \\\"value\\\": 6\\n },\\n {\\n \\\"title\\\": \\\"作业进度\\\",\\n \\\"total\\\": 685,\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"endLabel\\\": \\\"2025-05-30\\\",\\n \\\"value\\\": 685\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":498.00000950250893,\"height\":71.00000054406586},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1200,\"dataType\":1,\"h\":325,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"beginFields\":[{\"name\":\"名称\",\"style\":{\"letterSpacing\":0,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\"}],\"endCurrent\":0,\"endInfo\":{\"width\":41},\"scroll\":{\"count\":1,\"interval\":3000,\"enabled\":false,\"direction\":\"down\"},\"centerTopFields\":[],\"body\":{\"gradient\":{\"type\":\"linear\"}},\"endFields\":[{\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"value\",\"style\":{\"letterSpacing\":0,\"fontSize\":15,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#CFEAFF\",\"fontWeight\":\"normal\"},\"key\":\"value\",\"marginLeft\":0}],\"beginCurrent\":0,\"progressSection\":{\"marginRight\":8,\"marginLeft\":8},\"bar\":{\"border\":{\"padding\":8,\"color\":\"#4ECBFC5E\",\"width\":2,\"enabled\":false},\"total\":{\"field\":\"total\",\"type\":\"field\",\"value\":0},\"borderRadius\":6,\"background\":{\"color\":\"#5A97FC4F\",\"gradient\":{\"endColor\":\"#07203D\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#143B6E\"}},\"indicatorColor\":\"#DCFEFFB3\",\"exceed\":{\"indicatorColor\":\"#FEF8C9BD\",\"fill\":{\"color\":\"#FFB347\",\"gradient\":{\"endColor\":\"#FEAF24\",\"enabled\":true,\"startColor\":\"#FEF6C8\",\"direction\":\"to right\"}},\"percent\":70,\"enabled\":true},\"indicatorSize\":15,\"fill\":{\"color\":\"#33C9FF\",\"gradient\":{\"endColor\":\"#24E5F1\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#C5FDFE\"}},\"valueField\":\"value\",\"height\":4},\"centerTopInfo\":{\"layout\":\"horizontal\"},\"centerTopCurrent\":0,\"row\":{\"marginRight\":0,\"padding\":\"0 0\",\"marginBottom\":0,\"marginTop\":10,\"height\":20,\"marginLeft\":0},\"beginInfo\":{\"layout\":\"vertical\",\"width\":85}}}},{\"component\":\"JImg\",\"visible\":true,\"w\":323.0000073915475,\"x\":906.8179276953341,\"h\":2.99999709522538,\"i\":\"es-drager-1762941799018-34\",\"y\":242.1698934071885,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.387271217460356%\",\"left\":\"44.475092%\",\"width\":\"15.841609000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"0.3021091589194335%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":323.0000073915475,\"height\":2.99999709522538},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_26_1763552267080.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371568519-13\",\"orderNum\":70,\"component\":\"JText\",\"w\":42.00000866236812,\"x\":419.7991700328957,\"y\":217.93813036363792,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.947056337294914%\",\"left\":\"20.589146%\",\"width\":\"2.0599000000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"条\\\"\\n}\",\"size\":{\"width\":42.00000866236812,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371480202-12\",\"orderNum\":70,\"component\":\"JText\",\"w\":42.00000866236812,\"x\":636.8761097992264,\"y\":210.70737041841926,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.218896030448274%\",\"left\":\"31.235734000000004%\",\"width\":\"2.0599000000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"公里\\\"\\n}\",\"size\":{\"width\":42.00000866236812,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371473970-11\",\"orderNum\":70,\"component\":\"JText\",\"w\":42.00000866236812,\"x\":507.799168764197,\"y\":213.16890192795518,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.46678000846383%\",\"left\":\"24.905126000000003%\",\"width\":\"2.0599000000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"架次\\\"\\n}\",\"size\":{\"width\":42.00000866236812,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371446932-9\",\"orderNum\":70,\"component\":\"JText\",\"w\":52.000002957467785,\"x\":359.95302146961313,\"y\":183.01505679779882,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.430192804777217%\",\"left\":\"17.653978000000002%\",\"width\":\"2.550352000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"56\\\"\\n}\",\"size\":{\"width\":52.000002957467785,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#02DEFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371270168-8\",\"orderNum\":70,\"component\":\"JText\",\"w\":52.000002957467785,\"x\":470.4145734524033,\"y\":211.78429169116976,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.32734539543296%\",\"left\":\"23.07159%\",\"width\":\"2.550352000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"45\\\"\\n}\",\"size\":{\"width\":52.000002957467785,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#02DEFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371262441-7\",\"orderNum\":70,\"component\":\"JText\",\"w\":52.000002957467785,\"x\":599.1837985154281,\"y\":210.39967155575596,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.18790978557903%\",\"left\":\"29.387106000000006%\",\"width\":\"2.550352000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"80\\\"\\n}\",\"size\":{\"width\":52.000002957467785,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#02DEFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371256473-6\",\"orderNum\":70,\"component\":\"JText\",\"w\":52.000002957467785,\"x\":387.3376428756507,\"y\":217.3227524355682,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.88508584120256%\",\"left\":\"18.997063000000004%\",\"width\":\"2.550352000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"17\\\"\\n}\",\"size\":{\"width\":52.000002957467785,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#02DEFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371251576-5\",\"orderNum\":70,\"component\":\"JText\",\"w\":83.99999693539274,\"x\":318.41456637590863,\"y\":217.630441399603,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.91607108924873%\",\"left\":\"15.616715000000003%\",\"width\":\"4.119799%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"线上执勤\\\"\\n}\",\"size\":{\"width\":83.99999693539274,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371243864-4\",\"orderNum\":70,\"component\":\"JText\",\"w\":42.00000866236812,\"x\":394.26072212282537,\"y\":184.09197807054932,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.538642169761907%\",\"left\":\"19.336607000000004%\",\"width\":\"2.0599000000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"条\\\"\\n}\",\"size\":{\"width\":42.00000866236812,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371236206-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":107.00001235920283,\"x\":605.0299330286167,\"y\":180.2458264255996,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.15132258189242%\",\"left\":\"29.673831%\",\"width\":\"5.247840000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"日巡检里程\\\"\\n}\",\"size\":{\"width\":107.00001235920283,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371219393-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":110.9999937657679,\"x\":484.5684071400704,\"y\":178.8612062901858,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.01188697203849%\",\"left\":\"23.765768000000005%\",\"width\":\"5.444020000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"每日计划飞行\\\"\\n}\",\"size\":{\"width\":110.9999937657679,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763371210351-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":70.99999619602579,\"x\":309.7991716187691,\"y\":182.70736783376395,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.399207556731042%\",\"left\":\"15.194171%\",\"width\":\"3.4822109999999995%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"总计\\\"\\n}\",\"size\":{\"width\":70.99999619602579,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763370911329-4\",\"orderNum\":70,\"component\":\"JText\",\"w\":42.00000866236812,\"x\":197.33764932203988,\"y\":214.24583309933405,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.57523037027158%\",\"left\":\"9.67847%\",\"width\":\"2.0599000000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"版\\\"\\n}\",\"size\":{\"width\":42.00000866236812,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763370895588-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":52.000002957467785,\"x\":172.41455179860495,\"y\":212.86121296392025,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.435794760417647%\",\"left\":\"8.456111000000002%\",\"width\":\"2.550352000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"3\\\"\\n}\",\"size\":{\"width\":52.000002957467785,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#02DEFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763370887375-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":140.99999704041034,\"x\":182.10687090038692,\"y\":183.7842891065145,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.507656921715736%\",\"left\":\"8.931473000000002%\",\"width\":\"6.915377%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"无人机航线设计\\\"\\n}\",\"size\":{\"width\":140.99999704041034,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#C9E6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":311.0000020038218,\"x\":915.2682911062369,\"h\":0,\"i\":\"es-drager-1763370612716-1\",\"y\":242.05284212679635,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.375483784757172%\",\"left\":\"44.889542000000006%\",\"width\":\"15.253065999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"0%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":311.0000020038218,\"height\":0},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_26_1763552300046.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763370022040-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":323.9999823538453,\"x\":355.79916168770234,\"y\":87.47659410898373,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.80916862001706%\",\"left\":\"17.450251000000005%\",\"width\":\"15.890653000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"座 服务于岸线公园巡检和河道巡检\\\"\\n}\",\"size\":{\"width\":323.9999823538453,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763370010036-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":48.00000116155921,\"x\":319.49149072055104,\"y\":87.16890514494884,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.778183371970881%\",\"left\":\"15.669533000000001%\",\"width\":\"2.3541710000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"4\\\"\\n}\",\"size\":{\"width\":48.00000116155921,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#96F5F8\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#49ABFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1763369998907-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00001161983592,\"x\":244.414543346272,\"y\":86.86121618091394,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.7471981239247%\",\"left\":\"11.987367%\",\"width\":\"4.610252000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"建设机场 \\\"\\n}\",\"size\":{\"width\":94.00001161983592,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":36.9999911254748,\"x\":197.3896625372919,\"h\":33.99999677510606,\"i\":\"83560363-065f-4d4a-9be8-fb9b83e84040\",\"y\":88.55514865541414,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.91778246080691%\",\"left\":\"9.681021%\",\"width\":\"1.8146730000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.423906791556098%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":36.9999911254748,\"height\":33.99999677510606},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_03_1763552101512.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JStatsSummary\",\"visible\":true,\"w\":595.0000071772687,\"x\":785.8511946537046,\"h\":85.00000678570775,\"i\":\"51a9c871-5835-4847-8271-f62c0698fa18\",\"y\":107.93976126080858,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"10.869874021000504%\",\"left\":\"38.542251%\",\"width\":\"29.18191100000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.559768474124843%\"},\"componentName\":\"统计概览(背景模式)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": \\\"1\\\",\\n \\\"name\\\": \\\"人员总数\\\",\\n \\\"value\\\": 681,\\n \\\"suffix\\\": \\\"人\\\"\\n },\\n {\\n \\\"id\\\": \\\"2\\\",\\n \\\"name\\\": \\\"车辆总数\\\",\\n \\\"value\\\": 155,\\n \\\"suffix\\\": \\\"辆\\\"\\n },\\n {\\n \\\"id\\\": \\\"3\\\",\\n \\\"name\\\": \\\"道路总里程\\\",\\n \\\"value\\\": 336,\\n \\\"suffix\\\": \\\"公里\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":595.0000071772687,\"height\":85.00000678570775},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":713,\"dataType\":1,\"h\":129,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"layout\":{\"padding\":{\"top\":5,\"left\":20,\"bottom\":0,\"right\":20},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"contain\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"drag/lib/img/bg01.png\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"image\"}},\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"card\":{\"padding\":{\"horizontal\":3,\"vertical\":15},\"borderColor\":\"#0F66FF59\",\"borderRadius\":0,\"shadow\":\"none\",\"borderWidth\":0,\"blur\":24,\"minWidth\":100,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0B2B6300\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"sections\":{\"middle\":{\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#15f0c5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#15f0c5\"},\"positiveColor\":\"#15F0C5\",\"fontSize\":14,\"negativeColor\":\"#D0021B\",\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"negativeGradient\":{\"endColor\":\"#D0021B\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#D0021B\"},\"fontColor\":\"#FFFFFF\"},\"alignItems\":\"center\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontColor\":\"#9ED3FF\"},\"label\":\"同比\"},\"paddingBottom\":10,\"show\":false,\"type\":\"compare\",\"align\":\"center\"},\"top\":{\"minHeight\":40,\"paddingBottom\":10,\"show\":true,\"paddingTop\":5,\"type\":\"value\",\"align\":\"center\",\"value\":{\"unit\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#96F5F8\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#49ABFF\"},\"fontWeight\":500,\"fontColor\":\"#9ED3FF\"},\"unitGap\":6,\"fontSize\":24,\"fontGradient\":{\"endColor\":\"#96F5F8\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#49ABFF\"},\"fontWeight\":600,\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"paddingBottom\":10,\"show\":true,\"label\":{\"fontSize\":14,\"fontColor\":\"#C9E6FF\"},\"type\":\"label\",\"align\":\"center\"}}}}},{\"component\":\"JListProgress\",\"visible\":true,\"w\":508.9999991492498,\"x\":175.99061836459558,\"h\":185.99999807928413,\"i\":\"96a95bd1-0e5b-4cff-8138-d5e1a8fcefff\",\"y\":324.55333636593934,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"32.68354347077916%\",\"left\":\"8.6315%\",\"width\":\"24.964021000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"18.73078579581999%\"},\"componentName\":\"列表进度图\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"违规停车\\\",\\n \\\"total\\\": 500000,\\n \\\"date\\\": \\\"2025-12-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-15\\\",\\n \\\"value\\\": 262431\\n },\\n {\\n \\\"title\\\": \\\"海岸线非法闯入\\\",\\n \\\"total\\\": 30000,\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"endLabel\\\": \\\"2025-05-30\\\",\\n \\\"value\\\": 14305\\n },\\n {\\n \\\"title\\\": \\\"配电室巡查\\\",\\n \\\"total\\\": 6000,\\n \\\"date\\\": \\\"2026-01-15\\\",\\n \\\"endLabel\\\": \\\"2025-07-01\\\",\\n \\\"value\\\": 4270\\n },\\n {\\n \\\"title\\\": \\\"危险品车违规行驶\\\",\\n \\\"total\\\": 6000,\\n \\\"date\\\": \\\"2025-10-10\\\",\\n \\\"endLabel\\\": \\\"2025-04-28\\\",\\n \\\"value\\\": 3234\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":508.9999991492498,\"height\":185.99999807928413},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1200,\"dataType\":1,\"h\":325,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"beginFields\":[{\"name\":\"合同名称\",\"style\":{\"letterSpacing\":0,\"fontSize\":15,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\"}],\"endCurrent\":0,\"endInfo\":{\"width\":103},\"scroll\":{\"count\":1,\"interval\":3000,\"enabled\":true,\"direction\":\"down\"},\"centerTopFields\":[],\"body\":{\"gradient\":{\"type\":\"linear\"}},\"endFields\":[{\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"数值\",\"style\":{\"letterSpacing\":0,\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#4FB9E3\",\"fontWeight\":\"bold\"},\"key\":\"value\",\"marginLeft\":23}],\"beginCurrent\":0,\"progressSection\":{\"marginRight\":8,\"marginLeft\":8},\"bar\":{\"border\":{\"padding\":8,\"color\":\"#4ECBFC5E\",\"width\":2,\"enabled\":true},\"total\":{\"field\":\"total\",\"type\":\"field\",\"value\":0},\"borderRadius\":6,\"background\":{\"color\":\"#5A97FC4F\",\"gradient\":{\"endColor\":\"#07203D\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#143B6E\"}},\"indicatorColor\":\"#DCFEFFB5\",\"exceed\":{\"indicatorColor\":\"#FEF8C9B3\",\"fill\":{\"color\":\"#FFB347\",\"gradient\":{\"endColor\":\"#FEAF24\",\"enabled\":true,\"startColor\":\"#FEF6C8\",\"direction\":\"to right\"}},\"percent\":70,\"enabled\":true},\"indicatorSize\":15,\"fill\":{\"color\":\"#33C9FF\",\"gradient\":{\"endColor\":\"#24E5F1\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#C5FDFE\"}},\"valueField\":\"value\",\"height\":6},\"centerTopInfo\":{\"layout\":\"horizontal\"},\"centerTopCurrent\":0,\"row\":{\"marginRight\":1,\"padding\":\"0 0\",\"marginBottom\":0,\"marginTop\":4,\"height\":42,\"marginLeft\":0},\"beginInfo\":{\"layout\":\"vertical\",\"width\":131}}}},{\"component\":\"JImg\",\"visible\":true,\"w\":3.000006444267293,\"x\":464.88365818962495,\"h\":53.99999720719867,\"i\":\"es-drager-1762942619160-4\",\"y\":186.6020326563206,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.791412574425333%\",\"left\":\"22.800325000000004%\",\"width\":\"0.14713600000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.437969844665112%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":3.000006444267293,\"height\":53.99999720719867},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_22_1763552318849.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1.9999907032825328,\"x\":866.0504140684643,\"h\":40.99999989592697,\"i\":\"es-drager-1762942529865-1\",\"y\":630.1805348963725,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.46116523510798%\",\"left\":\"42.475640000000006%\",\"width\":\"0.09809000000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.12882915919117%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1.9999907032825328,\"height\":40.99999989592697},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_22_1763552318849.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1.9999907032825328,\"x\":869.9777278548183,\"h\":40.99999989592697,\"i\":\"es-drager-1762941823717-35\",\"y\":550.5439613083489,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"55.441511381377865%\",\"left\":\"42.66825600000001%\",\"width\":\"0.09809000000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.12882915919117%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1.9999907032825328,\"height\":40.99999989592697},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_22_1763552318849.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941725340-32\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":1291.4712878116177,\"y\":451.7116100695211,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.48878224230209%\",\"left\":\"63.34050374010456%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1253.7456067176438,\"h\":38.0000028007016,\"i\":\"es-drager-1762941720287-31\",\"y\":451.96951883151854,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.51475446717158%\",\"left\":\"61.49023911015685%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"14\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941657363-30\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":1091.4243899206565,\"y\":453.711612210325,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.690188758847384%\",\"left\":\"53.529158026387826%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1049.900347577761,\"h\":38.0000028007016,\"i\":\"es-drager-1762941651441-29\",\"y\":451.9695170875309,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.51475429154653%\",\"left\":\"51.49260190303707%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"88\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941632755-28\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":878.8452499574914,\"y\":455.638918235086,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.88427454747951%\",\"left\":\"43.103165643141644%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941620159-27\",\"orderNum\":70,\"component\":\"JText\",\"w\":75.99999334357558,\"x\":1214.366941157304,\"y\":453.10667325785766,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.629269500485975%\",\"left\":\"59.558903480209146%\",\"width\":\"3.727436999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"离线:\\\"\\n}\",\"size\":{\"width\":75.99999334357558,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941614133-26\",\"orderNum\":70,\"component\":\"JText\",\"w\":74.99999799193434,\"x\":1215.633060735264,\"y\":422.7198179040119,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.56921743317984%\",\"left\":\"59.62100060355991%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"在线:\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941608903-25\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":1294.132494595217,\"y\":422.7198161600243,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.5692172575548%\",\"left\":\"63.47102323350761%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941602235-24\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":1092.819479910352,\"y\":425.2520436733287,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.824220545876166%\",\"left\":\"53.59758053298479%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1253.8745693152403,\"h\":38.0000028007016,\"i\":\"es-drager-1762941596165-23\",\"y\":421.7115971894209,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.46768643084153%\",\"left\":\"61.49656411015684%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"30\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1051.2954451125793,\"h\":38.0000028007016,\"i\":\"es-drager-1762941590403-22\",\"y\":424.243844499982,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.72269171280903%\",\"left\":\"51.56102477968631%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"173\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941575296-21\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00001161983592,\"x\":997.9894510814421,\"y\":451.96951883151854,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.51475446717158%\",\"left\":\"48.94662014973859%\",\"width\":\"4.610252000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"离线:\\\"\\n}\",\"size\":{\"width\":94.00001161983592,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941569613-20\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00001161983592,\"x\":997.9894639256624,\"y\":424.11488516966904,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.70970510196275%\",\"left\":\"48.94662077968631%\",\"width\":\"4.610252000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"在线:\\\"\\n}\",\"size\":{\"width\":94.00001161983592,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":836.0551084259791,\"h\":38.0000028007016,\"i\":\"es-drager-1762941564580-19\",\"y\":453.3645878411632,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.65524231157953%\",\"left\":\"41.004513396440124%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"122\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":836.1840685085348,\"h\":38.0000028007016,\"i\":\"es-drager-1762941053477-18\",\"y\":419.3083173638135,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.22566858091834%\",\"left\":\"41.010838273089355%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"252\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762941048379-17\",\"orderNum\":70,\"component\":\"JText\",\"w\":34.000005070551,\"x\":877.7080904620868,\"y\":421.5826460137488,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.45470064119328%\",\"left\":\"43.047393396440114%\",\"width\":\"1.667538%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"人\\\"\\n}\",\"size\":{\"width\":34.000005070551,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762940580987-16\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00001161983592,\"x\":782.8780923517,\"y\":453.36459191848354,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.65524272217853%\",\"left\":\"38.39643451979088%\",\"width\":\"4.610252000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"离线:\\\"\\n}\",\"size\":{\"width\":94.00001161983592,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":38.0000028007016,\"i\":\"es-drager-1762940573639-15\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00001161983592,\"x\":782.8780898366589,\"y\":420.4454857661016,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.340185021654825%\",\"left\":\"38.39643439644011%\",\"width\":\"4.610252000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"在线:\\\"\\n}\",\"size\":{\"width\":94.00001161983592,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":122.0000038018523,\"x\":755.0234452012544,\"h\":38.0000028007016,\"i\":\"es-drager-1762940556528-14\",\"y\":629.3552169593522,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.378053118702546%\",\"left\":\"37.030297000000004%\",\"width\":\"5.983518000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"酒水作业\\\"\\n}\",\"size\":{\"width\":122.0000038018523,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":100.99999947066824,\"x\":765.1524020939509,\"h\":38.0000028007016,\"i\":\"es-drager-1762940550624-13\",\"y\":547.057446629083,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"55.09040836898173%\",\"left\":\"37.527074000000006%\",\"width\":\"4.953568000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"道路机扫\\\"\\n}\",\"size\":{\"width\":100.99999947066824,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":122.0000038018523,\"x\":1215.0281373863072,\"h\":38.0000028007016,\"i\":\"es-drager-1762940525754-12\",\"y\":221.03887569834177,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"22.25931116133512%\",\"left\":\"59.591331999999994%\",\"width\":\"5.983518000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"海港人员\\\"\\n}\",\"size\":{\"width\":122.0000038018523,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":122.0000038018523,\"x\":1002.4823825925793,\"h\":38.0000028007016,\"i\":\"es-drager-1762940521846-11\",\"y\":225.3112028888313,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"22.689547969297916%\",\"left\":\"49.166977%\",\"width\":\"5.983518000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"临港人员\\\"\\n}\",\"size\":{\"width\":122.0000038018523,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":122.0000038018523,\"x\":792.316981705006,\"h\":38.0000028007016,\"i\":\"es-drager-1762940511936-10\",\"y\":225.67715517941065,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"22.726400517884553%\",\"left\":\"38.859367000000006%\",\"width\":\"5.983518000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"空港人员\\\"\\n}\",\"size\":{\"width\":122.0000038018523,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":43.999999365650666,\"x\":1914.7889788309733,\"h\":32.000008610250845,\"i\":\"es-drager-1762938531837-5\",\"y\":636.9519390937786,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.1430669709589%\",\"left\":\"93.91126200000001%\",\"width\":\"2.1579900000000007%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.2225016824328714%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"kg\\\"\\n}\",\"size\":{\"width\":43.999999365650666,\"height\":32.000008610250845},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#88999A\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":43.999999365650666,\"x\":1776.781953911325,\"h\":32.000008610250845,\"i\":\"es-drager-1762938522652-4\",\"y\":638.2180528504308,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.27056861511959%\",\"left\":\"87.14267600000001%\",\"width\":\"2.1579900000000007%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.2225016824328714%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"kg\\\"\\n}\",\"size\":{\"width\":43.999999365650666,\"height\":32.000008610250845},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#88999A\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":43.999999365650666,\"x\":1643.839397243353,\"h\":32.000008610250845,\"i\":\"es-drager-1762938514850-3\",\"y\":636.9519390937786,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.1430669709589%\",\"left\":\"80.62247800000002%\",\"width\":\"2.1579900000000007%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.2225016824328714%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"kg\\\"\\n}\",\"size\":{\"width\":43.999999365650666,\"height\":32.000008610250845},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#88999A\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":115.99999091331775,\"x\":1494.3083357704925,\"h\":38.0000028007016,\"i\":\"es-drager-1762938341955-2\",\"y\":545.6623636434895,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.9499191171517%\",\"left\":\"73.28869300000001%\",\"width\":\"5.689246000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"7153\\\"\\n}\",\"size\":{\"width\":115.99999091331775,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":43.999999365650666,\"x\":1530.017579506108,\"h\":32.000008610250845,\"i\":\"es-drager-1762938204176-1\",\"y\":633.2825373568783,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.773546655676995%\",\"left\":\"75.04006100000001%\",\"width\":\"2.1579900000000007%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.2225016824328714%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"kg\\\"\\n}\",\"size\":{\"width\":43.999999365650666,\"height\":32.000008610250845},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#88999A\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":70.99999619602579,\"x\":1867.8136033479955,\"h\":38.0000028007016,\"i\":\"es-drager-1762936596210-18\",\"y\":630.4923812843198,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.49256914884002%\",\"left\":\"91.607344%\",\"width\":\"3.4822109999999995%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"9401\\\"\\n}\",\"size\":{\"width\":70.99999619602579,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#46D6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1751.4595718742557,\"h\":38.0000028007016,\"i\":\"es-drager-1762936591363-17\",\"y\":633.1535780265655,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.760560044830726%\",\"left\":\"85.90073400000001%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"0\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#46D6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":61.00000190092615,\"x\":1618.6459574145372,\"h\":30.000000648138894,\"i\":\"es-drager-1762936587463-16\",\"y\":635.8147648701827,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.02854994399837%\",\"left\":\"79.38686000000001%\",\"width\":\"2.9917590000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0210945796635205%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"0\\\"\\n}\",\"size\":{\"width\":61.00000190092615,\"height\":30.000000648138894},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#46D6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1866.5474862850765,\"h\":45.000005921522515,\"i\":\"es-drager-1762936579995-15\",\"y\":649.4841668231293,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.40510178583477%\",\"left\":\"91.54524700000002%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.5316423679068105%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"其他垃圾\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":45.000005921522515},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":101.99997443296604,\"x\":1739.9355149316998,\"h\":38.0000028007016,\"i\":\"es-drager-1762936575774-14\",\"y\":652.0164141336904,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.66010706780227%\",\"left\":\"85.335534%\",\"width\":\"5.002612000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"可回收垃圾\\\"\\n}\",\"size\":{\"width\":101.99997443296604,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1613.3235843570108,\"h\":38.0000028007016,\"i\":\"es-drager-1762936571795-13\",\"y\":653.2825278903425,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.78760871196295%\",\"left\":\"79.12582300000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"有害垃圾\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1490.5099641923919,\"h\":22.999997527317976,\"i\":\"es-drager-1762936567296-12\",\"y\":659.6131263694886,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"66.42511992323557%\",\"left\":\"73.10240100000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.316172212028447%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"厨余垃圾\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":22.999997527317976},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":133.0000138379367,\"x\":1816.9109140786636,\"h\":38.0000028007016,\"i\":\"es-drager-1762936479611-11\",\"y\":573.2590862100086,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"57.728996022517066%\",\"left\":\"89.11081%\",\"width\":\"6.523016000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"当月投放量(KG)\\\"\\n}\",\"size\":{\"width\":133.0000138379367,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1679.032810977925,\"h\":38.0000028007016,\"i\":\"es-drager-1762936475992-10\",\"y\":573.3880356416931,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"57.74198163654029%\",\"left\":\"82.34854700000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"设施\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":115.99999091331775,\"x\":1818.4349359474331,\"h\":38.0000028007016,\"i\":\"es-drager-1762936466314-9\",\"y\":543.1301262315568,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.69491483200728%\",\"left\":\"89.18555600000002%\",\"width\":\"5.689246000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"9301\\\"\\n}\",\"size\":{\"width\":115.99999091331775,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":115.99999091331775,\"x\":1659.032822387726,\"h\":38.0000028007016,\"i\":\"es-drager-1762936448667-7\",\"y\":547.0574367304547,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"55.09040737215868%\",\"left\":\"81.36764300000002%\",\"width\":\"5.689246000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"85\\\"\\n}\",\"size\":{\"width\":115.99999091331775,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":107.00001235920283,\"x\":1499.5017666197657,\"h\":38.0000028007016,\"i\":\"es-drager-1762936431998-6\",\"y\":573.645954302319,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"57.76795485823283%\",\"left\":\"73.543406%\",\"width\":\"5.247840000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"总注册人数\\\"\\n}\",\"size\":{\"width\":107.00001235920283,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":56.000004753376324,\"x\":1493.4290861110203,\"h\":38.0000028007016,\"i\":\"es-drager-1762936404011-4\",\"y\":628.3470119646975,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.27652369941136%\",\"left\":\"73.24557000000001%\",\"width\":\"2.7465330000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"123\\\"\\n}\",\"size\":{\"width\":56.000004753376324,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#46D6FF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":117.00000665430248,\"x\":1850.1641390544198,\"h\":51.000000111973286,\"i\":\"es-drager-1762936392574-3\",\"y\":637.6482977004861,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.21319247651806%\",\"left\":\"90.741722%\",\"width\":\"5.738292000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.135860685745679%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":117.00000665430248,\"height\":51.000000111973286},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763552183216.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":132.00001848629552,\"x\":1726.0844222162254,\"h\":55.99999527068225,\"i\":\"es-drager-1762936386243-2\",\"y\":633.8499465319011,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.830686547212935%\",\"left\":\"84.65620400000002%\",\"width\":\"6.473971000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.6393759506114005%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":132.00001848629552,\"height\":55.99999527068225},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763552183216.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":105.99999661821808,\"x\":1602.133647586284,\"h\":60.00000129627779,\"i\":\"es-drager-1762936160272-1\",\"y\":632.7127822069335,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.71617051707547%\",\"left\":\"78.57701000000002%\",\"width\":\"5.198794000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.042189159327041%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":105.99999661821808,\"height\":60.00000129627779},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763552183216.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":476.9999847819812,\"x\":1476.7877932958268,\"h\":28.99999171776873,\"i\":\"es-drager-1762934953780-14\",\"y\":689.6881586206188,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.45377042170585%\",\"left\":\"72.42939400000002%\",\"width\":\"23.394572999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9203905298673134%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":476.9999847819812,\"height\":28.99999171776873},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763552278772.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":100.00000411902698,\"x\":1479.449010408605,\"h\":61.00000032801957,\"i\":\"es-drager-1762934758071-13\",\"y\":630.3094942266853,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.47415184595424%\",\"left\":\"72.559914%\",\"width\":\"4.904523000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.142892212300184%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":100.00000411902698,\"height\":61.00000032801957},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763552183216.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":147.9999848912427,\"x\":1855.152412329461,\"h\":38.0000028007016,\"i\":\"es-drager-1762933339573-12\",\"y\":91.12543639477417,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.176618533800058%\",\"left\":\"90.98637300000001%\",\"width\":\"7.258693000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"厨余垃圾(吨/月)\\\"\\n}\",\"size\":{\"width\":147.9999848912427,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1889.466596793904,\"h\":38.0000028007016,\"i\":\"es-drager-1762933332326-11\",\"y\":58.60141419624384,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.90134703213322%\",\"left\":\"92.66932000000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"109.45\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#4FC5E3\",\"gradient\":{\"endColor\":\"#96F5F8\",\"enabled\":true,\"startColor\":\"#49ABFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":131.00000274531064,\"x\":1659.032822387726,\"h\":38.0000028007016,\"i\":\"es-drager-1762933079266-10\",\"y\":95.05275679230033,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.572112070774509%\",\"left\":\"81.36764300000002%\",\"width\":\"6.424924999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"生活垃圾(吨/月)\\\"\\n}\",\"size\":{\"width\":131.00000274531064,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1688.2825386004924,\"h\":38.0000028007016,\"i\":\"es-drager-1762933073725-9\",\"y\":58.7303636279284,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.914332646156435%\",\"left\":\"82.80220200000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"35.40\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#4FC5E3\",\"gradient\":{\"endColor\":\"#96F5F8\",\"enabled\":true,\"startColor\":\"#49ABFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":176.99999281424385,\"x\":1838.0187576475853,\"h\":92.00000000790027,\"i\":\"es-drager-1762932876846-8\",\"y\":69.67643514839494,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"7.016636533644591%\",\"left\":\"90.14604900000002%\",\"width\":\"8.681005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.26468984493685%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":176.99999281424385,\"height\":92.00000000790027},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763552212132.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":174.0000067593201,\"x\":1638.1008165170927,\"h\":103.99999828743017,\"i\":\"es-drager-1762932868681-7\",\"y\":63.474795999561906,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.392111933218262%\",\"left\":\"80.34102800000001%\",\"width\":\"8.533870000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.473127477437648%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":174.0000067593201,\"height\":103.99999828743017},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763552212132.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1488.2356348724034,\"h\":38.0000028007016,\"i\":\"es-drager-1762932864087-6\",\"y\":92.64946881205219,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.330093399653293%\",\"left\":\"72.99085600000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"总点位\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":74.99999799193434,\"x\":1488.3646178593435,\"h\":38.0000028007016,\"i\":\"es-drager-1762932853402-5\",\"y\":56.06096092276985,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.645515383847678%\",\"left\":\"72.99718200000001%\",\"width\":\"3.678391999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.826720000271738%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"206\\\"\\n}\",\"size\":{\"width\":74.99999799193434,\"height\":38.0000028007016},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#4FC5E3\",\"gradient\":{\"endColor\":\"#96F5F8\",\"enabled\":true,\"startColor\":\"#49ABFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":509.99999450089103,\"x\":1466.9167412089805,\"h\":73.99999763929125,\"i\":\"es-drager-1762931911166-4\",\"y\":545.608435916168,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.94448842511221%\",\"left\":\"71.94526600000002%\",\"width\":\"25.013066000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.452032897774124%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":509.99999450089103,\"height\":73.99999763929125},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/按钮21 拷贝_1763552170900.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":122.0000038018523,\"x\":1466.0375119388516,\"h\":93.99999807138387,\"i\":\"es-drager-1762930997431-1\",\"y\":68.66823015374024,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.915107114353396%\",\"left\":\"71.90214400000002%\",\"width\":\"5.983518000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.46609595088314%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":122.0000038018523,\"height\":93.99999807138387},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763552212132.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":109.00000306248539,\"x\":1408.7327115379485,\"h\":37.000003768959814,\"i\":\"es-drager-1762429130209-4\",\"y\":744.3141747813775,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.95478234725454%\",\"left\":\"69.091617%\",\"width\":\"5.345930000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812791721984\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"当月投放量\\\"\\n}\",\"size\":{\"width\":109.00000306248539,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JMultipleBar\",\"visible\":true,\"w\":627.9999965068347,\"x\":1410.9343528483823,\"h\":246.99999840730368,\"i\":\"es-drager-1762429121828-3\",\"y\":742.8628378907972,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.80862814996556%\",\"left\":\"69.199597%\",\"width\":\"30.800403%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.873678008120173%\"},\"componentName\":\"对比柱形图\",\"pageCompId\":\"1146390812808499200\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 2.5,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"厨余垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"其他垃圾\\\"\\n }\\n]\",\"size\":{\"width\":627.9999965068347,\"height\":246.99999840730368},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#4FF0FDA8\",\"color\":\"#4FF0FD00\"},{\"color1\":\"#4F68FDA8\",\"color\":\"#4F68FD00\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":47,\"left\":0,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"barWidth\":15,\"itemStyle\":{\"borderRadius\":0}}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":93.00001626819461,\"x\":1454.9343318246895,\"h\":37.000003768959814,\"i\":\"es-drager-1762429044550-2\",\"y\":310.879252361777,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"31.306520131634624%\",\"left\":\"71.35758600000001%\",\"width\":\"4.5612070000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812825276416\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"厨余垃圾\\\"\\n}\",\"size\":{\"width\":93.00001626819461,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":93.00001626819461,\"x\":1447.9343643632005,\"h\":37.000003768959814,\"i\":\"es-drager-1762429023915-1\",\"y\":149.86283794746865,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.091659921153278%\",\"left\":\"71.01427100000001%\",\"width\":\"4.5612070000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812837859328\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"生活垃圾\\\"\\n}\",\"size\":{\"width\":93.00001626819461,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4A90E2\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JMultipleLine\",\"visible\":true,\"w\":545.9999902747245,\"x\":1459.869878257456,\"h\":160.00000345674079,\"i\":\"9799edd5-f660-4e56-9305-d9e43773a75e\",\"y\":316.5486620607893,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"31.87744754968588%\",\"left\":\"71.599651%\",\"width\":\"26.778693999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.11250442487211%\"},\"componentName\":\"对比折线图\",\"pageCompId\":\"1146390812846247936\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 2,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 1.5,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 2.9,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 2,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 1.5,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"空港\\\"\\n }\\n]\",\"size\":{\"width\":545.9999902747245,\"height\":160.00000345674079},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#2291E3A3\"},{\"color1\":\"#90ee90\",\"color\":\"#02F4FF94\"},{\"color1\":\"#00ced1\",\"color\":\"#FF029B9E\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":36,\"left\":0,\"bottom\":22,\"right\":1,\"containLabel\":true},\"series\":[{\"symbol\":\"none\",\"lineType\":\"area\",\"label\":{\"position\":\"top\"}}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JStackBar\",\"visible\":true,\"w\":557.9999956624503,\"x\":1455.200473925311,\"h\":152.00000130417803,\"i\":\"9857c542-9530-4c6c-ac2a-2fd20b6da0b3\",\"y\":155.8628321379194,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.695878238992144%\",\"left\":\"71.37063900000001%\",\"width\":\"27.367237000000006%\",\"position\":\"absolute\",\"config\":{},\"height\":\"15.306879004263887%\"},\"componentName\":\"生活垃圾\",\"pageCompId\":\"1146390812858830848\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"临港\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"海港\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"空港\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"空港\\\"\\n }\\n]\",\"size\":{\"width\":557.9999956624503,\"height\":152.00000130417803},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#F4DC42B3\",\"color\":\"#F4DC4200\"},{\"color1\":\"#00D8FFB3\",\"color\":\"#00D8FF00\"},{\"color1\":\"#006CFFB3\",\"color\":\"#006CFF00\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":43,\"left\":0,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"barWidth\":21,\"itemStyle\":{\"borderRadius\":1},\"label\":{\"color\":\"#EEF1FA\",\"show\":false}}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JMultipleBar\",\"visible\":true,\"w\":627.9999965068347,\"x\":743.9343337341033,\"h\":246.99999840730368,\"i\":\"ddbe13ab-bd12-4d18-9551-5773cc07cb6d\",\"y\":741.8628388590553,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.70792509699238%\",\"left\":\"36.48642900000001%\",\"width\":\"30.800403%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.873678008120173%\"},\"componentName\":\"对比柱形图\",\"pageCompId\":\"1146390812879802368\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 2.5,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"修剪\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"破绿\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 13,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 14,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 13.5,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 15,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 14.9,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 16,\\n \\\"type\\\": \\\"基础养护\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 3,\\n \\\"type\\\": \\\"提升改造\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 4,\\n \\\"type\\\": \\\"提升改造\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 3.5,\\n \\\"type\\\": \\\"提升改造\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 5,\\n \\\"type\\\": \\\"提升改造\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 4.9,\\n \\\"type\\\": \\\"提升改造\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 6,\\n \\\"type\\\": \\\"提升改造\\\"\\n }\\n]\",\"size\":{\"width\":627.9999965068347,\"height\":246.99999840730368},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#3FECFBB3\",\"color\":\"#3FECFB00\"},{\"color1\":\"#006CFFB5\",\"color\":\"#006CFF00\"},{\"color1\":\"#C000FFB3\",\"color\":\"#109EE05C\"},{\"color1\":\"#3F8FFBB5\",\"color\":\"#3F8FFB00\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":47,\"left\":0,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"barWidth\":15,\"itemStyle\":{\"borderRadius\":0}}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JMultipleLine\",\"visible\":true,\"w\":549.0000171083353,\"x\":153.2004704533646,\"h\":244.00000131207827,\"i\":\"4c6e2a64-9c5b-4433-a253-e3246a922a38\",\"y\":519.0562760062809,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"52.27060227014323%\",\"left\":\"7.513752%\",\"width\":\"26.925831%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.571568849200737%\"},\"componentName\":\"对比折线图\",\"pageCompId\":\"1146390812892385280\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"08-23\\\",\\n \\\"value\\\": 620,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-24\\\",\\n \\\"value\\\": 768,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-25\\\",\\n \\\"value\\\": 600,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-26\\\",\\n \\\"value\\\": 810,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-27\\\",\\n \\\"value\\\": 700,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-28\\\",\\n \\\"value\\\": 900,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-29\\\",\\n \\\"value\\\": 820,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-30\\\",\\n \\\"value\\\": 830,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-31\\\",\\n \\\"value\\\": 790,\\n \\\"type\\\": \\\"总量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-23\\\",\\n \\\"value\\\": 196,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-24\\\",\\n \\\"value\\\": 600,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-25\\\",\\n \\\"value\\\": 300,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-26\\\",\\n \\\"value\\\": 550,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-27\\\",\\n \\\"value\\\": 610,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-28\\\",\\n \\\"value\\\": 390,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-29\\\",\\n \\\"value\\\": 420,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-30\\\",\\n \\\"value\\\": 380,\\n \\\"type\\\": \\\"完成量\\\"\\n },\\n {\\n \\\"name\\\": \\\"08-31\\\",\\n \\\"value\\\": 600,\\n \\\"type\\\": \\\"完成量\\\"\\n }\\n]\",\"size\":{\"width\":549.0000171083353,\"height\":244.00000131207827},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#AB315C\"},{\"color1\":\"#90ee90\",\"color\":\"#4FCAE3\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"name\":\"单位(个)\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":39,\"left\":0,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"symbol\":\"circle\",\"symbolSize\":6,\"lineType\":\"line\",\"label\":{\"color\":\"#EEF1FA\",\"show\":false,\"position\":\"top\"},\"lineWidth\":2}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"left\":\"center\",\"show\":true,\"text\":\"无人机巡检完成情况\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":88.99999408294256,\"x\":1463.7409174557679,\"h\":40.99999989592697,\"i\":\"es-drager-1762423810391-12\",\"y\":495.8229777070758,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.93093593537638%\",\"left\":\"71.789507%\",\"width\":\"4.365025%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.12882915919117%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812909162496\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"垃圾分类\\\"\\n}\",\"size\":{\"width\":88.99999408294256,\"height\":40.99999989592697},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":93.00001626819461,\"x\":1479.9343583411257,\"h\":37.000003768959814,\"i\":\"es-drager-1762423782353-11\",\"y\":9.862844821448832,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0.9932195462132423%\",\"left\":\"72.58371800000002%\",\"width\":\"4.5612070000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812921745408\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"垃圾收运\\\"\\n}\",\"size\":{\"width\":93.00001626819461,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":148.99998024288396,\"x\":761.7409183086403,\"h\":38.99999193381503,\"i\":\"es-drager-1762423748544-10\",\"y\":705.7092569027857,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"71.06714549286653%\",\"left\":\"37.35975700000001%\",\"width\":\"7.307738000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.9274220564218205%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812934328320\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"园林作业用工\\\"\\n}\",\"size\":{\"width\":148.99998024288396,\"height\":38.99999193381503},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":107.00001235920283,\"x\":782.2004827011841,\"h\":30.000000648138894,\"i\":\"es-drager-1762423716800-9\",\"y\":61.00000032801958,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.142892212300185%\",\"left\":\"38.363201000000004%\",\"width\":\"5.247840000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0210945796635205%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812951105536\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"环卫作业\\\"\\n}\",\"size\":{\"width\":107.00001235920283,\"height\":30.000000648138894},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":100.00000411902698,\"x\":186.26495127640098,\"h\":42.99999795941056,\"i\":\"es-drager-1762423687040-8\",\"y\":756.1371663778658,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.14539484911707%\",\"left\":\"9.135407000000002%\",\"width\":\"4.904523000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.33023526513746%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812963688448\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"危险作业\\\"\\n}\",\"size\":{\"width\":100.00000411902698,\"height\":42.99999795941056},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":103.00001056329427,\"x\":174.8698773207855,\"h\":48.0000030167479,\"i\":\"es-drager-1762423656832-7\",\"y\":276.8393938102532,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"27.878599133609544%\",\"left\":\"8.576533000000001%\",\"width\":\"5.051659000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.833751526826244%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390812980465664\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"巡检信息\\\"\\n}\",\"size\":{\"width\":103.00001056329427,\"height\":48.0000030167479},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":569.0000056985347,\"x\":1438.1359798965655,\"h\":37.000003768959814,\"i\":\"es-drager-1762423639047-6\",\"y\":500.29073351733564,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.38085302104397%\",\"left\":\"70.53370700000002%\",\"width\":\"27.906735000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390812993048576\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":569.0000056985347,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":573.0000074944433,\"x\":1453.934356862392,\"h\":37.000003768959814,\"i\":\"es-drager-1762423624157-5\",\"y\":13.862831049787644,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.396030761282759%\",\"left\":\"71.30854200000002%\",\"width\":\"28.102916000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813005631488\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":573.0000074944433,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":614.0000004158265,\"x\":740.8053850815827,\"h\":37.000003768959814,\"i\":\"es-drager-1762423610295-4\",\"y\":708.1770245481904,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"71.31565746941088%\",\"left\":\"36.332969000000006%\",\"width\":\"30.113770000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813018214400\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":614.0000004158265,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":660.0000108741033,\"x\":759.2004468880306,\"h\":37.000003768959814,\"i\":\"es-drager-1762423600686-3\",\"y\":61.999999359761375,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.24359526527333%\",\"left\":\"37.23515900000001%\",\"width\":\"32.369851000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813034991616\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":660.0000108741033,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":538.0000070722509,\"x\":158.9343362111958,\"h\":37.000003768959814,\"i\":\"es-drager-1762423595387-2\",\"y\":761.871045843406,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.72281457576837%\",\"left\":\"7.794970753298481%\",\"width\":\"26.386333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813051768832\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":538.0000070722509,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":538.0000070722509,\"x\":156.6682288267175,\"h\":37.000003768959814,\"i\":\"es-drager-1762423584121-1\",\"y\":283.573262408907,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.55672091641095%\",\"left\":\"7.683829000000002%\",\"width\":\"26.386333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813064351744\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":538.0000070722509,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":170.00000496341158,\"x\":177.20046083947247,\"h\":60.00000129627779,\"i\":\"72ffb6d2-c59b-407e-83d4-146e19df5a1a\",\"y\":0,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"8.690837000000002%\",\"width\":\"8.337689000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.042189159327041%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146390813076934656\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"无人机业务信息\\\"\\n}\",\"size\":{\"width\":170.00000496341158,\"height\":60.00000129627779},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":558.9999910140915,\"x\":162.200469396823,\"h\":37.000003768959814,\"i\":\"f4665840-e58b-49bf-8ded-2ea4758037bb\",\"y\":13.733881618103084,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.3830451472595444%\",\"left\":\"7.955159%\",\"width\":\"27.416282000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.726016947298594%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146390813097906176\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":558.9999910140915,\"height\":37.000003768959814},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":617.0000068600939,\"x\":765.6154848633763,\"h\":71.99999957580766,\"i\":\"es-drager-1762931502489-3\",\"y\":533.076198288189,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"53.68245261341327%\",\"left\":\"37.549786000000005%\",\"width\":\"30.260906000000006%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.250626791827836%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":617.0000068600939,\"height\":71.99999957580766},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_18_1763552143794.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":540.9999931271748,\"x\":178.64135535481833,\"h\":65.99999548672854,\"i\":\"709d5eeb-9748-4a8f-893a-dec888551a01\",\"y\":75.12777806457078,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"7.565603939649218%\",\"left\":\"8.761506000000002%\",\"width\":\"26.533468000000006%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.646407477165907%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":540.9999931271748,\"height\":65.99999548672854},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_21_1763552566127.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":543.999999571442,\"x\":177.00929035487692,\"h\":98.00000409697937,\"i\":\"es-drager-1762942596197-2\",\"y\":158.32571975954107,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.943898781767137%\",\"left\":\"8.681461000000002%\",\"width\":\"26.680604000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.868909159598777%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":543.999999571442,\"height\":98.00000409697937},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_07_1763552117126.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":614.9999957674679,\"x\":765.4865222657797,\"h\":71.99999957580766,\"i\":\"es-drager-1762941743379-33\",\"y\":617.7772565987063,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"62.21211603425532%\",\"left\":\"37.54346100000001%\",\"width\":\"30.16281500000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.250626791827836%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":614.9999957674679,\"height\":71.99999957580766},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_18_1763552143794.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JSemiGauge\",\"visible\":true,\"w\":221,\"x\":754.6072684642438,\"h\":208,\"i\":\"50f215a7-2178-488b-b3de-6ade82567e05\",\"y\":260.17467686082085,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.20040963494764%\",\"left\":\"37.00988551705342%\",\"width\":\"10.838995383538858%\",\"position\":\"absolute\",\"config\":{},\"height\":\"20.94625529979765%\"},\"componentName\":\"半圆仪表盘\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":430,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"total\\\": 800,\\n \\\"used\\\": 500\\n }\\n]\",\"size\":{\"width\":221,\"height\":208},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"titleSuffix\":\"人\",\"customAttr\":{\"innerCircle\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":0,\"y2\":1,\"x2\":1,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#42A8FF66\"},{\"offset\":1,\"color\":\"#42A8FF66\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":15}},\"name\":\"内部小圆\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"outerScale\":{\"axisLabel\":{\"color\":\"#FFFFFF\",\"distance\":-52,\"show\":true,\"fontSize\":12},\"min\":0,\"max\":100,\"axisLine\":{\"show\":false},\"name\":\"外部刻度\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"splitNumber\":2,\"detail\":{\"show\":false},\"type\":\"gauge\",\"radius\":66},\"innerProgress\":{\"axisLabel\":{\"show\":false},\"animationDuration\":2000,\"pointer\":{\"show\":false,\"length\":74,\"width\":1,\"itemStyle\":{\"color\":\"#FFFFFF\"}},\"data\":[{\"name\":\"去年优良率\",\"value\":44}],\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#2E76B9\"],[1,\"#2E76B9\"]],\"width\":1}},\"name\":\"内部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"detail\":{\"offsetCenter\":[0,50],\"show\":false,\"textStyle\":{\"padding\":[0,0,0,0],\"color\":\"#FFFFFF\",\"fontSize\":18,\"fontWeight\":\"normal\"}},\"type\":\"gauge\",\"radius\":\"30%\",\"title\":{\"offsetCenter\":[0,26],\"show\":true,\"textStyle\":{\"color\":\"#FFFFFF\",\"fontSize\":16,\"fontWeight\":\"normal\"}}},\"outerProgress\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#2E76B9\"],[1,\"#2E76B9\"]],\"width\":2}},\"name\":\"外部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"basic\":{\"startAngle\":180,\"endAngle\":0},\"innerShadow\":{\"axisLabel\":{\"show\":false},\"customGradient\":{\"endColor\":\"#42A8FFCC\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#2E76B900\"},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":1,\"y2\":0,\"x2\":0,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2de69600\"},{\"offset\":1,\"color\":\"#2de696\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":100}},\"name\":\"内部阴影\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":79}},\"valuePrefix\":\"已使用:\",\"titlePrefix\":\"总人数:\",\"valueMapping\":\"used\",\"titleMapping\":\"total\",\"valueSuffix\":\"辆\"}}},{\"component\":\"JSemiGauge\",\"visible\":true,\"w\":222,\"x\":969.7186400937863,\"h\":210,\"i\":\"es-drager-1763539498104-1\",\"y\":263.8440789710201,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.569929987821922%\",\"left\":\"47.56007177967479%\",\"width\":\"10.88804061151867%\",\"position\":\"absolute\",\"config\":{},\"height\":\"21.147661600757242%\"},\"componentName\":\"半圆仪表盘\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":430,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"total\\\": 800,\\n \\\"used\\\": 500\\n }\\n]\",\"size\":{\"width\":222,\"height\":210},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"titleSuffix\":\"人\",\"customAttr\":{\"innerCircle\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":0,\"y2\":1,\"x2\":1,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#32B9BA66\"},{\"offset\":1,\"color\":\"#32B9BA66\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":15}},\"name\":\"内部小圆\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"outerScale\":{\"axisLabel\":{\"color\":\"#FFFFFF\",\"distance\":-49,\"show\":true,\"fontSize\":12},\"min\":0,\"max\":100,\"axisLine\":{\"show\":false},\"name\":\"外部刻度\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"splitNumber\":2,\"detail\":{\"show\":false},\"type\":\"gauge\",\"radius\":66},\"innerProgress\":{\"axisLabel\":{\"show\":false},\"animationDuration\":2000,\"pointer\":{\"show\":false,\"length\":81,\"width\":1,\"itemStyle\":{\"color\":\"#FFFFFF\"}},\"data\":[{\"name\":\"去年优良率\",\"value\":44}],\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#32B9BA\"],[1,\"#32B9BA\"]],\"width\":1}},\"name\":\"内部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"detail\":{\"offsetCenter\":[0,50],\"show\":false,\"textStyle\":{\"padding\":[0,0,0,0],\"color\":\"#FFFFFF\",\"fontSize\":18,\"fontWeight\":\"normal\"}},\"type\":\"gauge\",\"radius\":\"30%\",\"title\":{\"offsetCenter\":[0,26],\"show\":true,\"textStyle\":{\"color\":\"#FFFFFF\",\"fontSize\":16,\"fontWeight\":\"normal\"}}},\"outerProgress\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#32B9BA\"],[1,\"#32B9BA\"]],\"width\":2}},\"name\":\"外部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"basic\":{\"startAngle\":180,\"endAngle\":0},\"innerShadow\":{\"axisLabel\":{\"show\":false},\"customGradient\":{\"endColor\":\"#32B9BACC\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#32B9BA00\"},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":1,\"y2\":0,\"x2\":0,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2de69600\"},{\"offset\":1,\"color\":\"#2de696\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":100}},\"name\":\"内部阴影\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":79}},\"valuePrefix\":\"已使用:\",\"titlePrefix\":\"总人数:\",\"valueMapping\":\"used\",\"titleMapping\":\"total\",\"valueSuffix\":\"辆\"}}},{\"component\":\"JSemiGauge\",\"visible\":true,\"w\":222,\"x\":1181.0316529894487,\"h\":210,\"i\":\"es-drager-1763539599125-2\",\"y\":261.1828831914188,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.301939188772533%\",\"left\":\"57.9239666722439%\",\"width\":\"10.88804061151867%\",\"position\":\"absolute\",\"config\":{},\"height\":\"21.147661600757242%\"},\"componentName\":\"半圆仪表盘\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":430,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"total\\\": 800,\\n \\\"used\\\": 500\\n }\\n]\",\"size\":{\"width\":222,\"height\":210},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"titleSuffix\":\"人\",\"customAttr\":{\"innerCircle\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":0,\"y2\":1,\"x2\":1,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#4277FF66\"},{\"offset\":1,\"color\":\"#4277FF66\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":15}},\"name\":\"内部小圆\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"outerScale\":{\"axisLabel\":{\"color\":\"#FFFFFF\",\"distance\":-52,\"show\":true,\"fontSize\":12},\"min\":0,\"max\":100,\"axisLine\":{\"show\":false},\"name\":\"外部刻度\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"splitNumber\":2,\"detail\":{\"show\":false},\"type\":\"gauge\",\"radius\":66},\"innerProgress\":{\"axisLabel\":{\"show\":false},\"animationDuration\":2000,\"pointer\":{\"show\":false,\"length\":81,\"width\":1,\"itemStyle\":{\"color\":\"#FFFFFF\"}},\"data\":[{\"name\":\"去年优良率\",\"value\":44}],\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#2E76B9\"],[1,\"#2E76B9\"]],\"width\":1}},\"name\":\"内部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"detail\":{\"offsetCenter\":[0,50],\"show\":false,\"textStyle\":{\"padding\":[0,0,0,0],\"color\":\"#FFFFFF\",\"fontSize\":18,\"fontWeight\":\"normal\"}},\"type\":\"gauge\",\"radius\":\"30%\",\"title\":{\"offsetCenter\":[0,26],\"show\":true,\"textStyle\":{\"color\":\"#FFFFFF\",\"fontSize\":16,\"fontWeight\":\"normal\"}}},\"outerProgress\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#4277FF\"],[1,\"#4277FF\"]],\"width\":2}},\"name\":\"外部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"basic\":{\"startAngle\":180,\"endAngle\":0},\"innerShadow\":{\"axisLabel\":{\"show\":false},\"customGradient\":{\"endColor\":\"#4277FFCC\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#4277FF00\"},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":1,\"y2\":0,\"x2\":0,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2de69600\"},{\"offset\":1,\"color\":\"#2de696\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":100}},\"name\":\"内部阴影\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":79}},\"valuePrefix\":\"已使用:\",\"titlePrefix\":\"总人数:\",\"valueMapping\":\"used\",\"titleMapping\":\"total\",\"valueSuffix\":\"辆\"}}}]},\"component\":\"JGroup\",\"w\":2038.934349355217,\"x\":-127,\"y\":76,\"componentName\":\"投资\",\"pageCompId\":\"1151112776903086080\",\"equalProportion\":false,\"key\":\"ad56ff31-2be7-4967-8ad8-22fb9249deac\",\"group\":true},{\"visible\":false,\"h\":988.6694020273344,\"i\":\"es-drager-1762421939532-37\",\"props\":{\"elements\":[{\"component\":\"JStatsSummary\",\"visible\":true,\"w\":713.0000000000001,\"x\":571.0199296600234,\"h\":129,\"i\":\"6ba699ad-92ee-4f14-b66c-7d2cbce6057e\",\"y\":68.20046885031215,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.898207703248671%\",\"left\":\"30.823751360096747%\",\"width\":\"38.48785931663358%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.047839827497103%\"},\"componentName\":\"统计概览(背景模式)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": \\\"1\\\",\\n \\\"name\\\": \\\"成本已支付金额\\\",\\n \\\"value\\\": 96790,\\n \\\"suffix\\\": \\\"万元\\\",\\n \\\"compareLabel\\\": \\\"同比\\\",\\n \\\"compareValue\\\": \\\"20%\\\",\\n \\\"compareState\\\": \\\"0\\\"\\n },\\n {\\n \\\"id\\\": \\\"2\\\",\\n \\\"name\\\": \\\"成本未付款金额\\\",\\n \\\"value\\\": 96.79,\\n \\\"suffix\\\": \\\"%\\\",\\n \\\"compareLabel\\\": \\\"同比\\\",\\n \\\"compareValue\\\": \\\"20%\\\",\\n \\\"compareState\\\": \\\"0\\\"\\n },\\n {\\n \\\"id\\\": \\\"3\\\",\\n \\\"name\\\": \\\"租赁应收未回金额\\\",\\n \\\"value\\\": 10790,\\n \\\"suffix\\\": \\\"元\\\",\\n \\\"compareLabel\\\": \\\"同比\\\",\\n \\\"compareValue\\\": \\\"20%\\\",\\n \\\"compareState\\\": \\\"1\\\"\\n },\\n {\\n \\\"id\\\": \\\"4\\\",\\n \\\"name\\\": \\\"租赁项目欠款金额\\\",\\n \\\"value\\\": 86790,\\n \\\"suffix\\\": \\\"元\\\",\\n \\\"compareLabel\\\": \\\"同比\\\",\\n \\\"compareValue\\\": \\\"20%\\\",\\n \\\"compareState\\\": \\\"1\\\"\\n }\\n]\",\"size\":{\"width\":713.0000000000001,\"height\":129},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":713,\"dataType\":1,\"h\":129,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"layout\":{\"padding\":{\"top\":5,\"left\":20,\"bottom\":0,\"right\":20},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"contain\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"drag/lib/img/bg01.png\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"image\"}},\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"card\":{\"padding\":{\"horizontal\":3,\"vertical\":15},\"borderColor\":\"#0F66FF59\",\"borderRadius\":0,\"shadow\":\"none\",\"borderWidth\":0,\"blur\":24,\"minWidth\":100,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0B2B6300\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"sections\":{\"middle\":{\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#15f0c5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#15f0c5\"},\"positiveColor\":\"#00FFAE\",\"fontSize\":14,\"negativeColor\":\"#FF0000\",\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"negativeGradient\":{\"endColor\":\"#D0021B\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#D0021B\"},\"fontColor\":\"#FFFFFF\"},\"alignItems\":\"center\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#CFEAFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ED3FF\"},\"fontColor\":\"#DADADA\"},\"label\":\"同比\"},\"paddingBottom\":10,\"show\":true,\"type\":\"compare\",\"align\":\"center\"},\"top\":{\"minHeight\":40,\"paddingBottom\":10,\"show\":true,\"paddingTop\":5,\"type\":\"value\",\"align\":\"center\",\"value\":{\"unit\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#96F5F8\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#9ED3FF\"},\"fontWeight\":500,\"fontColor\":\"#9ED3FF\"},\"unitGap\":6,\"fontSize\":24,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#96F5F8\"},\"fontWeight\":600,\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"paddingBottom\":10,\"show\":true,\"label\":{\"fontSize\":14,\"fontColor\":\"#C9E6FF\"},\"type\":\"label\",\"align\":\"center\"}}}}},{\"component\":\"JImg\",\"visible\":true,\"w\":83.00000204530508,\"x\":1683.8100819494582,\"h\":51.999996548865546,\"i\":\"es-drager-1762851269890-2\",\"y\":81.32122205883473,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.22532%\",\"left\":\"90.89235%\",\"width\":\"4.480354000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.259593999999999%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":83.00000204530508,\"height\":51.999996548865546},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_29_1763551901494.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":83.00000204530508,\"x\":1530.6096120950147,\"h\":51.999996548865546,\"i\":\"es-drager-1762851253605-1\",\"y\":80.0551023625165,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.097257000000003%\",\"left\":\"82.62256300000001%\",\"width\":\"4.480354000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.259593999999999%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":83.00000204530508,\"height\":51.999996548865546},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_27_1763551895529.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":43,\"i\":\"es-drager-1762849064798-20\",\"orderNum\":70,\"component\":\"JText\",\"w\":51,\"x\":1169.6975226315708,\"y\":432.5854492285337,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.754307389455725%\",\"left\":\"63.14046801410759%\",\"width\":\"2.752988534569863%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492799424990345%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":51.99998699681006,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2d91eb63-bada-4811-8c1b-65189dcf7599\"},{\"visible\":true,\"h\":43.000010455188466,\"i\":\"es-drager-1762849058217-19\",\"orderNum\":70,\"component\":\"JText\",\"w\":51.99998699681006,\"x\":1038.021084598434,\"y\":487.0285938030566,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.2610161500266%\",\"left\":\"56.03255185375025%\",\"width\":\"2.806968000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":51.99998699681005,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2d91eb63-bada-4811-8c1b-65189dcf7599\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.99998699681006,\"x\":683.5075917950732,\"h\":43.000010455188466,\"i\":\"es-drager-1762849043828-18\",\"y\":489.56082449258037,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.51714126974116%\",\"left\":\"36.89585418633911%\",\"width\":\"2.806968000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":51.99998699681005,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2d91eb63-bada-4811-8c1b-65189dcf7599\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.99998699681006,\"x\":937.9976478556124,\"h\":43.000010455188466,\"i\":\"es-drager-1762849029696-16\",\"y\":292.0461788601647,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.539315999999992%\",\"left\":\"50.63327000000002%\",\"width\":\"2.806968000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":51.99998699681005,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2d91eb63-bada-4811-8c1b-65189dcf7599\"},{\"component\":\"JText\",\"visible\":true,\"w\":101.00000181927524,\"x\":1150.971855353579,\"h\":46.99999878199271,\"i\":\"es-drager-1762849006795-15\",\"y\":409.787098507104,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.44834437748427%\",\"left\":\"62.129653360804035%\",\"width\":\"5.451997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"794,150\\\"\\n}\",\"size\":{\"width\":101.00000181927523,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":101.00000181927524,\"x\":1019.4243913572378,\"h\":46.99999878199271,\"i\":\"es-drager-1762849000354-14\",\"y\":465.62531457297723,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.096159102140774%\",\"left\":\"55.028699240536014%\",\"width\":\"5.451997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":101.00000181927523,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":101.00000181927524,\"x\":909.4009228742274,\"h\":46.99999878199271,\"i\":\"es-drager-1762848992281-13\",\"y\":268.2396227476817,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"27.131377%\",\"left\":\"49.089614000000005%\",\"width\":\"5.451997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"94,000\\\"\\n}\",\"size\":{\"width\":101.00000181927523,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":101.00000181927524,\"x\":659.9753814335057,\"h\":46.99999878199271,\"i\":\"es-drager-1762848979407-12\",\"y\":468.2865173043536,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.3653292338268%\",\"left\":\"35.62558153303556%\",\"width\":\"5.451997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"994,150\\\"\\n}\",\"size\":{\"width\":101.00000181927523,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":76.00000522075926,\"x\":1146.1007905389508,\"h\":43.00000056849445,\"i\":\"es-drager-1762848746940-11\",\"y\":490.1176839485176,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.57346540142718%\",\"left\":\"61.86671246696447%\",\"width\":\"4.102492999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.34928%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":76.00000522075925,\"height\":43.00000056849446},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"54cf0d91-5cd0-40b5-8034-95d55014f90e\"},{\"component\":\"JText\",\"visible\":true,\"w\":76.00000522075926,\"x\":1034.8112462126353,\"h\":43.00000056849445,\"i\":\"es-drager-1762848738842-10\",\"y\":540.8914319443187,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.70902920988389%\",\"left\":\"55.85928424053601%\",\"width\":\"4.102492999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.34928%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":76.00000522075925,\"height\":43.00000056849446},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"54cf0d91-5cd0-40b5-8034-95d55014f90e\"},{\"component\":\"JText\",\"visible\":true,\"w\":76.00000522075926,\"x\":926.053909410244,\"h\":43.00000056849445,\"i\":\"es-drager-1762848724480-9\",\"y\":354.9008064339704,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"35.896812999999995%\",\"left\":\"49.98854500000001%\",\"width\":\"4.102492999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.34928%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":76.00000522075925,\"height\":43.00000056849446},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"54cf0d91-5cd0-40b5-8034-95d55014f90e\"},{\"component\":\"JText\",\"visible\":true,\"w\":76.00000522075926,\"x\":675.3622355462353,\"h\":43.00000056849445,\"i\":\"es-drager-1762848716458-8\",\"y\":554.9477012273585,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"56.130765257769696%\",\"left\":\"36.45616649294621%\",\"width\":\"4.102492999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.34928%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":76.00000522075925,\"height\":43.00000056849446},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"54cf0d91-5cd0-40b5-8034-95d55014f90e\"},{\"component\":\"JImg\",\"visible\":true,\"w\":59.99999924656725,\"x\":932.8722283986059,\"h\":84.99999169692029,\"i\":\"es-drager-1762848356232-7\",\"y\":280.17468158185136,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.338560999999995%\",\"left\":\"50.35659900000001%\",\"width\":\"3.238810000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.597412999999998%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":59.99999924656725,\"height\":84.99999169692029},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":101.00000181927524,\"x\":789.2485271715286,\"h\":46.99999878199271,\"i\":\"es-drager-1762848336840-6\",\"y\":322.81171698679043,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"32.65112850917029%\",\"left\":\"42.603767573124884%\",\"width\":\"5.451997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"1,994,150\\\"\\n}\",\"size\":{\"width\":101.00000181927523,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to top\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.99998699681006,\"x\":811.5146364804583,\"h\":43.000010455188466,\"i\":\"es-drager-1762848322084-5\",\"y\":345.3521537580295,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"34.93100454508466%\",\"left\":\"43.805695879732%\",\"width\":\"2.806968000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":51.99998699681005,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2d91eb63-bada-4811-8c1b-65189dcf7599\"},{\"component\":\"JText\",\"visible\":true,\"w\":76.00000522075926,\"x\":803.3692688716295,\"h\":43.00000056849445,\"i\":\"es-drager-1762848304881-4\",\"y\":430.9969452788255,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.59363649719883%\",\"left\":\"43.36600757312489%\",\"width\":\"4.102492999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.34928%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目名称\\\"\\n}\",\"size\":{\"width\":76.00000522075925,\"height\":43.00000056849446},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"54cf0d91-5cd0-40b5-8034-95d55014f90e\"},{\"component\":\"JImg\",\"visible\":true,\"w\":64.00000537144585,\"x\":1033.0246263328966,\"h\":88.9999997971126,\"i\":\"es-drager-1762848210868-3\",\"y\":465.157090512513,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.048800090169316%\",\"left\":\"55.76284220044669%\",\"width\":\"3.454731000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.001997999999999%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":64.00000537144585,\"height\":88.9999997971126},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":61.99999304634536,\"x\":1164.7010515207064,\"h\":84.99999169692029,\"i\":\"es-drager-1762848205032-2\",\"y\":414.5123157421458,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.92628141339864%\",\"left\":\"62.870757667411134%\",\"width\":\"3.3467700000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.597412999999998%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":61.99999304634537,\"height\":84.99999169692029},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":70.00000529610256,\"x\":675.9789007962789,\"h\":91.9999984572363,\"i\":\"es-drager-1762848199690-1\",\"y\":474.01993004375464,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"47.94524125776971%\",\"left\":\"36.48945418633911%\",\"width\":\"3.7786120000000007%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.305436%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":70.00000529610256,\"height\":91.9999984572363},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":11.000002949424383,\"x\":247.82881673228633,\"h\":17.000002294061673,\"i\":\"es-drager-1762776290330-1\",\"y\":237.77959838698735,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.050465999999997%\",\"left\":\"13.377841000000002%\",\"width\":\"0.593782%\",\"position\":\"absolute\",\"config\":{},\"height\":\"1.719483%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":11.000002949424381,\"height\":17.000002294061673},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_17_1763552004773.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":131.9999983424479,\"x\":379.57794515961206,\"h\":35.99999380817846,\"i\":\"es-drager-1762775755103-5\",\"y\":100.65181473429544,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"10.180533%\",\"left\":\"20.489681000000004%\",\"width\":\"7.125381999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6412570000000004%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"超支合同总数\\\"\\n}\",\"size\":{\"width\":131.9999983424479,\"height\":35.99999380817846},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFD3D3\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":41.99999947259708,\"x\":394.9003504185903,\"h\":30.00000637462507,\"i\":\"es-drager-1762775743083-4\",\"y\":85.321220272333,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.629903999999998%\",\"left\":\"21.316787000000005%\",\"width\":\"2.267167000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.034382%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":41.99999947259708,\"height\":30.00000637462507},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":51.00000862224333,\"x\":373.37631562661164,\"h\":37.00000324824705,\"i\":\"es-drager-1762775732063-3\",\"y\":82.78898087969645,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.373777999999996%\",\"left\":\"20.154916000000004%\",\"width\":\"2.752989000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7424040000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"51\\\"\\n}\",\"size\":{\"width\":51.00000862224333,\"height\":37.00000324824705},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":0,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":131.9999983424479,\"x\":175.8616630329137,\"h\":35.99999380817846,\"i\":\"es-drager-1762775491330-2\",\"y\":102.04689646741414,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"10.321639999999999%\",\"left\":\"9.493042000000003%\",\"width\":\"7.125381999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6412570000000004%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同到期总数\\\"\\n}\",\"size\":{\"width\":131.9999983424479,\"height\":35.99999380817846},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#EFF1CA\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":113.99999856847775,\"x\":1682.1316877454951,\"h\":32.99999514805475,\"i\":\"es-drager-1762421807094-36\",\"y\":163.459559605057,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"16.533287999999995%\",\"left\":\"90.80175000000001%\",\"width\":\"6.153739000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.3378189999999996%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"总应收金额\\\"\\n}\",\"size\":{\"width\":113.99999856847775,\"height\":32.99999514805475},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#ACCDF2\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2811e8ee-093c-4be8-8ae8-e06b1d2b3b0c\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.00000862224333,\"x\":1736.1289403823714,\"h\":39.00000235499617,\"i\":\"es-drager-1762421803113-35\",\"y\":132.5240243353311,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.404280952114176%\",\"left\":\"93.71653073348223%\",\"width\":\"2.752989000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.944695999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":51.00000862224333,\"height\":39.00000235499617},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"58cdf874-8a47-4b55-8c44-8bfc3eb806d9\"},{\"component\":\"JText\",\"visible\":true,\"w\":69.00000839621347,\"x\":1683.131684645384,\"h\":46.99999878199271,\"i\":\"es-drager-1762421795606-34\",\"y\":125.45955680343542,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.689738%\",\"left\":\"90.85573%\",\"width\":\"3.7246319999999993%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"3898\\\"\\n}\",\"size\":{\"width\":69.00000839621347,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":113.99999856847775,\"x\":1522.6872394711825,\"h\":32.99999514805475,\"i\":\"es-drager-1762421729992-33\",\"y\":163.459559605057,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"16.533287999999995%\",\"left\":\"82.194912%\",\"width\":\"6.153739000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.3378189999999996%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目累计欠款\\\"\\n}\",\"size\":{\"width\":113.99999856847775,\"height\":32.99999514805475},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#ACCDF2\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2811e8ee-093c-4be8-8ae8-e06b1d2b3b0c\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.00000862224333,\"x\":1567.9533708468402,\"h\":39.00000235499617,\"i\":\"es-drager-1762421726217-32\",\"y\":133.2579137508141,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.478510964085629%\",\"left\":\"84.63838534669647%\",\"width\":\"2.752989000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.944695999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":51.00000862224333,\"height\":39.00000235499617},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"58cdf874-8a47-4b55-8c44-8bfc3eb806d9\"},{\"component\":\"JText\",\"visible\":true,\"w\":64.00000537144585,\"x\":1524.798348154353,\"h\":46.99999878199271,\"i\":\"es-drager-1762421719453-31\",\"y\":126.45955635680997,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.790883999999997%\",\"left\":\"82.30887%\",\"width\":\"3.454731000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"898\\\"\\n}\",\"size\":{\"width\":64.00000537144585,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FFC5AB\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#E86B6B\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":64.00000537144585,\"x\":1383.5322244068514,\"h\":46.99999878199271,\"i\":\"es-drager-1762421654488-30\",\"y\":125.45955680343542,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.689738%\",\"left\":\"74.68330100000001%\",\"width\":\"3.454731000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"198\\\"\\n}\",\"size\":{\"width\":64.00000537144585,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#6BE5E8\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"a04f824f-4454-4452-8bbf-651d4d5477c3\"},{\"component\":\"JText\",\"visible\":true,\"w\":51.00000862224333,\"x\":1420.8772050872835,\"h\":39.00000235499617,\"i\":\"es-drager-1762421637698-29\",\"y\":131.7462480034502,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.325611952114174%\",\"left\":\"76.69918930660712%\",\"width\":\"2.752989000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.944695999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":51.00000862224333,\"height\":39.00000235499617},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"58cdf874-8a47-4b55-8c44-8bfc3eb806d9\"},{\"component\":\"JText\",\"visible\":true,\"w\":77.99999902053742,\"x\":1392.4094662453533,\"h\":32.99999514805475,\"i\":\"es-drager-1762421586808-28\",\"y\":164.68177249323125,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"16.656909999999996%\",\"left\":\"75.162496%\",\"width\":\"4.210453000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.3378189999999996%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"欠款数量\\\"\\n}\",\"size\":{\"width\":77.99999902053742,\"height\":32.99999514805475},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#ACCDF2\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2811e8ee-093c-4be8-8ae8-e06b1d2b3b0c\"},{\"visible\":true,\"h\":43.000010455188466,\"i\":\"es-drager-1762421434219-27\",\"orderNum\":70,\"component\":\"JText\",\"w\":133.99999214222606,\"x\":1711.798361243923,\"y\":203.45956151342773,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"20.579129999999996%\",\"left\":\"92.40316200000001%\",\"width\":\"7.233342000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目/合同名称\\\"\\n}\",\"size\":{\"width\":133.99999214222606,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A2C8F2\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"visible\":true,\"h\":43.000010455188466,\"i\":\"es-drager-1762420435770-26\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.0000080194971,\"x\":1312.7983569915898,\"y\":198.45955385986088,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"20.073398999999995%\",\"left\":\"70.865075%\",\"width\":\"5.344037%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"费项明细\\\"\\n}\",\"size\":{\"width\":99.0000080194971,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"component\":\"JMultipleBar\",\"visible\":true,\"w\":514.9999966205892,\"x\":1324.7983383155806,\"h\":202.99999831528342,\"i\":\"0e6f2873-f014-44d9-92dc-fb5faf81406f\",\"y\":242.4595638684239,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.523825999999996%\",\"left\":\"71.512836%\",\"width\":\"27.799786000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"20.532647%\"},\"componentName\":\"对比柱形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"租金\\\",\\n \\\"value\\\": 910,\\n \\\"type\\\": \\\"应收\\\"\\n },\\n {\\n \\\"name\\\": \\\"水电\\\",\\n \\\"value\\\": 910,\\n \\\"type\\\": \\\"应收\\\"\\n },\\n {\\n \\\"name\\\": \\\"物业\\\",\\n \\\"value\\\": 960,\\n \\\"type\\\": \\\"应收\\\"\\n },\\n {\\n \\\"name\\\": \\\"租金\\\",\\n \\\"value\\\": 800,\\n \\\"type\\\": \\\"实收\\\"\\n },\\n {\\n \\\"name\\\": \\\"水电\\\",\\n \\\"value\\\": 700,\\n \\\"type\\\": \\\"实收\\\"\\n },\\n {\\n \\\"name\\\": \\\"物业\\\",\\n \\\"value\\\": 700,\\n \\\"type\\\": \\\"实收\\\"\\n },\\n {\\n \\\"name\\\": \\\"租金\\\",\\n \\\"value\\\": 480,\\n \\\"type\\\": \\\"欠款\\\"\\n },\\n {\\n \\\"name\\\": \\\"水电\\\",\\n \\\"value\\\": 230,\\n \\\"type\\\": \\\"欠款\\\"\\n },\\n {\\n \\\"name\\\": \\\"物业\\\",\\n \\\"value\\\": 400,\\n \\\"type\\\": \\\"欠款\\\"\\n }\\n]\",\"size\":{\"width\":514.9999966205892,\"height\":202.99999831528342},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"name\":\"单位(万元)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#006CFF00\",\"color\":\"#006CFFB3\"},{\"color1\":\"#00D8FF00\",\"color\":\"#00D8FFB5\"},{\"color1\":\"#FFBB3800\",\"color\":\"#FFBB38B5\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":50,\"left\":24,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"barWidth\":15,\"barGap\":\"100%\",\"itemStyle\":{\"borderRadius\":7},\"label\":{\"color\":\"#4A90E2\",\"show\":true,\"position\":\"top\"}}],\"legend\":{},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"visible\":true,\"h\":43.000010455188466,\"i\":\"es-drager-1762420262561-25\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.0000080194971,\"x\":1318.7983569162466,\"y\":718.4595490085985,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.66934199999999%\",\"left\":\"71.18895600000002%\",\"width\":\"5.344037%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"欠款分析\\\"\\n}\",\"size\":{\"width\":99.0000080194971,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"component\":\"JScrollList\",\"visible\":true,\"w\":514.9999966205892,\"x\":1329.7983413403485,\"h\":220.00000060934508,\"i\":\"c01aa5d0-70b0-4813-b062-a2ee7a8589dd\",\"y\":764.4595383505226,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"77.32205899999998%\",\"left\":\"71.78273700000001%\",\"width\":\"27.799786000000005%\",\"position\":\"absolute\",\"config\":{},\"height\":\"22.25213%\"},\"componentName\":\"滚动列表(单行)\",\"config\":{\"chartData\":\"[{\\\"id\\\":1,\\\"projectName\\\":\\\"项目A\\\",\\\"officeFee\\\":1200,\\\"travelFee\\\":5600,\\\"arrearsAmount\\\":3000},{\\\"id\\\":2,\\\"projectName\\\":\\\"项目B\\\",\\\"officeFee\\\":800,\\\"travelFee\\\":4200,\\\"arrearsAmount\\\":0},{\\\"id\\\":3,\\\"projectName\\\":\\\"项目C\\\",\\\"officeFee\\\":1500,\\\"travelFee\\\":1800,\\\"arrearsAmount\\\":1200},{\\\"id\\\":4,\\\"projectName\\\":\\\"项目D\\\",\\\"officeFee\\\":600,\\\"travelFee\\\":2300,\\\"arrearsAmount\\\":900},{\\\"id\\\":5,\\\"projectName\\\":\\\"项目E\\\",\\\"officeFee\\\":950,\\\"travelFee\\\":3000,\\\"arrearsAmount\\\":150}]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":514.9999966205892,\"height\":220.00000060934508},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"timeOut\":0,\"option\":{\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":15,\"name\":\"项目名称\",\"width\":116,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"projectName\",\"marginLeft\":10},{\"marginRight\":1,\"textAlign\":\"left\",\"compose\":{\"contentStyle\":{\"marginRight\":4,\"fontSize\":15,\"fontGradient\":{\"endColor\":\"#038F8A\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#06CFC8\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\",\"marginLeft\":3},\"suffixStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"办公费\",\"prefixStyle\":{\"fontColor\":\"#DEDEDE\"},\"suffix\":\"元\",\"enabled\":true},\"name\":\"办公费\",\"width\":108,\"textStyle\":{\"fontColor\":\"#FFFFFF\"},\"key\":\"officeFee\"},{\"marginRight\":13,\"textAlign\":\"left\",\"compose\":{\"contentStyle\":{\"marginRight\":1,\"fontGradient\":{\"endColor\":\"#038F8A\",\"enabled\":true,\"startColor\":\"#06CFC8\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\",\"marginLeft\":1},\"suffixStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"差旅费\",\"prefixStyle\":{\"fontColor\":\"#DEDEDE\"},\"suffix\":\"元\",\"enabled\":true},\"name\":\"差旅费\",\"width\":111,\"textStyle\":{\"fontColor\":\"#FFFFFF\"},\"key\":\"travelFee\"},{\"textAlign\":\"left\",\"compose\":{\"contentStyle\":{\"marginRight\":2,\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#0DA183\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#12E3B9\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\",\"marginLeft\":3},\"suffixStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"欠款金额\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"suffix\":\"元\",\"enabled\":true},\"name\":\"欠款金额\",\"width\":122,\"textStyle\":{\"fontColor\":\"#DC3545\"},\"key\":\"arrearsAmount\"}],\"itemsPerRow\":1,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-01.png\",\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"height\":44}}}},{\"visible\":true,\"h\":43.000010455188466,\"i\":\"es-drager-1762420151147-24\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.0000080194971,\"x\":1319.128959818718,\"y\":444.6612017548762,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"44.97572199999999%\",\"left\":\"71.206802%\",\"width\":\"5.344037%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.3492809999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"账期监控\\\"\\n}\",\"size\":{\"width\":99.0000080194971,\"height\":43.000010455188466},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"component\":\"JPermanentCalendar\",\"visible\":true,\"w\":477.0000032728707,\"x\":1347.6529914352425,\"h\":219.0000010559705,\"i\":\"da53da9d-fbc3-45f8-8f66-da05f0b73aad\",\"y\":493.1934304894369,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"49.884564999999995%\",\"left\":\"72.74653400000001%\",\"width\":\"25.748540000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"22.150983999999998%\"},\"componentName\":\"万日历\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[],\"dataType\":1,\"h\":480,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"date\\\": \\\"2025-11-05\\\",\\n \\\"value\\\": 620000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-08\\\",\\n \\\"value\\\": 265000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-10\\\",\\n \\\"value\\\": 564000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-14\\\",\\n \\\"value\\\": 120000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-15\\\",\\n \\\"value\\\": 565000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"value\\\": 120000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-24\\\",\\n \\\"value\\\": 102000\\n },\\n {\\n \\\"date\\\": \\\"2025-11-25\\\",\\n \\\"value\\\": 120\\n },\\n {\\n \\\"date\\\": \\\"2025-11-28\\\",\\n \\\"value\\\": 103\\n }\\n]\",\"size\":{\"width\":477.0000032728707,\"height\":219.0000010559705},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1000,\"linkageConfig\":[],\"option\":{\"container\":{\"border\":{\"color\":\"#2B6CB0\",\"width\":0,\"style\":\"solid\",\"enabled\":true},\"padding\":{\"top\":5,\"left\":4,\"bottom\":8,\"right\":0},\"margin\":{\"bottom\":0},\"background\":{\"color\":\"#00000000\",\"gradient\":{\"endColor\":\"#0A1E3A\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to bottom\",\"startColor\":\"#0B2B58\"}}},\"dataVal\":{\"offsetX\":-2,\"offsetY\":-15,\"color\":{\"gradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"value\":\"#D0021B\"},\"fontSize\":14,\"position\":\"top\"},\"week\":{\"color\":{\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"value\":\"#FFFFFF\"},\"prefix\":\"周\",\"start\":\"sun\",\"fontSize\":21,\"marginBottom\":21,\"showEn\":false,\"fontWeight\":\"bold\",\"height\":22},\"month\":{\"offsetTop\":-11,\"color\":{\"gradient\":{\"endColor\":\"#ffffff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom\",\"startColor\":\"#ffffff\"},\"value\":\"#ffffff\"},\"show\":true,\"en\":{\"color\":{\"value\":\"#FFFFFF\"},\"fontSize\":29,\"opacity\":1},\"offsetLeft\":0,\"cn\":{\"color\":{\"gradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"value\":\"#FFFFFF\"},\"fontSize\":70,\"opacity\":0.11,\"fontStyle\":\"italic\"},\"position\":\"center\",\"showEn\":false},\"field\":{\"unit\":\"万\",\"appendUnit\":true,\"dateField\":\"date\",\"valueField\":\"value\"},\"title\":{\"color\":{\"gradient\":{\"endColor\":\"#3bc6ff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#9fe5ff\"},\"value\":\"#9fe5ff\"},\"show\":true},\"cell\":{\"width\":120,\"day\":{\"color\":{\"value\":\"#FFFFFF\"},\"fontSize\":14},\"height\":25},\"circle\":{\"dashed\":false,\"strokeWidth\":4,\"glowStrength\":0.45,\"fillOpacity\":0.16,\"size\":37,\"minIntensity\":0.55,\"pulse\":true,\"doubleRing\":true,\"glowEnabled\":true,\"enabled\":true}}}},{\"component\":\"JMultipleBar\",\"visible\":true,\"w\":756.0000090320697,\"x\":546.7983604353072,\"h\":283.000002132025,\"i\":\"c55fc027-14ba-4db5-81ea-a7ec69526940\",\"y\":705.6693998953094,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"71.375669%\",\"left\":\"29.516267000000003%\",\"width\":\"40.809007000000015%\",\"position\":\"absolute\",\"config\":{},\"height\":\"28.62433100000001%\"},\"componentName\":\"对比柱形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 325,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 465,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 305,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 105,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 256,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 600,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"7月\\\",\\n \\\"value\\\": 500,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"8月\\\",\\n \\\"value\\\": 132,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"9月\\\",\\n \\\"value\\\": 156,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"10月\\\",\\n \\\"value\\\": 213,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"11月\\\",\\n \\\"value\\\": 356,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"12月\\\",\\n \\\"value\\\": 113,\\n \\\"type\\\": \\\"成本支出金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 50,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 450,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 365,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 355,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 49,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 60,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"7月\\\",\\n \\\"value\\\": 117,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"8月\\\",\\n \\\"value\\\": 229,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"9月\\\",\\n \\\"value\\\": 119,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"10月\\\",\\n \\\"value\\\": 103,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"11月\\\",\\n \\\"value\\\": 90,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"12月\\\",\\n \\\"value\\\": 143,\\n \\\"type\\\": \\\"租赁收入金额\\\"\\n }\\n]\",\"size\":{\"width\":756.0000090320697,\"height\":283.000002132025},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"name\":\"单位(万元)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#00A8FF\",\"color\":\"#0F3352\"},{\"color1\":\"#15DBCB\",\"color\":\"#0F3352\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":35,\"left\":1,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"barWidth\":12,\"itemStyle\":{\"borderRadius\":0},\"label\":{\"color\":\"#EEF1FA\"}}],\"legend\":{\"r\":1,\"t\":1},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"visible\":true,\"h\":59.9999929758621,\"i\":\"es-drager-1762419089506-23\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.00001021548871,\"x\":572.3306080699609,\"y\":650.5322268067889,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.798762%\",\"left\":\"30.894502000000006%\",\"width\":\"9.176629%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.0687619999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"资金流动趋势\\\"\\n}\",\"size\":{\"width\":170.00001021548871,\"height\":59.9999929758621},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"visible\":true,\"h\":35.99999380817846,\"i\":\"es-drager-1762419081801-22\",\"orderNum\":70,\"component\":\"JImg\",\"w\":725.9999908834636,\"x\":555.7983510596312,\"y\":664.266120184477,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"67.18789099999998%\",\"left\":\"30.002088000000004%\",\"width\":\"39.18960100000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6412570000000004%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146300970204450816\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":725.9999908834637,\"height\":35.99999380817846},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"d05d8636-fe01-4048-8a21-99851c7012b1\"},{\"visible\":true,\"h\":37.00000324824705,\"i\":\"es-drager-1762419024578-19\",\"orderNum\":70,\"component\":\"JText\",\"w\":134.99998904211512,\"x\":551.209851019992,\"y\":210.79835561773643,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"21.321419999999993%\",\"left\":\"29.754400000000004%\",\"width\":\"7.287322000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7424040000000005%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970175090688\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目欠款分布\\\"\\n}\",\"size\":{\"width\":134.99998904211512,\"height\":37.00000324824705},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"e190480f-f18e-453c-88fe-e109292f6fdf\"},{\"visible\":true,\"h\":346.9999933213852,\"i\":\"f8220f2d-63b9-471c-a776-57a0d72f73c2\",\"orderNum\":70,\"component\":\"JListProgress\",\"w\":533.9999932944485,\"x\":13.72565215056514,\"y\":623.9917724037379,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.11429999999999%\",\"left\":\"0.7409130000000002%\",\"width\":\"28.825409000000008%\",\"position\":\"absolute\",\"config\":{},\"height\":\"35.09767699999999%\"},\"componentName\":\"列表进度图\",\"pageCompId\":\"1146300970011512832\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"2025年度战略合作框架协议\\\",\\n \\\"total\\\": 1200000,\\n \\\"date\\\": \\\"2025-12-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-15\\\",\\n \\\"value\\\": 800000\\n },\\n {\\n \\\"title\\\": \\\"智能制造设备采购合同\\\",\\n \\\"total\\\": 850000,\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"endLabel\\\": \\\"2025-05-30\\\",\\n \\\"value\\\": 500000\\n },\\n {\\n \\\"title\\\": \\\"信息化系统集成服务合同\\\",\\n \\\"total\\\": 2000000,\\n \\\"date\\\": \\\"2026-01-15\\\",\\n \\\"endLabel\\\": \\\"2025-07-01\\\",\\n \\\"value\\\": 1500000\\n },\\n {\\n \\\"title\\\": \\\"2025年技术支持与维护协议\\\",\\n \\\"total\\\": 600000,\\n \\\"date\\\": \\\"2025-10-10\\\",\\n \\\"endLabel\\\": \\\"2025-04-28\\\",\\n \\\"value\\\": 300000\\n },\\n {\\n \\\"title\\\": \\\"大数据平台建设合同\\\",\\n \\\"total\\\": 1750000,\\n \\\"date\\\": \\\"2025-09-25\\\",\\n \\\"endLabel\\\": \\\"2025-05-10\\\",\\n \\\"value\\\": 1200000\\n },\\n {\\n \\\"title\\\": \\\"云服务采购框架协议\\\",\\n \\\"total\\\": 950000,\\n \\\"date\\\": \\\"2025-08-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-01\\\",\\n \\\"value\\\": 700000\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":533.9999932944485,\"height\":346.99999332138515},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1200,\"dataType\":1,\"h\":325,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"beginFields\":[{\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"合同名称\",\"style\":{\"letterSpacing\":0,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\"},{\"compose\":{\"contentStyle\":{\"marginRight\":1,\"fontSize\":12,\"fontGradient\":{\"endColor\":\"#78F7FA\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#78F7FA\",\"fontWeight\":\"bold\",\"marginLeft\":0},\"suffixStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#78F7FA\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#78F7FA\",\"fontWeight\":\"bold\"},\"prefix\":\"\",\"prefixStyle\":{\"fontSize\":14,\"fontColor\":\"#666666\"},\"suffix\":\"万元\",\"enabled\":true},\"name\":\"总额\",\"width\":100,\"style\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#FF4500\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFD700\",\"direction\":\"to bottom\"},\"fontColor\":\"#FFFFFF\"},\"key\":\"total\"}],\"endCurrent\":0,\"endInfo\":{\"width\":103},\"scroll\":{\"count\":1,\"interval\":3000,\"enabled\":true,\"direction\":\"down\"},\"centerTopFields\":[{\"marginRight\":0,\"name\":\"最近日期\",\"style\":{\"letterSpacing\":0,\"fontSize\":12,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"italic\",\"fontColor\":\"#888888\",\"fontWeight\":\"normal\"},\"key\":\"endLabel\",\"marginLeft\":0},{\"marginRight\":0,\"isUseExceedFillColor\":true,\"compose\":{\"contentStyle\":{\"marginRight\":0,\"fontColor\":\"#6EEDF3\",\"marginLeft\":0},\"suffixStyle\":{\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontColor\":\"#6EEDF3\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"suffix\":\"\",\"enabled\":true},\"showPercentage\":true,\"name\":\"进度值\",\"width\":100,\"style\":{\"fontSize\":12,\"fontGradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#00D4FF\",\"direction\":\"to bottom\"},\"fontColor\":\"#6EEDF3\"},\"key\":\"value\",\"marginLeft\":0}],\"body\":{\"gradient\":{\"type\":\"linear\"}},\"endFields\":[{\"name\":\"到期日期\",\"style\":{\"letterSpacing\":0,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"date\"}],\"beginCurrent\":1,\"progressSection\":{\"marginRight\":0,\"marginLeft\":0},\"bar\":{\"border\":{\"padding\":8,\"color\":\"#4ECBFC21\",\"width\":2,\"enabled\":true},\"total\":{\"field\":\"total\",\"type\":\"field\",\"value\":0},\"borderRadius\":8,\"background\":{\"color\":\"#5A97FC4F\",\"gradient\":{\"endColor\":\"#0066CC\",\"enabled\":false,\"direction\":\"to bottom\",\"startColor\":\"#FFFFFF\"}},\"indicatorColor\":\"#02F7FFA3\",\"exceed\":{\"indicatorColor\":\"#FEF8C9A1\",\"fill\":{\"color\":\"#FFB347\",\"gradient\":{\"endColor\":\"#FEAF24\",\"enabled\":true,\"startColor\":\"#FEF6C8\",\"direction\":\"to right\"}},\"percent\":70,\"enabled\":true},\"indicatorSize\":10,\"fill\":{\"color\":\"#33C9FF\",\"gradient\":{\"endColor\":\"#24E5F1\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#C5FDFE\"}},\"valueField\":\"value\",\"height\":3},\"centerTopInfo\":{\"layout\":\"horizontal\"},\"centerTopCurrent\":1,\"row\":{\"marginRight\":0,\"padding\":\"0 0\",\"marginBottom\":0,\"marginTop\":12,\"height\":31,\"marginLeft\":9},\"beginInfo\":{\"layout\":\"vertical\",\"width\":176}}},\"key\":\"a436dea0-cd2d-4a65-aa6b-426cde282aec\"},{\"visible\":true,\"h\":304.99999230626537,\"i\":\"8cc8a3c3-0948-4171-b8d4-209129a39128\",\"orderNum\":70,\"component\":\"JCardScroll\",\"w\":531.9999994946703,\"x\":4.733886769359984,\"y\":279.3786642995031,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.258046999999998%\",\"left\":\"0.2555360000000001%\",\"width\":\"28.717449000000006%\",\"position\":\"absolute\",\"config\":{},\"height\":\"30.849542999999997%\"},\"componentName\":\"卡片滚动(高亮)\",\"pageCompId\":\"1146300970061844480\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[],\"dataType\":1,\"h\":304,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"projectName\\\": \\\"苏州地铁5号线工程\\\",\\n \\\"status\\\": \\\"一期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786720503390209\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"南京软件园研发楼\\\",\\n \\\"status\\\": \\\"二期\\\",\\n \\\"paymentMethod\\\": \\\"一次性付款\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786777713696769\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"重庆智慧交通枢纽\\\",\\n \\\"status\\\": \\\"三期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786804406247425\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"武汉光谷科技园\\\",\\n \\\"status\\\": \\\"一期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786837256036353\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"上海浦东新区道路改造\\\",\\n \\\"status\\\": \\\"二期\\\",\\n \\\"paymentMethod\\\": \\\"一次性付款\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\",\\n \\\"道路工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786864602898433\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"深圳南山创新中心\\\",\\n \\\"status\\\": \\\"三期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\",\\n \\\"道路工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786897117143041\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"成都高新产业园\\\",\\n \\\"status\\\": \\\"一期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786931179085826\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"杭州滨江智慧社区\\\",\\n \\\"status\\\": \\\"二期\\\",\\n \\\"paymentMethod\\\": \\\"一次性付款\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966786962128855042\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"广州南沙港区扩建\\\",\\n \\\"status\\\": \\\"三期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966787000406073346\\\"\\n },\\n {\\n \\\"projectName\\\": \\\"天津生态城住宅项目\\\",\\n \\\"status\\\": \\\"一期\\\",\\n \\\"paymentMethod\\\": \\\"分期\\\",\\n \\\"type\\\": [\\n \\\"建筑工程\\\",\\n \\\"市政工程\\\"\\n ],\\n \\\"id\\\": \\\"1966787029329993729\\\"\\n }\\n]\",\"size\":{\"width\":531.9999994946703,\"height\":304.99999230626537},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":540,\"linkageConfig\":[],\"option\":{\"showIndex\":true,\"autoScrollEnabled\":true,\"rowGap\":16,\"indexFieldStyle\":{},\"contentFieldMapping\":[{\"valueStyle\":{\"fontSize\":14,\"fontColor\":\"#A6D8FF\",\"fontWeight\":\"normal\"},\"itemConfig\":{\"alignItems\":\"flex-start\",\"marginBottom\":24,\"marginTop\":13,\"height\":40},\"nameStyle\":{\"fontColor\":\"#FFFFFF\"},\"omitConfig\":{\"show\":true,\"lines\":2},\"name\":\"项目名称\",\"width\":100,\"key\":\"projectName\",\"showLabel\":false},{\"valueStyle\":{\"fontSize\":16,\"marginBottom\":10,\"fontColor\":\"#FFFFFF\",\"marginTop\":-5},\"itemConfig\":{\"alignItems\":\"flex-start\",\"justifyContent\":\"center\"},\"nameStyle\":{\"fontColor\":\"#FFFFFF\"},\"name\":\"进度\",\"width\":100,\"key\":\"status\",\"showLabel\":false},{\"valueStyle\":{\"fontSize\":12,\"marginBottom\":0,\"fontColor\":\"#BFBFBF\",\"marginTop\":-10},\"itemConfig\":{\"alignItems\":\"center\",\"layoutDirection\":\"row\",\"justifyContent\":\"center\"},\"nameStyle\":{\"fontColor\":\"#FFFFFF\"},\"name\":\"付款方式\",\"width\":100,\"key\":\"paymentMethod\",\"showLabel\":false},{\"valueStyle\":{\"fontSize\":14,\"fontColor\":\"#FFFFFF\"},\"itemConfig\":{\"alignItems\":\"center\",\"layoutDirection\":\"column\",\"justifyContent\":\"flex-start\"},\"nameStyle\":{\"fontSize\":14,\"marginBottom\":10,\"fontColor\":\"#FFFFFF\",\"marginTop\":26},\"valueType\":\"array\",\"name\":\"合同类型\",\"width\":100,\"key\":\"type\"}],\"autoScrollSpeed\":100,\"scrollDirection\":\"left\",\"animationDuration\":800,\"columnGap\":16,\"stayDuration\":5000,\"contentCurrent\":1,\"cardStyle\":{\"backgroundColor\":\"#0648786E\",\"borderColor\":\"#1890FF\",\"backgroundImage\":\"https://static.jeecg.com/jimureport/images/组-1121_05_1757733370432.png\",\"paddingRight\":5,\"borderEnabled\":false,\"paddingBottom\":5,\"borderRadius\":0,\"borderWidth\":1,\"width\":122,\"paddingTop\":5,\"bgHighlightImage\":\"https://static.jeecg.com/jimureport/images/组-1121_03_1757735281389.png\",\"borderStyle\":\"dashed\",\"paddingLeft\":5,\"height\":300},\"currentValue\":0,\"direction\":\"horizontal\"}},\"key\":\"cb43a6dd-2191-428e-8d28-101517716e82\"},{\"visible\":true,\"h\":52.99999610224011,\"i\":\"874a6164-d6b8-400c-8d6c-7224b8d8fa73\",\"orderNum\":70,\"component\":\"JText\",\"w\":95.0000018946185,\"x\":269.38688254140277,\"y\":179.11254927232653,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.116525999999997%\",\"left\":\"14.541549000000003%\",\"width\":\"5.128116%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.360739999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970103787520\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"详情>\\\"\\n}\",\"size\":{\"width\":95.00000189461852,\"height\":52.99999610224012},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"setModalCited\":true,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#5A868B\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#36363600\",\"backgroundImage\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/产城详情_032_1763553721746.png\",\"backgroundSize\":\"100% 100%\",\"targetCompId\":\"es-drager-1762409324858-6\",\"backgroundPosition\":\"center center\",\"title\":\"\",\"sizeMode\":\"fit\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F00\"},\"openType\":\"_blank\"}},\"key\":\"42c54784-6b0f-4d44-84f0-2c8a63af9b79\"},{\"visible\":true,\"h\":46.99999878199271,\"i\":\"es-drager-1762399836630-5\",\"orderNum\":70,\"component\":\"JText\",\"w\":67.99999297100209,\"x\":251.18523463376653,\"y\":182.11254793245024,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.419963999999997%\",\"left\":\"13.559021000000001%\",\"width\":\"3.6706510000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970124759040\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":67.99999297100209,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#5A868B\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"fe69c43c-3bfb-4983-8a75-a3d98c2b240d\"},{\"visible\":true,\"h\":52.99999610224011,\"i\":\"39150764-32e5-464a-8d07-abca92992b3e\",\"orderNum\":70,\"component\":\"JText\",\"w\":94.00000499472947,\"x\":198.65299660081877,\"y\":176.58030987969,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.860399999999995%\",\"left\":\"10.723322%\",\"width\":\"5.074136000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.360739999999999%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970141536256\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"6,790\\\"\\n}\",\"size\":{\"width\":94.00000499472947,\"height\":52.99999610224012},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":24,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"1b524244-da11-4aa4-a0af-a750ed3fe210\"},{\"visible\":true,\"h\":46.99999878199271,\"i\":\"8f386c60-44f0-4bf0-85e1-dfc3ebbc975f\",\"orderNum\":70,\"component\":\"JText\",\"w\":109.99999244359917,\"x\":125.18521769065302,\"y\":179.5803085398137,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.163837999999995%\",\"left\":\"6.757519000000002%\",\"width\":\"5.937818000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.753863999999998%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970154119168\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目总数\\\"\\n}\",\"size\":{\"width\":109.99999244359917,\"height\":46.99999878199271},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"546303e1-9281-41dd-88d7-56a2175baf6a\"},{\"visible\":true,\"h\":37.00000324824705,\"i\":\"es-drager-1762399377808-4\",\"orderNum\":70,\"component\":\"JText\",\"w\":114.99999546836682,\"x\":12.20164798297948,\"y\":93.395080190355,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.446542999999998%\",\"left\":\"0.6586470000000001%\",\"width\":\"6.207719000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7424040000000005%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970175090688\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同预警\\\"\\n}\",\"size\":{\"width\":114.99999546836682,\"height\":37.00000324824705},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4a9caef5-fe02-44c4-9191-9e069c016e1f\"},{\"visible\":true,\"h\":59.9999929758621,\"i\":\"es-drager-1762398785719-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.00001021548871,\"x\":1319.7983538161357,\"y\":1.9999991067491294,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0.20229199999999942%\",\"left\":\"71.24293600000001%\",\"width\":\"9.176629%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.0687619999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970187673600\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"租赁系统数据\\\"\\n}\",\"size\":{\"width\":170.00001021548871,\"height\":59.9999929758621},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"40d1d9a6-fa9d-4e2d-b25f-aa85c9c09609\"},{\"visible\":true,\"h\":35.99999380817846,\"i\":\"es-drager-1762398759885-2\",\"orderNum\":70,\"component\":\"JImg\",\"w\":537.0000025194379,\"x\":1315.532231435849,\"y\":17.266122437005365,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.7463999999999997%\",\"left\":\"71.01265%\",\"width\":\"28.98735%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.6412570000000004%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146300970204450816\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":537.0000025194379,\"height\":35.99999380817846},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"d05d8636-fe01-4048-8a21-99851c7012b1\"},{\"visible\":true,\"h\":59.9999929758621,\"i\":\"68f75009-8c50-4375-8985-6f36fcbcbace\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.00001021548871,\"x\":4.20163573322229,\"y\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"0.22680500000000006%\",\"width\":\"9.176629%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.0687619999999995%\"},\"componentName\":\"文本\",\"pageCompId\":\"1146300970217033728\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"成本系统数据\\\"\\n}\",\"size\":{\"width\":170.00001021548871,\"height\":59.9999929758621},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2859886c-0e76-46eb-b86b-64326ad27bbf\"},{\"visible\":true,\"h\":35.000004141497904,\"i\":\"bf455d73-9694-488e-897d-ab5c552a2e95\",\"orderNum\":70,\"component\":\"JImg\",\"w\":543.0000024440947,\"x\":0,\"y\":15.733882597743403,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.5914199999999996%\",\"left\":\"0%\",\"width\":\"29.311231000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.5401119999999993%\"},\"componentName\":\"图片\",\"pageCompId\":\"1146300970233810944\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":543.0000024440947,\"height\":35.000004141497904},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"c77e6615-da1a-4c2e-8e3b-2bb9002c9184\"},{\"component\":\"JText\",\"visible\":true,\"w\":41.000002572708,\"x\":194.9824077577821,\"h\":29.99999648793105,\"i\":\"a3e3e41c-44ed-4d59-bb93-372d8d63fb1f\",\"y\":89.24855128478228,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.027138%\",\"left\":\"10.525183%\",\"width\":\"2.213187%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0343809999999998%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":41.000002572708,\"height\":29.99999648793105},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":149.9999981164181,\"x\":321.2637687712664,\"h\":99.99999488423282,\"i\":\"es-drager-1762774351674-1\",\"y\":67.59554452387727,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.837021999999997%\",\"left\":\"17.341872%\",\"width\":\"8.097025000000002%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.114603999999998%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":149.9999981164181,\"height\":99.99999488423282},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_41_1763551881751.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":51.00000862224333,\"x\":170.92614665521,\"h\":37.00000324824705,\"i\":\"f1f7a03d-01ce-4ee5-bcc4-06a169d1d2bd\",\"y\":84.18405272612117,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.514883999999999%\",\"left\":\"9.226622%\",\"width\":\"2.752989000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7424040000000005%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"76\\\"\\n}\",\"size\":{\"width\":51.00000862224333,\"height\":37.00000324824705},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":0,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":167.99999789038833,\"x\":104.88628099031132,\"h\":104.00000298442514,\"i\":\"2ea9f177-88fc-49ce-a2e7-0a9089f41e0d\",\"y\":66.45838686435945,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.722002999999997%\",\"left\":\"5.661779000000001%\",\"width\":\"9.068668000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.519188999999999%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":167.99999789038833,\"height\":104.00000298442514},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_39_1763551870530.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":538.9999963192163,\"x\":12.66118712893443,\"h\":35.000004141497904,\"i\":\"3f286895-ab97-45e7-9384-527089c0afd6\",\"y\":186.73973824120662,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.887985999999998%\",\"left\":\"0.6834530000000001%\",\"width\":\"29.095310000000012%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.5401119999999993%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":538.9999963192163,\"height\":35.000004141497904},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_13_1763551964951.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":11.999999849313447,\"x\":248.95778692630336,\"h\":18.000001847436234,\"i\":\"cea81bd3-6d33-41da-8393-fec1e1ba11f9\",\"y\":594.9542752387625,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.177272%\",\"left\":\"13.438783%\",\"width\":\"0.6477620000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"1.8206289999999996%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":11.999999849313447,\"height\":18.000001847436234},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_17_1763552004773.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":89.99999886985086,\"x\":796.3892117165844,\"h\":124.99999360529105,\"i\":\"82435ec8-26f7-4c2b-8a28-dd8d034db75f\",\"y\":315.88394276806093,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"31.950411545084663%\",\"left\":\"42.98922291982134%\",\"width\":\"4.858215%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.643255%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":89.99999886985086,\"height\":124.99999360529107},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":894.0000072991742,\"x\":487.45604718243874,\"h\":603.9999971789773,\"i\":\"1b53a65a-6907-45bd-83d7-7d55d7048d91\",\"y\":152.55450644061344,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.430284999999996%\",\"left\":\"26.312959000000003%\",\"width\":\"48.25827%\",\"position\":\"absolute\",\"config\":{},\"height\":\"61.092210999999985%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":894.0000072991742,\"height\":603.9999971789773},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/产城背景地图_1763551428302.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":83.00000204530508,\"x\":1376.2719838540795,\"h\":51.999996548865546,\"i\":\"00c0b354-a82e-40dd-b1c2-ef2e1d6d0a09\",\"y\":80.18405451262291,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.1103%\",\"left\":\"74.29139200000002%\",\"width\":\"4.480354000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.259593999999999%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":83.00000204530508,\"height\":51.999996548865546},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763551889963.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}}]},\"component\":\"JGroup\",\"w\":1852.532233955287,\"x\":22,\"y\":74,\"componentName\":\"新成\",\"pageCompId\":\"1151112776924057600\",\"equalProportion\":false,\"key\":\"f9b7b1c7-f98e-4b8a-b271-bab6cb7ffb0d\",\"group\":true},{\"visible\":false,\"h\":982.5087924970692,\"i\":\"es-drager-1762409324858-6\",\"props\":{\"elements\":[{\"component\":\"JText\",\"visible\":true,\"w\":170,\"x\":763.4701055099648,\"h\":60,\"i\":\"86652dd5-ea38-431d-9a83-83fa934fcf0a\",\"y\":0,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"44.883604086417684%\",\"width\":\"9.994121105232216%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.106815578465063%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目列表\\\"\\n}\",\"size\":{\"width\":170,\"height\":60},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":2,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JScrollTable\",\"visible\":true,\"w\":1701,\"x\":0,\"h\":892,\"i\":\"ebb593ac-a3cb-430c-855a-9024de4329ad\",\"y\":90.50879249706912,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.212008400152726%\",\"left\":\"0%\",\"width\":\"100%\",\"position\":\"absolute\",\"config\":{},\"height\":\"90.78799159984727%\"},\"componentName\":\"详情弹框表格\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"施工合同\\\",\\n \\\"htdate\\\": \\\"2024-10-11\\\",\\n \\\"htmoney\\\": \\\"1200000\\\",\\n \\\"ljbgje\\\": \\\"50000\\\",\\n \\\"dthtje\\\": \\\"1250000\\\",\\n \\\"ljsfje\\\": \\\"100000\\\",\\n \\\"ljwfje\\\": \\\"2500000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"装修合同\\\",\\n \\\"htdate\\\": \\\"2024-11-05\\\",\\n \\\"htmoney\\\": \\\"980000\\\",\\n \\\"ljbgje\\\": \\\"30000\\\",\\n \\\"dthtje\\\": \\\"1010000\\\",\\n \\\"ljsfje\\\": \\\"80000\\\",\\n \\\"ljwfje\\\": \\\"2100000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"消防合同\\\",\\n \\\"htdate\\\": \\\"2024-12-01\\\",\\n \\\"htmoney\\\": \\\"760000\\\",\\n \\\"ljbgje\\\": \\\"20000\\\",\\n \\\"dthtje\\\": \\\"780000\\\",\\n \\\"ljsfje\\\": \\\"60000\\\",\\n \\\"ljwfje\\\": \\\"1800000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"智能化合同\\\",\\n \\\"htdate\\\": \\\"2025-01-10\\\",\\n \\\"htmoney\\\": \\\"540000\\\",\\n \\\"ljbgje\\\": \\\"15000\\\",\\n \\\"dthtje\\\": \\\"555000\\\",\\n \\\"ljsfje\\\": \\\"45000\\\",\\n \\\"ljwfje\\\": \\\"1200000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"景观合同\\\",\\n \\\"htdate\\\": \\\"2025-02-15\\\",\\n \\\"htmoney\\\": \\\"420000\\\",\\n \\\"ljbgje\\\": \\\"10000\\\",\\n \\\"dthtje\\\": \\\"430000\\\",\\n \\\"ljsfje\\\": \\\"35000\\\",\\n \\\"ljwfje\\\": \\\"950000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"幕墙合同\\\",\\n \\\"htdate\\\": \\\"2025-03-20\\\",\\n \\\"htmoney\\\": \\\"880000\\\",\\n \\\"ljbgje\\\": \\\"25000\\\",\\n \\\"dthtje\\\": \\\"905000\\\",\\n \\\"ljsfje\\\": \\\"70000\\\",\\n \\\"ljwfje\\\": \\\"1600000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"暖通合同\\\",\\n \\\"htdate\\\": \\\"2025-04-08\\\",\\n \\\"htmoney\\\": \\\"650000\\\",\\n \\\"ljbgje\\\": \\\"18000\\\",\\n \\\"dthtje\\\": \\\"668000\\\",\\n \\\"ljsfje\\\": \\\"52000\\\",\\n \\\"ljwfje\\\": \\\"1350000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"电梯合同\\\",\\n \\\"htdate\\\": \\\"2025-05-12\\\",\\n \\\"htmoney\\\": \\\"720000\\\",\\n \\\"ljbgje\\\": \\\"22000\\\",\\n \\\"dthtje\\\": \\\"742000\\\",\\n \\\"ljsfje\\\": \\\"58000\\\",\\n \\\"ljwfje\\\": \\\"1500000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"厨房设备合同\\\",\\n \\\"htdate\\\": \\\"2025-06-05\\\",\\n \\\"htmoney\\\": \\\"380000\\\",\\n \\\"ljbgje\\\": \\\"8000\\\",\\n \\\"dthtje\\\": \\\"388000\\\",\\n \\\"ljsfje\\\": \\\"30000\\\",\\n \\\"ljwfje\\\": \\\"800000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"软装合同\\\",\\n \\\"htdate\\\": \\\"2025-07-01\\\",\\n \\\"htmoney\\\": \\\"560000\\\",\\n \\\"ljbgje\\\": \\\"12000\\\",\\n \\\"dthtje\\\": \\\"572000\\\",\\n \\\"ljsfje\\\": \\\"48000\\\",\\n \\\"ljwfje\\\": \\\"1150000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"施工合同\\\",\\n \\\"htdate\\\": \\\"2024-10-11\\\",\\n \\\"htmoney\\\": \\\"1200000\\\",\\n \\\"ljbgje\\\": \\\"50000\\\",\\n \\\"dthtje\\\": \\\"1250000\\\",\\n \\\"ljsfje\\\": \\\"100000\\\",\\n \\\"ljwfje\\\": \\\"2500000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"装修合同\\\",\\n \\\"htdate\\\": \\\"2024-11-05\\\",\\n \\\"htmoney\\\": \\\"980000\\\",\\n \\\"ljbgje\\\": \\\"30000\\\",\\n \\\"dthtje\\\": \\\"1010000\\\",\\n \\\"ljsfje\\\": \\\"80000\\\",\\n \\\"ljwfje\\\": \\\"2100000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"消防合同\\\",\\n \\\"htdate\\\": \\\"2024-12-01\\\",\\n \\\"htmoney\\\": \\\"760000\\\",\\n \\\"ljbgje\\\": \\\"20000\\\",\\n \\\"dthtje\\\": \\\"780000\\\",\\n \\\"ljsfje\\\": \\\"60000\\\",\\n \\\"ljwfje\\\": \\\"1800000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"智能化合同\\\",\\n \\\"htdate\\\": \\\"2025-01-10\\\",\\n \\\"htmoney\\\": \\\"540000\\\",\\n \\\"ljbgje\\\": \\\"15000\\\",\\n \\\"dthtje\\\": \\\"555000\\\",\\n \\\"ljsfje\\\": \\\"45000\\\",\\n \\\"ljwfje\\\": \\\"1200000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"景观合同\\\",\\n \\\"htdate\\\": \\\"2025-02-15\\\",\\n \\\"htmoney\\\": \\\"420000\\\",\\n \\\"ljbgje\\\": \\\"10000\\\",\\n \\\"dthtje\\\": \\\"430000\\\",\\n \\\"ljsfje\\\": \\\"35000\\\",\\n \\\"ljwfje\\\": \\\"950000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"幕墙合同\\\",\\n \\\"htdate\\\": \\\"2025-03-20\\\",\\n \\\"htmoney\\\": \\\"880000\\\",\\n \\\"ljbgje\\\": \\\"25000\\\",\\n \\\"dthtje\\\": \\\"905000\\\",\\n \\\"ljsfje\\\": \\\"70000\\\",\\n \\\"ljwfje\\\": \\\"1600000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"暖通合同\\\",\\n \\\"htdate\\\": \\\"2025-04-08\\\",\\n \\\"htmoney\\\": \\\"650000\\\",\\n \\\"ljbgje\\\": \\\"18000\\\",\\n \\\"dthtje\\\": \\\"668000\\\",\\n \\\"ljsfje\\\": \\\"52000\\\",\\n \\\"ljwfje\\\": \\\"1350000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"二期\\\",\\n \\\"htname\\\": \\\"电梯合同\\\",\\n \\\"htdate\\\": \\\"2025-05-12\\\",\\n \\\"htmoney\\\": \\\"720000\\\",\\n \\\"ljbgje\\\": \\\"22000\\\",\\n \\\"dthtje\\\": \\\"742000\\\",\\n \\\"ljsfje\\\": \\\"58000\\\",\\n \\\"ljwfje\\\": \\\"1500000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"三期\\\",\\n \\\"htname\\\": \\\"厨房设备合同\\\",\\n \\\"htdate\\\": \\\"2025-06-05\\\",\\n \\\"htmoney\\\": \\\"380000\\\",\\n \\\"ljbgje\\\": \\\"8000\\\",\\n \\\"dthtje\\\": \\\"388000\\\",\\n \\\"ljsfje\\\": \\\"30000\\\",\\n \\\"ljwfje\\\": \\\"800000\\\"\\n },\\n {\\n \\\"name\\\": \\\"怡悦湾酒店\\\",\\n \\\"fqname\\\": \\\"一期\\\",\\n \\\"htname\\\": \\\"软装合同\\\",\\n \\\"htdate\\\": \\\"2025-07-01\\\",\\n \\\"htmoney\\\": \\\"560000\\\",\\n \\\"ljbgje\\\": \\\"12000\\\",\\n \\\"dthtje\\\": \\\"572000\\\",\\n \\\"ljsfje\\\": \\\"48000\\\",\\n \\\"ljwfje\\\": \\\"1150000\\\"\\n }\\n]\",\"size\":{\"width\":1701,\"height\":892},\"syncColumn\":false,\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"headerBgColor\":\"#003B6F\",\"borderColor\":\"#FFFFFF\",\"textPosition\":\"center\",\"scroll\":true,\"scrollTime\":50,\"bodyFontSize\":20,\"bodyFontColor\":\"#FFFFFF\",\"rankingTitle\":\"#\",\"showBorder\":false,\"oddColor\":\"#001E3C\",\"evenColor\":\"#00284E\",\"fieldMapping\":[{\"name\":\"项目名称\",\"width\":200,\"key\":\"name\"},{\"name\":\"分期名称\",\"width\":200,\"key\":\"fqname\"},{\"name\":\"合同日期\",\"width\":200,\"key\":\"htdate\"},{\"name\":\"合同金额(元)\",\"width\":200,\"key\":\"htmoney\"},{\"name\":\"累计变更金额\",\"width\":200,\"key\":\"ljbgje\"},{\"name\":\"动态合同金额\",\"width\":200,\"key\":\"dthtje\"},{\"name\":\"累计实付金额\",\"width\":200,\"key\":\"ljsfje\"},{\"name\":\"累计未付金额\",\"width\":200,\"key\":\"ljwfje\"}],\"showHead\":true,\"borderWidth\":1,\"ranking\":false,\"lineHeight\":50,\"fontSize\":24,\"borderStyle\":\"solid\",\"headerFontColor\":\"#FFFFFF\"}}}]},\"modalCited\":\"874a6164-d6b8-400c-8d6c-7224b8d8fa73\",\"component\":\"JGroup\",\"w\":1701,\"x\":99,\"y\":34.49120750293087,\"componentName\":\"详情弹框\",\"pageCompId\":\"1151112776945029120\",\"equalProportion\":false,\"key\":\"3e57537d-5911-41a4-8cfa-db9b2dc711c6\",\"group\":true},{\"visible\":false,\"h\":950.9395927008758,\"i\":\"es-drager-1756456982092-28\",\"props\":{\"elements\":[{\"component\":\"JBar\",\"visible\":true,\"w\":541,\"x\":1308.9728600943263,\"h\":190,\"i\":\"84e41e0f-f14b-44d6-8e0a-fdf0b1390398\",\"y\":279.80457035966094,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.424011000000007%\",\"left\":\"69.27569900000002%\",\"width\":\"28.631726677892527%\",\"position\":\"absolute\",\"config\":{},\"height\":\"19.980238645901636%\"},\"componentName\":\"基础柱形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 90\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 79\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 70\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 55\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 78\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 98\\n }\\n]\",\"size\":{\"width\":541.058706079854,\"height\":190.48343252800288},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"lineStyle\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#4A90E235\"},\"show\":true,\"interval\":2},\"name\":\"单位(个)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":30,\"left\":16,\"bottom\":18,\"show\":false,\"right\":9,\"containLabel\":true},\"series\":[{\"barWidth\":17,\"data\":[],\"showBackground\":false,\"backgroundStyle\":{\"color\":\"#51626E\"},\"itemStyle\":{\"color\":\"#00A8FFA6\",\"borderRadius\":3},\"label\":{\"position\":\"top\"},\"type\":\"bar\"}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#475580\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JStatsSummary\",\"visible\":true,\"w\":681,\"x\":580.0384926431407,\"h\":129,\"i\":\"be3108cf-9334-449a-8795-ef8fb1e69164\",\"y\":54.525238831863746,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.733827810975898%\",\"left\":\"30.697788510194417%\",\"width\":\"36.041045966071735%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.565530449059532%\"},\"componentName\":\"统计概览(背景模式)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": \\\"1\\\",\\n \\\"name\\\": \\\"在管项目总数\\\",\\n \\\"value\\\": 960,\\n \\\"suffix\\\": \\\"个\\\"\\n },\\n {\\n \\\"id\\\": \\\"2\\\",\\n \\\"name\\\": \\\"累计放款金额\\\",\\n \\\"value\\\": 790,\\n \\\"suffix\\\": \\\"万元\\\"\\n },\\n {\\n \\\"id\\\": \\\"3\\\",\\n \\\"name\\\": \\\"当前借款余额\\\",\\n \\\"value\\\": 900,\\n \\\"suffix\\\": \\\"万元\\\"\\n },\\n {\\n \\\"id\\\": \\\"4\\\",\\n \\\"name\\\": \\\"总应收租金\\\",\\n \\\"value\\\": 6790,\\n \\\"suffix\\\": \\\"万元\\\"\\n },\\n {\\n \\\"id\\\": \\\"5\\\",\\n \\\"name\\\": \\\"租金实收率\\\",\\n \\\"value\\\": 90,\\n \\\"suffix\\\": \\\"%\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":680.9999999999999,\"height\":129},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":713,\"dataType\":1,\"h\":129,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"layout\":{\"padding\":{\"top\":5,\"left\":20,\"bottom\":0,\"right\":20},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"100% 100%\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"drag/lib/img/bg01.png\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"image\"}},\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"card\":{\"padding\":{\"horizontal\":3,\"vertical\":15},\"borderColor\":\"#0F66FF59\",\"borderRadius\":0,\"shadow\":\"none\",\"borderWidth\":0,\"blur\":24,\"minWidth\":100,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0B2B6300\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"sections\":{\"middle\":{\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#15f0c5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#15f0c5\"},\"positiveColor\":\"#15F0C5\",\"fontSize\":14,\"negativeColor\":\"#D0021B\",\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"negativeGradient\":{\"endColor\":\"#D0021B\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#D0021B\"},\"fontColor\":\"#FFFFFF\"},\"alignItems\":\"center\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontColor\":\"#9ED3FF\"},\"label\":\"同比\"},\"paddingBottom\":10,\"show\":false,\"type\":\"compare\",\"align\":\"center\"},\"top\":{\"minHeight\":40,\"paddingBottom\":10,\"show\":true,\"paddingTop\":5,\"type\":\"value\",\"align\":\"center\",\"value\":{\"unit\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#96F5F8\"},\"fontWeight\":500,\"fontColor\":\"#9ED3FF\"},\"unitGap\":6,\"fontSize\":24,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#96F5F8\"},\"fontWeight\":600,\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"paddingBottom\":10,\"show\":true,\"label\":{\"fontSize\":14,\"fontColor\":\"#C9E6FF\"},\"type\":\"label\",\"align\":\"center\"}}}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":1092.016430295897,\"h\":27.97398018640021,\"i\":\"es-drager-1763118212824-19\",\"y\":506.6564308568187,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"53.27955999999999%\",\"left\":\"57.79356%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"客户名称\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":1205.967192459297,\"h\":27.97398018640021,\"i\":\"es-drager-1763118197556-18\",\"y\":430.68925214089586,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.29091600000001%\",\"left\":\"63.824257%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"客户名称\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":985.6623767923331,\"h\":27.97398018640021,\"i\":\"es-drager-1763118191675-17\",\"y\":323.06908863293563,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"33.97367100000001%\",\"left\":\"52.164909%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"客户名称\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1095.814765730692,\"h\":29.97211347737514,\"i\":\"es-drager-1763118021837-16\",\"y\":430.68924263149984,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.290915%\",\"left\":\"57.99458200000001%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1216.0961310407038,\"h\":29.97211347737514,\"i\":\"es-drager-1763118010715-15\",\"y\":378.7783346397803,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"39.83200800000001%\",\"left\":\"64.360318%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":995.79131537374,\"h\":29.97211347737514,\"i\":\"es-drager-1763118003690-14\",\"y\":267.3598140979031,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.115331000000005%\",\"left\":\"52.700970000000005%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1088.346997390856,\"h\":39.00000114161981,\"i\":\"es-drager-1763117996097-13\",\"y\":405.4958098141571,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.64159500000001%\",\"left\":\"57.59936%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"96340\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1211.1606115175618,\"h\":39.00000114161981,\"i\":\"es-drager-1763117990004-12\",\"y\":349.78654478852053,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"36.78325600000001%\",\"left\":\"64.099112%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"11960\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":990.855795850598,\"h\":39.00000114161981,\"i\":\"es-drager-1763117985668-11\",\"y\":243.43250029186595,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.599155000000007%\",\"left\":\"52.439764%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"91260\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":691.9226477632122,\"h\":27.97398018640021,\"i\":\"es-drager-1763117979572-10\",\"y\":496.5274692569776,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"52.21440700000001%\",\"left\":\"36.619113%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"客户名称\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":700.7854619362721,\"h\":29.97211347737514,\"i\":\"es-drager-1763117971569-9\",\"y\":416.76192399774175,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"43.82633%\",\"left\":\"37.088166%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":695.8499424131302,\"h\":39.00000114161981,\"i\":\"es-drager-1763117964448-8\",\"y\":391.56849118039895,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.17701000000001%\",\"left\":\"36.82696%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"9160\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":83.00000257528725,\"x\":688.6400925035406,\"h\":115.9999953491752,\"i\":\"es-drager-1763117932887-7\",\"y\":383.5890619640866,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"40.337900000000005%\",\"left\":\"36.445388%\",\"width\":\"4.392668000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.198461000000002%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":83.00000257528727,\"height\":115.9999953491752},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":70.0000067249707,\"x\":1091.0082054226732,\"h\":95.99999549522116,\"i\":\"es-drager-1763117918967-6\",\"y\":408.65354737265926,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.97366000000001%\",\"left\":\"57.740201%\",\"width\":\"3.70466%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.095278000000004%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":70.0000067249707,\"height\":95.99999549522116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":62.00000055779603,\"x\":1213.9507598693788,\"h\":83.00000462407712,\"i\":\"es-drager-1763117907587-5\",\"y\":351.80712025388317,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"36.995738%\",\"left\":\"64.246777%\",\"width\":\"3.28127%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.72821%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":62.00000055779603,\"height\":83.0000046240771},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":62.00000055779603,\"x\":993.7749034175382,\"h\":83.00000462407712,\"i\":\"es-drager-1763117887178-4\",\"y\":245.58203267539477,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.825198000000004%\",\"left\":\"52.59425399999999%\",\"width\":\"3.28127%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.72821%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":62.00000055779603,\"height\":83.0000046240771},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":835.1230982678547,\"h\":29.97211347737514,\"i\":\"es-drager-1763117551885-3\",\"y\":278.8838421178201,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.327188%\",\"left\":\"44.197812%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":831.4536842579369,\"h\":39.00000114161981,\"i\":\"es-drager-1763117542406-2\",\"y\":249.8920522665603,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.278436%\",\"left\":\"44.003613%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"199,445\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":830.058638424713,\"h\":27.97398018640021,\"i\":\"es-drager-1763117524939-1\",\"y\":363.71387293167453,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"38.247842000000006%\",\"left\":\"43.929782%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"客户名称\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":98.99999601451351,\"x\":817.9132500968582,\"h\":131.00000237168769,\"i\":\"01adf6f2-8586-42bf-8ca5-e68125185724\",\"y\":236.8481470050254,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.906750000000002%\",\"left\":\"43.287003%\",\"width\":\"5.239447%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.775849000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":98.9999960145135,\"height\":131.00000237168769},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_44_1763551574907.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":173.99999242262612,\"x\":592.259300662204,\"h\":37.00000400904318,\"i\":\"es-drager-1763014748783-1\",\"y\":163.07150518786855,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.148461000000005%\",\"left\":\"31.344559%\",\"width\":\"9.208725000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"采购合同金额分布\\\"\\n}\",\"size\":{\"width\":173.9999924226261,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JText\",\"visible\":true,\"w\":128.9999907987339,\"x\":1694.4314250338105,\"h\":26.99999932736819,\"i\":\"es-drager-1762929346632-5\",\"y\":724.1710725496224,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.15321500000002%\",\"left\":\"89.675596%\",\"width\":\"6.827158%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"36个月期项目数量\\\"\\n}\",\"size\":{\"width\":128.9999907987339,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#8D8D8D\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":46.00000711856976,\"x\":1732.8018837686052,\"h\":28.999996459944818,\"i\":\"es-drager-1762929340450-4\",\"y\":695.437187025299,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"73.13158400000002%\",\"left\":\"91.706303%\",\"width\":\"2.434491%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0496150000000006%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":46.00000711856976,\"height\":28.999996459944818},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#505050\",\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1685.8264915007508,\"h\":39.00000114161981,\"i\":\"es-drager-1762929333594-3\",\"y\":688.9776350506045,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.452303%\",\"left\":\"89.220191%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"400\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#6BE5E8\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":166.999991750129,\"x\":1684.6625708132242,\"h\":37.00000400904318,\"i\":\"es-drager-1762929318489-2\",\"y\":659.1324815182508,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.313812%\",\"left\":\"89.158592%\",\"width\":\"8.838259%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"36个月期项目占比\\\"\\n}\",\"size\":{\"width\":166.999991750129,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":112.99999735950763,\"x\":1590.1172323342091,\"h\":99.000000703482,\"i\":\"es-drager-1762929307141-1\",\"y\":657.0708920282549,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.097017%\",\"left\":\"84.154902%\",\"width\":\"5.980378999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.410756000000001%\"},\"componentName\":\"基础环形图\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 40\\n }\\n]\",\"size\":{\"width\":112.99999735950763,\"height\":99.000000703482},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"valueFontWeight\":\"normal\",\"color\":\"#1E90FF\",\"bgColor\":\"#E8EDF3B8\",\"valueFontSize\":16,\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"valueFontColor\":\"#FFFFFF\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#FF4500\",\"enabledGradient\":false,\"type\":\"linear\",\"direction\":\"to left\",\"startColor\":\"#FFD700\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":128.9999907987339,\"x\":1426.143030016014,\"h\":26.99999932736819,\"i\":\"es-drager-1762928981087-4\",\"y\":721.7677914451772,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"75.90048800000001%\",\"left\":\"75.476779%\",\"width\":\"6.827158%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"高收益项目数量\\\"\\n}\",\"size\":{\"width\":128.9999907987339,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#8D8D8D\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":46.00000711856976,\"x\":1472.110197410645,\"h\":28.999996459944818,\"i\":\"es-drager-1762928898594-3\",\"y\":693.0339059208537,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.87885700000001%\",\"left\":\"77.909532%\",\"width\":\"2.434491%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0496150000000006%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":46.00000711856976,\"height\":28.999996459944818},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#505050\",\"letterSpacing\":0,\"fontSize\":13,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1425.1348240379136,\"h\":39.00000114161981,\"i\":\"es-drager-1762928768350-2\",\"y\":686.5743539461594,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.19957600000001%\",\"left\":\"75.423421%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"600\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#6BE5E8\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#49ABFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":22,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":149.0000062166706,\"x\":1423.970903350387,\"h\":37.00000400904318,\"i\":\"es-drager-1762928758538-1\",\"y\":656.7291909044097,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.06108400000001%\",\"left\":\"75.361822%\",\"width\":\"7.885633%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"高收益项目占比\\\"\\n}\",\"size\":{\"width\":149.0000062166706,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":101.99999360342322,\"x\":1325.6271916463306,\"h\":103.00000447803119,\"i\":\"627c8b9b-8365-4edd-ba69-abfd0086e195\",\"y\":649.6031348785871,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"68.311714%\",\"left\":\"70.157108%\",\"width\":\"5.398218%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.831393000000002%\"},\"componentName\":\"基础环形图\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 60\\n }\\n]\",\"size\":{\"width\":101.99999360342322,\"height\":103.00000447803119},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"valueFontWeight\":\"normal\",\"color\":\"#1E90FF\",\"bgColor\":\"#E8EDF3C0\",\"valueFontSize\":16,\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"valueFontColor\":\"#FFFFFF\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#FF4500\",\"enabledGradient\":false,\"type\":\"linear\",\"direction\":\"to left\",\"startColor\":\"#FFD700\"}}}},{\"component\":\"JText\",\"visible\":true,\"w\":115.99999494841742,\"x\":1684.1734894470342,\"h\":26.000000761079882,\"i\":\"es-drager-1762926696188-10\",\"y\":882.3070586104344,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"92.782661%\",\"left\":\"89.132708%\",\"width\":\"6.1391500000000025%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.734138000000001%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"零保证金项目数\\\"\\n}\",\"size\":{\"width\":115.99999494841741,\"height\":26.000000761079882},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1548.6987068173507,\"h\":26.99999932736819,\"i\":\"es-drager-1762926691124-9\",\"y\":883.5731776217401,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"92.91580500000002%\",\"left\":\"81.96288%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"保证金覆盖率\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1732.5439653383592,\"h\":29.97211347737514,\"i\":\"es-drager-1762926686158-8\",\"y\":845.847502100111,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"88.94860500000001%\",\"left\":\"91.692653%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#BA3232\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FDAE93\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1598.4642474370226,\"h\":29.97211347737514,\"i\":\"es-drager-1762926681277-7\",\"y\":848.5086970408884,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"89.228454%\",\"left\":\"84.596657%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"%\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#BA3232\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FDAE93\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1693.5521782708327,\"h\":39.00000114161981,\"i\":\"es-drager-1762926674612-6\",\"y\":839.774820879915,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"88.310007%\",\"left\":\"89.629063%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"790\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FDAE93\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#BA3232\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1546.6822948611493,\"h\":39.00000114161981,\"i\":\"es-drager-1762926667152-5\",\"y\":842.3070589025264,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"88.57629500000002%\",\"left\":\"81.856164%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"96.79\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FDAE93\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#BA3232\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1425.1348240379136,\"h\":29.97211347737514,\"i\":\"es-drager-1762926619855-4\",\"y\":849.9037729703601,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"89.37515900000001%\",\"left\":\"75.423421%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#BA3232\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FDAE93\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1358.1594352472453,\"h\":39.00000114161981,\"i\":\"es-drager-1762926610924-3\",\"y\":843.7021348319981,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"88.72300000000001%\",\"left\":\"71.878835%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"10,000\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#BA3232\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FDAE93\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1362.7080771250178,\"h\":26.99999932736819,\"i\":\"es-drager-1762926602282-2\",\"y\":882.4360155286006,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"92.796222%\",\"left\":\"72.119566%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"最大还款差额\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":531.0000078248536,\"x\":1315.369293849801,\"h\":95.99999549522116,\"i\":\"es-drager-1762926555663-1\",\"y\":822.9325585844631,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"86.53888900000001%\",\"left\":\"69.614222%\",\"width\":\"28.102490000000003%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.095278000000004%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":531.0000078248536,\"height\":95.99999549522116},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_35_1763551508136.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":149.0000062166706,\"x\":1494.8735867909734,\"h\":37.00000400904318,\"i\":\"es-drager-1762926336471-2\",\"y\":785.873387113962,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.64177800000002%\",\"left\":\"79.114255%\",\"width\":\"7.885633%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"风险预警\\\"\\n}\",\"size\":{\"width\":149.0000062166706,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JText\",\"visible\":true,\"w\":149.0000062166706,\"x\":1486.1397129379136,\"h\":37.00000400904318,\"i\":\"es-drager-1762926323283-1\",\"y\":487.1981242324508,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.233340999999996%\",\"left\":\"78.652026%\",\"width\":\"7.885633%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项目级关键指标\\\"\\n}\",\"size\":{\"width\":149.0000062166706,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1794.7127938210083,\"h\":29.97211347737514,\"i\":\"es-drager-1762925789762-11\",\"y\":236.97293880777556,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.919873000000006%\",\"left\":\"94.982858%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"天\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1758.12427745993,\"h\":39.00000114161981,\"i\":\"es-drager-1762925775562-10\",\"y\":230.77130066941345,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.267714000000005%\",\"left\":\"93.046458%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"70\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#3584DE\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":104.00000459277844,\"x\":1670.3751368557098,\"h\":26.000000761079882,\"i\":\"es-drager-1762925764016-9\",\"y\":237.98115349214476,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.025895999999996%\",\"left\":\"88.402448%\",\"width\":\"5.504066%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.734138000000001%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"平均预期天数\\\"\\n}\",\"size\":{\"width\":104.00000459277844,\"height\":26.000000761079882},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1613.6576836518175,\"h\":29.97211347737514,\"i\":\"es-drager-1762925757252-8\",\"y\":235.70681979646992,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.786729000000005%\",\"left\":\"85.40075%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"当年\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":277.99999701540446,\"x\":1611.5123124804927,\"h\":49.000005823294806,\"i\":\"es-drager-1762925746092-7\",\"y\":227.7274000895535,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"23.947620000000004%\",\"left\":\"85.28720899999999%\",\"width\":\"14.712790999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.152799000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":277.99999701540446,\"height\":49.000005823294806},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_31_1763551480635.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":46.99999371812427,\"x\":1312.4501862828608,\"h\":28.999996459944818,\"i\":\"es-drager-1762925685447-6\",\"y\":233.30353869202474,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.534002%\",\"left\":\"69.459732%\",\"width\":\"2.487414%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.0496150000000006%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"本月\\\"\\n}\",\"size\":{\"width\":46.99999371812427,\"height\":28.999996459944818},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1369.1676394867527,\"h\":26.99999932736819,\"i\":\"es-drager-1762925676767-5\",\"y\":234.31174386699809,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.640024000000004%\",\"left\":\"72.46143%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"最大单笔欠款\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1459.4490100125442,\"h\":39.00000114161981,\"i\":\"es-drager-1762925670446-4\",\"y\":227.10190055366263,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"23.881843000000003%\",\"left\":\"77.239455%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"450\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#4EABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1511.2309625884175,\"h\":29.97211347737514,\"i\":\"es-drager-1762925663957-3\",\"y\":233.30353869202474,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.534002%\",\"left\":\"79.979948%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#708489\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":149.0000062166706,\"x\":1307.7458108005394,\"h\":37.00000400904318,\"i\":\"es-drager-1762925615604-2\",\"y\":179.6600187624041,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.892894999999996%\",\"left\":\"69.210759%\",\"width\":\"7.885633%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.890889%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"还款与预期监控\\\"\\n}\",\"size\":{\"width\":149.0000062166706,\"height\":37.00000400904318},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JImg\",\"visible\":true,\"w\":277.99999701540446,\"x\":1307.772566294842,\"h\":49.000005823294806,\"i\":\"es-drager-1762925573195-1\",\"y\":222.79187145310112,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"23.428604000000004%\",\"left\":\"69.212175%\",\"width\":\"14.712790999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.152799000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":277.99999701540446,\"height\":49.000005823294806},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_31_1763551480635.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1684.3024486621575,\"h\":26.99999932736819,\"i\":\"es-drager-1762920907802-4\",\"y\":150.61890367447094,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.838956000000001%\",\"left\":\"89.139533%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"罚息收入\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1728.8745702235644,\"h\":29.97211347737514,\"i\":\"es-drager-1762920898709-3\",\"y\":126.82054678659989,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.336341%\",\"left\":\"91.498455%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1679.6248475692616,\"h\":39.00000114161981,\"i\":\"es-drager-1762920889380-2\",\"y\":120.61889913884187,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.684181%\",\"left\":\"88.891977%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"898\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#FFC5AB\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#E86B6B\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1517.6905060550296,\"h\":39.00000114161981,\"i\":\"es-drager-1762920868707-1\",\"y\":118.21561803439675,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.431454000000002%\",\"left\":\"80.321811%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"3,898\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#6BE5E8\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1523.6342315562724,\"h\":26.99999932736819,\"i\":\"es-drager-1762920200057-8\",\"y\":146.94949404932422,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.453084%\",\"left\":\"80.636375%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"手续费收入\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1578.335291699086,\"h\":29.97211347737514,\"i\":\"es-drager-1762920184548-6\",\"y\":124.41725617275884,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.083613%\",\"left\":\"83.531358%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":98.00000941495898,\"x\":1340.1758506806332,\"h\":26.99999932736819,\"i\":\"es-drager-1762920042120-5\",\"y\":147.0784604768863,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.466646%\",\"left\":\"70.927077%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.8392970000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"租金收入\\\"\\n}\",\"size\":{\"width\":98.000009414959,\"height\":26.99999932736819},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#D7EDFF\",\"enabled\":true,\"startColor\":\"#4D699D\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"normal\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":1387.280183268488,\"h\":29.97211347737514,\"i\":\"es-drager-1762920024296-4\",\"y\":120.74785605700805,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.697742000000002%\",\"left\":\"73.420013%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#A5BECF\",\"letterSpacing\":0,\"fontSize\":12,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.00000431388042,\"x\":1336.7643551009614,\"h\":39.00000114161981,\"i\":\"es-drager-1762920012633-3\",\"y\":114.54621791864594,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.045583%\",\"left\":\"70.746528%\",\"width\":\"3.863430999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.1012070000000005%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"960\\\"\\n}\",\"size\":{\"width\":73.00000431388042,\"height\":39.00000114161981},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#038BFE\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#6BBBE8\",\"direction\":\"to bottom\"},\"letterSpacing\":2,\"fontSize\":24,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":97.00000392028137,\"x\":1681.1488904078549,\"h\":66.000000468988,\"i\":\"es-drager-1762919932439-2\",\"y\":61.86573353334538,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.5057480000000005%\",\"left\":\"88.972635%\",\"width\":\"5.1336%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.940504000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":97.00000392028139,\"height\":66.000000468988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_17_1763551465441.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":98.00000941495898,\"x\":1516.6823000769286,\"h\":68.99999616785293,\"i\":\"es-drager-1762919907257-1\",\"y\":56.93021440628894,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.986733000000002%\",\"left\":\"80.268453%\",\"width\":\"5.186524%\",\"position\":\"absolute\",\"config\":{},\"height\":\"7.2559809999999985%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":98.000009414959,\"height\":68.99999616785293},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_15_1763551456718.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":104.00000459277844,\"x\":1323.09496172476,\"h\":64.00000333641137,\"i\":\"95a344c5-64da-4b5a-8c42-564baeb66174\",\"y\":55.79305231314942,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.867149999999998%\",\"left\":\"70.023093%\",\"width\":\"5.504066%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.730186000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":104.00000459277844,\"height\":64.00000333641137},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_13_1763551449127.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":902.9999922765066,\"x\":508.64661984462634,\"h\":604.9999979594594,\"i\":\"f14ca628-b80a-4dd7-8df3-67597e00b63c\",\"y\":88.35669360434433,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.291514864092687%\",\"left\":\"26.919465794871066%\",\"width\":\"47.790109%\",\"position\":\"absolute\",\"config\":{},\"height\":\"63.62128600000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":902.9999922765066,\"height\":604.9999979594594},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/产城背景地图_1763551428302.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JCardCarousel\",\"visible\":true,\"w\":313.40683127324746,\"x\":934.3368548099414,\"h\":160.8503385248215,\"i\":\"es-drager-1762858057998-9\",\"y\":787.428049725881,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.80526500000002%\",\"left\":\"49.448572%\",\"width\":\"16.586652%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.914884999999995%\"},\"componentName\":\"卡片轮播\",\"config\":{\"chartData\":\"[{\\\"title\\\":\\\"销售物料汇总数据\\\",\\\"orderNum\\\":1247,\\\"orderAmount\\\":28475000,\\\"deliveryNum\\\":1189,\\\"signNum\\\":1156,\\\"outAmount\\\":26789000},{\\\"title\\\":\\\"采购物料汇总数据\\\",\\\"orderNum\\\":892,\\\"orderAmount\\\":15680000,\\\"deliveryNum\\\":856,\\\"signNum\\\":823,\\\"outAmount\\\":14875000},{\\\"title\\\":\\\"库存物料汇总数据\\\",\\\"orderNum\\\":2156,\\\"orderAmount\\\":3440,\\\"deliveryNum\\\":2340,\\\"signNum\\\":2340,\\\"outAmount\\\":7100000},{\\\"title\\\":\\\"质量物料汇总数据\\\",\\\"orderNum\\\":110,\\\"orderAmount\\\":33330000,\\\"deliveryNum\\\":1100,\\\"signNum\\\":110,\\\"outAmount\\\":111110000}]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":313.40683127324746,\"height\":160.85033852482147},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"dataMapping\":[],\"background\":\"#FFFFFF00\",\"w\":1000,\"dataType\":1,\"h\":230,\"linkageConfig\":[],\"timeOut\":0,\"option\":{\"titleFieldMapping\":{\"offset\":{\"x\":22,\"y\":0},\"show\":true,\"position\":\"left\",\"textStyle\":{\"letterSpacing\":0,\"fontSize\":12,\"fontGradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to bottom\",\"startColor\":\"#FFFFFF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"key\":\"title\",\"direction\":\"vertical\"},\"autoScrollEnabled\":true,\"contentLineHeight\":24,\"autoScrollDirection\":\"to-left\",\"contentFieldMapping\":[{\"marginRight\":0,\"valueStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"订单数量\",\"width\":120,\"key\":\"orderNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"元\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"订单金额\",\"width\":150,\"key\":\"orderAmount\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"发货数量\",\"width\":120,\"key\":\"deliveryNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"签收数量\",\"width\":120,\"key\":\"signNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"元\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"出库金额\",\"width\":150,\"key\":\"outAmount\",\"marginLeft\":0}],\"contentCurrent\":0,\"autoScrollSpeed\":100,\"contentLineAlign\":\"start\",\"contentLineTextGap\":7,\"cardStyle\":{\"backgroundColor\":\"#1890FF1A\",\"borderColor\":\"#1890FF\",\"backgroundImagePosition\":\"center\",\"backgroundImage\":\"drag/lib/img/cardCarousel-bg-01.png\",\"paddingRight\":7,\"minWidth\":300,\"backgroundImageRepeat\":\"no-repeat\",\"backgroundImageSize\":\"100% 100%\",\"marginRight\":25,\"borderEnabled\":true,\"paddingBottom\":16,\"borderRadius\":2,\"borderWidth\":1,\"paddingTop\":11,\"borderStyle\":\"dashed\",\"paddingLeft\":60},\"currentValue\":0}}},{\"component\":\"JText\",\"visible\":true,\"w\":166.999991750129,\"x\":928.9449046933179,\"h\":46.00000061503394,\"i\":\"es-drager-1762858012980-8\",\"y\":742.7945873431419,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"78.11164800000002%\",\"left\":\"49.16321%\",\"width\":\"8.838259%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.837321000000001%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"采购物料汇总数据\\\"\\n}\",\"size\":{\"width\":166.999991750129,\"height\":46.00000061503395},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":164.99999965589683,\"x\":604.9472435546074,\"h\":46.00000061503394,\"i\":\"es-drager-1762858006638-7\",\"y\":745.4557822839193,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"78.39149700000002%\",\"left\":\"32.01605200000001%\",\"width\":\"8.732411999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.837321000000001%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"销售物料汇总数据\\\"\\n}\",\"size\":{\"width\":164.99999965589683,\"height\":46.00000061503395},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":464.15006375641275,\"h\":27.97398018640021,\"i\":\"es-drager-1762857953002-6\",\"y\":603.0104611624024,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.412068%\",\"left\":\"24.564543%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同总金额\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBF4FC\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":498.46424973104354,\"h\":29.97211347737514,\"i\":\"es-drager-1762857945733-5\",\"y\":577.8170283450596,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.76274800000001%\",\"left\":\"26.380577000000006%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.85083281172334,\"x\":444.15006723359915,\"h\":42.93802267351676,\"i\":\"es-drager-1762857940021-4\",\"y\":566.550904652079,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"59.578012000000015%\",\"left\":\"23.506069%\",\"width\":\"3.90846%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.515326000000002%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"5451\\\"\\n}\",\"size\":{\"width\":73.85083281172334,\"height\":42.93802267351676},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":2,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":254.103164781102,\"h\":27.97398018640021,\"i\":\"es-drager-1762857932522-3\",\"y\":603.1394180805687,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.425629000000015%\",\"left\":\"13.448081999999998%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同总数\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#CAF1F1\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":273.2239145409379,\"h\":29.97211347737514,\"i\":\"es-drager-1762857921854-2\",\"y\":574.1476187199129,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.376876%\",\"left\":\"14.460023%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.85083281172334,\"x\":232.83704384994144,\"h\":42.93802267351676,\"i\":\"es-drager-1762857915642-1\",\"y\":564.1476235476339,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"59.325285000000015%\",\"left\":\"12.3226%\",\"width\":\"3.90846%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.515326000000002%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"700\\\"\\n}\",\"size\":{\"width\":73.85083281172334,\"height\":42.93802267351676},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":2,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":431.3599206203753,\"h\":27.97398018640021,\"i\":\"es-drager-1762857685097-3\",\"y\":92.89323780828366,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.768574000000001%\",\"left\":\"22.829167%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同总金额\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBF4FC\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.85083281172334,\"x\":415.15827842747956,\"h\":42.93802267351676,\"i\":\"es-drager-1762857678154-2\",\"y\":62.76426684509252,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.600237000000002%\",\"left\":\"21.971716%\",\"width\":\"3.90846%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.515326000000002%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"5451\\\"\\n}\",\"size\":{\"width\":73.85083281172334,\"height\":42.93802267351676},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":2,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":470.7385853332709,\"h\":29.97211347737514,\"i\":\"es-drager-1762857671067-1\",\"y\":74.03038102867723,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"7.784972%\",\"left\":\"24.913232%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万元\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":79.61138898968348,\"x\":236.50643896473628,\"h\":27.97398018640021,\"i\":\"es-drager-1762857250911-4\",\"y\":91.75606620574825,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.648990000000001%\",\"left\":\"12.516798000000001%\",\"width\":\"4.21333%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.9417200000000006%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"合同总数\\\"\\n}\",\"size\":{\"width\":79.61138898968348,\"height\":27.97398018640021},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#CAF1F1\",\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":55.4256503232591,\"x\":264.4900406878781,\"h\":29.97211347737514,\"i\":\"es-drager-1762857246742-3\",\"y\":66.5626238790095,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.999669000000003%\",\"left\":\"13.997793999999999%\",\"width\":\"2.933331%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.151842%\"},\"componentName\":\"文本\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"个\\\"\\n}\",\"size\":{\"width\":55.42565032325909,\"height\":29.972113477375135},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"fontSize\":15,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":73.85083281172334,\"x\":220.3048156669637,\"h\":42.93802267351676,\"i\":\"c9cf304e-4c81-4f49-86ba-4bd605c5a2ee\",\"y\":60.36098574064735,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.347509999999999%\",\"left\":\"11.659348%\",\"width\":\"3.90846%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.515326000000002%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"700\\\"\\n}\",\"size\":{\"width\":73.85083281172334,\"height\":42.93802267351676},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#DBE5F5\",\"letterSpacing\":2,\"fontSize\":26,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":159.22275908424388,\"x\":378.3118436361548,\"h\":100.90612107946721,\"i\":\"es-drager-1762856453053-5\",\"y\":566.1992281719063,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"59.541030000000006%\",\"left\":\"20.021666%\",\"width\":\"8.426659%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.611202000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":159.22275908424388,\"height\":100.90612107946721},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_08_1763551371680.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":158.21502548422043,\"x\":175.86167221580308,\"h\":103.90332101592959,\"i\":\"es-drager-1762856443052-4\",\"y\":565.062056569371,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"59.42144600000001%\",\"left\":\"9.307252%\",\"width\":\"8.373326%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.926385000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":158.21502548422043,\"height\":103.90332101592959},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763551351533.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":179.4107809769754,\"x\":9.999998261406802,\"h\":59.87246905308507,\"i\":\"es-drager-1762856433841-3\",\"y\":582.2553106684887,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.229474%\",\"left\":\"0.5292370000000001%\",\"width\":\"9.495083999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.296138%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"销售合同执行情况\\\"\\n}\",\"size\":{\"width\":179.4107809769754,\"height\":59.87246905308506},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1.0000054946776085,\"x\":265.756146201102,\"h\":489.0000026102841,\"i\":\"es-drager-1762856395529-2\",\"y\":261.1933607244709,\"orderNum\":70,\"angle\":89.5176726903602,\"groupStyle\":{\"transform\":\"rotate(89.5176726903602deg)\",\"top\":\"27.466872%\",\"left\":\"14.064801%\",\"width\":\"0.05292399999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"51.422825%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1.0000054946776085,\"height\":489.0000026102842},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":23,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_23_1763551793351.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":168.29241816982415,\"x\":345.52170050011733,\"h\":100.90612107946721,\"i\":\"es-drager-1762856376359-1\",\"y\":61.146461844218294,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.430110000000002%\",\"left\":\"18.28629%\",\"width\":\"8.906659%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.611202000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":168.29241816982417,\"height\":100.90612107946721},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_08_1763551371680.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":170.3079042649941,\"x\":154.4665731743963,\"h\":110.89681606252965,\"i\":\"d3cf63e9-7b37-4afe-b90d-c6c1bdf48102\",\"y\":52.412585683244885,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.511663000000001%\",\"left\":\"8.174944000000002%\",\"width\":\"9.013325999999996%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.661815000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":170.30790426499408,\"height\":110.89681606252967},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763551351533.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":179.4107809769754,\"x\":6.330603146611956,\"h\":59.87246905308507,\"i\":\"39a18ddf-1cad-406d-aeba-22acef8b3394\",\"y\":83.53314890672488,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.784275000000003%\",\"left\":\"0.33503899999999986%\",\"width\":\"9.495083999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.296138%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"销售合同执行情况\\\"\\n}\",\"size\":{\"width\":179.4107809769754,\"height\":59.87246905308506},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":275.6824912726846,\"x\":608.4677262042908,\"h\":56.760195916509936,\"i\":\"es-drager-1762509913951-2\",\"y\":686.8419103099617,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.22771200000001%\",\"left\":\"32.202369%\",\"width\":\"14.590139999999996%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.968854%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"销售/采购物料汇总数据\\\"\\n}\",\"size\":{\"width\":275.6824912726846,\"height\":56.760195916509936},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"55be9102-a729-42da-a3af-8e09bb26acad\"},{\"component\":\"JImg\",\"visible\":true,\"w\":652.010970522931,\"x\":602.0879012620165,\"h\":39.44354789584329,\"i\":\"es-drager-1762509378719-1\",\"y\":698.3655484446457,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"73.43952800000001%\",\"left\":\"31.864725%\",\"width\":\"34.506839%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.147850000000002%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":652.010970522931,\"height\":39.44354789584329},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"165d8b3e-f0cd-4f0c-803d-1ba28cbe4255\"},{\"component\":\"JText\",\"visible\":true,\"w\":197.1030783259555,\"x\":1276.2217920728488,\"h\":57.678851110038615,\"i\":\"es-drager-1756456857944-26\",\"y\":0,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"67.542391%\",\"width\":\"10.431426%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.065459%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"租赁业务数据\\\"\\n}\",\"size\":{\"width\":197.1030783259555,\"height\":57.67885111003861},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"79b612d5-4915-4201-84ce-a34c4f9b4615\"},{\"component\":\"JImg\",\"visible\":true,\"w\":545.6198636829778,\"x\":1285.7391522050414,\"h\":40.91284466052541,\"i\":\"es-drager-1756456883802-27\",\"y\":10.89156760620763,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.1453480000000005%\",\"left\":\"68.046085%\",\"width\":\"28.876227%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.302360000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":545.6198636829778,\"height\":40.91284466052541},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"165d8b3e-f0cd-4f0c-803d-1ba28cbe4255\"},{\"component\":\"JText\",\"visible\":true,\"w\":180.5063957945135,\"x\":20.990441085205163,\"h\":44.25372367518584,\"i\":\"aeb580ea-2f80-4d05-8e54-5077a7907722\",\"y\":2.771618046281901,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0.29146100000000014%\",\"left\":\"1.110892%\",\"width\":\"9.553068%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.653684000000002%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"供应链业务数据\\\"\\n}\",\"size\":{\"width\":180.5063957945135,\"height\":44.25372367518584},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"55be9102-a729-42da-a3af-8e09bb26acad\"},{\"component\":\"JImg\",\"visible\":true,\"w\":532.0000133195311,\"x\":8.069766961641264,\"h\":39.99999970790813,\"i\":\"cb3770f4-03fa-4ad8-a636-c53fca6ac8f1\",\"y\":6.48828936918585,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0.6823029999999993%\",\"left\":\"0.4270819999999998%\",\"width\":\"28.155414%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.206366000000001%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":532.0000133195311,\"height\":39.99999970790813},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"165d8b3e-f0cd-4f0c-803d-1ba28cbe4255\"},{\"component\":\"JCardScroll\",\"visible\":true,\"w\":571.0000008704807,\"x\":5.169592308042205,\"h\":252.99999862798865,\"i\":\"e0b9a809-d8a1-4996-bafa-73202d5a4b71\",\"y\":197.15144948020918,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"20.732279%\",\"left\":\"0.273594%\",\"width\":\"30.219437999999993%\",\"position\":\"absolute\",\"config\":{},\"height\":\"26.605265%\"},\"componentName\":\"卡片滚动(横向)\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[],\"dataType\":1,\"h\":255,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"rank\\\": 1,\\n \\\"customerName\\\": \\\"北京华信科技有限公司\\\",\\n \\\"contractAmount\\\": 8000\\n },\\n {\\n \\\"rank\\\": 2,\\n \\\"customerName\\\": \\\"上海(中国)智远信息技术股份有限公司\\\",\\n \\\"contractAmount\\\": 7800\\n },\\n {\\n \\\"rank\\\": 3,\\n \\\"customerName\\\": \\\"深圳市鼎盛软件有限公司\\\",\\n \\\"contractAmount\\\": 6880\\n },\\n {\\n \\\"rank\\\": 4,\\n \\\"customerName\\\": \\\"广州恒信数据服务有限公司\\\",\\n \\\"contractAmount\\\": 5600\\n },\\n {\\n \\\"rank\\\": 5,\\n \\\"customerName\\\": \\\"杭州云帆科技发展有限公司\\\",\\n \\\"contractAmount\\\": 4900\\n },\\n {\\n \\\"rank\\\": 6,\\n \\\"customerName\\\": \\\"成都睿智科技有限公司\\\",\\n \\\"contractAmount\\\": 4700\\n },\\n {\\n \\\"rank\\\": 7,\\n \\\"customerName\\\": \\\"南京博思信息技术有限公司\\\",\\n \\\"contractAmount\\\": 4500\\n },\\n {\\n \\\"rank\\\": 8,\\n \\\"customerName\\\": \\\"苏州新创软件有限公司\\\",\\n \\\"contractAmount\\\": 4200\\n },\\n {\\n \\\"rank\\\": 9,\\n \\\"customerName\\\": \\\"重庆智联科技有限公司\\\",\\n \\\"contractAmount\\\": 3900\\n },\\n {\\n \\\"rank\\\": 10,\\n \\\"customerName\\\": \\\"武汉华腾信息技术有限公司\\\",\\n \\\"contractAmount\\\": 3600\\n }\\n]\",\"size\":{\"width\":571.0000008704807,\"height\":252.99999862798865},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":900,\"linkageConfig\":[],\"option\":{\"showIndex\":false,\"autoScrollEnabled\":true,\"columnGap\":16,\"rowGap\":16,\"indexFieldStyle\":{},\"contentFieldMapping\":[{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"flex-start\",\"width\":0,\"marginBottom\":4,\"layoutDirection\":\"row\",\"justifyContent\":\"center\",\"marginTop\":0,\"height\":73,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":14,\"marginBottom\":4,\"fontColor\":\"#A6D8FF\",\"fontWeight\":\"normal\",\"height\":0},\"showValue\":true,\"valueCompose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"nameStyle\":{\"fontSize\":14,\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"omitConfig\":{\"show\":true,\"lines\":3},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"客户名称\",\"thousandSeparatorConfig\":{\"show\":false},\"key\":\"customerName\",\"showLabel\":false},{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"center\",\"width\":0,\"marginBottom\":3,\"layoutDirection\":\"row\",\"justifyContent\":\"center\",\"marginTop\":0,\"height\":68,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":24,\"marginBottom\":0,\"fontColor\":\"#FEAF26\",\"fontWeight\":\"bold\",\"height\":0,\"marginLeft\":0},\"showValue\":true,\"valueCompose\":{\"enabled\":false},\"nameStyle\":{\"marginRight\":0,\"width\":225,\"fontSize\":14,\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\",\"marginLeft\":0},\"omitConfig\":{\"show\":false,\"lines\":1},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"排名\",\"thousandSeparatorConfig\":{\"show\":false},\"key\":\"rank\",\"showLabel\":false},{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"center\",\"width\":0,\"marginBottom\":0,\"layoutDirection\":\"column-reverse\",\"justifyContent\":\"center\",\"marginTop\":22,\"height\":0,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":18,\"marginBottom\":2,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"fontColor\":\"#F8E71C\",\"fontWeight\":\"bold\"},\"showValue\":true,\"valueCompose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":14,\"fontColor\":\"#40A9FF\"},\"suffix\":\"万元\",\"enabled\":false},\"nameStyle\":{\"fontSize\":12,\"fontColor\":\"#B0B0B0\",\"fontWeight\":\"normal\",\"height\":0},\"omitConfig\":{\"show\":false,\"lines\":1},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"合同额(万元)\",\"thousandSeparatorConfig\":{\"show\":true},\"key\":\"contractAmount\",\"showLabel\":true}],\"contentCurrent\":2,\"autoScrollSpeed\":100,\"scrollDirection\":\"left\",\"cardStyle\":{\"backgroundColor\":\"#1890FF1A\",\"borderColor\":\"#1890FF\",\"backgroundImage\":\"drag/lib/img/cardScroll-bg-01.png\",\"paddingRight\":5,\"borderEnabled\":true,\"paddingBottom\":5,\"borderRadius\":8,\"borderWidth\":0,\"width\":98,\"bgHighlightImage\":\"\",\"paddingTop\":5,\"borderStyle\":\"dashed\",\"paddingLeft\":5,\"height\":250},\"currentValue\":0,\"direction\":\"horizontal\"}}},{\"component\":\"JCardScroll\",\"visible\":true,\"w\":566.3493253279954,\"x\":0,\"h\":244.77226006523037,\"i\":\"2a873018-ef8b-4b48-85d8-2792e5015273\",\"y\":694.6404137593668,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"73.047796%\",\"left\":\"0%\",\"width\":\"29.973307%\",\"position\":\"absolute\",\"config\":{},\"height\":\"25.740043000000007%\"},\"componentName\":\"卡片滚动(横向)\",\"config\":{\"chartData\":\"[{\\\"rank\\\":1,\\\"customerName\\\":\\\"北京华信科技有限公司\\\",\\\"contractAmount\\\":8000},{\\\"rank\\\":2,\\\"customerName\\\":\\\"上海(中国)智远信息技术股份有限公司\\\",\\\"contractAmount\\\":7800},{\\\"rank\\\":3,\\\"customerName\\\":\\\"深圳市鼎盛软件有限公司\\\",\\\"contractAmount\\\":6880},{\\\"rank\\\":4,\\\"customerName\\\":\\\"广州恒信数据服务有限公司\\\",\\\"contractAmount\\\":5600},{\\\"rank\\\":5,\\\"customerName\\\":\\\"杭州云帆科技发展有限公司\\\",\\\"contractAmount\\\":4900},{\\\"rank\\\":6,\\\"customerName\\\":\\\"成都睿智科技有限公司\\\",\\\"contractAmount\\\":4700},{\\\"rank\\\":7,\\\"customerName\\\":\\\"南京博思信息技术有限公司\\\",\\\"contractAmount\\\":4500},{\\\"rank\\\":8,\\\"customerName\\\":\\\"苏州新创软件有限公司\\\",\\\"contractAmount\\\":4200},{\\\"rank\\\":9,\\\"customerName\\\":\\\"重庆智联科技有限公司\\\",\\\"contractAmount\\\":3900},{\\\"rank\\\":10,\\\"customerName\\\":\\\"武汉华腾信息技术有限公司\\\",\\\"contractAmount\\\":3600}]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":566.3493253279954,\"height\":244.77226006523034},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"dataMapping\":[],\"background\":\"#FFFFFF00\",\"w\":900,\"dataType\":1,\"h\":255,\"linkageConfig\":[],\"timeOut\":0,\"option\":{\"showIndex\":false,\"autoScrollEnabled\":true,\"columnGap\":16,\"rowGap\":16,\"indexFieldStyle\":{},\"contentFieldMapping\":[{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"flex-start\",\"width\":0,\"marginBottom\":4,\"layoutDirection\":\"row\",\"justifyContent\":\"center\",\"marginTop\":0,\"height\":73,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":14,\"marginBottom\":4,\"fontColor\":\"#A6D8FF\",\"fontWeight\":\"normal\",\"height\":0},\"showValue\":true,\"valueCompose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"nameStyle\":{\"fontSize\":14,\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"omitConfig\":{\"show\":true,\"lines\":3},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"客户名称\",\"thousandSeparatorConfig\":{\"show\":false},\"key\":\"customerName\",\"showLabel\":false},{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"center\",\"width\":0,\"marginBottom\":3,\"layoutDirection\":\"row\",\"justifyContent\":\"center\",\"marginTop\":0,\"height\":68,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":24,\"marginBottom\":0,\"fontColor\":\"#FEAF26\",\"fontWeight\":\"bold\",\"height\":0,\"marginLeft\":0},\"showValue\":true,\"valueCompose\":{\"enabled\":false},\"nameStyle\":{\"marginRight\":0,\"width\":225,\"fontSize\":14,\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\",\"marginLeft\":0},\"omitConfig\":{\"show\":false,\"lines\":1},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"排名\",\"thousandSeparatorConfig\":{\"show\":false},\"key\":\"rank\",\"showLabel\":false},{\"itemConfig\":{\"marginRight\":0,\"alignItems\":\"center\",\"width\":0,\"marginBottom\":0,\"layoutDirection\":\"column-reverse\",\"justifyContent\":\"center\",\"marginTop\":0,\"height\":100,\"marginLeft\":0},\"valueStyle\":{\"fontSize\":18,\"marginBottom\":2,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#96F5F8\",\"direction\":\"to bottom\"},\"fontColor\":\"#40A9FF\",\"fontWeight\":\"bold\"},\"showValue\":true,\"valueCompose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":14,\"fontColor\":\"#40A9FF\"},\"suffix\":\"万元\",\"enabled\":false},\"nameStyle\":{\"fontSize\":12,\"fontColor\":\"#B0B0B0\",\"fontWeight\":\"normal\",\"height\":0},\"omitConfig\":{\"show\":false,\"lines\":1},\"nameCompose\":{\"enabled\":false},\"valueType\":\"non-array\",\"name\":\"合同额(万元)\",\"thousandSeparatorConfig\":{\"show\":true},\"key\":\"contractAmount\",\"showLabel\":true}],\"contentCurrent\":2,\"autoScrollSpeed\":100,\"scrollDirection\":\"left\",\"cardStyle\":{\"backgroundColor\":\"#1890FF1A\",\"borderColor\":\"#1890FF\",\"backgroundImage\":\"drag/lib/img/cardScroll-bg-01.png\",\"paddingRight\":5,\"borderEnabled\":true,\"paddingBottom\":5,\"borderRadius\":8,\"borderWidth\":0,\"width\":98,\"bgHighlightImage\":\"\",\"paddingTop\":5,\"borderStyle\":\"dashed\",\"paddingLeft\":5,\"height\":250},\"currentValue\":0,\"direction\":\"horizontal\"}}},{\"component\":\"JCardCarousel\",\"visible\":true,\"w\":313.40683127324746,\"x\":607.8069637496602,\"h\":160.8503385248215,\"i\":\"ffd3cb22-59f2-471e-8329-f15c72dbe26e\",\"y\":790.0892541760543,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"83.08511500000002%\",\"left\":\"32.167399%\",\"width\":\"16.586652%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.914884999999995%\"},\"componentName\":\"卡片轮播\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[],\"dataType\":1,\"h\":230,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"销售物料汇总数据\\\",\\n \\\"orderNum\\\": 1247,\\n \\\"orderAmount\\\": 28475000,\\n \\\"deliveryNum\\\": 1189,\\n \\\"signNum\\\": 1156,\\n \\\"outAmount\\\": 26789000\\n },\\n {\\n \\\"title\\\": \\\"采购物料汇总数据\\\",\\n \\\"orderNum\\\": 892,\\n \\\"orderAmount\\\": 15680000,\\n \\\"deliveryNum\\\": 856,\\n \\\"signNum\\\": 823,\\n \\\"outAmount\\\": 14875000\\n },\\n {\\n \\\"title\\\": \\\"库存物料汇总数据\\\",\\n \\\"orderNum\\\": 2156,\\n \\\"orderAmount\\\": 3440,\\n \\\"deliveryNum\\\": 2340,\\n \\\"signNum\\\": 2340,\\n \\\"outAmount\\\": 7100000\\n },\\n {\\n \\\"title\\\": \\\"质量物料汇总数据\\\",\\n \\\"orderNum\\\": 110,\\n \\\"orderAmount\\\": 33330000,\\n \\\"deliveryNum\\\": 1100,\\n \\\"signNum\\\": 110,\\n \\\"outAmount\\\": 111110000\\n }\\n]\",\"size\":{\"width\":313.40683127324746,\"height\":160.85033852482147},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1000,\"linkageConfig\":[],\"option\":{\"titleFieldMapping\":{\"offset\":{\"x\":22,\"y\":0},\"show\":true,\"position\":\"left\",\"textStyle\":{\"letterSpacing\":0,\"fontSize\":12,\"fontGradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to bottom\",\"startColor\":\"#FFFFFF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"key\":\"title\",\"direction\":\"vertical\"},\"autoScrollEnabled\":true,\"contentLineHeight\":24,\"autoScrollDirection\":\"to-left\",\"contentFieldMapping\":[{\"marginRight\":0,\"valueStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"订单数量\",\"width\":120,\"key\":\"orderNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"元\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"订单金额\",\"width\":150,\"key\":\"orderAmount\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"发货数量\",\"width\":120,\"key\":\"deliveryNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"个\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"签收数量\",\"width\":120,\"key\":\"signNum\",\"marginLeft\":0},{\"marginRight\":0,\"valueStyle\":{\"fontColor\":\"#FFFFFF\"},\"valueCompose\":{\"contentStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffixStyle\":{\"fontSize\":18,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"元\",\"enabled\":true},\"nameStyle\":{\"letterSpacing\":0,\"fontSize\":16,\"fontStyle\":\"normal\",\"fontColor\":\"#CCCCCC\",\"fontWeight\":\"normal\"},\"nameCompose\":{\"enabled\":false},\"name\":\"出库金额\",\"width\":150,\"key\":\"outAmount\",\"marginLeft\":0}],\"contentCurrent\":0,\"autoScrollSpeed\":100,\"contentLineAlign\":\"start\",\"contentLineTextGap\":7,\"cardStyle\":{\"backgroundColor\":\"#1890FF1A\",\"borderColor\":\"#1890FF\",\"backgroundImagePosition\":\"center\",\"backgroundImage\":\"drag/lib/img/cardCarousel-bg-01.png\",\"paddingRight\":7,\"minWidth\":300,\"backgroundImageRepeat\":\"no-repeat\",\"backgroundImageSize\":\"100% 100%\",\"marginRight\":25,\"borderEnabled\":true,\"paddingBottom\":16,\"borderRadius\":2,\"borderWidth\":1,\"paddingTop\":11,\"borderStyle\":\"dashed\",\"paddingLeft\":60},\"currentValue\":0}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":507.0000082184526,\"x\":1330.691670384596,\"h\":82.0000060577888,\"i\":\"0445aa8e-0d06-4ada-8ac2-1f1d88272fea\",\"y\":536.4516695699515,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"56.41280199999999%\",\"left\":\"70.425139%\",\"width\":\"26.832320999999997%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.623051%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": 1,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 1000,\\n \\\"brand\\\": \\\"丰田\\\"\\n },\\n {\\n \\\"id\\\": 2,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 1000,\\n \\\"brand\\\": \\\"本田\\\"\\n },\\n {\\n \\\"id\\\": 3,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 2000,\\n \\\"brand\\\": \\\"大众\\\"\\n },\\n {\\n \\\"id\\\": 4,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 1000,\\n \\\"brand\\\": \\\"比亚迪\\\"\\n },\\n {\\n \\\"id\\\": 5,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 5,\\n \\\"brand\\\": \\\"特斯拉\\\"\\n },\\n {\\n \\\"id\\\": 6,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 4,\\n \\\"brand\\\": \\\"福特\\\"\\n },\\n {\\n \\\"id\\\": 7,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 2,\\n \\\"brand\\\": \\\"雪佛兰\\\"\\n },\\n {\\n \\\"id\\\": 8,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 6,\\n \\\"brand\\\": \\\"宝马\\\"\\n },\\n {\\n \\\"id\\\": 9,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 1,\\n \\\"brand\\\": \\\"奔驰\\\"\\n },\\n {\\n \\\"id\\\": 10,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 0,\\n \\\"brand\\\": \\\"奥迪\\\"\\n },\\n {\\n \\\"id\\\": 11,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 3,\\n \\\"brand\\\": \\\"起亚\\\"\\n },\\n {\\n \\\"id\\\": 12,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 2,\\n \\\"brand\\\": \\\"现代\\\"\\n },\\n {\\n \\\"id\\\": 13,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 5,\\n \\\"brand\\\": \\\"路虎\\\"\\n },\\n {\\n \\\"id\\\": 14,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 1,\\n \\\"brand\\\": \\\"沃尔沃\\\"\\n },\\n {\\n \\\"id\\\": 15,\\n \\\"plateNumber\\\": \\\"项目名称\\\",\\n \\\"violationCount\\\": 4,\\n \\\"brand\\\": \\\"马自达\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":507.0000082184526,\"height\":82.0000060577888},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"__system\":true,\"textAlign\":\"center\",\"compose\":{\"contentStyle\":{\"fontSize\":22,\"fontColor\":\"#E19900\"},\"enabled\":true},\"name\":\"序号\",\"width\":41,\"textStyle\":{\"fontSize\":22,\"fontGradient\":{\"endColor\":\"#FF4500\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFD700\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#E19900\",\"fontWeight\":\"bold\"},\"key\":\"__index__\"},{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"italic\",\"fontColor\":\"#D1D1D1\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":true},\"name\":\"项目名称\",\"width\":65,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"plateNumber\",\"marginLeft\":0},{\"compose\":{\"contentStyle\":{\"marginRight\":3,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#00D4FF\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#00FFDC\",\"fontWeight\":\"bold\",\"marginLeft\":4},\"suffixStyle\":{\"fontSize\":12,\"fontColor\":\"#C4C4C4\"},\"prefix\":\"欠款\",\"prefixStyle\":{\"fontSize\":14,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"万元\",\"enabled\":true},\"name\":\"金额\",\"width\":100,\"textStyle\":{\"fontColor\":\"#FFFFFF\"},\"key\":\"violationCount\"}],\"itemsPerRow\":2,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-02.png\",\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"height\":44}}}}]},\"component\":\"JGroup\",\"w\":1889.5123094958972,\"x\":31,\"y\":89,\"componentName\":\"万众\",\"pageCompId\":\"1151112776961806336\",\"equalProportion\":true,\"key\":\"a342e46b-63c6-4906-926c-36eaecaf0566\",\"group\":true},{\"visible\":false,\"h\":990.5545046613586,\"i\":\"es-drager-1756453915928-25\",\"props\":{\"elements\":[{\"component\":\"JRing\",\"visible\":true,\"w\":536,\"x\":1291.4419695193433,\"h\":245,\"i\":\"4471d794-0df3-4be7-8e35-7da09940b959\",\"y\":21.97302752185101,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"2.2182552720168527%\",\"left\":\"67.8862695459582%\",\"width\":\"28.175513368344646%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.73362130474166%\"},\"componentName\":\"饼状环形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"value\\\": 1048,\\n \\\"name\\\": \\\"垃圾车\\\"\\n },\\n {\\n \\\"value\\\": 735,\\n \\\"name\\\": \\\"机扫车\\\"\\n },\\n {\\n \\\"value\\\": 580,\\n \\\"name\\\": \\\"洒水车\\\"\\n }\\n]\",\"size\":{\"width\":536.2250879249707,\"height\":245.59671746776084},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":480,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color1\":\"#2A7DFB00\",\"color\":\"#2A7DFB\"},{\"color1\":\"#2BE4E3\",\"color\":\"#2BE4E300\"},{\"color1\":\"#FCA52F\",\"color\":\"#FCA52F00\"}],\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"label\":{\"color\":\"#EEF1FA\",\"show\":true,\"position\":\"center\"},\"labelLine\":{\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":32},\"tooltip\":{\"trigger\":\"item\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"outRadius\":57,\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"innerRadius\":77,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JSemiGauge\",\"visible\":true,\"w\":238.00000008283695,\"x\":17.725667868792492,\"h\":215.0000038199236,\"i\":\"ededef6c-2bd9-4f89-a363-7506ae217601\",\"y\":480.30831953922336,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.488833%\",\"left\":\"0.9317719999999999%\",\"width\":\"12.510769%\",\"position\":\"absolute\",\"config\":{},\"height\":\"21.705015000000003%\"},\"componentName\":\"半圆仪表盘\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":430,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"total\\\": 385,\\n \\\"used\\\": 85\\n }\\n]\",\"size\":{\"width\":238.00000008283695,\"height\":215.0000038199236},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"titleSuffix\":\"辆\",\"customAttr\":{\"innerCircle\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":0,\"y2\":1,\"x2\":1,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2E76B9\"},{\"offset\":1,\"color\":\"#2E76B9\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":15}},\"name\":\"内部小圆\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"outerScale\":{\"axisLabel\":{\"color\":\"#FFFFFF\",\"distance\":-52,\"show\":true,\"fontSize\":14},\"min\":0,\"max\":100,\"axisLine\":{\"show\":false},\"name\":\"外部刻度\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"splitNumber\":2,\"detail\":{\"show\":false},\"type\":\"gauge\",\"radius\":67},\"innerProgress\":{\"axisLabel\":{\"show\":false},\"animationDuration\":2000,\"pointer\":{\"show\":true,\"length\":74,\"width\":3,\"itemStyle\":{\"color\":\"#2E76B9\"}},\"data\":[{\"name\":\"去年优良率\",\"value\":44}],\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#2E76B9\"],[1,\"#2E76B9\"]],\"width\":1}},\"name\":\"内部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"detail\":{\"offsetCenter\":[0,50],\"show\":false,\"textStyle\":{\"padding\":[0,0,0,0],\"color\":\"#FFFFFF\",\"fontSize\":18,\"fontWeight\":\"normal\"}},\"type\":\"gauge\",\"radius\":30,\"title\":{\"offsetCenter\":[0,26],\"show\":true,\"textStyle\":{\"color\":\"#FFFFFF\",\"fontSize\":16,\"fontWeight\":\"normal\"}}},\"outerProgress\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#2E76B9\"],[1,\"#2E76B9\"]],\"width\":2}},\"name\":\"外部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"basic\":{\"startAngle\":180,\"endAngle\":0},\"innerShadow\":{\"axisLabel\":{\"show\":false},\"customGradient\":{\"endColor\":\"#2E76B9\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#2E76B900\"},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":1,\"y2\":0,\"x2\":0,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2de69600\"},{\"offset\":1,\"color\":\"#2de696\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":100}},\"name\":\"内部阴影\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80}},\"valuePrefix\":\"已使用:\",\"titlePrefix\":\"车辆总数:\",\"valueMapping\":\"used\",\"titleMapping\":\"total\",\"valueSuffix\":\"辆\"}}},{\"component\":\"JStatsSummary\",\"visible\":true,\"w\":671.0000006332002,\"x\":609.0035179014067,\"h\":116.00000459495868,\"i\":\"e06945ca-3292-42b3-a219-f816d45d7af6\",\"y\":59.956609941129244,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.052832999999999%\",\"left\":\"32.013035%\",\"width\":\"35.271958%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.710613000000002%\"},\"componentName\":\"统计概览(背景模式)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": \\\"1\\\",\\n \\\"name\\\": \\\"总车辆数\\\",\\n \\\"value\\\": 385,\\n \\\"suffix\\\": \\\"辆\\\"\\n },\\n {\\n \\\"id\\\": \\\"2\\\",\\n \\\"name\\\": \\\"在线车辆数\\\",\\n \\\"value\\\": 300,\\n \\\"suffix\\\": \\\"辆\\\"\\n },\\n {\\n \\\"id\\\": \\\"3\\\",\\n \\\"name\\\": \\\"离线车辆数\\\",\\n \\\"value\\\": 85,\\n \\\"suffix\\\": \\\"辆\\\"\\n },\\n {\\n \\\"id\\\": \\\"4\\\",\\n \\\"name\\\": \\\"加油总量\\\",\\n \\\"value\\\": 6790,\\n \\\"suffix\\\": \\\"升\\\"\\n },\\n {\\n \\\"id\\\": \\\"5\\\",\\n \\\"name\\\": \\\"作业总里程\\\",\\n \\\"value\\\": 16790,\\n \\\"suffix\\\": \\\"公里\\\"\\n }\\n]\",\"size\":{\"width\":671.0000006332002,\"height\":116.00000459495868},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":713,\"dataType\":1,\"h\":129,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"layout\":{\"padding\":{\"top\":4,\"left\":20,\"bottom\":0,\"right\":6},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"100% 100%\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"drag/lib/img/bg01.png\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"image\"}},\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"card\":{\"padding\":{\"horizontal\":3,\"vertical\":15},\"borderColor\":\"#0F66FF59\",\"borderRadius\":0,\"shadow\":\"none\",\"borderWidth\":0,\"blur\":24,\"minWidth\":100,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0B2B6300\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"sections\":{\"middle\":{\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#15f0c5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#15f0c5\"},\"positiveColor\":\"#15F0C5\",\"fontSize\":14,\"negativeColor\":\"#D0021B\",\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"negativeGradient\":{\"endColor\":\"#D0021B\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#D0021B\"},\"fontColor\":\"#FFFFFF\"},\"alignItems\":\"center\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontColor\":\"#9ED3FF\"},\"label\":\"同比\"},\"paddingBottom\":10,\"show\":false,\"type\":\"compare\",\"align\":\"center\"},\"top\":{\"minHeight\":40,\"paddingBottom\":10,\"show\":true,\"paddingTop\":4,\"type\":\"value\",\"align\":\"center\",\"value\":{\"unit\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#96F5F8\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#49ABFF\"},\"fontWeight\":\"normal\",\"fontColor\":\"#9ED3FF\"},\"unitGap\":6,\"fontSize\":24,\"fontGradient\":{\"endColor\":\"#49ABFF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#96F5F8\"},\"fontWeight\":\"bold\",\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"paddingBottom\":10,\"show\":true,\"label\":{\"fontSize\":14,\"fontColor\":\"#C9E6FF\"},\"type\":\"label\",\"align\":\"center\"}}}}},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":132.99999836773736,\"x\":1652.157089719601,\"h\":109.000003549143,\"i\":\"es-drager-1763030296701-1\",\"y\":287.3540472473178,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.009413000000002%\",\"left\":\"86.847713%\",\"width\":\"6.991312000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.003938%\"},\"componentName\":\"基础环形图\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 60\\n }\\n]\",\"size\":{\"width\":132.99999836773736,\"height\":109.000003549143},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"valueFontWeight\":\"normal\",\"color\":\"#1E90FF\",\"bgColor\":\"#E8EDF3C0\",\"valueFontSize\":16,\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"valueFontColor\":\"#FFFFFF\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#FF4500\",\"enabledGradient\":false,\"type\":\"linear\",\"direction\":\"to left\",\"startColor\":\"#FFD700\"}}}},{\"component\":\"JRingProgress\",\"visible\":true,\"w\":132.99999836773736,\"x\":1388.9331704588271,\"h\":109.000003549143,\"i\":\"99dbdc3f-3f29-4b98-86f1-2b590fe93931\",\"y\":288.74911449504765,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"29.15025%\",\"left\":\"73.011017%\",\"width\":\"6.991312000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"11.003938%\"},\"componentName\":\"基础环形图\",\"config\":{\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":200,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"占比\\\",\\n \\\"value\\\": 60\\n }\\n]\",\"size\":{\"width\":132.99999836773736,\"height\":109.000003549143},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":300,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"valueFontWeight\":\"normal\",\"color\":\"#1E90FF\",\"bgColor\":\"#E8EDF3C0\",\"valueFontSize\":16,\"lineHeight\":0,\"fontSize\":16,\"radius\":0.9,\"innerRadius\":0.9,\"valueFontColor\":\"#FFFFFF\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\",\"extraInfo\":{\"endColor\":\"#FF4500\",\"enabledGradient\":false,\"type\":\"linear\",\"direction\":\"to left\",\"startColor\":\"#FFD700\"}}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":527.999993949144,\"x\":1357.2801839687218,\"h\":183.00000186920772,\"i\":\"f65f9644-b011-4d49-9894-8d6293b286ca\",\"y\":782.8405641226518,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"79.030539%\",\"left\":\"71.347138%\",\"width\":\"27.754983%\",\"position\":\"absolute\",\"config\":{},\"height\":\"18.474501%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"violationCount\\\": 3,\\n \\\"id\\\": 1,\\n \\\"plateNumber\\\": \\\"粤B12345\\\",\\n \\\"brand\\\": \\\"丰田\\\"\\n },\\n {\\n \\\"violationCount\\\": 1,\\n \\\"id\\\": 2,\\n \\\"plateNumber\\\": \\\"粤A67890\\\",\\n \\\"brand\\\": \\\"本田\\\"\\n },\\n {\\n \\\"violationCount\\\": 2,\\n \\\"id\\\": 3,\\n \\\"plateNumber\\\": \\\"粤C54321\\\",\\n \\\"brand\\\": \\\"大众\\\"\\n },\\n {\\n \\\"violationCount\\\": 0,\\n \\\"id\\\": 4,\\n \\\"plateNumber\\\": \\\"粤D98765\\\",\\n \\\"brand\\\": \\\"比亚迪\\\"\\n },\\n {\\n \\\"violationCount\\\": 5,\\n \\\"id\\\": 5,\\n \\\"plateNumber\\\": \\\"粤E11223\\\",\\n \\\"brand\\\": \\\"特斯拉\\\"\\n },\\n {\\n \\\"violationCount\\\": 4,\\n \\\"id\\\": 6,\\n \\\"plateNumber\\\": \\\"粤F33445\\\",\\n \\\"brand\\\": \\\"福特\\\"\\n },\\n {\\n \\\"violationCount\\\": 2,\\n \\\"id\\\": 7,\\n \\\"plateNumber\\\": \\\"粤G55667\\\",\\n \\\"brand\\\": \\\"雪佛兰\\\"\\n },\\n {\\n \\\"violationCount\\\": 6,\\n \\\"id\\\": 8,\\n \\\"plateNumber\\\": \\\"粤H77889\\\",\\n \\\"brand\\\": \\\"宝马\\\"\\n },\\n {\\n \\\"violationCount\\\": 1,\\n \\\"id\\\": 9,\\n \\\"plateNumber\\\": \\\"粤J99001\\\",\\n \\\"brand\\\": \\\"奔驰\\\"\\n },\\n {\\n \\\"violationCount\\\": 0,\\n \\\"id\\\": 10,\\n \\\"plateNumber\\\": \\\"粤K11223\\\",\\n \\\"brand\\\": \\\"奥迪\\\"\\n },\\n {\\n \\\"violationCount\\\": 3,\\n \\\"id\\\": 11,\\n \\\"plateNumber\\\": \\\"粤L44556\\\",\\n \\\"brand\\\": \\\"起亚\\\"\\n },\\n {\\n \\\"violationCount\\\": 2,\\n \\\"id\\\": 12,\\n \\\"plateNumber\\\": \\\"粤M77889\\\",\\n \\\"brand\\\": \\\"现代\\\"\\n },\\n {\\n \\\"violationCount\\\": 5,\\n \\\"id\\\": 13,\\n \\\"plateNumber\\\": \\\"粤N99002\\\",\\n \\\"brand\\\": \\\"路虎\\\"\\n },\\n {\\n \\\"violationCount\\\": 1,\\n \\\"id\\\": 14,\\n \\\"plateNumber\\\": \\\"粤P22334\\\",\\n \\\"brand\\\": \\\"沃尔沃\\\"\\n },\\n {\\n \\\"violationCount\\\": 4,\\n \\\"id\\\": 15,\\n \\\"plateNumber\\\": \\\"粤Q55667\\\",\\n \\\"brand\\\": \\\"马自达\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":527.999993949144,\"height\":183.00000186920772},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"__system\":true,\"textAlign\":\"center\",\"name\":\"序号\",\"width\":41,\"textStyle\":{\"fontSize\":20,\"fontGradient\":{\"endColor\":\"#FF4500\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFD700\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"key\":\"__index__\"},{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"italic\",\"fontColor\":\"#D1D1D1\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":true},\"name\":\"车牌号\",\"width\":90,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"plateNumber\",\"marginLeft\":0},{\"compose\":{\"contentStyle\":{\"marginRight\":3,\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#00D4FF\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#00FFDC\",\"fontWeight\":\"bold\",\"marginLeft\":4},\"suffixStyle\":{\"fontSize\":12,\"fontColor\":\"#FFFFFF\"},\"prefix\":\"本月\",\"prefixStyle\":{\"fontSize\":14,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"次\",\"enabled\":true},\"name\":\"违规次数\",\"width\":100,\"textStyle\":{\"fontColor\":\"#FFFFFF\"},\"key\":\"violationCount\"}],\"itemsPerRow\":2,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-02.png\",\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"height\":83},\"marginLeft\":6}}},{\"component\":\"JMultipleBar\",\"visible\":true,\"w\":577.9999974835168,\"x\":1324.3610810627897,\"h\":170.00000417221224,\"i\":\"efa6188b-fbb1-4951-be55-6bb81fc45461\",\"y\":603.1219127277654,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.887302%\",\"left\":\"69.616704%\",\"width\":\"30.383295999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"17.162105%\"},\"componentName\":\"对比柱形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"集团公司\\\",\\n \\\"value\\\": 4800,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"建设集团\\\",\\n \\\"value\\\": 3900,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"投资集团\\\",\\n \\\"value\\\": 3200,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"万众集团\\\",\\n \\\"value\\\": 3950,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"新成集团\\\",\\n \\\"value\\\": 3600,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"海洋集团\\\",\\n \\\"value\\\": 2100,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"集团公司\\\",\\n \\\"value\\\": 3200,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"建设集团\\\",\\n \\\"value\\\": 3500,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"投资集团\\\",\\n \\\"value\\\": 4200,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"万众集团\\\",\\n \\\"value\\\": 3200,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"新成集团\\\",\\n \\\"value\\\": 2300,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"海洋集团\\\",\\n \\\"value\\\": 1900,\\n \\\"type\\\": \\\"加油金额\\\"\\n }\\n]\",\"size\":{\"width\":577.9999974835168,\"height\":170.00000417221224},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"name\":\"单位(元)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#006CFF00\",\"color\":\"#006CFFB3\"},{\"color1\":\"#00D8FF00\",\"color\":\"#00D8FFB3\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":43,\"left\":9,\"bottom\":18,\"right\":13,\"containLabel\":true},\"series\":[{\"barWidth\":15,\"barGap\":\"34%\",\"itemStyle\":{\"borderRadius\":4}}],\"legend\":{\"r\":53},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":225.00000639287214,\"x\":1062.0164140689094,\"h\":121.99999134059341,\"i\":\"es-drager-1763027856495-4\",\"y\":810.5076231258076,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.823627%\",\"left\":\"55.826226999999996%\",\"width\":\"11.827407999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.316332999999997%\"},\"componentName\":\"滚动列表(单行)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": 1,\\n \\\"projectName\\\": \\\"京A12345\\\"\\n },\\n {\\n \\\"id\\\": 2,\\n \\\"projectName\\\": \\\"京A1236\\\"\\n },\\n {\\n \\\"id\\\": 3,\\n \\\"projectName\\\": \\\"京A12311\\\"\\n },\\n {\\n \\\"id\\\": 4,\\n \\\"projectName\\\": \\\"京A12377\\\"\\n },\\n {\\n \\\"id\\\": 5,\\n \\\"projectName\\\": \\\"京A12895\\\"\\n },\\n {\\n \\\"id\\\": 6,\\n \\\"projectName\\\": \\\"京A12822\\\"\\n },\\n {\\n \\\"id\\\": 7,\\n \\\"projectName\\\": \\\"京A12811\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":225.00000639287214,\"height\":121.99999134059341},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":0,\"gridGap\":0,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":15,\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"项目名称\",\"width\":91,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#4A90E2\"},\"key\":\"projectName\",\"marginLeft\":13}],\"itemsPerRow\":2,\"borderRadius\":7,\"autoScrollEnabled\":true,\"showHeader\":false,\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"marginRight\":0,\"backgroundColor\":\"#FFFFFF00\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-01.png\",\"isMultiline\":false,\"alternateBackgroundColor\":\"#F8F9FA00\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":11,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"color\",\"marginTop\":0,\"height\":29,\"marginLeft\":0},\"marginLeft\":0}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":221.00000687106677,\"x\":824.1148801954979,\"h\":121.99999134059341,\"i\":\"es-drager-1763027851750-3\",\"y\":811.9027002790828,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.964465%\",\"left\":\"43.320634%\",\"width\":\"11.617143%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.316332999999997%\"},\"componentName\":\"滚动列表(单行)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": 1,\\n \\\"projectName\\\": \\\"京A12345\\\"\\n },\\n {\\n \\\"id\\\": 2,\\n \\\"projectName\\\": \\\"京A1236\\\"\\n },\\n {\\n \\\"id\\\": 3,\\n \\\"projectName\\\": \\\"京A12311\\\"\\n },\\n {\\n \\\"id\\\": 4,\\n \\\"projectName\\\": \\\"京A12377\\\"\\n },\\n {\\n \\\"id\\\": 5,\\n \\\"projectName\\\": \\\"京A12895\\\"\\n },\\n {\\n \\\"id\\\": 6,\\n \\\"projectName\\\": \\\"京A12822\\\"\\n },\\n {\\n \\\"id\\\": 7,\\n \\\"projectName\\\": \\\"京A12811\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":221.00000687106677,\"height\":121.99999134059341},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":0,\"gridGap\":0,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":15,\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"项目名称\",\"width\":91,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#4A90E2\"},\"key\":\"projectName\",\"marginLeft\":13}],\"itemsPerRow\":2,\"borderRadius\":7,\"autoScrollEnabled\":true,\"showHeader\":false,\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"marginRight\":0,\"backgroundColor\":\"#FFFFFF00\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-01.png\",\"isMultiline\":false,\"alternateBackgroundColor\":\"#F8F9FA00\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":11,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"color\",\"marginTop\":0,\"height\":29,\"marginLeft\":0},\"marginLeft\":0}}},{\"component\":\"JImg\",\"visible\":true,\"w\":219.99999272290734,\"x\":1049.3552308870337,\"h\":131.9999857592265,\"i\":\"es-drager-1763027670564-2\",\"y\":802.6060887086645,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.025939%\",\"left\":\"55.160675999999995%\",\"width\":\"11.564576%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.325868%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":219.9999927229073,\"height\":131.9999857592265},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/组-155_02_1763554354943.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":219.99999272290734,\"x\":813.9859298452752,\"h\":131.9999857592265,\"i\":\"es-drager-1763027644239-1\",\"y\":804.0011658619395,\"orderNum\":1076.8710433763197,\"angle\":359.2911223131234,\"groupStyle\":{\"transform\":\"rotate(359.2911223131234deg)\",\"top\":\"81.166777%\",\"left\":\"42.788193%\",\"width\":\"11.564576%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.325868%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":219.9999927229073,\"height\":131.9999857592265},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/组-155_02_1763554354943.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":226.00000151742083,\"x\":576.0844149954746,\"h\":121.99999134059341,\"i\":\"b7038d3a-2f13-4991-8a6b-eee2677ff7a3\",\"y\":810.7655338021864,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.849664%\",\"left\":\"30.282601%\",\"width\":\"11.879974%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.316332999999997%\"},\"componentName\":\"滚动列表(单行)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"id\\\": 1,\\n \\\"projectName\\\": \\\"京A12345\\\"\\n },\\n {\\n \\\"id\\\": 2,\\n \\\"projectName\\\": \\\"京A1236\\\"\\n },\\n {\\n \\\"id\\\": 3,\\n \\\"projectName\\\": \\\"京A12311\\\"\\n },\\n {\\n \\\"id\\\": 4,\\n \\\"projectName\\\": \\\"京A12377\\\"\\n },\\n {\\n \\\"id\\\": 5,\\n \\\"projectName\\\": \\\"京A12895\\\"\\n },\\n {\\n \\\"id\\\": 6,\\n \\\"projectName\\\": \\\"京A12822\\\"\\n },\\n {\\n \\\"id\\\": 7,\\n \\\"projectName\\\": \\\"京A12811\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":226.0000015174208,\"height\":121.99999134059341},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":4,\"gridGap\":0,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"marginRight\":0,\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"name\":\"项目名称\",\"width\":84,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#4A90E2\"},\"key\":\"projectName\",\"marginLeft\":12}],\"itemsPerRow\":2,\"borderRadius\":7,\"autoScrollEnabled\":true,\"showHeader\":false,\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"marginRight\":0,\"backgroundColor\":\"#FFFFFF00\",\"backgroundImg\":\"drag/lib/img/scrollList-bg-01.png\",\"isMultiline\":false,\"alternateBackgroundColor\":\"#F8F9FA00\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":11,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"color\",\"marginTop\":3,\"height\":29,\"marginLeft\":0},\"marginLeft\":4}}},{\"component\":\"JListProgress\",\"visible\":true,\"w\":508.99999146466575,\"x\":0,\"h\":230.9999948897365,\"i\":\"896fc5fc-bdf6-404a-8bc0-65a92a72d801\",\"y\":759.5545097716221,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.679729%\",\"left\":\"0%\",\"width\":\"26.756224%\",\"position\":\"absolute\",\"config\":{},\"height\":\"23.320271000000005%\"},\"componentName\":\"列表进度图\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"机扫车\\\",\\n \\\"total\\\": 200,\\n \\\"date\\\": \\\"2025-12-31\\\",\\n \\\"endLabel\\\": \\\"2025-06-15\\\",\\n \\\"value\\\": 52\\n },\\n {\\n \\\"title\\\": \\\"洒水车\\\",\\n \\\"total\\\": 110,\\n \\\"date\\\": \\\"2025-11-20\\\",\\n \\\"endLabel\\\": \\\"2025-05-30\\\",\\n \\\"value\\\": 68\\n },\\n {\\n \\\"title\\\": \\\"垃圾车\\\",\\n \\\"total\\\": 150,\\n \\\"date\\\": \\\"2026-01-15\\\",\\n \\\"endLabel\\\": \\\"2025-07-01\\\",\\n \\\"value\\\": 98\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":508.99999146466575,\"height\":230.9999948897365},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1200,\"dataType\":1,\"h\":325,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"beginFields\":[{\"name\":\"车辆类型\",\"style\":{\"letterSpacing\":0,\"fontSize\":19,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\"}],\"endCurrent\":0,\"endInfo\":{\"width\":103},\"scroll\":{\"count\":1,\"interval\":3000,\"enabled\":false,\"direction\":\"down\"},\"centerTopFields\":[{\"marginRight\":0,\"isUseExceedFillColor\":true,\"compose\":{\"contentStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":false},\"showPercentage\":true,\"name\":\"进度值\",\"width\":100,\"style\":{\"fontSize\":20,\"fontGradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#00D4FF\",\"direction\":\"to bottom\"},\"fontColor\":\"#4A90E2\"},\"key\":\"value\"}],\"body\":{\"gradient\":{\"type\":\"linear\"}},\"endFields\":[{\"compose\":{\"contentStyle\":{\"fontSize\":24,\"fontColor\":\"#02DEFF\",\"fontWeight\":\"bold\"},\"suffixStyle\":{\"fontSize\":14,\"fontColor\":\"#FFFFFF\"},\"suffix\":\"辆\",\"enabled\":true},\"name\":\"值\",\"style\":{\"letterSpacing\":0,\"fontSize\":18,\"fontGradient\":{\"endColor\":\"#00FFFF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#A0D8FF\"},\"fontStyle\":\"normal\",\"fontColor\":\"#50E3C2\",\"fontWeight\":\"bold\"},\"key\":\"value\"}],\"progressSection\":{\"marginRight\":5,\"marginLeft\":0},\"bar\":{\"border\":{\"padding\":8,\"color\":\"#4ECBFC5E\",\"width\":2,\"enabled\":false},\"total\":{\"field\":\"total\",\"type\":\"field\",\"value\":0},\"borderRadius\":6,\"background\":{\"color\":\"#5A97FC4C\",\"gradient\":{\"endColor\":\"#07203D\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#143B6E\"}},\"indicatorColor\":\"#DCFEFFB5\",\"exceed\":{\"indicatorColor\":\"#F74B0C\",\"fill\":{\"color\":\"#FFB347\",\"gradient\":{\"endColor\":\"#FF4500\",\"enabled\":true,\"startColor\":\"#FFD700\",\"direction\":\"to right\"}},\"percent\":70,\"enabled\":true},\"indicatorSize\":15,\"fill\":{\"color\":\"#33C9FF\",\"gradient\":{\"endColor\":\"#24E5F1\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#C5FDFE\"}},\"valueField\":\"value\",\"height\":4},\"centerTopInfo\":{\"layout\":\"horizontal\"},\"centerTopCurrent\":0,\"row\":{\"marginRight\":0,\"padding\":\"0 0\",\"marginBottom\":0,\"marginTop\":8,\"height\":38,\"marginLeft\":14},\"beginInfo\":{\"layout\":\"vertical\",\"width\":100}}}},{\"visible\":true,\"h\":39.0000029965315,\"i\":\"es-drager-1763022886545-18\",\"orderNum\":70,\"component\":\"JText\",\"w\":194.00000534297763,\"x\":1692.3135351127542,\"y\":583.2930619922697,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"58.885509%\",\"left\":\"88.958587%\",\"width\":\"10.197853999999998%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.937189%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"单位维修保养/加油统计\\\"\\n}\",\"size\":{\"width\":194.00000534297763,\"height\":39.0000029965315},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.00000173934264,\"i\":\"es-drager-1763022875670-17\",\"orderNum\":70,\"component\":\"JText\",\"w\":221.00000687106677,\"x\":1658.2572768485109,\"y\":396.0363205335455,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"39.981275%\",\"left\":\"87.168377%\",\"width\":\"11.617143%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.95626%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"月度维修保养/加油统计\\\"\\n}\",\"size\":{\"width\":221.00000687106677,\"height\":59.000001739342636},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":58.999991833797594,\"i\":\"es-drager-1763022862487-16\",\"orderNum\":70,\"component\":\"JText\",\"w\":152.00000085221566,\"x\":1696.2408644413595,\"y\":49.11954743833212,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"4.958792999999999%\",\"left\":\"89.165032%\",\"width\":\"7.990071%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.956259%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"车辆类型占比\\\"\\n}\",\"size\":{\"width\":152.00000085221566,\"height\":58.99999183379759},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":50.999996298891155,\"i\":\"es-drager-1763022854128-15\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":1630.5316006633993,\"y\":258.15824566602794,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.061993%\",\"left\":\"85.710942%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.148631%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"公务用车占比情况\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":50.999996298891155},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":34.99999532353323,\"i\":\"es-drager-1763022836670-14\",\"orderNum\":70,\"component\":\"JText\",\"w\":23.999997130832348,\"x\":1315.267814130949,\"y\":843.1054841533569,\"angle\":0.15840966236248732,\"groupStyle\":{\"transform\":\"rotate(0.15840966236248732deg)\",\"top\":\"85.114497%\",\"left\":\"69.138705%\",\"width\":\"1.26159%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.5333739999999993%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"加油频次排名\\\"\\n}\",\"size\":{\"width\":23.999997130832348,\"height\":34.99999532353323},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":43.999995253075504,\"i\":\"es-drager-1763022832978-13\",\"orderNum\":70,\"component\":\"JText\",\"w\":151.000005727667,\"x\":1381.2350000239387,\"y\":260.81944958716105,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.330651%\",\"left\":\"72.606353%\",\"width\":\"7.937505%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.441956%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"作业车占比情况\\\"\\n}\",\"size\":{\"width\":151.000005727667,\"height\":43.999995253075504},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022817890-12\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":1071.16465923592,\"y\":743.3399645960995,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"75.042813%\",\"left\":\"56.307116%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"接打电话提醒车辆\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022815330-11\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":845.9243465916059,\"y\":740.9366812568901,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.800193%\",\"left\":\"44.467076%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"抽烟提醒车辆\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022811067-10\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":600.4260951996247,\"y\":741.065611831217,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.813209%\",\"left\":\"31.562151999999998%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"离线超24h车辆\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022781375-9\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":281.2349983621805,\"y\":696.622472209391,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.326516%\",\"left\":\"14.783471%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"异常车辆告警\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"component\":\"JImg\",\"visible\":true,\"w\":16.999993211770217,\"x\":354.1266073685814,\"h\":46.0000139478922,\"i\":\"es-drager-1763022760154-8\",\"y\":655.3329213418754,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"66.158189%\",\"left\":\"18.61511%\",\"width\":\"0.8936259999999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.643865%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":16.999993211770217,\"height\":46.0000139478922},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/车辆_03_1763551149225.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022745315-7\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":407.97590538011707,\"y\":48.498212219738235,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"4.8960669999999995%\",\"left\":\"21.445766%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"单位车辆统计\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022735003-6\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":310.4846940545368,\"y\":414.40677787182847,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.835838%\",\"left\":\"16.321018%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"作业车辆总数\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022730046-5\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":181.46947631997648,\"y\":333.5040806749409,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"33.668423%\",\"left\":\"9.539171%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"车辆类型分布\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"component\":\"JImg\",\"visible\":true,\"w\":1.0000141481594371,\"x\":1589.9882911213126,\"h\":118.99998806223101,\"i\":\"es-drager-1763022540256-4\",\"y\":269.2954065615573,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"27.186328999999997%\",\"left\":\"83.579732%\",\"width\":\"0.05256700000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.013472%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":1.0000141481594371,\"height\":118.99998806223101},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/按钮2-拷贝_04_1763551243662.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":144.00000180860488,\"x\":188.52286049090264,\"h\":26.999999788626795,\"i\":\"es-drager-1763022387955-2\",\"y\":377.0445378822139,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"38.063987%\",\"left\":\"9.909941%\",\"width\":\"7.569541%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.725746%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":144.00000180860488,\"height\":26.999999788626795},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/样式4_03_1763551206808.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1763022379005-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":53.59139492011721,\"y\":409.47125090244776,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.337579%\",\"left\":\"2.817099%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"公务用车\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"component\":\"JImg\",\"visible\":true,\"w\":523.9999944273385,\"x\":0,\"h\":94.0000069684209,\"i\":\"0733c434-458b-4ffb-8b77-d924eb978688\",\"y\":397.43137787573045,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"40.122111%\",\"left\":\"0%\",\"width\":\"27.54471799999999%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.489635%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":523.9999944273385,\"height\":94.00000696842092},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/样式4_07_1763551173622.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1762513598535-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":566.4987789692847,\"y\":690.6787588651661,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.726477%\",\"left\":\"29.778719999999996%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"异常车辆告警\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":38.99999309098645,\"i\":\"es-drager-1762513583317-1\",\"orderNum\":70,\"component\":\"JImg\",\"w\":720.0000090430243,\"x\":559.6597528446893,\"y\":703.371991737613,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"71.007904%\",\"left\":\"29.419218%\",\"width\":\"37.847705%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.937188%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":720.0000090430243,\"height\":38.99999309098645},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"e0162ae2-0026-4aa2-8823-29fdbe42f92d\"},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1756453828584-23\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":1309.960131603751,\"y\":0,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"68.8597%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"统计与异常告警\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":20,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":39.99999748562227,\"i\":\"es-drager-1756453836255-24\",\"orderNum\":70,\"component\":\"JImg\",\"w\":549.9999818072682,\"x\":1292.0973225248063,\"y\":11.266111280946149,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.137354%\",\"left\":\"67.920719%\",\"width\":\"28.91144%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.038142%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":549.9999818072682,\"height\":39.99999748562227},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"e0162ae2-0026-4aa2-8823-29fdbe42f92d\"},{\"component\":\"JBar3d\",\"visible\":true,\"w\":527.999993949144,\"x\":12.266138880304801,\"h\":240.99999921391452,\"i\":\"e2ddc1ba-4820-4916-bb9a-384fce062348\",\"y\":88.13717239950154,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"8.897761%\",\"left\":\"0.6447849999999999%\",\"width\":\"27.754983%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.329807%\"},\"componentName\":\"3d柱形图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":332,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"集团公司\\\",\\n \\\"value\\\": 290\\n },\\n {\\n \\\"name\\\": \\\"建设集团\\\",\\n \\\"value\\\": 270\\n },\\n {\\n \\\"name\\\": \\\"投资集团\\\",\\n \\\"value\\\": 450\\n },\\n {\\n \\\"name\\\": \\\"新成集团\\\",\\n \\\"value\\\": 380\\n },\\n {\\n \\\"name\\\": \\\"万众集团\\\",\\n \\\"value\\\": 320\\n },\\n {\\n \\\"name\\\": \\\"海洋集团\\\",\\n \\\"value\\\": 320\\n }\\n]\",\"size\":{\"width\":527.999993949144,\"height\":240.99999921391452},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":490,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\",\"show\":true},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA57\"}},\"show\":true,\"splitLine\":{\"lineStyle\":{\"color\":\"#4A90E23D\"},\"show\":true},\"name\":\"单位(辆)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA57\"}},\"show\":true,\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":35,\"left\":0,\"bottom\":\"36\",\"right\":\"1\",\"containLabel\":true},\"series\":[{\"color\":\"#00DEFFCC\",\"id\":\"barTopColor\"},{\"color\":\"#187DCB00\",\"id\":\"barBottomColor\"},{\"color\":\"#115BA6\",\"id\":\"barColor\",\"label\":{\"color\":\"#EEF1FA\",\"show\":false}},{\"color\":\"#04113300\",\"id\":\"shadowColor\"},{\"color\":\"#142F5A00\",\"id\":\"shadowTopColor\"}],\"tooltip\":{\"show\":true},\"body\":{\"gradient\":{\"type\":\"linear\"}},\"graphic\":{\"children\":[{\"style\":{\"fill\":\"#3F486700\"}}]},\"extraInfo\":{\"endColor\":\"#39CEFFCC\",\"enabledGradient\":true,\"direction\":\"to top\",\"startColor\":\"#2D48AD19\"}}}},{\"component\":\"JGaoDeMap\",\"visible\":true,\"w\":756.0000047392731,\"x\":546.8147445117935,\"h\":499.9999982869137,\"i\":\"93d7dd28-4cba-4221-9f22-a4441b3176a2\",\"y\":158.48299534078043,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.999422%\",\"left\":\"28.744004%\",\"width\":\"39.74009000000001%\",\"position\":\"absolute\",\"config\":{},\"height\":\"50.47677800000001%\"},\"componentName\":\"高德地图\",\"config\":{\"chartData\":\"[{\\\"longitude\\\":116.391466,\\\"latitude\\\":39.907425,\\\"title\\\":\\\"湘B.8J1VS\\\",\\\"company\\\":\\\"小米集团\\\",\\\"type\\\":\\\"轿车\\\",\\\"status\\\":\\\"正常\\\",\\\"imgUrl\\\":\\\"drag/lib/img/car-normal.png\\\",\\\"time\\\":\\\"2025-08-08 10:00:00\\\"},{\\\"longitude\\\":116.382122,\\\"latitude\\\":39.913553,\\\"title\\\":\\\"鄂B.8J1VS\\\",\\\"company\\\":\\\"苹果集团\\\",\\\"type\\\":\\\"货车\\\",\\\"status\\\":\\\"异常\\\",\\\"imgUrl\\\":\\\"drag/lib/img/trucks-abnormal.png\\\",\\\"time\\\":\\\"2025-08-05 10:00:00\\\"},{\\\"longitude\\\":116.411722,\\\"latitude\\\":39.908215,\\\"title\\\":\\\"京B.8J1VS\\\",\\\"company\\\":\\\"香蕉集团\\\",\\\"type\\\":\\\"轿车\\\",\\\"status\\\":\\\"异常\\\",\\\"imgUrl\\\":\\\"drag/lib/img/car-abnormal.png\\\",\\\"time\\\":\\\"2025-08-05 10:00:00\\\"},{\\\"longitude\\\":116.40683,\\\"latitude\\\":39.909795,\\\"title\\\":\\\"沪B.8J1VS\\\",\\\"company\\\":\\\"香蕉集团\\\",\\\"type\\\":\\\"货车\\\",\\\"status\\\":\\\"正常\\\",\\\"imgUrl\\\":\\\"drag/lib/img/trucks-normal.png\\\",\\\"time\\\":\\\"2025-08-05 10:00:00\\\"}]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":756.0000047392731,\"height\":499.99999828691375},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"h\":500,\"timeOut\":0,\"option\":{\"gaoSecurityJsCode\":\"f908485801bab40e98ae972553d70f8d\",\"gaodeKey\":\"f599beada738982465764ddd0b1dae4e\",\"mapStyle\":\"darkblue\",\"marker\":{\"imgUrl\":\"drag/lib/img/car-normal.png\",\"offsetX\":-41,\"offsetY\":-60,\"imgField\":\"imgUrl\",\"width\":82,\"showImgField\":true,\"height\":120},\"infoWindow\":{\"titleTextAlign\":\"center\",\"padding\":0,\"titleLetterSpacing\":0,\"titleFontWeight\":\"bold\",\"titleField\":\"title\",\"contentLineHeight\":16,\"showContent\":true,\"bgImgUrl\":\"drag/lib/img/bg.png\",\"contentFieldMapping\":[{\"name\":\"公司\",\"key\":\"company\"},{\"name\":\"类型\",\"key\":\"type\"},{\"name\":\"状态\",\"key\":\"status\"},{\"name\":\"时间\",\"key\":\"time\"}],\"show\":true,\"contentFontSize\":11,\"contentColor\":\"#fff\",\"offsetX\":0,\"titleLineHeight\":23,\"contentPaddingTop\":8,\"offsetY\":-55,\"bgColor\":\"#000000\",\"titleColor\":\"#fff\",\"titleFontSize\":16,\"showTitle\":true,\"width\":224,\"contentPaddingLeft\":25,\"event\":\"hover\",\"height\":113}}}},{\"visible\":true,\"h\":59.99999622843341,\"i\":\"es-drager-1756453224591-18\",\"orderNum\":70,\"component\":\"JText\",\"w\":170.0000082121453,\"x\":28.25791876766705,\"y\":2.669405712431711,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0.2694860000000002%\",\"left\":\"1.485413%\",\"width\":\"8.936264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.057212999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"单位与车辆分类概览\\\"\\n}\",\"size\":{\"width\":170.0000082121453,\"height\":59.9999962284334},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"b9b6326a-6ea6-4872-8b63-5ae7f1fdb450\"},{\"visible\":true,\"h\":38.99999309098645,\"i\":\"es-drager-1756453227423-19\",\"orderNum\":70,\"component\":\"JImg\",\"w\":584.9999823789683,\"x\":0,\"y\":14.201649272145232,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"1.4337070000000007%\",\"left\":\"0%\",\"width\":\"30.751259000000008%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.937188%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":584.9999823789683,\"height\":38.99999309098645},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/标题背景_1756451499148.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}},\"key\":\"e0162ae2-0026-4aa2-8823-29fdbe42f92d\"},{\"component\":\"JMultipleLine\",\"visible\":true,\"w\":557.0000047499412,\"x\":1320.2056205936456,\"h\":161.00000424267,\"i\":\"62a2a0e8-6118-4798-826d-3fe1b7d357f0\",\"y\":425.2629580765655,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.931808%\",\"left\":\"69.398267%\",\"width\":\"29.279405000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.253523%\"},\"componentName\":\"对比折线图\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 2000,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 1900,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 4000,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 3800,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 800,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 420,\\n \\\"type\\\": \\\"维修保养金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"1月\\\",\\n \\\"value\\\": 20,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"2月\\\",\\n \\\"value\\\": 210,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"3月\\\",\\n \\\"value\\\": 220,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"4月\\\",\\n \\\"value\\\": 580,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"5月\\\",\\n \\\"value\\\": 500,\\n \\\"type\\\": \\\"加油金额\\\"\\n },\\n {\\n \\\"name\\\": \\\"6月\\\",\\n \\\"value\\\": 800,\\n \\\"type\\\": \\\"加油金额\\\"\\n }\\n]\",\"size\":{\"width\":557.0000047499412,\"height\":161.00000424267},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"name\":\"单位(元)\",\"yUnit\":\"\",\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#FE398B\"},{\"color1\":\"#90ee90\",\"color\":\"#7A53F0\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":35,\"left\":0,\"bottom\":18,\"right\":1,\"containLabel\":true},\"series\":[{\"areaStyleOpacity\":0.1,\"symbol\":\"circle\",\"symbolSize\":15,\"lineType\":\"area\",\"label\":{\"position\":\"top\"}}],\"legend\":{\"r\":48},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}},{\"component\":\"JImg\",\"visible\":true,\"w\":483.00000408473613,\"x\":1357.151241934818,\"h\":136.0000033377698,\"i\":\"es-drager-1763022408549-3\",\"y\":260.5615091941472,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.304611%\",\"left\":\"71.34036000000002%\",\"width\":\"25.389502000000004%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.729684%\"},\"componentName\":\"图片\",\"config\":{\"size\":{\"width\":483.00000408473613,\"height\":136.0000033377698},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/按钮2-拷贝_02_1763551275631.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":229.00000591467753,\"x\":563.4232127899882,\"h\":131.9999857592265,\"i\":\"4887df15-f532-4ef1-8a4e-6d84f34242fa\",\"y\":805.3962331096695,\"orderNum\":1076.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.307614%\",\"left\":\"29.617049%\",\"width\":\"12.037673%\",\"position\":\"absolute\",\"config\":{},\"height\":\"13.325868%\"},\"componentName\":\"图片\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":229.00000591467753,\"height\":131.9999857592265},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/组-155_02_1763554354943.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}},{\"component\":\"JSemiGauge\",\"visible\":true,\"w\":238.00000008283695,\"x\":259.42555098968336,\"h\":215.0000038199236,\"i\":\"es-drager-1763544356457-1\",\"y\":482.71159297288773,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"48.731452000000004%\",\"left\":\"13.637029999999998%\",\"width\":\"12.510769%\",\"position\":\"absolute\",\"config\":{},\"height\":\"21.705015000000003%\"},\"componentName\":\"半圆仪表盘\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":430,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"[\\n {\\n \\\"total\\\": 385,\\n \\\"used\\\": 300\\n }\\n]\",\"size\":{\"width\":238.00000008283695,\"height\":215.0000038199236},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":500,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"titleSuffix\":\"辆\",\"customAttr\":{\"innerCircle\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":0,\"y2\":1,\"x2\":1,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#BD8D35\"},{\"offset\":1,\"color\":\"#BD8D35\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":15}},\"name\":\"内部小圆\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"outerScale\":{\"axisLabel\":{\"color\":\"#FFBB38\",\"distance\":-52,\"show\":true,\"fontSize\":14},\"min\":0,\"max\":100,\"axisLine\":{\"show\":false},\"name\":\"外部刻度\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"splitNumber\":2,\"detail\":{\"show\":false},\"type\":\"gauge\",\"radius\":67},\"innerProgress\":{\"axisLabel\":{\"show\":false},\"animationDuration\":2000,\"pointer\":{\"show\":true,\"length\":74,\"width\":3,\"itemStyle\":{\"color\":\"#BD8D35\"}},\"data\":[{\"name\":\"去年优良率\",\"value\":44}],\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#BD8D35\"],[1,\"#BD8D35\"]],\"width\":1}},\"name\":\"内部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"detail\":{\"offsetCenter\":[0,50],\"show\":false,\"textStyle\":{\"padding\":[0,0,0,0],\"color\":\"#FFFFFF\",\"fontSize\":18,\"fontWeight\":\"normal\"}},\"type\":\"gauge\",\"radius\":30,\"title\":{\"offsetCenter\":[0,26],\"show\":true,\"textStyle\":{\"color\":\"#FFFFFF\",\"fontSize\":16,\"fontWeight\":\"normal\"}}},\"outerProgress\":{\"axisLabel\":{\"show\":false},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,\"#BD8D35\"],[1,\"#BD8D35\"]],\"width\":2}},\"name\":\"外部进度条\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"type\":\"gauge\",\"radius\":80},\"basic\":{\"startAngle\":180,\"endAngle\":0},\"innerShadow\":{\"axisLabel\":{\"show\":false},\"customGradient\":{\"endColor\":\"#BD8D35\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"to right\",\"startColor\":\"#BD8D3500\"},\"axisLine\":{\"lineStyle\":{\"color\":[[0.44,{\"x\":0,\"y\":1,\"y2\":0,\"x2\":0,\"global\":false,\"colorStops\":[{\"offset\":0,\"color\":\"#2de69600\"},{\"offset\":1,\"color\":\"#2de696\"}],\"type\":\"linear\"}],[1,\"rgba(0,0,0,0)\"]],\"width\":100}},\"name\":\"内部阴影\",\"axisTick\":{\"show\":false},\"splitLine\":{\"show\":false},\"itemStyle\":{\"show\":false},\"type\":\"gauge\",\"radius\":80}},\"valuePrefix\":\"已使用:\",\"titlePrefix\":\"车辆总数:\",\"valueMapping\":\"used\",\"titleMapping\":\"total\",\"valueSuffix\":\"辆\"}}}]},\"component\":\"JGroup\",\"w\":1902.3610785463065,\"x\":6,\"y\":69,\"componentName\":\"车辆\",\"pageCompId\":\"1151112776978583552\",\"equalProportion\":true,\"key\":\"7ea6e027-6c73-41e9-80ee-ab95267ce97a\",\"group\":true},{\"visible\":true,\"h\":1065,\"i\":\"es-drager-1756453564096-22\",\"props\":{\"elements\":[{\"component\":\"JScrollList\",\"visible\":true,\"w\":339,\"x\":1653.2942555685815,\"h\":157,\"i\":\"es-drager-1763357806623-2\",\"y\":873.5580304806565,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.02422821414615%\",\"left\":\"75.60621250542819%\",\"width\":\"15.502688618805859%\",\"position\":\"absolute\",\"config\":{},\"height\":\"14.741784037558686%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"外刚性还本付息约\\\",\\n \\\"value\\\": 131.73\\n },\\n {\\n \\\"title\\\": \\\"归还田迪投控本息合计\\\",\\n \\\"value\\\": 11.04\\n },\\n {\\n \\\"title\\\": \\\"压降天保担保额度\\\",\\n \\\"value\\\": 36.81\\n },\\n {\\n \\\"title\\\": \\\"压降隐性债务规模\\\",\\n \\\"value\\\": 24.64\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":339,\"height\":157},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":0,\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"__system\":true,\"textAlign\":\"left\",\"name\":\"标题\",\"width\":233,\"textStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\",\"marginLeft\":14},{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":18,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"normal\",\"fontColor\":\"#04FAFD\",\"fontWeight\":\"bold\",\"marginLeft\":0},\"suffixStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"suffix\":\" 亿元\",\"enabled\":true},\"name\":\"金额\",\"width\":193,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"value\",\"marginLeft\":0}],\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"\",\"isMultiline\":true,\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"marginTop\":1,\"height\":41},\"marginLeft\":4}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":339,\"x\":1310.3048065650646,\"h\":157,\"i\":\"es-drager-1763357453690-1\",\"y\":869.8886283704572,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"81.6796834150664%\",\"left\":\"59.92108381092284%\",\"width\":\"15.502688618805859%\",\"position\":\"absolute\",\"config\":{},\"height\":\"14.741784037558686%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"实现资产盘活收入化债约\\\",\\n \\\"value\\\": 1.2\\n },\\n {\\n \\\"title\\\": \\\"经营收入化债约\\\",\\n \\\"value\\\": 4.46\\n },\\n {\\n \\\"title\\\": \\\"财政资金到位化解隐性债务\\\",\\n \\\"value\\\": 6.61\\n },\\n {\\n \\\"title\\\": \\\"再融资债券资金到位化解隐性债务\\\",\\n \\\"value\\\": 12.37\\n },\\n {\\n \\\"title\\\": \\\"到期隐性债务偿还本息合计\\\",\\n \\\"value\\\": 36.99\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":339,\"height\":157},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":0,\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"__system\":true,\"textAlign\":\"left\",\"name\":\"标题\",\"width\":233,\"textStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\",\"marginLeft\":14},{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontFamily\":\"\",\"fontSize\":18,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"normal\",\"fontColor\":\"#04FAFD\",\"fontWeight\":\"bold\",\"marginLeft\":0},\"suffixStyle\":{\"fontColor\":\"#FFFFFF\"},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"suffix\":\" 亿元\",\"enabled\":true},\"name\":\"金额\",\"width\":193,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"value\",\"marginLeft\":0}],\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"\",\"isMultiline\":true,\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"marginTop\":1,\"height\":41},\"marginLeft\":4}}},{\"component\":\"JScrollList\",\"visible\":true,\"w\":451.99999999999994,\"x\":276.01406799531065,\"h\":157,\"i\":\"ec3ee79c-04b7-462a-89dd-b8b1e95104d8\",\"y\":457.2626025791325,\"orderNum\":1074.87104337632,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"42.9354556412331%\",\"left\":\"12.622301329030117%\",\"width\":\"20.670251491741144%\",\"position\":\"absolute\",\"config\":{},\"height\":\"14.741784037558686%\"},\"componentName\":\"滚动列表(多行+序号)\",\"config\":{\"chartData\":\"[\\n {\\n \\\"title\\\": \\\"保区创新创业园\\\",\\n \\\"content\\\": \\\"按期完工\\\"\\n },\\n {\\n \\\"title\\\": \\\"中蓝白领公寓\\\",\\n \\\"content\\\": \\\"已建设完成,进行验收与运营准备\\\"\\n },\\n {\\n \\\"title\\\": \\\"合成生物中心\\\",\\n \\\"content\\\": \\\"竣工备案,确定运营方案,项目整体具备移交条件\\\"\\n },\\n {\\n \\\"title\\\": \\\"中欧核心区综合服务中心\\\",\\n \\\"content\\\": \\\"竣工验收\\\"\\n },\\n {\\n \\\"title\\\": \\\"汀园一期二标项目\\\",\\n \\\"content\\\": \\\"结构封顶\\\"\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":451.99999999999994,\"height\":157},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":515,\"dataType\":1,\"h\":220,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"marginRight\":0,\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"__system\":true,\"textAlign\":\"left\",\"name\":\"标题\",\"width\":162,\"textStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"fontStyle\":\"normal\",\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"normal\"},\"key\":\"title\",\"marginLeft\":14},{\"marginRight\":18,\"compose\":{\"contentStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#FFFFFF\",\"enabled\":false,\"startColor\":\"#000000\"},\"fontStyle\":\"normal\",\"fontColor\":\"#D1D1D1\",\"fontWeight\":\"normal\",\"marginLeft\":0},\"prefix\":\"\",\"prefixStyle\":{\"fontColor\":\"#FFFFFF\"},\"enabled\":true},\"name\":\"内容\",\"width\":257,\"textStyle\":{\"fontSize\":16,\"fontWeight\":\"bold\",\"fontColor\":\"#FFFFFF\"},\"key\":\"content\",\"marginLeft\":0}],\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":false,\"indexFieldStyle\":{\"width\":28,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#F54100\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#D4BA28\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":15},\"header\":{\"padding\":\"8px 0\",\"backgroundColor\":\"#1890FF\",\"textAlign\":\"center\",\"fontSize\":16,\"fontColor\":\"#FFFFFF\",\"fontWeight\":\"bold\"},\"row\":{\"backgroundColor\":\"#FFFFFF\",\"backgroundImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题行-1_21_1763554527340.png\",\"isMultiline\":true,\"alternateBackgroundColor\":\"#F8F9FA\",\"backgroundSize\":\"100% 100%\",\"marginBottom\":10,\"backgroundRepeat\":\"no-repeat\",\"backgroundType\":\"image\",\"marginTop\":1,\"height\":41},\"marginLeft\":4}}},{\"component\":\"JText\",\"visible\":true,\"w\":665.0000038733882,\"x\":475.7444323786635,\"h\":58.9999989,\"i\":\"es-drager-1763042970956-9\",\"y\":960.5416156499999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"90.191701%\",\"left\":\"21.756099697041183%\",\"width\":\"30.410879031132236%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.539906%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"成功谋划实施总投资113亿元的港口型国家粮食物流枢纽项目,启动建设总投资12亿元的40万吨粮食筒仓项目,并获取1.9亿元超长期特别国债资金支持\\\"\\n}\",\"size\":{\"width\":665.0000038733882,\"height\":58.9999989},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"textAlign\":\"left\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":665.0000038733882,\"x\":451.688168158851,\"h\":49.00000034999999,\"i\":\"es-drager-1763042965821-8\",\"y\":889.63892115,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"83.534171%\",\"left\":\"20.655991220547158%\",\"width\":\"30.410879031132236%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.6009389999999994%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"推动分布式光伏项目并网发电、氢能重卡扩量布局、50MW防波堤风电项目开工建设等工作,构建绿色新能源产业发展体系\\\"\\n}\",\"size\":{\"width\":665.0000038733882,\"height\":49.00000035},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"textAlign\":\"left\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":660.9999992373974,\"x\":398.5111289953106,\"h\":43.000003349999986,\"i\":\"es-drager-1763042960045-7\",\"y\":812.4056217,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.282218%\",\"left\":\"18.22417092608577%\",\"width\":\"30.227956239552455%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"累计中标市场化项目14个,签约合同额超9100万元,展现出城市运营业务的品牌实力和市场竞争力\\\"\\n}\",\"size\":{\"width\":660.9999992373974,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"textAlign\":\"center\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042876096-6\",\"orderNum\":70,\"component\":\"JText\",\"w\":567.9999905685813,\"x\":250.33644724267296,\"y\":408.4407912,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"38.351248%\",\"left\":\"11.44804717268814%\",\"width\":\"25.97500586805127%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"坚持以重点项目为抓手,加快建设进度,着力改善资产质量,提升经营发展后劲\\\"\\n}\",\"size\":{\"width\":567.9999905685813,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042867476-5\",\"orderNum\":70,\"component\":\"JText\",\"w\":440.0000091524032,\"x\":274.5216791377492,\"y\":319.94137929407975,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"30.041444065171806%\",\"left\":\"12.554053424142353%\",\"width\":\"20.121484171567655%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"长三角项目7个,完成内资到位5000万元,新增税收收入3亿元\\\"\\n}\",\"size\":{\"width\":440.0000091524032,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042861732-4\",\"orderNum\":70,\"component\":\"JText\",\"w\":482.99999117174673,\"x\":282.11840171512296,\"y\":283.2239145483587,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"26.59379479327312%\",\"left\":\"12.901456446680637%\",\"width\":\"22.087901079709642%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"注册资本1亿元以上的大好项目2个,实体项目3个,京冀项目11个,\\\"\\n}\",\"size\":{\"width\":482.99999117174673,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042856445-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":313.9999987538101,\"x\":320.1019879624853,\"y\":251.5709253381594,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"23.621683130343605%\",\"left\":\"14.638470341130239%\",\"width\":\"14.359422439485975%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"招引项目公司18家\\\"\\n}\",\"size\":{\"width\":313.9999987538101,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042838775-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":394.9999935146542,\"x\":271.9894450914419,\"y\":211.05509700000002,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"19.81738%\",\"left\":\"12.438252728184123%\",\"width\":\"18.06360443624784%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"预计实现固投6.81亿元,固投指标完成率达103.81%\\\"\\n}\",\"size\":{\"width\":394.9999935146542,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763042831263-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":443.9999929214536,\"x\":284.77960655744425,\"y\":180.79717965,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"16.976261%\",\"left\":\"13.023155060312986%\",\"width\":\"20.304406008888794%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"新增盘活面积4.92万平米,实现新增资产盘活收入4.25亿元\\\"\\n}\",\"size\":{\"width\":443.9999929214536,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763042137685-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":400.00000452637744,\"x\":1500.7467639279014,\"y\":774.793677,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"72.75058%\",\"left\":\"68.63011733585486%\",\"width\":\"18.292258164287208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"建设开发一期工程5.6平方公里造路部分2个立项的决算工作。\\\"\\n}\",\"size\":{\"width\":400.00000452637744,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763042130020-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":456.999992338218,\"x\":1502.1418325375146,\"y\":748.3341141,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.266114%\",\"left\":\"68.69391472304278%\",\"width\":\"20.89890436582908%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"启动海阳经济区(北区)生活区域市政基础设施工程和新成集团1区工业区\\\"\\n}\",\"size\":{\"width\":456.999992338218,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":40.000004849999996,\"i\":\"es-drager-1763042123591-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":178.00000806565058,\"x\":1666.737377284291,\"y\":721.74561165,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"67.769541%\",\"left\":\"76.2209751308658%\",\"width\":\"8.14005515984281%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.7558689999999997%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"启动2个立项的决算工作\\\"\\n}\",\"size\":{\"width\":178.00000806565058,\"height\":40.000004849999996},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041888225-9\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.00000518933179,\"x\":1886.9132275656505,\"y\":681.10082385,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.953129%\",\"left\":\"86.28975875414821%\",\"width\":\"4.527334081741519%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"决算总金额\\\"\\n}\",\"size\":{\"width\":99.0000051893318,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041884664-8\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.00000518933179,\"x\":1788.1559048909733,\"y\":679.8347092500001,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.834245%\",\"left\":\"81.77352270030615%\",\"width\":\"4.527334081741519%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"决算审核\\\"\\n}\",\"size\":{\"width\":99.0000051893318,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041880252-7\",\"orderNum\":70,\"component\":\"JText\",\"w\":71.99999998007033,\"x\":1871.3329382022273,\"y\":652.8593292279601,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.301345467414095%\",\"left\":\"85.57726207393569%\",\"width\":\"3.292606431401352%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"14\\\"\\n}\",\"size\":{\"width\":71.99999998007033,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"fontFamily\":\"DIGITALDREAMFAT\",\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041872463-6\",\"orderNum\":70,\"component\":\"JText\",\"w\":46.00000114654163,\"x\":1920.9695138089094,\"y\":653.1172353,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.325562%\",\"left\":\"87.84717468672096%\",\"width\":\"2.1036097175207886%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"亿元\\\"\\n}\",\"size\":{\"width\":46.00000114654163,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43,\"i\":\"es-drager-1763041867629-5\",\"orderNum\":70,\"component\":\"JText\",\"w\":42,\"x\":1814.6154563487687,\"y\":649.3188808499999,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.968909%\",\"left\":\"82.98353505205681%\",\"width\":\"1.9206870855157703%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558685446009%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项\\\"\\n}\",\"size\":{\"width\":42,\"height\":43},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041862452-4\",\"orderNum\":70,\"component\":\"JText\",\"w\":71.99999998007033,\"x\":1780.3012813640096,\"y\":649.1899256720399,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"60.956800532585895%\",\"left\":\"81.41432570102454%\",\"width\":\"3.292606431401352%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"5\\\"\\n}\",\"size\":{\"width\":71.99999998007033,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"fontFamily\":\"DIGITALDREAMFAT\",\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041848451-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.00000518933179,\"x\":1643.9472355287223,\"y\":682.4958993,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.084122%\",\"left\":\"75.17876725117546%\",\"width\":\"4.527334081741519%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"审核金额约\\\"\\n}\",\"size\":{\"width\":99.0000051893318,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041841952-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":46.00000114654163,\"x\":1685.600214823564,\"y\":655.778436,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.57544%\",\"left\":\"77.08358485605304%\",\"width\":\"2.1036097175207886%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"亿元\\\"\\n}\",\"size\":{\"width\":46.00000114654163,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041833962-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":71.99999998007033,\"x\":1637.3587135990622,\"y\":654.38336055,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.444447000000004%\",\"left\":\"74.8774698944389%\",\"width\":\"3.292606431401352%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"33\\\"\\n}\",\"size\":{\"width\":71.99999998007033,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"fontFamily\":\"DIGITALDREAMFAT\",\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041616450-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":71.99999998007033,\"x\":1543.7948233774912,\"y\":655.778436,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.57544%\",\"left\":\"70.59873285588682%\",\"width\":\"3.292606431401352%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"146\\\"\\n}\",\"size\":{\"width\":71.99999998007033,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"fontFamily\":\"DIGITALDREAMFAT\",\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":22,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763041602493-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":46.00000114654163,\"x\":1594.5685637579134,\"y\":657.17351145,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.706433%\",\"left\":\"72.9206487471251%\",\"width\":\"2.1036097175207886%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"项\\\"\\n}\",\"size\":{\"width\":46.00000114654163,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"component\":\"JText\",\"visible\":true,\"w\":400.00000452637744,\"x\":1633.5920373159436,\"h\":43.000003349999986,\"i\":\"es-drager-1763039434020-6\",\"y\":289.10316405000003,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"27.145837%\",\"left\":\"74.70521735890784%\",\"width\":\"18.292258164287208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"完善员工考核评价机制,完善选人用人机制,推进企业人才\\\"\\n}\",\"size\":{\"width\":400.00000452637744,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":1,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":407.000007422626,\"x\":1565.3505526565066,\"h\":43.000003349999986,\"i\":\"es-drager-1763039429945-5\",\"y\":236.05509870000003,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"22.164798%\",\"left\":\"71.58449025696014%\",\"width\":\"18.61237281098715%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"编制《集团改革深化提升行动方案》,进一步完善\\\"\\n}\",\"size\":{\"width\":407.0000074226259,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":1,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":325.0000062860492,\"x\":1547.7538337977724,\"h\":43.000003349999986,\"i\":\"es-drager-1763039424189-4\",\"y\":181.74090809999998,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"17.064874%\",\"left\":\"70.7797809555453%\",\"width\":\"14.862459877765685%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"航海低空经济基地项目,获银行贷款10亿元\\\"\\n}\",\"size\":{\"width\":325.00000628604914,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":1,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":362.9999981606096,\"x\":1503.0129020896836,\"h\":44.9999988,\"i\":\"es-drager-1756453093407-15\",\"y\":132.5638941,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.447314%\",\"left\":\"68.73374929541033%\",\"width\":\"16.600224012126933%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"新评级主体“海阳发展集团”已具备AAA评级落地条件\\\"\\n}\",\"size\":{\"width\":362.99999816060955,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"horseLamp\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":1,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":395.9999998903869,\"x\":1478.4408071078544,\"h\":105.00000075,\"i\":\"es-drager-1763039350346-3\",\"y\":104.25790874999998,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"9.789475%\",\"left\":\"67.61005154551353%\",\"width\":\"18.10933537270744%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.859155%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":395.9999998903869,\"height\":105.00000075},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_53_1763550154234.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":395.9999998903869,\"x\":1516.553334390973,\"h\":105.00000075,\"i\":\"es-drager-1763039347418-2\",\"y\":153.76553070000003,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"14.438078%\",\"left\":\"69.35296199668146%\",\"width\":\"18.10933537270744%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.859155%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":395.9999998903869,\"height\":105.00000075},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_53_1763550154234.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":395.9999998903869,\"x\":1560.9964739953105,\"h\":105.00000075,\"i\":\"es-drager-1763039343497-1\",\"y\":207.07150710000002,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"19.443334%\",\"left\":\"71.38537543186779%\",\"width\":\"18.10933537270744%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.859155%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":395.9999998903869,\"height\":105.00000075},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_53_1763550154234.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":56.00000230304804,\"x\":1774.8417328223916,\"h\":28.0000002,\"i\":\"es-drager-1763039242410-2\",\"y\":489.28722029999994,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.94246199999999%\",\"left\":\"81.16465702539044%\",\"width\":\"2.560916219340899%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.629108%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":56.000002303048035,\"height\":28.000000200000002},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_42_1763550192876.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":86.00000577256742,\"x\":1769.7772638323565,\"h\":28.0000002,\"i\":\"es-drager-1763039228598-1\",\"y\":428.51347455,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"40.236007%\",\"left\":\"80.93305559243437%\",\"width\":\"3.932835724801236%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.629108%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":86.00000577256742,\"height\":28.000000200000002},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_42_1763550192876.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":112.99999011488859,\"x\":1772.4384455844076,\"h\":28.0000002,\"i\":\"es-drager-1763039126579-4\",\"y\":359.00585550000005,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"33.70947%\",\"left\":\"81.05475315013376%\",\"width\":\"5.167562420882767%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.629108%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":112.9999901148886,\"height\":28.000000200000002},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_42_1763550192876.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":395.9999998903869,\"x\":1597.8428996811256,\"h\":105.00000075,\"i\":\"es-drager-1763039122726-3\",\"y\":260.3774835,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"24.44859%\",\"left\":\"73.07038624049068%\",\"width\":\"18.10933537270744%\",\"position\":\"absolute\",\"config\":{},\"height\":\"9.859155%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":395.9999998903869,\"height\":105.00000075},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_53_1763550154234.png\"},\"izRotate\":false}}},{\"visible\":true,\"h\":57.00000345,\"i\":\"es-drager-1763039115053-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":175.00000980539266,\"x\":1587.2297652203986,\"y\":482.7069261,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"45.324594%\",\"left\":\"72.58504075726304%\",\"width\":\"8.00286330472264%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.352113%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"开展供应链公司业务部负责人“揭榜挂帅”公开竞聘\\\"\\n}\",\"size\":{\"width\":175.00000980539266,\"height\":57.00000345},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763038916108-2\",\"orderNum\":70,\"component\":\"JText\",\"w\":99.00000518933179,\"x\":1546.5849930087923,\"y\":681.3587349000001,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.977346000000004%\",\"left\":\"70.72632911248775%\",\"width\":\"4.527334081741519%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"结算审核\\\"\\n}\",\"size\":{\"width\":99.0000051893318,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":43.000003349999986,\"i\":\"es-drager-1763038893302-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":593.0000038933175,\"x\":1478.34348369871,\"y\":619.4478354,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"58.164116%\",\"left\":\"67.60560088325013%\",\"width\":\"27.11827259973087%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"坚持问题导向,瞄准债务症结,持续推动土地开发成本决算,为存量债务化解探索可行路径\\\"\\n}\",\"size\":{\"width\":593.0000038933176,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":375.1957872215708,\"h\":59.94860505,\"i\":\"es-drager-1763038751694-10\",\"y\":952.2192264,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"89.410256%\",\"left\":\"17.15794531086652%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"建设集团\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":353.67174706330593,\"h\":59.94860505,\"i\":\"es-drager-1763038747182-9\",\"y\":876.2520521999999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.277188%\",\"left\":\"16.17363707372123%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"海洋集团\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":323.28487052227433,\"h\":59.94860505,\"i\":\"es-drager-1763038741952-8\",\"y\":806.6154723,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"75.738542%\",\"left\":\"14.784025613208815%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"投资集团\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":295.43023890973035,\"h\":59.94860505,\"i\":\"es-drager-1763038737302-7\",\"y\":740.7772575,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.55655%\",\"left\":\"13.510215346303756%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"万众集团\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":265.17234092614297,\"h\":59.94860505,\"i\":\"es-drager-1763038700270-6\",\"y\":683.93082705,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.218857%\",\"left\":\"12.12650215840066%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"新成集团\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":47.00000752227431,\"x\":327.1512432731535,\"h\":36.99999569999999,\"i\":\"es-drager-1763038660630-5\",\"y\":954.7033921500001,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"89.643511%\",\"left\":\"14.960837332504143%\",\"width\":\"2.1493406539803885%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.4741779999999993%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":47.00000752227431,\"height\":36.99999569999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_11_1763550014908.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":47.00000752227431,\"x\":300.5627341248534,\"h\":36.99999569999999,\"i\":\"es-drager-1763038655573-4\",\"y\":888.86517735,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"83.461519%\",\"left\":\"13.744927662402764%\",\"width\":\"2.1493406539803885%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.4741779999999993%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":47.00000752227431,\"height\":36.99999569999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_11_1763550014908.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":47.00000752227431,\"x\":276.506469905041,\"h\":36.99999569999999,\"i\":\"es-drager-1763038650929-3\",\"y\":823.02696255,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"77.279527%\",\"left\":\"12.644819185908743%\",\"width\":\"2.1493406539803885%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.4741779999999993%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":47.00000752227431,\"height\":36.99999569999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_11_1763550014908.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":47.00000752227431,\"x\":256.24855221102,\"h\":36.99999569999999,\"i\":\"es-drager-1763038646390-2\",\"y\":753.39038265,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.740881%\",\"left\":\"11.718411545567136%\",\"width\":\"2.1493406539803885%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.4741779999999993%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":47.00000752227431,\"height\":36.99999569999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_11_1763550014908.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":47.00000752227431,\"x\":237.25675698124275,\"h\":36.99999569999999,\"i\":\"es-drager-1763038641612-1\",\"y\":698.94724185,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.628849%\",\"left\":\"10.849904502029203%\",\"width\":\"2.1493406539803885%\",\"position\":\"absolute\",\"config\":{},\"height\":\"3.4741779999999993%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":47.00000752227431,\"height\":36.99999569999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_11_1763550014908.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":322,\"x\":1559.964839345252,\"h\":169,\"i\":\"es-drager-1763038468350-11\",\"y\":860.6236798322392,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.80973519551542%\",\"left\":\"71.3381981140264%\",\"width\":\"14.725267655620906%\",\"position\":\"absolute\",\"config\":{},\"height\":\"15.868544600938966%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":322,\"height\":169},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_37_1763549942040.png\"},\"izRotate\":false}}},{\"visible\":true,\"h\":59.94860505,\"i\":\"es-drager-1763038388788-10\",\"orderNum\":70,\"component\":\"JText\",\"w\":173.74037695955448,\"x\":1796.92848376143,\"y\":809.8487640279601,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.0421374674141%\",\"left\":\"82.17469838942888%\",\"width\":\"7.9452594823537614%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"全口径化债\\\"\\n}\",\"size\":{\"width\":173.74037695955448,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"25ca1904-5d69-45c5-86bd-b235d3ac9f2a\"},{\"component\":\"JImg\",\"visible\":true,\"w\":217,\"x\":1276.483013909144,\"h\":188,\"i\":\"es-drager-1763038374225-9\",\"y\":853.1559168483586,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.10853679327312%\",\"left\":\"58.37439142132238%\",\"width\":\"9.92354994183148%\",\"position\":\"absolute\",\"config\":{},\"height\":\"17.652582159624412%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":217.00000000000003,\"height\":187.99999999999997},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_37_1763549942040.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":527.0000004337631,\"x\":1484.2555886670573,\"h\":85.99999605000001,\"i\":\"es-drager-1763038372052-8\",\"y\":707.6811257999999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"66.448932%\",\"left\":\"67.87596525612915%\",\"width\":\"24.100049878569862%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.075117%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":527.0000004337631,\"height\":85.99999605000001},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_33_1763550324778.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":409,\"x\":225.73272507796014,\"h\":152,\"i\":\"es-drager-1763038238876-6\",\"y\":446.86048514999993,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"41.95873099999999%\",\"left\":\"10.322903091321901%\",\"width\":\"18.70383376133214%\",\"position\":\"absolute\",\"config\":{},\"height\":\"14.272300469483568%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":409,\"height\":152},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_30_1763550061880.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":181.00000632590854,\"x\":1833.833553545135,\"h\":256.99999575,\"i\":\"es-drager-1763038235098-5\",\"y\":320.37748545,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"30.082393000000003%\",\"left\":\"83.86239103046746%\",\"width\":\"8.277247014962983%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.131455%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":181.00000632590854,\"height\":256.99999575},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_49_1763549897591.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":355.9999952643611,\"x\":384.2555866529894,\"h\":63.00000044999999,\"i\":\"es-drager-1763038220734-4\",\"y\":949.7678732999999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"89.180082%\",\"left\":\"17.572255781468634%\",\"width\":\"16.28010936542699%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.915492999999999%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":355.9999952643611,\"height\":63.00000044999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763550350084.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":355.9999952643611,\"x\":366.529913887456,\"h\":63.00000044999999,\"i\":\"es-drager-1763038208032-3\",\"y\":873.8006991000001,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"82.047014%\",\"left\":\"16.761649334734386%\",\"width\":\"16.28010936542699%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.915492999999999%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":355.9999952643611,\"height\":63.00000044999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763550350084.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":355.9999952643611,\"x\":334.87691488218053,\"h\":63.00000044999999,\"i\":\"es-drager-1763038199346-2\",\"y\":805.4302444499999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"75.627253%\",\"left\":\"15.314137277418286%\",\"width\":\"16.28010936542699%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.915492999999999%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":355.9999952643611,\"height\":63.00000044999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763550350084.png\"},\"izRotate\":false}}},{\"component\":\"JOrbitRing\",\"visible\":true,\"w\":538.9999934747948,\"x\":886.7444235703398,\"h\":134.99999640000004,\"i\":\"5c18670b-4206-42f4-8884-1592d70ec919\",\"y\":435.73857300000003,\"orderNum\":1074.8710433763197,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"40.91442%\",\"left\":\"40.551394345349465%\",\"width\":\"24.648817299050542%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.676056000000004%\"},\"componentName\":\"轨道环形文字\",\"config\":{\"chartData\":\"[\\n {\\n \\\"name\\\": \\\"经营发展\\\",\\n \\\"value\\\": 1\\n },\\n {\\n \\\"name\\\": \\\"全口径化债\\\",\\n \\\"value\\\": 2\\n },\\n {\\n \\\"name\\\": \\\"土地成本决算\\\",\\n \\\"value\\\": 3\\n },\\n {\\n \\\"name\\\": \\\"创新赋能\\\",\\n \\\"value\\\": 4\\n },\\n {\\n \\\"name\\\": \\\"重点项目\\\",\\n \\\"value\\\": 5\\n },\\n {\\n \\\"name\\\": \\\"培育增量\\\",\\n \\\"value\\\": 6\\n }\\n]\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":538.9999934747948,\"height\":134.99999640000004},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"标题\"},{\"mapping\":\"value\",\"filed\":\"id(唯一标识)\"},{\"mapping\":\"imgSrc\",\"filed\":\"图片地址\"}],\"background\":\"#FFFFFF00\",\"w\":750,\"dataType\":1,\"h\":540,\"viewLoading\":true,\"timeOut\":0,\"option\":{\"sharedSpeed\":1,\"color\":\"#ffffff\",\"showOrbit\":true,\"planetHeight\":80,\"letterSpacing\":0,\"tilt\":0.55,\"fontGradient\":{\"endColor\":\"#0066cc\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"to right\",\"startColor\":\"#ffffff\"},\"fontStyle\":\"normal\",\"orbitRadius\":290,\"sun\":{\"repeat\":\"no-repeat\",\"width\":300,\"bgImg\":\"\",\"position\":\"center\",\"height\":300},\"sharedDepth\":10,\"planetWidth\":80,\"imgTextMode\":true,\"showType\":\"1\",\"fontSize\":14,\"items\":[{\"bgColor\":\"#31AEFD00\",\"name\":\"经营发展\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/jyfz_1763550629518.png\",\"value\":1},{\"bgColor\":\"#409EFF00\",\"name\":\"全口径化债\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_05_1763550642627.png\",\"value\":2},{\"bgColor\":\"#E6A23C00\",\"name\":\"土地成本决算\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_11_1763550652200.png\",\"value\":3},{\"bgColor\":\"#F56C6C00\",\"name\":\"创新赋能\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_13_1763550665155.png\",\"value\":4},{\"bgColor\":\"#67C23A00\",\"name\":\"重点项目\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_07_1763550686864.png\",\"value\":5},{\"bgColor\":\"#90939900\",\"name\":\"培育增量\",\"bgImg\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_09_1763550696802.png\",\"value\":6}],\"fontWeight\":\"normal\",\"fontColor\":\"#FFFFFF\",\"direction\":1}}},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1763036807357-1\",\"orderNum\":70,\"component\":\"JText\",\"w\":417.0000085791326,\"x\":939.2344604613129,\"y\":132.55568295,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.446543%\",\"left\":\"42.951797582843234%\",\"width\":\"19.06967931280727%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"服务产业发展,构筑美好生活\\\"\\n}\",\"size\":{\"width\":417.00000857913255,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#00FFDE\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":28,\"text\":\"\",\"fontStyle\":\"italic\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"component\":\"JImg\",\"visible\":true,\"w\":507.0000189876905,\"x\":901.3481934109026,\"h\":177.9999997500001,\"i\":\"es-drager-1763036557092-11\",\"y\":64.0000035,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"6.009390000000001%\",\"left\":\"41.219234158030744%\",\"width\":\"23.18543782918827%\",\"position\":\"absolute\",\"config\":{},\"height\":\"16.713615000000008%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":507.0000189876905,\"height\":177.99999975000006},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_46_1763550136221.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":502.00000797596726,\"x\":894.7596865756153,\"h\":361.0000041,\"i\":\"es-drager-1763036542751-10\",\"y\":167.56389435,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"15.733699000000001%\",\"left\":\"40.91793749156958%\",\"width\":\"22.9567841011489%\",\"position\":\"absolute\",\"config\":{},\"height\":\"33.896714%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":502.0000079759672,\"height\":361.00000410000007},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":2500,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/控股业务综合监管版本6改_01_03_1763550233848.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":486.99999580773743,\"x\":886.0258078833527,\"h\":250.99999874999997,\"i\":\"es-drager-1763036539797-9\",\"y\":204.41031705,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"19.193457%\",\"left\":\"40.51853158655315%\",\"width\":\"22.270823871289416%\",\"position\":\"absolute\",\"config\":{},\"height\":\"23.568074999999997%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":486.99999580773743,\"height\":250.99999874999997},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":2500,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_03_1763550411407.png\"},\"izRotate\":false}}},{\"visible\":true,\"h\":59.94860505,\"i\":\"es-drager-1763036485878-7\",\"orderNum\":70,\"component\":\"JText\",\"w\":173.74037695955448,\"x\":1826.178203524619,\"y\":565.6166436,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"53.109544%\",\"left\":\"83.51230693714584%\",\"width\":\"7.9452594823537614%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"土地成本决算\\\"\\n}\",\"size\":{\"width\":173.74037695955448,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"25ca1904-5d69-45c5-86bd-b235d3ac9f2a\"},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":289.3575628364595,\"h\":59.94860505,\"i\":\"es-drager-1763036478147-6\",\"y\":609.3587282999999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"57.216782%\",\"left\":\"13.232507953245376%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"培育增量\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":295.81711198124265,\"h\":59.94860505,\"i\":\"es-drager-1763036469399-5\",\"y\":360.06213314999997,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"33.808651%\",\"left\":\"13.527907301355837%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"重点项目\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":44.00000926201641,\"x\":327.92498941617816,\"h\":29.000003249999995,\"i\":\"es-drager-1763033026815-2\",\"y\":131.23329375,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"12.322375000000001%\",\"left\":\"14.99622124260831%\",\"width\":\"2.012148798860219%\",\"position\":\"absolute\",\"config\":{},\"height\":\"2.7230049999999997%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":44.00000926201641,\"height\":29.000003249999995},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_14_1763550425365.png\"},\"izRotate\":false}}},{\"visible\":true,\"h\":43.9623054,\"i\":\"es-drager-1756453034262-13\",\"orderNum\":70,\"component\":\"JText\",\"w\":173.74037695955448,\"x\":1626.6084358347014,\"y\":418.26377610000003,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"39.273594%\",\"left\":\"74.38585275949329%\",\"width\":\"7.9452594823537614%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.127916%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"交流轮岗16人\\\"\\n}\",\"size\":{\"width\":173.74037695955448,\"height\":43.962305400000005},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"2cb7d6a8-c524-4c08-8ce5-532022d7dd70\"},{\"visible\":true,\"h\":44.9999988,\"i\":\"es-drager-1756452592342-9\",\"orderNum\":70,\"component\":\"JText\",\"w\":313.9999987538101,\"x\":369.7385606828839,\"y\":123.95075985,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"11.638569%\",\"left\":\"16.908382821923905%\",\"width\":\"14.359422439485975%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.225352%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"营业收88亿元 占全年目标80%,同比↑33%\\\"\\n}\",\"size\":{\"width\":313.9999987538101,\"height\":44.9999988},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":16,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"4555e8cb-7e7b-4006-8039-984e9f9f66bd\"},{\"visible\":true,\"h\":59.94860505,\"i\":\"es-drager-1756451958689-3\",\"orderNum\":70,\"component\":\"JText\",\"w\":173.74037695955448,\"x\":1781.9929530902693,\"y\":61.8300021,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.805634%\",\"left\":\"81.49168694001405%\",\"width\":\"7.9452594823537614%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"创新赋能\\\"\\n}\",\"size\":{\"width\":173.74037695955448,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}},\"key\":\"25ca1904-5d69-45c5-86bd-b235d3ac9f2a\"},{\"component\":\"JText\",\"visible\":true,\"w\":173.74037695955448,\"x\":1605.4161800257914,\"h\":43.9623054,\"i\":\"es-drager-1756453142151-16\",\"y\":348.89330775,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"32.759935%\",\"left\":\"73.41671723460948%\",\"width\":\"7.9452594823537614%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.127916%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"各级人员外部引进10人\\\"\\n}\",\"size\":{\"width\":173.74037695955448,\"height\":43.962305400000005},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":59.00000056330598,\"x\":1738.5111378985932,\"h\":64.0000035,\"i\":\"3a8b52fe-94c4-4df7-85d7-f31fbecb03d3\",\"y\":655.53575445,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"61.552653%\",\"left\":\"79.50323549017034%\",\"width\":\"2.6981080744610706%\",\"position\":\"absolute\",\"config\":{},\"height\":\"6.009390000000001%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":59.00000056330598,\"height\":64.0000035},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_03 2_1763550452700.png\"},\"izRotate\":false}}},{\"component\":\"JText\",\"visible\":true,\"w\":537.0000015902696,\"x\":386.8511210111371,\"h\":43.000003349999986,\"i\":\"es-drager-1756452586319-8\",\"y\":749.0914356000001,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"70.337224%\",\"left\":\"17.69095124150927%\",\"width\":\"24.557356380389972%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"居然公寓品牌获新区国资委市场化品牌公寓运营整合主体认定,不断壮大品牌影响力\\\"\\n}\",\"size\":{\"width\":537.0000015902696,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":404.9999946711606,\"x\":353.05978230773735,\"h\":43.000003349999986,\"i\":\"es-drager-1756452491126-7\",\"y\":692.2532163000001,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"65.000302%\",\"left\":\"16.14565153079715%\",\"width\":\"18.52091093806795%\",\"position\":\"absolute\",\"config\":{},\"height\":\"4.037558999999999%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"累计实现营业收入117.54亿元,成为市场化转型发展先锋军\\\"\\n}\",\"size\":{\"width\":404.9999946711606,\"height\":43.000003349999986},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#F0E9E9\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":false,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":14,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JText\",\"visible\":true,\"w\":124.68426635052752,\"x\":352.92145536107853,\"h\":59.94860505,\"i\":\"es-drager-1756452434656-5\",\"y\":58.8546264,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.526256%\",\"left\":\"16.13932575032033%\",\"width\":\"5.701891908249208%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.628977%\"},\"componentName\":\"文本\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":60,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"经营发展\\\"\\n}\",\"size\":{\"width\":124.68426635052754,\"height\":59.94860505},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":170,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"openUrl\":\"\",\"isLink\":false,\"body\":{\"color\":\"#FFFFFF\",\"gradient\":{\"endColor\":\"#0085FF\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#FFFFFF\",\"direction\":\"to bottom\"},\"letterSpacing\":0,\"fontSize\":18,\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"modal\":{\"backgroundColor\":\"#363636\",\"backgroundImage\":\"\",\"backgroundSize\":\"100% 100%\",\"backgroundPosition\":\"center center\",\"title\":\"标题\",\"sizeMode\":\"full\",\"backgroundRepeat\":\"no-repeat\",\"titleBgColor\":\"#1F1F1F\"},\"openType\":\"_blank\"}}},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":263.7385734642438,\"h\":108.90662310000002,\"i\":\"a8467ed7-7901-42c0-8679-67cacde2fef7\",\"y\":28.790145000000003,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"2.7033%\",\"left\":\"12.060935047741077%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_03_1763549755584.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":209.0375173223916,\"h\":108.90662310000002,\"i\":\"es-drager-1763031897224-3\",\"y\":329.86869090000005,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"30.973586000000005%\",\"left\":\"9.559420474033253%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_01_1763549812452.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":198.90857934232127,\"h\":108.90662310000002,\"i\":\"es-drager-1763031894764-2\",\"y\":579.2942575500001,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"54.39382700000001%\",\"left\":\"9.09621760812108%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_02_1763549852904.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":1641.0187553710434,\"h\":108.90662310000002,\"i\":\"es-drager-1763031912767-5\",\"y\":778.0750165500001,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"73.058687%\",\"left\":\"75.04484596500777%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_06 拷贝_1763549891576.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":1677.8651948253225,\"h\":108.90662310000002,\"i\":\"es-drager-1763031876182-1\",\"y\":536.37514095,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"50.363862999999995%\",\"left\":\"76.7298574032714%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_05 拷贝_1763549879336.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":411.8668873558031,\"x\":1616.9624966893314,\"h\":108.90662310000002,\"i\":\"es-drager-1763031899241-4\",\"y\":33.59671365,\"orderNum\":70,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"3.1546209999999997%\",\"left\":\"73.94473774177465%\",\"width\":\"18.834938368949274%\",\"position\":\"absolute\",\"config\":{},\"height\":\"10.225974%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":411.86688735580316,\"height\":108.9066231},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/1-拷贝-7_04_1763549870157.png\"},\"izRotate\":false}},\"key\":\"816e4f26-b5e1-4d4c-a7c5-6511c1db6220\"},{\"component\":\"JImg\",\"visible\":true,\"w\":566.999984192849,\"x\":288.6752764923798,\"h\":92.99999609999999,\"i\":\"es-drager-1763033021068-1\",\"y\":109.70926035000002,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"10.301339000000002%\",\"left\":\"13.201306558728765%\",\"width\":\"25.92927493159169%\",\"position\":\"absolute\",\"config\":{},\"height\":\"8.732394%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":566.999984192849,\"height\":92.99999609999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_19_1763549796825.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":708.0000067596717,\"x\":250.69168603282534,\"h\":360.00000105,\"i\":\"es-drager-1763033033328-3\",\"y\":28.67760645,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"2.692733%\",\"left\":\"11.4642924716529%\",\"width\":\"32.377296893532844%\",\"position\":\"absolute\",\"config\":{},\"height\":\"33.802817%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":708.0000067596717,\"height\":360.00000105},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_01_1763550492678.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":839.9999928118405,\"x\":734.2204008493551,\"h\":668.9999956500001,\"i\":\"es-drager-1763036537556-8\",\"y\":141.23329230000002,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"13.261342%\",\"left\":\"33.57637242460877%\",\"width\":\"38.41374138159623%\",\"position\":\"absolute\",\"config\":{},\"height\":\"62.816901%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":839.9999928118405,\"height\":668.9999956500001},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/系统入口页_04_03_1763550531200.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":659.999992861665,\"x\":1379.2966113616646,\"h\":671.0000017500001,\"i\":\"es-drager-1763038369685-7\",\"y\":22.83938295,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"2.144543%\",\"left\":\"63.07612353661938%\",\"width\":\"30.18222530309287%\",\"position\":\"absolute\",\"config\":{},\"height\":\"63.00469500000001%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":659.999992861665,\"height\":671.0000017500001},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_03_1763550548877.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":731.0000073329425,\"x\":1353.0949544179368,\"h\":270.00000345,\"i\":\"es-drager-1763039541856-9\",\"y\":543.60140025,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.042385%\",\"left\":\"61.87790486731145%\",\"width\":\"33.429101752293235%\",\"position\":\"absolute\",\"config\":{},\"height\":\"25.352113%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":731.0000073329423,\"height\":270.00000345},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_06_1763550562377.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":983,\"x\":0,\"h\":304,\"i\":\"es-drager-1763039119090-2\",\"y\":305.95779117995306,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"28.728431096709205%\",\"left\":\"0%\",\"width\":\"44.95322393004767%\",\"position\":\"absolute\",\"config\":{},\"height\":\"28.544600938967136%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":983,\"height\":304},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_04_1763550080999.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":355.9999952643611,\"x\":278.0304868833528,\"h\":63.00000044999999,\"i\":\"es-drager-1763036995887-1\",\"y\":680.21335935,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"63.86979900000001%\",\"left\":\"12.714513465155179%\",\"width\":\"16.28010936542699%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.915492999999999%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":355.9999952643611,\"height\":63.00000044999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763550350084.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":355.9999952643611,\"x\":307.02228326963655,\"h\":63.00000044999999,\"i\":\"es-drager-1763038194851-1\",\"y\":737.0597898000001,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"69.207492%\",\"left\":\"14.040327010513224%\",\"width\":\"16.28010936542699%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.915492999999999%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":355.9999952643611,\"height\":63.00000044999999},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_25_1763550350084.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":1049.9999962315355,\"x\":1136.7174715293083,\"h\":194.99999835,\"i\":\"es-drager-1763039539776-8\",\"y\":857.7280172999999,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"80.537842%\",\"left\":\"51.98282303444006%\",\"width\":\"48.01717696555994%\",\"position\":\"absolute\",\"config\":{},\"height\":\"18.309859%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1049.9999962315353,\"height\":194.99999835},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_10_1763549923063.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":992.0000020439625,\"x\":226.2485278745604,\"h\":368.99999655000005,\"i\":\"es-drager-1763043471607-10\",\"y\":684.14067465,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"64.238561%\",\"left\":\"10.346491085848166%\",\"width\":\"45.364799827558485%\",\"position\":\"absolute\",\"config\":{},\"height\":\"34.647887000000004%\"},\"componentName\":\"icon22\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":992.0000020439625,\"height\":368.99999655000005},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/未标题-1_07_1763549998727.png\"},\"izRotate\":false}}},{\"component\":\"JImg\",\"visible\":true,\"w\":2057.9999959525203,\"x\":111.87924914302464,\"h\":1065,\"i\":\"es-drager-1756452975290-11\",\"y\":0,\"orderNum\":70,\"angle\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"5.11631021348116%\",\"width\":\"94.11366700517888%\",\"position\":\"absolute\",\"config\":{},\"height\":\"100%\"},\"componentName\":\"icon24\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":2057.9999959525203,\"height\":1065},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[],\"show\":false},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":-1,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"izGallery\":true,\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/控股业务综合监管版本6改_11_1763550114546.png\"},\"izRotate\":false}}}]},\"component\":\"JGroup\",\"w\":2186.7174677608436,\"x\":-181,\"y\":23,\"componentName\":\"总览图\",\"pageCompId\":\"1151112777012137984\",\"equalProportion\":false,\"key\":\"64c403ce-8e74-45bf-9bdd-620348b3218d\",\"group\":true},{\"component\":\"JImg\",\"visible\":true,\"w\":45,\"x\":1854,\"h\":45,\"i\":\"e1f80194-96dc-4201-b615-7b607ae986ad\",\"y\":7,\"orderNum\":70,\"componentName\":\"图片\",\"pageCompId\":\"1151112777028915200\",\"key\":\"d25da919-3018-489d-b036-6b761ae9f043\"},{\"component\":\"JCurrentTime\",\"visible\":true,\"w\":309,\"x\":17,\"h\":33,\"i\":\"cef21ff4-9c5c-48bc-89fc-29a197a17ac3\",\"y\":15,\"orderNum\":70,\"componentName\":\"当前时间\",\"pageCompId\":\"1151112777045692416\",\"key\":\"257448bf-3fe8-491e-b3e1-c386ab97b099\"},{\"component\":\"JImg\",\"visible\":true,\"w\":1911,\"x\":-2,\"h\":70,\"i\":\"5425948a-c724-4ea6-803a-00d4a5b70813\",\"y\":0,\"orderNum\":0,\"componentName\":\"图片\",\"pageCompId\":\"1151112777075052544\",\"key\":\"c17de8af-9926-449f-8f73-aaef011b77fb\"},{\"component\":\"JImg\",\"visible\":true,\"w\":679,\"x\":608,\"h\":46,\"i\":\"7dfacde7-dd88-45ec-824e-e071f091bad5\",\"y\":85,\"orderNum\":70,\"componentName\":\"图片\",\"pageCompId\":\"1151112777112801280\",\"key\":\"e0c4ef30-5c9a-43a7-88ea-d24e7b63d8b3\"}]', '', '0', '1', 'admin', '2025-11-19 18:26:18', 'admin', '2025-11-19 21:18:03', '', 0, 3, 20, 0);
+INSERT INTO `onl_drag_page` VALUES ('1212561321588641792', '被嵌套大屏', '/drag/page/view/1212561321588641792', '#1E004700', '', 100, 'dark', 'bigScreen', NULL, '{\"width\":1710,\"height\":779,\"waterMark\":{\"show\":false,\"content\":\"\",\"fontSize\":12,\"color\":\"#ffffff\",\"angle\":45},\"sysDefColor\":[{\"color\":\"#1e90ff\",\"color1\":\"#1e90ff\"},{\"color\":\"#90ee90\",\"color1\":\"#90ee90\"},{\"color\":\"#00ced1\",\"color1\":\"#00ced1\"},{\"color\":\"#e2bd84\",\"color1\":\"#e2bd84\"},{\"color\":\"#7a90e0\",\"color1\":\"#7a90e0\"},{\"color\":\"#3ba272\",\"color1\":\"#3ba272\"},{\"color\":\"#2be7ff\",\"color1\":\"#2be7ff\"},{\"color\":\"#0a8ada\",\"color1\":\"#0a8ada\"},{\"color\":\"#ffd700\",\"color1\":\"#ffd700\"}],\"layoutMode\":\"fullScreen\",\"autoRefresh\":{\"enabled\":false,\"time\":\"03:00\"}}', '[{\"component\":\"JBar3d\",\"visible\":true,\"w\":360,\"x\":1350,\"h\":249,\"i\":\"dd2c5a30-b5ad-4698-92ab-df23d081962c\",\"y\":535,\"orderNum\":900,\"componentName\":\"3D柱形图\",\"pageCompId\":\"1216638045846720512\"},{\"component\":\"DoubleLineBar\",\"visible\":true,\"w\":382,\"x\":1326,\"h\":277,\"i\":\"7ce3dc8c-e0ad-4667-b5f6-014912f1e92a\",\"y\":257,\"orderNum\":900,\"componentName\":\"双轴图\",\"pageCompId\":\"1216638045871886336\"},{\"component\":\"JDynamicBar\",\"visible\":true,\"w\":380,\"x\":1331,\"h\":250,\"i\":\"5a919390-8fa3-424f-9044-56bb875a1f52\",\"y\":5,\"orderNum\":900,\"componentName\":\"动态柱形图\",\"pageCompId\":\"1216638045884469248\"},{\"component\":\"JDynamicBar\",\"visible\":true,\"w\":348,\"x\":14,\"h\":270,\"i\":\"2f9d5313-5e6b-4c43-8231-1fd232b3c5af\",\"y\":466,\"orderNum\":600,\"componentName\":\"动态柱形图\",\"pageCompId\":\"1216638045897052160\"},{\"component\":\"JPie\",\"visible\":true,\"w\":351,\"x\":2,\"h\":197,\"i\":\"9a0c19b8-8acd-4981-8d20-b560b9e378fd\",\"y\":214,\"orderNum\":300,\"componentName\":\"饼图\",\"pageCompId\":\"1216638045909635072\"},{\"component\":\"JBar\",\"visible\":true,\"w\":356,\"x\":0,\"h\":218,\"i\":\"2ef97458-7493-41c5-ba4a-f741bbed82c4\",\"y\":0,\"orderNum\":0,\"componentName\":\"基础柱形图\",\"pageCompId\":\"1216638045918023680\"}]', '', '1023810558598676480', '0', 'admin', '2026-05-08 10:52:38', 'admin', '2026-05-20 10:02:57', NULL, 1000, 2, 320, 0);
+INSERT INTO `onl_drag_page` VALUES ('1228912868522151936', 'b', '/drag/page/view/1228912868522151936', '#1E0047', '/img/bg/bg4.png', 100, 'dark', 'bigScreen', NULL, '{\"width\":1920,\"height\":1080,\"waterMark\":{\"show\":false,\"content\":\"\",\"fontSize\":12,\"color\":\"#ffffff\",\"angle\":45},\"sysDefColor\":[{\"color\":\"#1e90ff\",\"color1\":\"#1e90ff\"},{\"color\":\"#90ee90\",\"color1\":\"#90ee90\"},{\"color\":\"#00ced1\",\"color1\":\"#00ced1\"},{\"color\":\"#e2bd84\",\"color1\":\"#e2bd84\"},{\"color\":\"#7a90e0\",\"color1\":\"#7a90e0\"},{\"color\":\"#3ba272\",\"color1\":\"#3ba272\"},{\"color\":\"#2be7ff\",\"color1\":\"#2be7ff\"},{\"color\":\"#0a8ada\",\"color1\":\"#0a8ada\"},{\"color\":\"#ffd700\",\"color1\":\"#ffd700\"}],\"layoutMode\":\"fullScreen\",\"autoRefresh\":{\"enabled\":false,\"time\":\"03:00\"}}', '[{\"component\":\"JCustomEchart\",\"visible\":true,\"w\":612,\"x\":1198,\"h\":463,\"i\":\"de34e973-e32d-406b-80a8-3235deac7712\",\"y\":609,\"orderNum\":759,\"componentName\":\"自定义HTML\",\"pageCompId\":\"1229647312761606144\"},{\"component\":\"JArea\",\"visible\":true,\"w\":450,\"x\":641,\"h\":300,\"i\":\"30e57f75-4e77-4c14-a5cc-5debe8aa0067\",\"y\":655,\"orderNum\":0,\"componentName\":\"面积图\",\"pageCompId\":\"1229647312782577664\",\"key\":\"e04ba5f6-e873-4642-8ad6-1bd7bade48f1\"},{\"component\":\"JCustomEchart\",\"visible\":true,\"w\":450,\"x\":1274,\"h\":300,\"i\":\"a2e44d10-1988-4e23-80ea-bdbfa7330c0f\",\"y\":267,\"orderNum\":0,\"componentName\":\"自定义HTML\",\"pageCompId\":\"1229647312795160576\",\"key\":\"0130bd23-5158-482e-91f2-9280f28ece57\"},{\"component\":\"JPie\",\"visible\":true,\"w\":450,\"x\":1270,\"h\":300,\"i\":\"256250e0-a7ba-4157-83c0-d0f7bd3d5b9a\",\"y\":3,\"orderNum\":0,\"componentName\":\"饼图\",\"pageCompId\":\"1229647312807743488\",\"key\":\"2b55cdd9-810d-4b30-8abb-3623bb321866\"},{\"component\":\"JCustomEchart\",\"visible\":true,\"w\":450,\"x\":702,\"h\":300,\"i\":\"6fbdc90e-178c-462b-81dc-f720766d7fb8\",\"y\":22,\"orderNum\":0,\"componentName\":\"自定义HTML(钻取)\",\"pageCompId\":\"1229647312816132096\",\"key\":\"5ad23e84-d2ae-425d-b72c-84f6b39c8df8\"},{\"component\":\"JBar\",\"visible\":true,\"w\":550,\"x\":4,\"h\":364,\"i\":\"a2e94405-c1e8-4fbf-8d49-3190dd0ab978\",\"y\":376,\"orderNum\":639,\"componentName\":\"基础柱形图\",\"pageCompId\":\"1229647312824520704\",\"key\":\"89a5bf1e-41e8-46d9-ae0e-1e89c6c334aa\"},{\"component\":\"JCustomEchart\",\"visible\":true,\"w\":472,\"x\":5,\"h\":302,\"i\":\"286e5f11-2d01-4951-8c10-07c39df0a425\",\"y\":27,\"orderNum\":0,\"componentName\":\"自定义HTML (联动)\",\"pageCompId\":\"1229647312841297920\",\"key\":\"fae49f54-caeb-4233-89a2-d554ec52f919\"},{\"component\":\"JDragBorder\",\"visible\":true,\"w\":1311,\"x\":565,\"h\":483,\"i\":\"es-drager-1782265149014-2\",\"y\":593,\"orderNum\":0,\"componentName\":\"边框12\",\"pageCompId\":\"1229647312853880832\",\"key\":\"3786623f-5c6f-49ca-8724-233e82597c5f\"},{\"component\":\"JDragBorder\",\"visible\":true,\"w\":546,\"x\":1240,\"h\":586,\"i\":\"es-drager-1782265136343-1\",\"y\":-2,\"orderNum\":0,\"componentName\":\"边框12\",\"pageCompId\":\"1229647312866463744\",\"key\":\"5fb66e57-9795-4c27-9e3e-93d88f74103f\"},{\"component\":\"JDragBorder\",\"visible\":true,\"w\":533,\"x\":0,\"h\":759,\"i\":\"9f243d95-c8db-4aa4-8517-e0d400072324\",\"y\":0,\"orderNum\":0,\"componentName\":\"边框12\",\"pageCompId\":\"1229647312879046656\",\"key\":\"448d7433-e352-4521-872e-0ca6ebc77970\"}]', '', '1023810558598676480', '0', 'admin', '2026-06-22 13:47:50', 'admin', '2026-06-24 14:26:15', NULL, 1000, 2, 110, 0);
+INSERT INTO `onl_drag_page` VALUES ('1229579046974345216', '全国销售运营大屏', '/drag/page/view/1229579046974345216', '#1A0000', '/img/bg/bg4.png', 100, 'dark', 'bigScreen', NULL, '{\"width\":1920,\"height\":1080,\"waterMark\":{\"show\":false,\"content\":\"\",\"fontSize\":12,\"color\":\"#ffffff\",\"angle\":45},\"sysDefColor\":[{\"color\":\"#1e90ff\",\"color1\":\"#1e90ff\"},{\"color\":\"#90ee90\",\"color1\":\"#90ee90\"},{\"color\":\"#00ced1\",\"color1\":\"#00ced1\"},{\"color\":\"#e2bd84\",\"color1\":\"#e2bd84\"},{\"color\":\"#7a90e0\",\"color1\":\"#7a90e0\"},{\"color\":\"#3ba272\",\"color1\":\"#3ba272\"},{\"color\":\"#2be7ff\",\"color1\":\"#2be7ff\"},{\"color\":\"#0a8ada\",\"color1\":\"#0a8ada\"},{\"color\":\"#ffd700\",\"color1\":\"#ffd700\"}],\"layoutMode\":\"fullScreen\",\"autoRefresh\":{\"enabled\":false,\"time\":\"03:00\"}}', '[{\"component\":\"JCustomEchart\",\"visible\":true,\"w\":979,\"x\":465,\"h\":712,\"i\":\"246aa1f6-5db3-4633-962b-913d25ecd1ce\",\"y\":364,\"orderNum\":585,\"componentName\":\"自定义HTML\",\"pageCompId\":\"1231521823161274368\",\"key\":\"5096f069-2c1a-4d72-a399-0e8732069843\"},{\"visible\":true,\"pcX\":40,\"pcW\":420,\"pcY\":90,\"h\":50,\"i\":\"1782269230310_849742\",\"orderNum\":3,\"component\":\"JCurrentTime\",\"w\":420,\"x\":40,\"y\":90,\"componentName\":\"当前时间\",\"pageCompId\":\"1231521823345823744\",\"key\":\"102f6599-14c8-4c9c-ba98-f8edc63fd8dc\"},{\"visible\":true,\"pcX\":540,\"pcW\":840,\"pcY\":20,\"h\":111,\"i\":\"1782269230310_997486\",\"orderNum\":2,\"component\":\"JText\",\"w\":840,\"x\":540,\"y\":20,\"componentName\":\"全球销售运营大屏 · 实时驾驶舱 - JText - JText\",\"pageCompId\":\"1231521823350018048\",\"key\":\"19ee448b-195c-4b2e-967a-09cba50a1994\"},{\"visible\":true,\"pcX\":1400,\"pcW\":480,\"pcY\":10,\"h\":70,\"i\":\"1782269230310_220878\",\"orderNum\":1,\"component\":\"JDragDecoration\",\"w\":480,\"x\":1400,\"y\":10,\"componentName\":\"装饰1\",\"pageCompId\":\"1231521823354212352\",\"key\":\"7804539c-b445-4160-ace8-00809c40813a\"},{\"visible\":true,\"pcX\":40,\"pcW\":480,\"pcY\":10,\"h\":70,\"i\":\"1782269230310_466420\",\"orderNum\":0,\"component\":\"JDragDecoration\",\"w\":480,\"x\":40,\"y\":10,\"componentName\":\"装饰1\",\"pageCompId\":\"1231521823358406656\",\"key\":\"09767dd7-a013-4a3b-8365-c751b91252fd\"},{\"visible\":true,\"h\":918,\"i\":\"es-drager-1782724246158-1\",\"props\":{\"elements\":[{\"visible\":true,\"pcX\":1460,\"pcW\":457,\"pcY\":845,\"h\":236.8704318936877,\"i\":\"1782723872303_121559\",\"orderNum\":12,\"component\":\"JScrollBoard\",\"w\":457,\"x\":1460,\"y\":670,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.19712070874863%\",\"left\":\"76.00208224882874%\",\"width\":\"23.789692868297763%\",\"position\":\"absolute\",\"config\":{},\"height\":\"25.802879291251386%\"},\"componentName\":\"实时业务动态\",\"pageCompId\":\"1231500213985431552\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":233,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[[\\\"08:32\\\", \\\"纽约\\\", \\\"$12,580\\\", \\\"已完成\\\"], [\\\"08:35\\\", \\\"上海\\\", \\\"$8,720\\\", \\\"已完成\\\"], [\\\"08:38\\\", \\\"东京\\\", \\\"$15,260\\\", \\\"已完成\\\"], [\\\"08:41\\\", \\\"柏林\\\", \\\"$6,480\\\", \\\"已完成\\\"], [\\\"08:44\\\", \\\"伦敦\\\", \\\"$9,580\\\", \\\"已完成\\\"], [\\\"08:47\\\", \\\"巴黎\\\", \\\"$11,240\\\", \\\"已完成\\\"], [\\\"08:50\\\", \\\"孟买\\\", \\\"$5,860\\\", \\\"进行中\\\"], [\\\"08:53\\\", \\\"里约\\\", \\\"$7,240\\\", \\\"已完成\\\"], [\\\"08:56\\\", \\\"首尔\\\", \\\"$8,950\\\", \\\"已完成\\\"], [\\\"08:59\\\", \\\"悉尼\\\", \\\"$10,280\\\", \\\"已完成\\\"], [\\\"09:02\\\", \\\"多伦多\\\", \\\"$6,580\\\", \\\"已完成\\\"], [\\\"09:05\\\", \\\"罗马\\\", \\\"$5,240\\\", \\\"已完成\\\"], [\\\"09:08\\\", \\\"马德里\\\", \\\"$4,860\\\", \\\"进行中\\\"], [\\\"09:11\\\", \\\"迪拜\\\", \\\"$13,580\\\", \\\"已完成\\\"], [\\\"09:14\\\", \\\"莫斯科\\\", \\\"$7,840\\\", \\\"已完成\\\"], [\\\"09:17\\\", \\\"雅加达\\\", \\\"$5,180\\\", \\\"进行中\\\"]]\",\"size\":{\"width\":457,\"height\":236.8704318936877},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":457,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JScrollBoard\",\"category\":\"Common\"},\"option\":{\"oddRowBGC\":\"#0d2640aa\",\"headShow\":true,\"hoverPause\":true,\"indexWidth\":80,\"index\":false,\"headFontSize\":14,\"bodyFontSize\":12,\"carousel\":\"single\",\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#464646\",\"fontWeight\":\"normal\"}},\"align\":[\"center\",\"center\",\"center\",\"center\"],\"rowNum\":5,\"evenRowBGC\":\"#071829aa\",\"header\":[{\"width\":80,\"label\":\"时间\",\"key\":\"time\"},{\"width\":110,\"label\":\"城市\",\"key\":\"region\"},{\"width\":110,\"label\":\"金额\",\"key\":\"amount\"},{\"width\":80,\"label\":\"状态\",\"key\":\"status\"}],\"headerBGC\":\"#0a2a4a\",\"headerHeight\":38,\"waitTime\":2500,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"e73cd833-e29f-485d-8d0d-c4b5a072ec91\"},{\"visible\":true,\"pcX\":1460,\"pcW\":457,\"pcY\":595,\"h\":243.98671096345518,\"i\":\"1782723872303_842608\",\"orderNum\":11,\"component\":\"JRose\",\"w\":457,\"x\":1460,\"y\":420,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"46.51162790697674%\",\"left\":\"76.00208224882874%\",\"width\":\"23.789692868297763%\",\"position\":\"absolute\",\"config\":{},\"height\":\"26.578073089701%\"},\"componentName\":\"销售渠道分布\",\"pageCompId\":\"1231500214031568896\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"线上电商\\\", \\\"value\\\": 4280}, {\\\"name\\\": \\\"B2B批发\\\", \\\"value\\\": 2950}, {\\\"name\\\": \\\"线下零售\\\", \\\"value\\\": 2180}, {\\\"name\\\": \\\"直营专柜\\\", \\\"value\\\": 1620}, {\\\"name\\\": \\\"合作伙伴\\\", \\\"value\\\": 1180}]\",\"size\":{\"width\":457,\"height\":243.98671096345518},\"background\":\"#FFFFFF00\",\"w\":457,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JRose\",\"category\":\"Rose\"},\"option\":{\"customColor\":[{\"color1\":\"#22ed7c\",\"color\":\"#22ed7c\"},{\"color1\":\"#09b0d3\",\"color\":\"#09b0d3\"},{\"color1\":\"#1d27c9\",\"color\":\"#1d27c9\"},{\"color1\":\"#f9e264\",\"color\":\"#f9e264\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#009db2\",\"color\":\"#009db2\"},{\"color1\":\"#05f8d6\",\"color\":\"#05f8d6\"},{\"color1\":\"#0082fc\",\"color\":\"#0082fc\"},{\"color1\":\"#fdd845\",\"color\":\"#fdd845\"}],\"color\":[\"#22ed7c\",\"#09b0d3\",\"#1d27c9\",\"#f9e264\",\"#f47a75\",\"#009db2\",\"#05f8d6\",\"#0082fc\",\"#fdd845\"],\"grid\":{\"top\":50,\"left\":43,\"show\":false},\"legend\":{\"itemGap\":8,\"r\":\"2%\",\"orient\":\"vertical\",\"top\":\"middle\",\"t\":\"middle\",\"left\":\"auto\",\"itemHeight\":10,\"itemWidth\":10,\"right\":\"2%\"},\"series\":[{\"data\":[],\"roseType\":\"radius\",\"center\":[\"36%\",\"55%\"],\"name\":\"南丁格尔玫瑰\",\"emphasis\":{\"itemStyle\":{\"shadowOffsetX\":0,\"shadowBlur\":10,\"shadowColor\":\"#00000080\"}},\"label\":{\"show\":true},\"type\":\"pie\",\"radius\":\"50%\"}],\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"trigger\":\"item\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"title\":{\"subtext\":\"\",\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"864699ca-d85b-4fd7-8316-d2499235c785\"},{\"visible\":true,\"pcX\":1460,\"pcW\":457,\"pcY\":345,\"h\":243.98671096345518,\"i\":\"1782723872303_543303\",\"orderNum\":10,\"component\":\"JStackBar\",\"w\":457,\"x\":1460,\"y\":170,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.826135105204873%\",\"left\":\"76.00208224882874%\",\"width\":\"23.789692868297763%\",\"position\":\"absolute\",\"config\":{},\"height\":\"26.578073089701%\"},\"componentName\":\"季度品类销售堆叠(万$)\",\"pageCompId\":\"1231500214039957504\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"Q1\\\", \\\"value\\\": 2480, \\\"type\\\": \\\"电子\\\"}, {\\\"name\\\": \\\"Q2\\\", \\\"value\\\": 2960, \\\"type\\\": \\\"电子\\\"}, {\\\"name\\\": \\\"Q3\\\", \\\"value\\\": 3120, \\\"type\\\": \\\"电子\\\"}, {\\\"name\\\": \\\"Q4\\\", \\\"value\\\": 3580, \\\"type\\\": \\\"电子\\\"}, {\\\"name\\\": \\\"Q1\\\", \\\"value\\\": 1860, \\\"type\\\": \\\"服装\\\"}, {\\\"name\\\": \\\"Q2\\\", \\\"value\\\": 2240, \\\"type\\\": \\\"服装\\\"}, {\\\"name\\\": \\\"Q3\\\", \\\"value\\\": 2080, \\\"type\\\": \\\"服装\\\"}, {\\\"name\\\": \\\"Q4\\\", \\\"value\\\": 2620, \\\"type\\\": \\\"服装\\\"}, {\\\"name\\\": \\\"Q1\\\", \\\"value\\\": 1640, \\\"type\\\": \\\"家居\\\"}, {\\\"name\\\": \\\"Q2\\\", \\\"value\\\": 1820, \\\"type\\\": \\\"家居\\\"}, {\\\"name\\\": \\\"Q3\\\", \\\"value\\\": 1950, \\\"type\\\": \\\"家居\\\"}, {\\\"name\\\": \\\"Q4\\\", \\\"value\\\": 2360, \\\"type\\\": \\\"家居\\\"}]\",\"size\":{\"width\":457,\"height\":243.98671096345518},\"background\":\"#FFFFFF00\",\"w\":457,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JStackBar\",\"category\":\"Bar\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#0082fc\",\"color\":\"#0082fc\"},{\"color1\":\"#fdd845\",\"color\":\"#fdd845\"},{\"color1\":\"#22ed7c\",\"color\":\"#22ed7c\"},{\"color1\":\"#09b0d3\",\"color\":\"#09b0d3\"},{\"color1\":\"#1d27c9\",\"color\":\"#1d27c9\"},{\"color1\":\"#f9e264\",\"color\":\"#f9e264\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#009db2\",\"color\":\"#009db2\"},{\"color1\":\"#05f8d6\",\"color\":\"#05f8d6\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}}},\"color\":[\"#0082fc\",\"#fdd845\",\"#22ed7c\",\"#09b0d3\",\"#1d27c9\",\"#f9e264\",\"#f47a75\",\"#009db2\",\"#05f8d6\"],\"grid\":{\"top\":43,\"left\":0,\"bottom\":18,\"right\":40,\"containLabel\":true},\"series\":[],\"legend\":{\"textStyle\":{\"color\":\"#8ab8d0\"}},\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"ab51aa91-f185-43f6-bdd1-09c6a942965c\"},{\"visible\":true,\"pcX\":3,\"pcW\":456,\"pcY\":845,\"h\":234.83720930232562,\"i\":\"1782723872303_225767\",\"orderNum\":9,\"component\":\"JCapsuleChart\",\"w\":456,\"x\":3,\"y\":670,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"74.19712070874863%\",\"left\":\"0.15616866215512754%\",\"width\":\"23.737636647579386%\",\"position\":\"absolute\",\"config\":{},\"height\":\"25.581395348837212%\"},\"componentName\":\"TOP 8 国家销售榜\",\"pageCompId\":\"1231500214052540416\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":231,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"美国\\\", \\\"value\\\": 32480}, {\\\"name\\\": \\\"中国\\\", \\\"value\\\": 28950}, {\\\"name\\\": \\\"日本\\\", \\\"value\\\": 18620}, {\\\"name\\\": \\\"德国\\\", \\\"value\\\": 16380}, {\\\"name\\\": \\\"英国\\\", \\\"value\\\": 14260}, {\\\"name\\\": \\\"法国\\\", \\\"value\\\": 12180}, {\\\"name\\\": \\\"印度\\\", \\\"value\\\": 11240}, {\\\"name\\\": \\\"巴西\\\", \\\"value\\\": 9860}]\",\"size\":{\"width\":456,\"height\":234.83720930232562},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":456,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JCapsuleChart\",\"category\":\"Bar\"},\"option\":{\"showValue\":true,\"unit\":\"万$\",\"customColor\":[{\"color1\":\"#09b0d3\",\"color\":\"#09b0d3\"},{\"color1\":\"#1d27c9\",\"color\":\"#1d27c9\"},{\"color1\":\"#f9e264\",\"color\":\"#f9e264\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#009db2\",\"color\":\"#009db2\"},{\"color1\":\"#05f8d6\",\"color\":\"#05f8d6\"},{\"color1\":\"#0082fc\",\"color\":\"#0082fc\"},{\"color1\":\"#fdd845\",\"color\":\"#fdd845\"},{\"color1\":\"#22ed7c\",\"color\":\"#22ed7c\"}],\"color\":[\"#09b0d3\",\"#1d27c9\",\"#f9e264\",\"#f47a75\",\"#009db2\",\"#05f8d6\",\"#0082fc\",\"#fdd845\",\"#22ed7c\"],\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#464646\",\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"229e63bf-fc71-4c25-b151-6c834e6a4752\"},{\"visible\":true,\"pcX\":1,\"pcW\":458,\"pcY\":595,\"h\":243.98671096345518,\"i\":\"1782723872303_291270\",\"orderNum\":8,\"component\":\"JFunnel\",\"w\":458,\"x\":1,\"y\":420,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"46.51162790697674%\",\"left\":\"0.052056220718375845%\",\"width\":\"23.841749089016137%\",\"position\":\"absolute\",\"config\":{},\"height\":\"26.578073089701%\"},\"componentName\":\"全球销售转化漏斗\",\"pageCompId\":\"1231500214060929024\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/26/funnel\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"曝光\\\", \\\"value\\\": 100000}, {\\\"name\\\": \\\"访问\\\", \\\"value\\\": 65000}, {\\\"name\\\": \\\"加购\\\", \\\"value\\\": 28000}, {\\\"name\\\": \\\"下单\\\", \\\"value\\\": 12000}, {\\\"name\\\": \\\"支付\\\", \\\"value\\\": 9800}]\",\"size\":{\"width\":458,\"height\":243.98671096345518},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":458,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JFunnel\",\"category\":\"Funnel\"},\"option\":{\"reversal\":false,\"customColor\":[{\"color1\":\"#fdd845\",\"color\":\"#FDD845\"},{\"color1\":\"#22ed7c\",\"color\":\"#22ED7C\"},{\"color1\":\"#09b0d3\",\"color\":\"#09B0D3\"},{\"color1\":\"#1d27c9\",\"color\":\"#1D27C9\"},{\"color1\":\"#f9e264\",\"color\":\"#F9E264\"},{\"color1\":\"#f47a75\",\"color\":\"#F47A75\"},{\"color1\":\"#009db2\",\"color\":\"#009DB2\"},{\"color1\":\"#05f8d6\",\"color\":\"#05F8D6\"},{\"color1\":\"#0082fc\",\"color\":\"#0082FC\"}],\"color\":[\"#fdd845\",\"#22ed7c\",\"#09b0d3\",\"#1d27c9\",\"#f9e264\",\"#f47a75\",\"#009db2\",\"#05f8d6\",\"#0082fc\"],\"grid\":{\"bottom\":115},\"legend\":{\"orient\":\"horizontal\",\"textStyle\":{\"color\":\"#8ab8d0\"}},\"series\":[{\"left\":\"10%\",\"bottom\":\"5%\",\"gap\":2,\"name\":\"Funnel\",\"emphasis\":{\"label\":{\"fontSize\":20}},\"itemStyle\":{\"borderColor\":\"#fff\",\"borderWidth\":1},\"right\":\"10%\",\"sort\":\"descending\",\"label\":{\"color\":\"#FFFFFF\",\"show\":true,\"position\":\"inside\"},\"labelLine\":{\"lineStyle\":{\"width\":1,\"type\":\"solid\"},\"length\":10},\"type\":\"funnel\"}],\"tooltip\":{\"formatter\":\"{a}
{b} : {c}%\",\"backgroundColor\":\"#0b1e3acc\",\"trigger\":\"item\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"566cb1c1-a129-4766-b647-dd87771fd8d8\"},{\"visible\":true,\"pcX\":0,\"pcW\":495,\"pcY\":345,\"h\":243.98671096345518,\"i\":\"1782723872302_876402\",\"orderNum\":7,\"component\":\"JArea\",\"w\":494.99999999999994,\"x\":0,\"y\":170,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"18.826135105204873%\",\"left\":\"0%\",\"width\":\"25.76782925559604%\",\"position\":\"absolute\",\"config\":{},\"height\":\"26.578073089701%\"},\"componentName\":\"全球月度营收趋势(亿$)\",\"pageCompId\":\"1231500214069317632\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"1月\\\", \\\"value\\\": 8.2}, {\\\"name\\\": \\\"2月\\\", \\\"value\\\": 7.6}, {\\\"name\\\": \\\"3月\\\", \\\"value\\\": 9.5}, {\\\"name\\\": \\\"4月\\\", \\\"value\\\": 10.3}, {\\\"name\\\": \\\"5月\\\", \\\"value\\\": 11.2}, {\\\"name\\\": \\\"6月\\\", \\\"value\\\": 12.6}, {\\\"name\\\": \\\"7月\\\", \\\"value\\\": 11.8}, {\\\"name\\\": \\\"8月\\\", \\\"value\\\": 12.5}, {\\\"name\\\": \\\"9月\\\", \\\"value\\\": 13.4}, {\\\"name\\\": \\\"10月\\\", \\\"value\\\": 14.2}, {\\\"name\\\": \\\"11月\\\", \\\"value\\\": 13.8}, {\\\"name\\\": \\\"12月\\\", \\\"value\\\": 15.6}]\",\"size\":{\"width\":494.99999999999994,\"height\":243.98671096345518},\"background\":\"#FFFFFF00\",\"w\":495,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JArea\",\"category\":\"Line\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#05f8d6\",\"color\":\"#05f8d6\"},{\"color1\":\"#0082fc\",\"color\":\"#0082fc\"},{\"color1\":\"#fdd845\",\"color\":\"#fdd845\"},{\"color1\":\"#22ed7c\",\"color\":\"#22ed7c\"},{\"color1\":\"#09b0d3\",\"color\":\"#09b0d3\"},{\"color1\":\"#1d27c9\",\"color\":\"#1d27c9\"},{\"color1\":\"#f9e264\",\"color\":\"#f9e264\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#009db2\",\"color\":\"#009db2\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"data\":[],\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}},\"boundaryGap\":false},\"color\":[\"#05f8d6\",\"#0082fc\",\"#fdd845\",\"#22ed7c\",\"#09b0d3\",\"#1d27c9\",\"#f9e264\",\"#f47a75\",\"#009db2\"],\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":40,\"containLabel\":true},\"series\":[{\"areaStyleOpacity\":0.5,\"areaStyle\":{},\"data\":[],\"lineStyle\":{},\"itemStyle\":{},\"label\":{\"position\":\"top\"},\"type\":\"line\",\"smooth\":true}],\"legend\":{\"textStyle\":{\"color\":\"#8ab8d0\"}},\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"17f881e4-524c-445e-97c1-9e06d9de7ab8\"},{\"visible\":true,\"pcX\":2,\"pcW\":1914,\"pcY\":148,\"h\":116.91029900332225,\"i\":\"1782723133266_891166\",\"orderNum\":6,\"component\":\"JColorBlock\",\"w\":1914,\"x\":7,\"y\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"0.3643935450286309%\",\"width\":\"99.63560645497137%\",\"position\":\"absolute\",\"config\":{},\"height\":\"12.73532668881506%\"},\"componentName\":\"全球业绩总览\",\"pageCompId\":\"1231500214086094848\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"前缀\"},{\"mapping\":\"\",\"filed\":\"后缀\"},{\"mapping\":\"\",\"filed\":\"背景色\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":192,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"[{\\\"prefix\\\": \\\"全球营收(亿$)\\\", \\\"value\\\": \\\"12.85\\\", \\\"suffix\\\": \\\"\\\", \\\"backgroundColor\\\": \\\"#0082fc\\\"}, {\\\"prefix\\\": \\\"总订单(万单)\\\", \\\"value\\\": \\\"23.62\\\", \\\"suffix\\\": \\\"\\\", \\\"backgroundColor\\\": \\\"#22ed7c\\\"}, {\\\"prefix\\\": \\\"覆盖市场\\\", \\\"value\\\": \\\"156\\\", \\\"suffix\\\": \\\"国\\\", \\\"backgroundColor\\\": \\\"#fdd845\\\"}, {\\\"prefix\\\": \\\"活跃客户(万)\\\", \\\"value\\\": \\\"48.70\\\", \\\"suffix\\\": \\\"\\\", \\\"backgroundColor\\\": \\\"#f47a75\\\"}, {\\\"prefix\\\": \\\"成交转化率(%)\\\", \\\"value\\\": \\\"4.85\\\", \\\"suffix\\\": \\\"\\\", \\\"backgroundColor\\\": \\\"#09b0d3\\\"}, {\\\"prefix\\\": \\\"同比增长(%)\\\", \\\"value\\\": \\\"18.50\\\", \\\"suffix\\\": \\\"\\\", \\\"backgroundColor\\\": \\\"#1d27c9\\\"}]\",\"size\":{\"width\":1914,\"height\":116.91029900332225},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1914,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JColorBlock\",\"category\":\"Common\"},\"option\":{\"color\":\"#FFFFFF\",\"prefixSplitx\":0,\"prefixSplity\":12,\"prefix\":\"\",\"whole\":false,\"suffix\":\"\",\"body\":{\"color\":\"#FFFFFF\",\"text\":\"\",\"fontWeight\":\"bold\",\"marginTop\":0,\"marginLeft\":0},\"prefixFontSize\":16,\"prefixFontWeight\":\"normal\",\"borderSplitx\":6,\"borderSplity\":6,\"fontWeight\":\"bold\",\"height\":50,\"padding\":5,\"suffixFontSize\":18,\"prefixColor\":\"#FFFFFF\",\"textAlign\":\"center\",\"suffixFontWeight\":\"normal\",\"suffixSplitx\":40,\"suffixColor\":\"#FFFFFF\",\"decimals\":0,\"width\":50,\"lineNum\":6,\"fontSize\":42,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"dc507c00-d4fd-4941-8ff6-37733a47ba6c\"}]},\"component\":\"JGroup\",\"w\":1921,\"x\":0,\"y\":175,\"componentName\":\"全球\",\"pageCompId\":\"1231521823362600960\",\"equalProportion\":false,\"group\":true},{\"visible\":false,\"h\":988,\"i\":\"es-drager-1782722429243-1\",\"props\":{\"elements\":[{\"visible\":true,\"pcX\":1460,\"pcW\":420,\"pcY\":845,\"h\":233,\"i\":\"1782269230312_519981\",\"orderNum\":12,\"component\":\"JScrollList\",\"w\":457,\"x\":1460,\"y\":755,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.417004048583%\",\"left\":\"76.16066770996348%\",\"width\":\"23.839332290036516%\",\"position\":\"absolute\",\"config\":{},\"height\":\"23.582995951417004%\"},\"componentName\":\"滚动列表(单行)\",\"pageCompId\":\"1230863721827094528\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":220,\"timeOut\":0,\"chartData\":\"[{\\\"user\\\": \\\"李**\\\", \\\"province\\\": \\\"广东\\\", \\\"amount\\\": \\\"¥1280\\\", \\\"time\\\": \\\"13:42:18\\\"}, {\\\"user\\\": \\\"王**\\\", \\\"province\\\": \\\"江苏\\\", \\\"amount\\\": \\\"¥860\\\", \\\"time\\\": \\\"13:42:05\\\"}, {\\\"user\\\": \\\"张**\\\", \\\"province\\\": \\\"北京\\\", \\\"amount\\\": \\\"¥2380\\\", \\\"time\\\": \\\"13:41:52\\\"}, {\\\"user\\\": \\\"陈**\\\", \\\"province\\\": \\\"浙江\\\", \\\"amount\\\": \\\"¥520\\\", \\\"time\\\": \\\"13:41:38\\\"}, {\\\"user\\\": \\\"杨**\\\", \\\"province\\\": \\\"上海\\\", \\\"amount\\\": \\\"¥3680\\\", \\\"time\\\": \\\"13:41:21\\\"}, {\\\"user\\\": \\\"黄**\\\", \\\"province\\\": \\\"山东\\\", \\\"amount\\\": \\\"¥980\\\", \\\"time\\\": \\\"13:41:08\\\"}, {\\\"user\\\": \\\"赵**\\\", \\\"province\\\": \\\"四川\\\", \\\"amount\\\": \\\"¥1580\\\", \\\"time\\\": \\\"13:40:55\\\"}, {\\\"user\\\": \\\"周**\\\", \\\"province\\\": \\\"湖北\\\", \\\"amount\\\": \\\"¥420\\\", \\\"time\\\": \\\"13:40:42\\\"}, {\\\"user\\\": \\\"吴**\\\", \\\"province\\\": \\\"河南\\\", \\\"amount\\\": \\\"¥1980\\\", \\\"time\\\": \\\"13:40:31\\\"}, {\\\"user\\\": \\\"徐**\\\", \\\"province\\\": \\\"福建\\\", \\\"amount\\\": \\\"¥720\\\", \\\"time\\\": \\\"13:40:18\\\"}, {\\\"user\\\": \\\"孙**\\\", \\\"province\\\": \\\"湖南\\\", \\\"amount\\\": \\\"¥1380\\\", \\\"time\\\": \\\"13:40:05\\\"}, {\\\"user\\\": \\\"马**\\\", \\\"province\\\": \\\"河北\\\", \\\"amount\\\": \\\"¥560\\\", \\\"time\\\": \\\"13:39:48\\\"}, {\\\"user\\\": \\\"朱**\\\", \\\"province\\\": \\\"安徽\\\", \\\"amount\\\": \\\"¥2180\\\", \\\"time\\\": \\\"13:39:32\\\"}, {\\\"user\\\": \\\"胡**\\\", \\\"province\\\": \\\"陕西\\\", \\\"amount\\\": \\\"¥880\\\", \\\"time\\\": \\\"13:39:18\\\"}, {\\\"user\\\": \\\"郭**\\\", \\\"province\\\": \\\"辽宁\\\", \\\"amount\\\": \\\"¥1620\\\", \\\"time\\\": \\\"13:39:02\\\"}]\",\"size\":{\"width\":457,\"height\":233.88888888888889},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JScrollList\",\"category\":\"Common\"},\"option\":{\"showIndex\":true,\"backgroundColor\":\"#FFFFFF00\",\"fieldMapping\":[{\"textAlign\":\"center\",\"name\":\"用户\",\"width\":0,\"textStyle\":{\"fontColor\":\"#CFE6FF\"},\"key\":\"user\"},{\"textAlign\":\"center\",\"name\":\"省份\",\"width\":0,\"textStyle\":{\"fontColor\":\"#CFE6FF\"},\"key\":\"province\"},{\"textAlign\":\"center\",\"name\":\"金额\",\"width\":0,\"textStyle\":{\"fontColor\":\"#40A9FF\"},\"key\":\"amount\"},{\"textAlign\":\"center\",\"name\":\"时间\",\"width\":0,\"textStyle\":{\"fontColor\":\"#CFE6FF\"},\"key\":\"time\"}],\"itemsPerRow\":1,\"borderRadius\":8,\"autoScrollEnabled\":true,\"showHeader\":true,\"indexFieldStyle\":{\"textAlign\":\"center\",\"width\":38,\"textStyle\":{\"fontSize\":21,\"fontGradient\":{\"endColor\":\"#003A8C\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#40A9FF\",\"direction\":\"to bottom\"},\"fontStyle\":\"italic\",\"fontColor\":\"#FFFFFF\"},\"marginLeft\":3},\"header\":{\"backgroundColor\":\"#003A8C\",\"textAlign\":\"center\",\"fontSize\":14,\"fontColor\":\"#40A9FF\"},\"row\":{\"backgroundColor\":\"#001F4D44\",\"alternateBackgroundColor\":\"#1890FF15\",\"marginBottom\":2,\"height\":32}}},\"key\":\"b5fc9f48-b0da-4978-8b5e-6e6115b7efd5\"},{\"visible\":true,\"pcX\":1460,\"pcW\":420,\"pcY\":595,\"h\":240,\"i\":\"1782269230312_640892\",\"orderNum\":11,\"component\":\"JRing\",\"w\":457,\"x\":1460,\"y\":505,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.11336032388664%\",\"left\":\"76.16066770996348%\",\"width\":\"23.839332290036516%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.291497975708502%\"},\"componentName\":\"支付方式占比\",\"pageCompId\":\"1230863721860648960\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"微信支付\\\", \\\"value\\\": 138420}, {\\\"name\\\": \\\"支付宝\\\", \\\"value\\\": 95630}, {\\\"name\\\": \\\"银行卡\\\", \\\"value\\\": 38260}, {\\\"name\\\": \\\"信用卡\\\", \\\"value\\\": 14160}]\",\"size\":{\"width\":457,\"height\":240},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JRing\",\"category\":\"Ring\"},\"option\":{\"customColor\":[{\"color1\":\"#1890FF\",\"color\":\"#1890FF\"},{\"color1\":\"#40A9FF\",\"color\":\"#40A9FF\"},{\"color1\":\"#69C0FF\",\"color\":\"#69C0FF\"},{\"color1\":\"#0050B3\",\"color\":\"#0050B3\"},{\"color1\":\"#91D5FF\",\"color\":\"#91D5FF\"},{\"color1\":\"#0073E6\",\"color\":\"#0073E6\"},{\"color1\":\"#BAE7FF\",\"color\":\"#BAE7FF\"},{\"color1\":\"#5B9BD5\",\"color\":\"#5B9BD5\"},{\"color1\":\"#4A6FA5\",\"color\":\"#4A6FA5\"}],\"color\":[\"#1890FF\",\"#40A9FF\",\"#69C0FF\",\"#0050B3\",\"#91D5FF\",\"#0073E6\",\"#BAE7FF\",\"#5B9BD5\",\"#4A6FA5\"],\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"label\":{\"show\":false,\"position\":\"center\"},\"labelLine\":{\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"itemGap\":8,\"r\":\"2%\",\"orient\":\"vertical\",\"top\":\"middle\",\"t\":\"middle\",\"left\":\"auto\",\"itemHeight\":10,\"itemWidth\":10,\"right\":\"2%\"},\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"trigger\":\"item\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"outRadius\":95,\"title\":{\"color\":\"#40A9FF\",\"textAlign\":\"left\",\"show\":true,\"text\":\"支付方式占比\",\"textStyle\":{\"color\":\"#40A9FF\",\"fontSize\":13,\"fontWeight\":\"normal\"}},\"innerRadius\":52,\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"252be025-4d2a-4265-b37a-9a813ed6079d\"},{\"visible\":true,\"pcX\":1460,\"pcW\":420,\"pcY\":345,\"h\":240,\"i\":\"1782269230312_205251\",\"orderNum\":10,\"component\":\"JBar\",\"w\":457,\"x\":1460,\"y\":255,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.809716599190285%\",\"left\":\"76.16066770996348%\",\"width\":\"23.839332290036516%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.291497975708502%\"},\"componentName\":\"订单状态分布\",\"pageCompId\":\"1230863721869037568\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"待付款\\\", \\\"value\\\": 18650}, {\\\"name\\\": \\\"已付款\\\", \\\"value\\\": 32480}, {\\\"name\\\": \\\"已发货\\\", \\\"value\\\": 45230}, {\\\"name\\\": \\\"已签收\\\", \\\"value\\\": 168320}, {\\\"name\\\": \\\"退款中\\\", \\\"value\\\": 8260}]\",\"size\":{\"width\":457.5,\"height\":240},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JBar\",\"category\":\"Bar\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"lineStyle\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#1A3A5A\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#1890FF\",\"color\":\"#1890FF\"},{\"color1\":\"#40A9FF\",\"color\":\"#40A9FF\"},{\"color1\":\"#69C0FF\",\"color\":\"#69C0FF\"},{\"color1\":\"#0050B3\",\"color\":\"#0050B3\"},{\"color1\":\"#91D5FF\",\"color\":\"#91D5FF\"},{\"color1\":\"#0073E6\",\"color\":\"#0073E6\"},{\"color1\":\"#BAE7FF\",\"color\":\"#BAE7FF\"},{\"color1\":\"#5B9BD5\",\"color\":\"#5B9BD5\"},{\"color1\":\"#4A6FA5\",\"color\":\"#4A6FA5\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1A3A5A\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"color\":[\"#1890FF\",\"#40A9FF\",\"#69C0FF\",\"#0050B3\",\"#91D5FF\",\"#0073E6\",\"#BAE7FF\",\"#5B9BD5\",\"#4A6FA5\"],\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":40,\"containLabel\":true},\"series\":[{\"barWidth\":22,\"data\":[],\"itemStyle\":{\"borderRadius\":0},\"label\":{\"position\":\"top\"},\"type\":\"bar\"}],\"legend\":{\"textStyle\":{\"color\":\"#8ab8d0\"}},\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"color\":\"#40A9FF\",\"textAlign\":\"left\",\"show\":true,\"text\":\"订单状态分布\",\"textStyle\":{\"color\":\"#40A9FF\",\"fontSize\":13,\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"ef59760f-158a-4f89-b8ab-3d264a018118\"},{\"visible\":true,\"pcX\":40,\"pcW\":420,\"pcY\":845,\"h\":231,\"i\":\"1782269230311_284478\",\"orderNum\":8,\"component\":\"JScrollRankingBoard\",\"w\":456,\"x\":3,\"y\":755,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"76.417004048583%\",\"left\":\"0.1564945226917058%\",\"width\":\"23.78716744913928%\",\"position\":\"absolute\",\"config\":{},\"height\":\"23.380566801619434%\"},\"componentName\":\"Top10 省份销售榜 - JScrollRankingBoard\",\"pageCompId\":\"1230863721877426176\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":220,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"广东省\\\", \\\"value\\\": 8950}, {\\\"name\\\": \\\"江苏省\\\", \\\"value\\\": 7820}, {\\\"name\\\": \\\"山东省\\\", \\\"value\\\": 6780}, {\\\"name\\\": \\\"浙江省\\\", \\\"value\\\": 6420}, {\\\"name\\\": \\\"北京市\\\", \\\"value\\\": 5680}, {\\\"name\\\": \\\"上海市\\\", \\\"value\\\": 5380}, {\\\"name\\\": \\\"四川省\\\", \\\"value\\\": 4920}, {\\\"name\\\": \\\"河南省\\\", \\\"value\\\": 4580}, {\\\"name\\\": \\\"湖北省\\\", \\\"value\\\": 3980}, {\\\"name\\\": \\\"湖南省\\\", \\\"value\\\": 3620}, {\\\"name\\\": \\\"福建省\\\", \\\"value\\\": 3420}, {\\\"name\\\": \\\"河北省\\\", \\\"value\\\": 3180}, {\\\"name\\\": \\\"安徽省\\\", \\\"value\\\": 2980}]\",\"size\":{\"width\":456,\"height\":231.11111111111111},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JScrollRankingBoard\",\"category\":\"Ranking\"},\"option\":{\"color\":\"#1890FF\",\"rowNum\":5,\"fontSize\":14,\"sort\":true,\"carousel\":\"single\",\"title\":{\"color\":\"#40A9FF\",\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#40A9FF\",\"fontWeight\":\"normal\"}},\"waitTime\":2000,\"textColor\":\"#CFE6FF\",\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"bd91cfa3-d69f-4240-8aa6-cb70cbb2d83f\"},{\"visible\":true,\"pcX\":40,\"pcW\":420,\"pcY\":595,\"h\":240,\"i\":\"1782269230311_537352\",\"orderNum\":7,\"component\":\"JPie\",\"w\":458,\"x\":1,\"y\":505,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"51.11336032388664%\",\"left\":\"0.05216484089723526%\",\"width\":\"23.89149713093375%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.291497975708502%\"},\"componentName\":\"品类销售占比\",\"pageCompId\":\"1230863721885814784\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"服装鞋包\\\", \\\"value\\\": 12480}, {\\\"name\\\": \\\"数码家电\\\", \\\"value\\\": 9820}, {\\\"name\\\": \\\"食品生鲜\\\", \\\"value\\\": 8650}, {\\\"name\\\": \\\"美妆护肤\\\", \\\"value\\\": 7320}, {\\\"name\\\": \\\"家居日用\\\", \\\"value\\\": 5980}, {\\\"name\\\": \\\"其他\\\", \\\"value\\\": 4370}]\",\"size\":{\"width\":458.8888888888889,\"height\":240},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JPie\",\"category\":\"Pie\"},\"option\":{\"customColor\":[{\"color1\":\"#1890FF\",\"color\":\"#1890FF\"},{\"color1\":\"#40A9FF\",\"color\":\"#40A9FF\"},{\"color1\":\"#69C0FF\",\"color\":\"#69C0FF\"},{\"color1\":\"#0050B3\",\"color\":\"#0050B3\"},{\"color1\":\"#91D5FF\",\"color\":\"#91D5FF\"},{\"color1\":\"#0073E6\",\"color\":\"#0073E6\"},{\"color1\":\"#BAE7FF\",\"color\":\"#BAE7FF\"},{\"color1\":\"#5B9BD5\",\"color\":\"#5B9BD5\"},{\"color1\":\"#4A6FA5\",\"color\":\"#4A6FA5\"}],\"color\":[\"#1890FF\",\"#40A9FF\",\"#69C0FF\",\"#0050B3\",\"#91D5FF\",\"#0073E6\",\"#BAE7FF\",\"#5B9BD5\",\"#4A6FA5\"],\"grid\":{\"top\":53,\"left\":43,\"show\":false},\"legend\":{\"itemGap\":8,\"r\":\"2%\",\"orient\":\"vertical\",\"top\":\"middle\",\"t\":\"middle\",\"left\":\"auto\",\"itemHeight\":10,\"itemWidth\":10,\"right\":\"2%\"},\"series\":[{\"data\":[],\"center\":[\"36%\",\"55%\"],\"name\":\"\",\"emphasis\":{\"itemStyle\":{\"shadowOffsetX\":0,\"shadowBlur\":10,\"shadowColor\":\"#00000080\"}},\"label\":{\"show\":true},\"type\":\"pie\",\"radius\":\"50%\"}],\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"trigger\":\"item\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"outRadius\":100,\"innerRadius\":60,\"title\":{\"subtext\":\"\",\"color\":\"#40A9FF\",\"textAlign\":\"left\",\"show\":true,\"text\":\"品类销售占比\",\"textStyle\":{\"color\":\"#40A9FF\",\"fontSize\":13,\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"cc4a27fd-c6b6-475c-8263-a9e4443ee068\"},{\"visible\":true,\"pcX\":40,\"pcW\":420,\"pcY\":345,\"h\":240,\"i\":\"1782269230311_729434\",\"orderNum\":6,\"component\":\"JLine\",\"w\":495,\"x\":0,\"y\":255,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"25.809716599190285%\",\"left\":\"0%\",\"width\":\"25.821596244131456%\",\"position\":\"absolute\",\"config\":{},\"height\":\"24.291497975708502%\"},\"componentName\":\"月度销售趋势(万元)\",\"pageCompId\":\"1230863721898397696\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":240,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"1月\\\", \\\"value\\\": 3850}, {\\\"name\\\": \\\"2月\\\", \\\"value\\\": 3120}, {\\\"name\\\": \\\"3月\\\", \\\"value\\\": 4280}, {\\\"name\\\": \\\"4月\\\", \\\"value\\\": 3960}, {\\\"name\\\": \\\"5月\\\", \\\"value\\\": 4520}, {\\\"name\\\": \\\"6月\\\", \\\"value\\\": 4180}, {\\\"name\\\": \\\"7月\\\", \\\"value\\\": 4650}, {\\\"name\\\": \\\"8月\\\", \\\"value\\\": 4380}, {\\\"name\\\": \\\"9月\\\", \\\"value\\\": 4720}, {\\\"name\\\": \\\"10月\\\", \\\"value\\\": 5180}, {\\\"name\\\": \\\"11月\\\", \\\"value\\\": 4890}, {\\\"name\\\": \\\"12月\\\", \\\"value\\\": 5240}]\",\"size\":{\"width\":495.8888888888889,\"height\":240},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JLine\",\"category\":\"Line\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1a3a5a\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#1A3A5A\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#1890FF\",\"color\":\"#1890FF\"},{\"color1\":\"#40A9FF\",\"color\":\"#40A9FF\"},{\"color1\":\"#69C0FF\",\"color\":\"#69C0FF\"},{\"color1\":\"#0050B3\",\"color\":\"#0050B3\"},{\"color1\":\"#91D5FF\",\"color\":\"#91D5FF\"},{\"color1\":\"#0073E6\",\"color\":\"#0073E6\"},{\"color1\":\"#BAE7FF\",\"color\":\"#BAE7FF\"},{\"color1\":\"#5B9BD5\",\"color\":\"#5B9BD5\"},{\"color1\":\"#4A6FA5\",\"color\":\"#4A6FA5\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1A3A5A\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"color\":[\"#1890FF\",\"#40A9FF\",\"#69C0FF\",\"#0050B3\",\"#91D5FF\",\"#0073E6\",\"#BAE7FF\",\"#5B9BD5\",\"#4A6FA5\"],\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":40,\"containLabel\":true},\"series\":[{\"data\":[],\"lineStyle\":{},\"lineType\":\"line\",\"itemStyle\":{},\"label\":{\"position\":\"top\"},\"type\":\"line\",\"smooth\":true}],\"legend\":{\"textStyle\":{\"color\":\"#8ab8d0\"}},\"tooltip\":{\"backgroundColor\":\"#0b1e3acc\",\"textStyle\":{\"color\":\"#E0F0FF\"}},\"title\":{\"subtext\":\"\",\"color\":\"#40A9FF\",\"textAlign\":\"left\",\"left\":10,\"show\":true,\"text\":\"月度销售趋势(万元)\",\"textStyle\":{\"color\":\"#40A9FF\",\"fontSize\":13,\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}},\"key\":\"38bf5bbb-a72d-4528-86db-3da7537a0e61\"},{\"visible\":true,\"pcX\":40,\"pcW\":1840,\"pcY\":150,\"h\":192,\"i\":\"1782269230311_305879\",\"orderNum\":5,\"component\":\"JStatsSummary\",\"w\":1914,\"x\":2,\"y\":58,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"5.870445344129554%\",\"left\":\"0.10432968179447052%\",\"width\":\"99.8435054773083%\",\"position\":\"absolute\",\"config\":{},\"height\":\"19.4331983805668%\"},\"componentName\":\"统计概览(卡片模式)\",\"pageCompId\":\"1230863721906786304\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":180,\"timeOut\":0,\"chartData\":\"[{\\\"id\\\": \\\"1\\\", \\\"name\\\": \\\"总销售额(万元)\\\", \\\"value\\\": 48620, \\\"suffix\\\": \\\"万\\\", \\\"compareLabel\\\": \\\"环比\\\", \\\"compareValue\\\": \\\"+12.5%\\\", \\\"compareState\\\": \\\"1\\\"}, {\\\"id\\\": \\\"2\\\", \\\"name\\\": \\\"订单总数\\\", \\\"value\\\": 286453, \\\"suffix\\\": \\\"单\\\", \\\"compareLabel\\\": \\\"同比\\\", \\\"compareValue\\\": \\\"+8.3%\\\", \\\"compareState\\\": \\\"1\\\"}, {\\\"id\\\": \\\"3\\\", \\\"name\\\": \\\"客户总数\\\", \\\"value\\\": 158730, \\\"suffix\\\": \\\"人\\\", \\\"compareLabel\\\": \\\"环比\\\", \\\"compareValue\\\": \\\"+5.2%\\\", \\\"compareState\\\": \\\"1\\\"}, {\\\"id\\\": \\\"4\\\", \\\"name\\\": \\\"复购率\\\", \\\"value\\\": 38.5, \\\"suffix\\\": \\\"%\\\", \\\"compareLabel\\\": \\\"环比\\\", \\\"compareValue\\\": \\\"+2.1%\\\", \\\"compareState\\\": \\\"1\\\"}, {\\\"id\\\": \\\"5\\\", \\\"name\\\": \\\"退款率\\\", \\\"value\\\": 2.8, \\\"suffix\\\": \\\"%\\\", \\\"compareLabel\\\": \\\"同比\\\", \\\"compareValue\\\": \\\"-0.6%\\\", \\\"compareState\\\": \\\"0\\\"}, {\\\"id\\\": \\\"6\\\", \\\"name\\\": \\\"活跃城市\\\", \\\"value\\\": 268, \\\"suffix\\\": \\\"个\\\", \\\"compareLabel\\\": \\\"环比\\\", \\\"compareValue\\\": \\\"+4.0%\\\", \\\"compareState\\\": \\\"1\\\"}]\",\"size\":{\"width\":1914,\"height\":192.88888888888889},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":1840,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JStatsSummary\",\"category\":\"Common\"},\"option\":{\"layout\":{\"padding\":{\"top\":16,\"left\":16,\"bottom\":0,\"right\":16},\"borderColor\":\"#0f66ff59\",\"borderRadius\":0,\"shadow\":\"none\",\"justify\":\"space-between\",\"borderWidth\":0,\"gap\":16,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#0b2b63\",\"gradient\":{\"endColor\":\"#0bb2ff\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#05336a\"},\"type\":\"none\"}},\"highlight\":{\"color\":\"#40A9FF\"},\"fieldMap\":{\"compareValue\":\"compareValue\",\"unit\":\"suffix\",\"negativeValue\":\"0\",\"compareState\":\"compareState\",\"label\":\"name\",\"value\":\"value\",\"positiveValue\":\"1\",\"compareLabel\":\"compareLabel\"},\"card\":{\"padding\":{\"horizontal\":24,\"vertical\":24},\"borderColor\":\"#1890FF\",\"borderRadius\":16,\"shadow\":\"0px 8px 24px 0px #4a90e23a\",\"borderWidth\":1.5,\"blur\":24,\"minWidth\":220,\"fill\":{\"image\":{\"size\":\"cover\",\"repeat\":\"no-repeat\",\"position\":\"center\",\"url\":\"\"},\"color\":\"#001F4D66\",\"gradient\":{\"endColor\":\"#003A8C\",\"angle\":135,\"type\":\"linear\",\"enabled\":false,\"direction\":\"to bottom right\",\"startColor\":\"#001F4D\"},\"type\":\"color\"}},\"sections\":{\"middle\":{\"minHeight\":0,\"compare\":{\"valueStyle\":{\"positiveGradient\":{\"endColor\":\"#40A9FF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#40A9FF\"},\"positiveColor\":\"#40A9FF\",\"fontSize\":14,\"negativeColor\":\"#0FF25E\",\"fontGradient\":{\"endColor\":\"#40A9FF\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#40A9FF\"},\"negativeGradient\":{\"endColor\":\"#52C41A\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#52C41A\"},\"fontColor\":\"#40A9FF\"},\"alignItems\":\"baseline\",\"labelStyle\":{\"fontSize\":14,\"fontGradient\":{\"endColor\":\"#5B9BD5\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#5B9BD5\"},\"fontColor\":\"#5B9BD5\"},\"label\":\"同比\"},\"unit\":{},\"paddingBottom\":10,\"show\":true,\"paddingTop\":0,\"label\":{\"color\":\"#CFE6FF\"},\"align\":\"center\",\"type\":\"compare\",\"value\":{\"color\":\"#40A9FF\"}},\"top\":{\"minHeight\":0,\"unit\":{\"color\":\"#40A9FF\"},\"paddingBottom\":10,\"show\":true,\"paddingTop\":0,\"label\":{},\"align\":\"center\",\"type\":\"value\",\"value\":{\"unit\":{\"fontSize\":18,\"fontGradient\":{\"endColor\":\"#cfeaff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#9ed3ff\"},\"fontWeight\":500,\"fontColor\":\"#9ED3FF\"},\"color\":\"#40A9FF\",\"unitGap\":6,\"fontSize\":34,\"fontGradient\":{\"endColor\":\"#D8F1FF\",\"type\":\"linear\",\"enabled\":true,\"direction\":\"135deg\",\"startColor\":\"#73E0FF\"},\"fontWeight\":600,\"fontColor\":\"#D8F1FF\"}},\"bottom\":{\"minHeight\":0,\"unit\":{},\"paddingBottom\":10,\"show\":true,\"paddingTop\":0,\"label\":{\"color\":\"#CFE6FF\",\"fontSize\":16,\"fontGradient\":{\"endColor\":\"#9ed3ff\",\"type\":\"linear\",\"enabled\":false,\"direction\":\"135deg\",\"startColor\":\"#cfeaff\"},\"fontColor\":\"#CFEAFF\"},\"align\":\"center\",\"type\":\"label\",\"value\":{\"color\":\"#CFE6FF\"}}}}},\"key\":\"d8c02444-995e-4999-8242-7ede31462de7\"},{\"visible\":true,\"pcX\":1460,\"pcW\":420,\"pcY\":90,\"h\":50,\"i\":\"1782269230310_116478\",\"orderNum\":4,\"component\":\"JWeatherForecast\",\"w\":420,\"x\":1460,\"y\":0,\"groupStyle\":{\"transform\":\"rotate(0deg)\",\"top\":\"0%\",\"left\":\"76.16066770996348%\",\"width\":\"21.90923317683881%\",\"position\":\"absolute\",\"config\":{},\"height\":\"5.060728744939271%\"},\"componentName\":\"滚动版\",\"pageCompId\":\"1230863721915174912\",\"config\":{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":50,\"timeOut\":0,\"chartData\":\"[]\",\"size\":{\"width\":420,\"height\":50},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JWeatherForecast\",\"category\":\"Common\"},\"option\":{\"template\":11,\"bgColor\":\"#ffffff00\",\"city\":\"北京\",\"num\":2,\"fontSize\":16,\"fontColor\":\"#CFE6FF\",\"url\":\"\"}},\"key\":\"b5ecc53c-0dcc-43bb-ade0-0ba36721c775\"}]},\"component\":\"JGroup\",\"w\":1917,\"x\":0,\"y\":90,\"componentName\":\"中国及省份\",\"pageCompId\":\"1231521823366795264\",\"equalProportion\":false,\"key\":\"34df1455-ac8c-45be-99c7-72009c83ed5f\",\"group\":true}]', '', '1023810558598676480', '0', 'admin', '2026-06-24 09:54:59', 'admin', '2026-06-29 18:34:53', NULL, 0, 0, 0, 0);
INSERT INTO `onl_drag_page` VALUES ('1231392793810731008', '智慧港口数字孪生中心', '/drag/page/view/1231392793810731008', '', '/img/bg/bg4.png', 100, 'dark', 'bigScreen', NULL, '{\"sysDefColor\": [{\"color\": \"#36d7b7\", \"color1\": \"#36d7b7\"}, {\"color\": \"#4a9eff\", \"color1\": \"#4a9eff\"}, {\"color\": \"#f7c948\", \"color1\": \"#f7c948\"}, {\"color\": \"#5be5a6\", \"color1\": \"#5be5a6\"}, {\"color\": \"#3db8d6\", \"color1\": \"#3db8d6\"}, {\"color\": \"#7c6cf0\", \"color1\": \"#7c6cf0\"}, {\"color\": \"#ff9f43\", \"color1\": \"#ff9f43\"}, {\"color\": \"#f47a75\", \"color1\": \"#f47a75\"}, {\"color\": \"#20b2aa\", \"color1\": \"#20b2aa\"}]}', '[{\"visible\":true,\"pcX\":1174,\"pcW\":730,\"pcY\":800,\"h\":268,\"i\":\"1782698530620_979333\",\"orderNum\":23,\"component\":\"JScrollBoard\",\"w\":730,\"x\":1174,\"y\":800,\"componentName\":\"今日重大事件\",\"pageCompId\":\"1231392796138569728\"},{\"visible\":true,\"pcX\":24,\"pcW\":1140,\"pcY\":800,\"h\":268,\"i\":\"1782698530611_169110\",\"orderNum\":22,\"component\":\"JBar\",\"w\":1140,\"x\":24,\"y\":800,\"componentName\":\"基础柱形图\",\"pageCompId\":\"1231392796180512768\"},{\"visible\":true,\"pcX\":1300,\"pcW\":600,\"pcY\":630,\"h\":160,\"i\":\"1782698530603_417523\",\"orderNum\":21,\"component\":\"JMultipleLine\",\"w\":600,\"x\":1300,\"y\":630,\"componentName\":\"对比折线图\",\"pageCompId\":\"1231392796193095680\"},{\"visible\":true,\"pcX\":1788,\"pcW\":112,\"pcY\":461,\"h\":159,\"i\":\"1782698530595_208145\",\"orderNum\":20,\"component\":\"JLiquid\",\"w\":112,\"x\":1788,\"y\":461,\"componentName\":\"E区堆场利用率\",\"pageCompId\":\"1231392796205678592\"},{\"visible\":true,\"pcX\":1666,\"pcW\":110,\"pcY\":461,\"h\":159,\"i\":\"1782698530591_896143\",\"orderNum\":19,\"component\":\"JLiquid\",\"w\":110,\"x\":1666,\"y\":461,\"componentName\":\"D区堆场利用率\",\"pageCompId\":\"1231392796222455808\"},{\"visible\":true,\"pcX\":1544,\"pcW\":110,\"pcY\":461,\"h\":159,\"i\":\"1782698530587_773734\",\"orderNum\":18,\"component\":\"JLiquid\",\"w\":110,\"x\":1544,\"y\":461,\"componentName\":\"C区堆场利用率\",\"pageCompId\":\"1231392796235038720\"},{\"visible\":true,\"pcX\":1422,\"pcW\":110,\"pcY\":461,\"h\":159,\"i\":\"1782698530580_367524\",\"orderNum\":17,\"component\":\"JLiquid\",\"w\":110,\"x\":1422,\"y\":461,\"componentName\":\"B区堆场利用率\",\"pageCompId\":\"1231392796243427328\"},{\"visible\":true,\"pcX\":1300,\"pcW\":110,\"pcY\":461,\"h\":159,\"i\":\"1782698530572_266077\",\"orderNum\":16,\"component\":\"JLiquid\",\"w\":110,\"x\":1300,\"y\":461,\"componentName\":\"A区堆场利用率\",\"pageCompId\":\"1231392796260204544\"},{\"visible\":true,\"pcX\":1300,\"pcW\":600,\"pcY\":292,\"h\":159,\"i\":\"1782698530568_787971\",\"orderNum\":15,\"component\":\"JMultipleBar\",\"w\":600,\"x\":1300,\"y\":292,\"componentName\":\"对比柱形图\",\"pageCompId\":\"1231392796268593152\"},{\"visible\":true,\"pcX\":640,\"pcW\":640,\"pcY\":625,\"h\":165,\"i\":\"1782698530561_122981\",\"orderNum\":14,\"component\":\"JScrollBoard\",\"w\":640,\"x\":640,\"y\":625,\"componentName\":\"实时船舶动态\",\"pageCompId\":\"1231392796289564672\"},{\"visible\":true,\"pcX\":640,\"pcW\":640,\"pcY\":292,\"h\":323,\"i\":\"1782698530550_539614\",\"orderNum\":13,\"component\":\"JFlyLineMap\",\"w\":640,\"x\":640,\"y\":292,\"componentName\":\"港口船舶动态态势\",\"pageCompId\":\"1231392796297953280\"},{\"visible\":true,\"pcX\":24,\"pcW\":600,\"pcY\":630,\"h\":160,\"i\":\"1782698530536_237369\",\"orderNum\":12,\"component\":\"JRing\",\"w\":600,\"x\":24,\"y\":630,\"componentName\":\"饼状环形图\",\"pageCompId\":\"1231392796310536192\"},{\"visible\":true,\"pcX\":24,\"pcW\":600,\"pcY\":461,\"h\":159,\"i\":\"1782698530528_794583\",\"orderNum\":11,\"component\":\"JArea\",\"w\":600,\"x\":24,\"y\":461,\"componentName\":\"面积图\",\"pageCompId\":\"1231392796318924800\"},{\"visible\":true,\"pcX\":24,\"pcW\":600,\"pcY\":292,\"h\":159,\"i\":\"1782698530513_428758\",\"orderNum\":10,\"component\":\"JHorizontalBar\",\"w\":600,\"x\":24,\"y\":292,\"componentName\":\"基础条形图\",\"pageCompId\":\"1231392796331507712\"},{\"visible\":true,\"pcX\":24,\"pcW\":1872,\"pcY\":90,\"h\":180,\"i\":\"1782698530503_894036\",\"orderNum\":9,\"component\":\"JStatsSummary\",\"w\":1872,\"x\":24,\"y\":90,\"componentName\":\"核心运营指标\",\"pageCompId\":\"1231392796344090624\"},{\"visible\":true,\"pcX\":1595,\"pcW\":325,\"pcY\":24,\"h\":38,\"i\":\"1782698530482_344271\",\"orderNum\":4,\"component\":\"JCurrentTime\",\"w\":325,\"x\":1595,\"y\":24,\"componentName\":\"当前时间\",\"pageCompId\":\"1231392796356673536\"},{\"visible\":true,\"pcX\":540,\"pcW\":840,\"pcY\":18,\"h\":58,\"i\":\"1782698530479_923499\",\"orderNum\":3,\"component\":\"JText\",\"w\":840,\"x\":540,\"y\":18,\"componentName\":\"智慧港口数字孪生中心\",\"pageCompId\":\"1231392796369256448\"},{\"visible\":true,\"pcX\":1292,\"pcW\":616,\"pcY\":286,\"h\":508,\"i\":\"1782698530487_979341\",\"orderNum\":8,\"component\":\"JDragBorder\",\"w\":616,\"x\":1292,\"y\":286,\"componentName\":\"右栏\",\"pageCompId\":\"1231392796381839360\"},{\"visible\":true,\"pcX\":632,\"pcW\":656,\"pcY\":286,\"h\":508,\"i\":\"1782698530486_420294\",\"orderNum\":7,\"component\":\"JDragBorder\",\"w\":656,\"x\":632,\"y\":286,\"componentName\":\"中栏\",\"pageCompId\":\"1231392796390227968\"},{\"visible\":true,\"pcX\":12,\"pcW\":616,\"pcY\":286,\"h\":508,\"i\":\"1782698530485_308702\",\"orderNum\":6,\"component\":\"JDragBorder\",\"w\":616,\"x\":12,\"y\":286,\"componentName\":\"左栏\",\"pageCompId\":\"1231392796398616576\"},{\"visible\":true,\"pcX\":12,\"pcW\":1896,\"pcY\":86,\"h\":198,\"i\":\"1782698530483_183324\",\"orderNum\":5,\"component\":\"JDragBorder\",\"w\":1896,\"x\":12,\"y\":86,\"componentName\":\"KPI背景\",\"pageCompId\":\"1231392796407005184\"},{\"visible\":true,\"pcX\":1370,\"pcW\":220,\"pcY\":28,\"h\":42,\"i\":\"1782698530478_528032\",\"orderNum\":2,\"component\":\"JDragDecoration\",\"w\":220,\"x\":1370,\"y\":28,\"componentName\":\"装饰5\",\"pageCompId\":\"1231392796415393792\"},{\"visible\":true,\"pcX\":330,\"pcW\":220,\"pcY\":28,\"h\":42,\"i\":\"1782698530477_678423\",\"orderNum\":1,\"component\":\"JDragDecoration\",\"w\":220,\"x\":330,\"y\":28,\"componentName\":\"装饰5\",\"pageCompId\":\"1231392796419588096\"},{\"visible\":true,\"pcX\":0,\"pcW\":1920,\"pcY\":0,\"h\":1080,\"i\":\"1782698530475_636746\",\"orderNum\":0,\"component\":\"JDragBorder\",\"w\":1920,\"x\":0,\"y\":0,\"componentName\":\"边框\",\"pageCompId\":\"1231392796427976704\"}]', '', '0', '0', 'admin', '2026-06-29 10:02:10', 'admin', '2026-06-29 10:02:11', NULL, NULL, 3, 0, 0);
INSERT INTO `onl_drag_page` VALUES ('1234785762014167040', '做一个在线教育平台运营数据大屏,名称\"在', '/drag/page/view/1234785762014167040', '#1E0047', 'https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/map_1733387145404.png', 100, 'dark', 'bigScreen', 'https://static.jeecg.com/bigscreen/images/QQ截图20200922110022_1600743761995.png', '{\"width\":1920,\"height\":1080}', '[{\"component\":\"JMultipleLine\",\"visible\":true,\"w\":427,\"x\":1470,\"h\":243,\"i\":\"6d4a1b94-aa4f-43a8-8bab-138773d90e93\",\"y\":125,\"orderNum\":180,\"componentName\":\"对比折线图\",\"pageCompId\":\"1234785762211299328\",\"key\":\"b84e9144-597c-431d-825d-f9258acc9ee3\"},{\"component\":\"JRadar\",\"visible\":true,\"w\":450,\"x\":1471,\"h\":300,\"i\":\"d39964cc-ea2d-477b-9599-c694157919da\",\"y\":410,\"orderNum\":180,\"componentName\":\"普通雷达图\",\"pageCompId\":\"1234785762232270848\",\"key\":\"9b0c62d5-aad5-4b50-a51f-b37bfe666c45\"},{\"component\":\"JScrollTable\",\"visible\":true,\"w\":406,\"x\":1481,\"h\":247,\"i\":\"es-drager-1733389131880-16\",\"y\":787,\"orderNum\":180,\"componentName\":\"表格\",\"pageCompId\":\"1234785762240659456\",\"key\":\"9755cfc1-d2a4-4228-b575-817931f3d6c2\"},{\"component\":\"JScrollTable\",\"visible\":true,\"w\":406,\"x\":33,\"h\":247,\"i\":\"8e05deed-1070-46d8-8497-6563cbbfc497\",\"y\":793,\"orderNum\":180,\"componentName\":\"表格\",\"pageCompId\":\"1234785762249048064\",\"key\":\"b98c5bb4-56e5-4655-9407-195cfacbe22d\"},{\"component\":\"JPie\",\"visible\":true,\"w\":277,\"x\":59,\"h\":224,\"i\":\"f9fd3c6b-c4e1-4cf7-8ecd-45e47b5a92de\",\"y\":529,\"orderNum\":180,\"componentName\":\"饼图\",\"pageCompId\":\"1234785762257436672\",\"key\":\"1522ff34-dd8b-43d4-996e-2ee8378780d9\"},{\"component\":\"JMixLineBar\",\"visible\":true,\"w\":417,\"x\":38,\"h\":172,\"i\":\"a8bdbfad-b130-40d5-9ef9-322d534ecc76\",\"y\":419,\"orderNum\":180,\"componentName\":\"折柱图\",\"pageCompId\":\"1234785762261630976\",\"key\":\"0f0ab29a-c7af-44b9-8588-b36f32ca80f3\"},{\"component\":\"JText\",\"visible\":true,\"w\":90,\"x\":309,\"h\":58,\"i\":\"es-drager-1733387934036-15\",\"y\":299,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762270019584\",\"key\":\"6dc8a892-1aa1-491e-a37c-f0e46709499a\"},{\"component\":\"JText\",\"visible\":true,\"w\":90,\"x\":313,\"h\":58,\"i\":\"es-drager-1733387911561-14\",\"y\":171,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762274213888\",\"key\":\"bd016fcd-cced-4c46-9bbd-027b4e30ea9a\"},{\"component\":\"JText\",\"visible\":true,\"w\":94,\"x\":116,\"h\":58,\"i\":\"es-drager-1733387897494-13\",\"y\":302,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762286796800\",\"key\":\"686fa4a7-8586-462d-a395-ccf980cc8afc\"},{\"component\":\"JText\",\"visible\":true,\"w\":68,\"x\":119,\"h\":58,\"i\":\"es-drager-1733387833296-12\",\"y\":171,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762290991104\",\"key\":\"0077c795-ee9c-4f00-8044-d3c6368a3838\"},{\"component\":\"JText\",\"visible\":true,\"w\":56,\"x\":247,\"h\":58,\"i\":\"es-drager-1733387826328-11\",\"y\":300,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762303574016\",\"key\":\"5bfe9317-b83a-4860-8242-49f01fb5ab0a\"},{\"component\":\"JText\",\"visible\":true,\"w\":56,\"x\":52,\"h\":58,\"i\":\"es-drager-1733387814932-10\",\"y\":303,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762311962624\",\"key\":\"bd82da36-f725-4d56-957d-49ec21738f75\"},{\"component\":\"JText\",\"visible\":true,\"w\":56,\"x\":250,\"h\":58,\"i\":\"es-drager-1733387788238-7\",\"y\":170,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762320351232\",\"key\":\"54793cfd-75a1-439d-857d-22624c360017\"},{\"component\":\"JText\",\"visible\":true,\"w\":56,\"x\":61,\"h\":58,\"i\":\"00e14d21-8cf6-4a1e-89b7-94f3817e8c50\",\"y\":171,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762328739840\",\"key\":\"ad9632bf-2a4b-47c4-86db-43d08fb6d4f6\"},{\"component\":\"JVideoJs\",\"visible\":true,\"w\":945,\"x\":481,\"h\":547,\"i\":\"4faf0828-b395-43c4-8d2a-7d7700d7d463\",\"y\":248,\"orderNum\":180,\"componentName\":\"RTMP播放器\",\"pageCompId\":\"1234785762341322752\",\"key\":\"9b00e254-c1c8-4b78-8927-17f3fb0e8678\"},{\"component\":\"JText\",\"visible\":true,\"w\":168,\"x\":130,\"h\":40,\"i\":\"es-drager-1733387676390-6\",\"y\":745,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762345517056\",\"key\":\"30eb0d60-d70c-4244-a60b-81d771d98418\"},{\"component\":\"JText\",\"visible\":true,\"w\":180,\"x\":133,\"h\":40,\"i\":\"es-drager-1733387647815-5\",\"y\":61,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762358099968\",\"key\":\"d05194ab-b263-4b58-81c4-6ab236085fc5\"},{\"component\":\"JText\",\"visible\":true,\"w\":168,\"x\":1600,\"h\":40,\"i\":\"es-drager-1733387605754-4\",\"y\":732,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762366488576\",\"key\":\"5b68eaec-1e99-46bc-8901-ebc48bd6e1c8\"},{\"component\":\"JText\",\"visible\":true,\"w\":113,\"x\":1608,\"h\":40,\"i\":\"0452d123-c571-4ed5-939f-6e3d2e1f7faf\",\"y\":64,\"orderNum\":180,\"componentName\":\"文本\",\"pageCompId\":\"1234785762379071488\",\"key\":\"d0c83b58-6c9f-4bde-bdb4-86f2325d6d9f\"},{\"component\":\"JImg\",\"visible\":true,\"w\":450,\"x\":1460,\"h\":282,\"i\":\"es-drager-1733387309136-3\",\"y\":778,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762387460096\",\"key\":\"97a55095-6ac7-48bf-9573-b487569c8bb3\"},{\"component\":\"JImg\",\"visible\":true,\"w\":450,\"x\":1454,\"h\":316,\"i\":\"es-drager-1733387300628-2\",\"y\":405,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762391654400\",\"key\":\"f47e77f9-dadf-4313-b293-5f41d988da62\"},{\"component\":\"JImg\",\"visible\":true,\"w\":448,\"x\":1458,\"h\":286,\"i\":\"es-drager-1733387291618-1\",\"y\":103,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762400043008\",\"key\":\"e21a6e89-fbf4-4d35-8424-4541d3e26012\"},{\"component\":\"JImg\",\"visible\":true,\"w\":450,\"x\":7,\"h\":266,\"i\":\"439d769f-84a1-4f97-8150-d49cac1c6215\",\"y\":792,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762408431616\",\"key\":\"9cac8452-784f-4c6f-9ec5-ea2e498b81fd\"},{\"component\":\"JImg\",\"visible\":true,\"w\":450,\"x\":16,\"h\":300,\"i\":\"216e9636-b153-427f-97ed-1664bc31f2e2\",\"y\":435,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762416820224\",\"key\":\"3c8cf10d-3a54-4c92-9c15-6d11284495cd\"},{\"component\":\"JImg\",\"visible\":true,\"w\":1913,\"x\":0,\"h\":180,\"i\":\"f9d78ff4-0c63-428a-8a0f-6d26ad0c0161\",\"y\":0,\"orderNum\":0,\"componentName\":\"图片\",\"pageCompId\":\"1234785762425208832\",\"key\":\"392f4872-fe8e-46be-8d5c-ad9e49267cc7\"},{\"component\":\"JImg\",\"visible\":true,\"w\":448,\"x\":19,\"h\":288,\"i\":\"es-drager-1733387794785-8\",\"y\":125,\"orderNum\":180,\"componentName\":\"图片\",\"pageCompId\":\"1234785762429403136\",\"key\":\"2e453a3b-db52-4193-82ce-e4dfafda317d\"}]', NULL, '0', '0', NULL, '2026-07-08 18:44:37', NULL, '2026-07-08 18:44:37', NULL, 1000, 3, 0, 0);
INSERT INTO `onl_drag_page` VALUES ('1504359493847306242', '流程门户', '/drag/page/view/1504359493847306242', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '[{\"component\":\"eoa-cms-apply-process\",\"w\":16,\"moved\":false,\"x\":0,\"h\":43,\"i\":\"ec47ccc3-fadb-4b4f-b156-be622e95a39f\",\"y\":59,\"pageCompId\":\"1526478613069701121\"},{\"component\":\"eoa-cms-comm-use\",\"w\":24,\"moved\":false,\"x\":0,\"h\":15,\"i\":\"7fb16df0-15dc-43c7-908e-7edb803cf1db\",\"y\":0,\"pageCompId\":\"1526478613174558721\"},{\"component\":\"eoa-cms-process-notice\",\"w\":8,\"moved\":false,\"x\":16,\"h\":44,\"i\":\"57eb306f-c556-4425-8966-ca315c83754a\",\"y\":15,\"pageCompId\":\"1526478613275222017\"},{\"component\":\"eoa-cms-my-process\",\"w\":16,\"moved\":false,\"x\":0,\"h\":44,\"i\":\"6dbe85c8-a57a-4fa9-8223-c320ebb3aa38\",\"y\":15,\"pageCompId\":\"1526478613384273922\"},{\"component\":\"eoa-cms-user-notice\",\"w\":8,\"moved\":false,\"x\":16,\"h\":43,\"i\":\"62b1793a-de33-4196-81fd-d1476131cc92\",\"y\":59,\"pageCompId\":\"1526478613489131521\"},{\"component\":\"eoa-cms-process-chart\",\"w\":16,\"moved\":false,\"x\":0,\"h\":36,\"i\":\"a0ad5cf9-81f8-415f-94d9-00ce57214192\",\"y\":102,\"pageCompId\":\"1526478613593989121\"},{\"component\":\"eoa-cms-process-type\",\"w\":8,\"moved\":false,\"x\":16,\"h\":36,\"i\":\"fbe20e5e-7aaa-4642-8368-28d2f2638cfd\",\"y\":102,\"pageCompId\":\"1526478613694652418\"},{\"component\":\"eoa-cms-email\",\"w\":16,\"moved\":false,\"x\":0,\"h\":48,\"i\":\"f7bd7396-b869-446b-8042-63871c77f05e\",\"y\":138,\"pageCompId\":\"1526478613803704322\"},{\"component\":\"eoa-cms-plan\",\"w\":8,\"moved\":false,\"x\":16,\"h\":48,\"i\":\"5a99de6c-8636-41be-8fe4-934bfce171f5\",\"y\":138,\"pageCompId\":\"1526478613904367618\"}]', '', '988299695309357056', '0', 'jeecg', '2022-03-17 15:30:28', 'admin', '2023-05-15 11:06:58', NULL, NULL, 1, NULL, 0);
@@ -5517,6 +5530,22 @@ INSERT INTO `onl_drag_page_comp` VALUES ('1151112777028915200', NULL, '115106955
INSERT INTO `onl_drag_page_comp` VALUES ('1151112777045692416', NULL, '1151069555267260416', NULL, 'JCurrentTime', '{\"chartData\":\"\",\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":309.1666666666667,\"height\":33},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":280,\"dataType\":1,\"h\":33,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"hourlySystem\":\"24\",\"format\":\"YYYY-MM-DD hh:mm:ss\",\"body\":{\"color\":\"#FFFFFF\",\"letterSpacing\":0,\"text\":\"\",\"fontWeight\":\"normal\",\"marginTop\":0,\"marginLeft\":0},\"showWeek\":\"show\",\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2025-11-19 21:18:03', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1151112777075052544', NULL, '1151069555267260416', NULL, 'JImg', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1911.6666666666667,\"height\":70},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/title_1756435933097.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}', 'admin', '2025-11-19 21:18:03', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1151112777112801280', NULL, '1151069555267260416', NULL, 'JImg', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":679,\"height\":46.72222222222222},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"linesConfig\":{\"connectLine\":[]},\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"option\":{\"padding\":0,\"backgroundColor\":\"#FFFFFF00\",\"borderRadius\":0,\"rotateTime\":1000,\"opacity\":1,\"body\":{\"url\":\"https://jeecgdev.oss-cn-beijing.aliyuncs.com/jimureport/images/导航背景_1756451547138.png\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"},\"izRotate\":false}}', 'admin', '2025-11-19 21:18:03', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045846720512', NULL, '1212561321588641792', NULL, 'JBar3d', '{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":332,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"苹果\\\",\\\"value\\\":1000},{\\\"name\\\":\\\"三星\\\",\\\"value\\\":5400},{\\\"name\\\":\\\"小米\\\",\\\"value\\\":8000},{\\\"name\\\":\\\"oppo\\\",\\\"value\\\":4000},{\\\"name\\\":\\\"vivo\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":10000}]\",\"size\":{\"width\":360.3703703703704,\"height\":249.28395061728392},\"background\":\"#FFFFFF00\",\"w\":490,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\",\"show\":true},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"show\":true,\"splitLine\":{\"show\":false},\"yUnit\":\"\"},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA00\"}}},\"grid\":{\"top\":20,\"left\":0,\"bottom\":\"36\",\"right\":\"1\",\"containLabel\":true},\"series\":[{\"color\":\"#2DB1EF\",\"id\":\"barTopColor\"},{\"color\":\"#187dcb\",\"id\":\"barBottomColor\"},{\"color\":\"#115ba6\",\"id\":\"barColor\"},{\"color\":\"#041133\",\"id\":\"shadowColor\"},{\"color\":\"#142f5a\",\"id\":\"shadowTopColor\"}],\"tooltip\":{\"show\":true},\"graphic\":{\"children\":[{\"style\":{\"fill\":\"#3F4867\"}}]},\"extraInfo\":{\"endColor\":\"#187dcb\",\"enabledGradient\":false,\"direction\":\"to bottom\",\"startColor\":\"#2DB1EF\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045871886336', NULL, '1212561321588641792', NULL, 'DoubleLineBar', '{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"1991\\\",\\\"value\\\":110,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1992\\\",\\\"value\\\":130,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1993\\\",\\\"value\\\":113.5,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1994\\\",\\\"value\\\":150,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1995\\\",\\\"value\\\":240.9,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1996\\\",\\\"value\\\":160,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1997\\\",\\\"value\\\":97,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1998\\\",\\\"value\\\":290,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1999\\\",\\\"value\\\":230,\\\"type\\\":\\\"降水量\\\",\\\"yAxisIndex\\\":\\\"0\\\"},{\\\"name\\\":\\\"1991\\\",\\\"value\\\":33,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1992\\\",\\\"value\\\":35,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1993\\\",\\\"value\\\":37,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1994\\\",\\\"value\\\":35,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1995\\\",\\\"value\\\":34.9,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1996\\\",\\\"value\\\":36,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1997\\\",\\\"value\\\":37,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1998\\\",\\\"value\\\":39,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"},{\\\"name\\\":\\\"1999\\\",\\\"value\\\":33,\\\"type\\\":\\\"温度\\\",\\\"yAxisIndex\\\":\\\"1\\\"}]\",\"size\":{\"width\":382.0987654320988,\"height\":277.77777777777777},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[{\"series\":\"降水量\",\"yIndex\":\"0\",\"type\":\"bar\"},{\"series\":\"温度\",\"yIndex\":\"1\",\"type\":\"line\"}],\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"barWidth\":15,\"symbol\":\"emptyCircle\",\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"symbolSize\":4,\"legend\":{\"t\":0},\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontSize\":\"14\",\"fontWeight\":\"normal\"}},\"lineWidth\":1,\"areaStyleOpacity\":0,\"yAxis\":[{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"type\":\"value\",\"yUnit\":\"\"},{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"interval\":2},\"type\":\"value\",\"yUnit\":\"\"}],\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#1e90ff\"},{\"color1\":\"#90ee90\",\"color\":\"#90ee90\"},{\"color1\":\"#00ced1\",\"color\":\"#00ced1\"},{\"color1\":\"#e2bd84\",\"color\":\"#e2bd84\"},{\"color1\":\"#7a90e0\",\"color\":\"#7a90e0\"},{\"color1\":\"#3ba272\",\"color\":\"#3ba272\"},{\"color1\":\"#2be7ff\",\"color\":\"#2be7ff\"},{\"color1\":\"#0a8ada\",\"color\":\"#0a8ada\"},{\"color1\":\"#ffd700\",\"color\":\"#ffd700\"}],\"borderRadius\":0,\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":40,\"containLabel\":true},\"series\":[],\"lineType\":\"line\",\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045884469248', NULL, '1212561321588641792', NULL, 'JDynamicBar', '{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"1991\\\",\\\"value\\\":131},{\\\"name\\\":\\\"1992\\\",\\\"value\\\":141},{\\\"name\\\":\\\"1993\\\",\\\"value\\\":31.5},{\\\"name\\\":\\\"1994\\\",\\\"value\\\":53},{\\\"name\\\":\\\"1995\\\",\\\"value\\\":41.9},{\\\"name\\\":\\\"1996\\\",\\\"value\\\":61},{\\\"name\\\":\\\"1997\\\",\\\"value\\\":17},{\\\"name\\\":\\\"1998\\\",\\\"value\\\":19},{\\\"name\\\":\\\"1999\\\",\\\"value\\\":113}]\",\"size\":{\"width\":380.8641975308642,\"height\":250.6172839506173},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"},\"show\":true},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":30,\"containLabel\":true},\"series\":[],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045897052160', NULL, '1212561321588641792', NULL, 'JDynamicBar', '{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"1991\\\",\\\"value\\\":131},{\\\"name\\\":\\\"1992\\\",\\\"value\\\":141},{\\\"name\\\":\\\"1993\\\",\\\"value\\\":31.5},{\\\"name\\\":\\\"1994\\\",\\\"value\\\":53},{\\\"name\\\":\\\"1995\\\",\\\"value\\\":41.9},{\\\"name\\\":\\\"1996\\\",\\\"value\\\":61},{\\\"name\\\":\\\"1997\\\",\\\"value\\\":17},{\\\"name\\\":\\\"1998\\\",\\\"value\\\":19},{\\\"name\\\":\\\"1999\\\",\\\"value\\\":113}]\",\"size\":{\"width\":348.7654320987655,\"height\":270.3703703703704},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"},\"show\":true},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":30,\"containLabel\":true},\"series\":[],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045909635072', NULL, '1212561321588641792', NULL, 'JPie', '{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"vivo\\\",\\\"value\\\":1048},{\\\"name\\\":\\\"oppo\\\",\\\"value\\\":735},{\\\"name\\\":\\\"苹果\\\",\\\"value\\\":580},{\\\"name\\\":\\\"小米\\\",\\\"value\\\":484},{\\\"name\\\":\\\"三星\\\",\\\"value\\\":300}]\",\"size\":{\"width\":351.2345679012345,\"height\":197.5308641975309},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"option\":{\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#1e90ff\"},{\"color1\":\"#90ee90\",\"color\":\"#90ee90\"},{\"color1\":\"#00ced1\",\"color\":\"#00ced1\"},{\"color1\":\"#e2bd84\",\"color\":\"#e2bd84\"},{\"color1\":\"#7a90e0\",\"color\":\"#7a90e0\"},{\"color1\":\"#3ba272\",\"color\":\"#3ba272\"},{\"color1\":\"#2be7ff\",\"color\":\"#2be7ff\"},{\"color1\":\"#0a8ada\",\"color\":\"#0a8ada\"},{\"color1\":\"#ffd700\",\"color\":\"#ffd700\"}],\"grid\":{\"top\":53,\"left\":43,\"show\":false},\"legend\":{\"orient\":\"vertical\"},\"series\":[{\"data\":[],\"name\":\"\",\"emphasis\":{\"itemStyle\":{\"shadowOffsetX\":0,\"shadowBlur\":10,\"shadowColor\":\"rgba(0, 0, 0, 0.5)\"}},\"label\":{\"show\":true},\"type\":\"pie\",\"radius\":\"50%\"}],\"tooltip\":{\"trigger\":\"item\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"outRadius\":100,\"innerRadius\":60,\"title\":{\"subtext\":\"\",\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1216638045918023680', NULL, '1212561321588641792', NULL, 'JBar', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[],\"dataSetName\":\"拨打电话排行榜\",\"chartData\":\"[{\\\"name\\\":\\\"苹果\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":1000},{\\\"name\\\":\\\"三星\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":5400},{\\\"name\\\":\\\"小米\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":800},{\\\"name\\\":\\\"oppo\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":400},{\\\"name\\\":\\\"vivo\\\",\\\"type\\\":\\\"手机品牌\\\",\\\"value\\\":10000}]\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"String\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"维度\"},{\"mapping\":\"value\",\"filed\":\"数值\"}],\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/26/activering\",\"drillData\":[],\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"width\":356.17283950617286,\"height\":218.51851851851853},\"dataSetId\":\"1011861146144657408\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"dataSetIzAgent\":\"0\",\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"lineStyle\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":40,\"containLabel\":true},\"series\":[{\"barWidth\":40,\"data\":[],\"itemStyle\":{\"color\":\"#64b5f6\",\"borderRadius\":0},\"label\":{\"position\":\"top\"},\"type\":\"bar\"}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-05-19 16:52:04', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312761606144', NULL, '1228912868522151936', NULL, 'JCustomEchart', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":300,\"customEchartOption\":\"\",\"url\":\"\",\"timeOut\":0,\"size\":{\"width\":612.0555555555555,\"height\":463},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"customRenderType\":\"html\",\"customHtmlContent\":\"\\n\\n\\n\\n \\n \\n\\n \\n
显隐
\\n
\\n \\n \\n
\\n
\\n\\n \\n
位置 / 尺寸
\\n
\\n \\n \\n
\\n
\\n\\n \\n
配置(深合并 config)
\\n
\\n \\n \\n
\\n
\\n\\n \\n
数据 / 主题(新增)
\\n
\\n \\n \\n \\n
\\n
\\n\\n \\n
读取(get)
\\n
\\n \\n
\\n
点击「读取目标状态」查看 JLink.get 返回...
\\n
\\n\\n \\n\",\"option\":{\"title\":{\"textAlign\":\"left\",\"show\":false,\"text\":\"\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312782577664', NULL, '1228912868522151936', NULL, 'JArea', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[],\"dataSetName\":\"联动演示-品类销售-源\",\"chartData\":\"[{\\\"value\\\":1048,\\\"name\\\":\\\"华为\\\"},{\\\"value\\\":605,\\\"name\\\":\\\"vivo\\\"},{\\\"value\\\":580,\\\"name\\\":\\\"oppo\\\"},{\\\"value\\\":484,\\\"name\\\":\\\"苹果\\\"},{\\\"value\\\":300,\\\"name\\\":\\\"小米\\\"}]\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"String\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"维度\"},{\"mapping\":\"value\",\"filed\":\"数值\"}],\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/category_sales\",\"drillData\":[],\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"height\":300},\"dataSetId\":\"1225719143696388096\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"dataSetIzAgent\":\"0\",\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#D0021B\"},{\"color1\":\"#90ee90\",\"color\":\"#4A4A4A\"},{\"color1\":\"#00ced1\",\"color\":\"#00CED1\"},{\"color1\":\"#e2bd84\",\"color\":\"#F8E71C\"},{\"color1\":\"#7a90e0\",\"color\":\"#7A90E0\"},{\"color1\":\"#3ba272\",\"color\":\"#8B572A\"},{\"color1\":\"#2be7ff\",\"color\":\"#D0021B\"},{\"color1\":\"#0a8ada\",\"color\":\"#417505\"},{\"color1\":\"#ffd700\",\"color\":\"#FFD700\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"data\":[],\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"boundaryGap\":false,\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":40,\"containLabel\":true},\"series\":[{\"areaStyleOpacity\":0.5,\"areaStyle\":{},\"data\":[],\"label\":{\"position\":\"top\"},\"type\":\"line\"}],\"tooltip\":{\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"面积图\",\"textStyle\":{\"color\":\"#EEF1FA\",\"fontWeight\":\"normal\"},\"subtextStyle\":{\"color\":\"#EEF1FA\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312795160576', NULL, '1228912868522151936', NULL, 'JCustomEchart', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[{\"defaultVal\":\"\",\"label\":\"品类\",\"text\":\"品类\",\"type\":\"string\",\"value\":\"category\"}],\"dataSetName\":\"联动演示-月度趋势-目标1\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"Integer\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"customRenderType\":\"html\",\"customHtmlContent\":\"\\n\\n\\t\\n\\t\\t\\n\\t\\t联动示例\\n\\t\\t\\n\\t\\n\\t\\n\\t\\t被大屏内其他组件联动
\\n\\t\\t数据来自配置的数据集,前两列分别作为名称和数值
\\n\\t\\t\\n\\t\\t\\n\\t\\n\\n\",\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/category_trend?category=${category}\",\"drillData\":[],\"viewLoading\":true,\"customEchartOption\":\"\",\"url\":\"\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"height\":300},\"dataSetId\":\"1225719210507456512\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"linkType\":\"comp\",\"dataSetIzAgent\":\"0\",\"option\":{\"title\":{\"textAlign\":\"left\",\"show\":false,\"text\":\"\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312807743488', NULL, '1228912868522151936', NULL, 'JPie', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[],\"dataSetName\":\"联动演示-品类销售-源\",\"chartData\":\"[{\\\"value\\\":1048,\\\"name\\\":\\\"vivo\\\"},{\\\"value\\\":735,\\\"name\\\":\\\"oppo\\\"},{\\\"value\\\":580,\\\"name\\\":\\\"苹果\\\"},{\\\"value\\\":484,\\\"name\\\":\\\"小米\\\"},{\\\"value\\\":300,\\\"name\\\":\\\"三星\\\"}]\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"String\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"维度\"},{\"mapping\":\"value\",\"filed\":\"数值\"}],\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/category_sales\",\"drillData\":[],\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"height\":300},\"dataSetId\":\"1225719143696388096\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"comp\",\"linkageConfig\":[{\"linkageId\":\"a2e44d10-1988-4e23-80ea-bdbfa7330c0f\",\"linkage\":[{\"source\":\"name\",\"target\":\"category\"}]}],\"dataSetIzAgent\":\"0\",\"option\":{\"customColor\":[{\"color1\":\"#1e90ff\",\"color\":\"#1e90ff\"},{\"color1\":\"#90ee90\",\"color\":\"#90ee90\"},{\"color1\":\"#00ced1\",\"color\":\"#00ced1\"},{\"color1\":\"#e2bd84\",\"color\":\"#e2bd84\"},{\"color1\":\"#7a90e0\",\"color\":\"#7a90e0\"},{\"color1\":\"#3ba272\",\"color\":\"#3ba272\"},{\"color1\":\"#2be7ff\",\"color\":\"#2be7ff\"},{\"color1\":\"#0a8ada\",\"color\":\"#0a8ada\"},{\"color1\":\"#ffd700\",\"color\":\"#ffd700\"}],\"grid\":{\"top\":53,\"left\":43,\"show\":false},\"legend\":{\"orient\":\"vertical\"},\"series\":[{\"data\":[],\"name\":\"\",\"emphasis\":{\"itemStyle\":{\"shadowOffsetX\":0,\"shadowBlur\":10,\"shadowColor\":\"rgba(0, 0, 0, 0.5)\"}},\"label\":{\"show\":true},\"type\":\"pie\",\"radius\":\"50%\"}],\"tooltip\":{\"trigger\":\"item\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"outRadius\":100,\"innerRadius\":60,\"title\":{\"subtext\":\"\",\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312816132096', NULL, '1228912868522151936', NULL, 'JCustomEchart', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[{\"defaultVal\":\"\",\"label\":\"区域编码\",\"text\":\"区域编码\",\"type\":\"string\",\"value\":\"region\"}],\"dataSetName\":\"钻取演示-区域销售-3级\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"Integer\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"customRenderType\":\"html\",\"customHtmlContent\":\"联动示例钻取
数据来自配置的数据集,前两列分别作为名称和数值
\",\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/drill_demo?region=${region}\",\"drillData\":[{\"source\":\"name\",\"target\":\"region\"}],\"viewLoading\":true,\"customEchartOption\":\"\",\"url\":\"\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"height\":300},\"dataSetId\":\"1225728165669457920\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"linkType\":\"comp\",\"dataSetIzAgent\":\"0\",\"option\":{\"title\":{\"textAlign\":\"left\",\"show\":false,\"text\":\"\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312824520704', NULL, '1228912868522151936', NULL, 'JBar', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[{\"defaultVal\":\"\",\"label\":\"品类\",\"text\":\"品类\",\"type\":\"string\",\"value\":\"category\"}],\"dataSetName\":\"联动演示-月度趋势-目标1\",\"chartData\":\"[{\\\"name\\\":\\\"苹果\\\",\\\"value\\\":1000,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"三星\\\",\\\"value\\\":5400,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"小米\\\",\\\"value\\\":800,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"oppo\\\",\\\"value\\\":400,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"vivo\\\",\\\"value\\\":10000,\\\"type\\\":\\\"手机品牌\\\"}]\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"Integer\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"维度\"},{\"mapping\":\"value\",\"filed\":\"数值\"}],\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/category_trend?category=${category}\",\"drillData\":[],\"viewLoading\":true,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"dataSetMethod\":\"get\",\"timeOut\":0,\"size\":{\"width\":550.6111111111111,\"height\":364.22222222222223},\"dataSetId\":\"1225719210507456512\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"dataSetIzAgent\":\"0\",\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"lineStyle\":{\"color\":\"#EEF1FA\"},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#EEF1FA\"}},\"nameTextStyle\":{\"color\":\"#EEF1FA\"}},\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":40,\"containLabel\":true},\"series\":[{\"barWidth\":13,\"data\":[],\"itemStyle\":{\"color\":\"#64B5F6\",\"borderRadius\":0},\"label\":{\"position\":\"top\"},\"type\":\"bar\"}],\"tooltip\":{\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312841297920', NULL, '1228912868522151936', NULL, 'JCustomEchart', '{\"borderColor\":\"#FFFFFF00\",\"paramOption\":[],\"dataSetName\":\"联动演示-品类销售-源\",\"fieldOption\":[{\"show\":\"Y\",\"label\":\"name\",\"text\":\"name\",\"type\":\"String\",\"value\":\"name\"},{\"show\":\"Y\",\"label\":\"value\",\"text\":\"value\",\"type\":\"String\",\"value\":\"value\"}],\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"customRenderType\":\"html\",\"customHtmlContent\":\"联动示例点击下方色块联动大屏其他图表
数据来自配置的数据集,点击任一色块按该项 name 触发联动
\",\"dataType\":2,\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/51/drilling/category_sales\",\"drillData\":[],\"viewLoading\":true,\"customEchartOption\":\"\",\"dataSetMethod\":\"get\",\"size\":{\"width\":472.22222222222223,\"height\":302.77777777777777},\"dataSetId\":\"1225719143696388096\",\"dataSetType\":\"api\",\"background\":\"#FFFFFF00\",\"w\":450,\"linkType\":\"comp\",\"linkageConfig\":[{\"linkageId\":\"a2e94405-c1e8-4fbf-8d49-3190dd0ab978\",\"linkage\":[{\"source\":\"name\",\"target\":\"category\"}]}],\"dataSetIzAgent\":\"0\",\"option\":{\"title\":{\"textAlign\":\"left\",\"show\":false,\"text\":\"\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312853880832', NULL, '1228912868522151936', NULL, 'JDragBorder', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1311,\"height\":483.6666666666667},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"option\":{\"dur\":3,\"backgroundColor\":\"#ffffff00\",\"mainColor\":\"#83bff6\",\"titleWidth\":250,\"type\":\"12\",\"title\":\"边框\",\"subColor\":\"#00CED1\",\"reverse\":false}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312866463744', NULL, '1228912868522151936', NULL, 'JDragBorder', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":546.8888888888889,\"height\":586.7777777777778},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"option\":{\"dur\":3,\"backgroundColor\":\"#ffffff00\",\"mainColor\":\"#83bff6\",\"titleWidth\":250,\"type\":\"12\",\"title\":\"边框\",\"subColor\":\"#00CED1\",\"reverse\":false}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1229647312879046656', NULL, '1228912868522151936', NULL, 'JDragBorder', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":533.1666666666666,\"height\":759.1111111111111},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"dataType\":1,\"h\":300,\"option\":{\"dur\":3,\"backgroundColor\":\"#ffffff00\",\"mainColor\":\"#83bff6\",\"titleWidth\":250,\"type\":\"12\",\"title\":\"边框\",\"subColor\":\"#00CED1\",\"reverse\":false}}', 'admin', '2026-06-24 14:26:15', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796138569728', NULL, '1231392793810731008', NULL, 'JScrollBoard', '{\"dataType\": 1, \"timeOut\": 0, \"size\": {\"width\": 730, \"height\": 268}, \"chart\": {\"subclass\": \"JScrollBoard\", \"category\": \"Common\"}, \"option\": {\"index\": false, \"headShow\": true, \"header\": [{\"label\": \"时间\", \"key\": \"\", \"width\": 70}, {\"label\": \"事件类型\", \"key\": \"\", \"width\": 100}, {\"label\": \"泊位\", \"key\": \"\", \"width\": 70}, {\"label\": \"影响等级\", \"key\": \"\", \"width\": 80}, {\"label\": \"处置状态\", \"key\": \"\", \"width\": 80}], \"headerBGC\": \"#1e3048\", \"headerHeight\": 38, \"waitTime\": 2000, \"rowNum\": 5, \"carousel\": \"single\", \"hoverPause\": true, \"indexWidth\": 80, \"oddRowBGC\": \"#1e3048aa\", \"evenRowBGC\": \"#1e304833\", \"headFontSize\": 14, \"bodyFontSize\": 12, \"card\": {\"title\": \"\", \"extra\": \"\", \"rightHref\": \"\", \"size\": \"default\"}, \"title\": {\"text\": \"\", \"textAlign\": \"left\", \"show\": true, \"textStyle\": {\"color\": \"#e0e8f0\", \"fontWeight\": \"normal\"}}, \"headerFontColor\": \"#5ba8f0\", \"fontColor\": \"#c0d4ee\", \"align\": [\"center\", \"center\", \"center\", \"center\", \"center\"]}, \"chartData\": \"[[\\\"08:32\\\", \\\"船舶靠泊\\\", \\\"A3泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"09:15\\\", \\\"桥吊故障\\\", \\\"B1泊位\\\", \\\"高\\\", \\\"处置中\\\"], [\\\"10:08\\\", \\\"集装箱移位\\\", \\\"C2堆场\\\", \\\"中\\\", \\\"已完成\\\"], [\\\"11:22\\\", \\\"船舶离港\\\", \\\"A5泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"12:05\\\", \\\"堆场拥堵预警\\\", \\\"D区\\\", \\\"中\\\", \\\"处置中\\\"], [\\\"13:40\\\", \\\"船舶靠泊\\\", \\\"B3泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"14:18\\\", \\\"冷藏箱断电\\\", \\\"E区\\\", \\\"高\\\", \\\"处置中\\\"], [\\\"15:02\\\", \\\"船舶离港\\\", \\\"A1泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"15:55\\\", \\\"桥吊检修完成\\\", \\\"B1泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"16:30\\\", \\\"危险品申报\\\", \\\"C5泊位\\\", \\\"高\\\", \\\"处置中\\\"], [\\\"17:12\\\", \\\"船舶靠泊\\\", \\\"A2泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"18:08\\\", \\\"堆场设备故障\\\", \\\"B区\\\", \\\"中\\\", \\\"处置中\\\"], [\\\"19:25\\\", \\\"船舶离港\\\", \\\"B4泊位\\\", \\\"低\\\", \\\"已完成\\\"], [\\\"20:40\\\", \\\"天气预警\\\", \\\"全港\\\", \\\"高\\\", \\\"待处置\\\"], [\\\"21:15\\\", \\\"船舶靠泊\\\", \\\"A4泊位\\\", \\\"低\\\", \\\"已完成\\\"]]\", \"linkageConfig\": [], \"turnConfig\": {\"url\": \"\", \"type\": \"_blank\"}, \"linkType\": \"url\", \"w\": 730, \"h\": 268, \"url\": \"http://api.jeecg.com/mock/33/chart\", \"background\": \"#FFFFFF00\", \"borderColor\": \"#FFFFFF00\"}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796180512768', NULL, '1231392793810731008', NULL, 'JBar', '{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":268,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"00:00\\\", \\\"value\\\": 12}, {\\\"name\\\": \\\"01:00\\\", \\\"value\\\": 8}, {\\\"name\\\": \\\"02:00\\\", \\\"value\\\": 5}, {\\\"name\\\": \\\"03:00\\\", \\\"value\\\": 3}, {\\\"name\\\": \\\"04:00\\\", \\\"value\\\": 6}, {\\\"name\\\": \\\"05:00\\\", \\\"value\\\": 10}, {\\\"name\\\": \\\"06:00\\\", \\\"value\\\": 18}, {\\\"name\\\": \\\"07:00\\\", \\\"value\\\": 25}, {\\\"name\\\": \\\"08:00\\\", \\\"value\\\": 32}, {\\\"name\\\": \\\"09:00\\\", \\\"value\\\": 38}, {\\\"name\\\": \\\"10:00\\\", \\\"value\\\": 42}, {\\\"name\\\": \\\"11:00\\\", \\\"value\\\": 36}, {\\\"name\\\": \\\"12:00\\\", \\\"value\\\": 28}, {\\\"name\\\": \\\"13:00\\\", \\\"value\\\": 22}, {\\\"name\\\": \\\"14:00\\\", \\\"value\\\": 30}, {\\\"name\\\": \\\"15:00\\\", \\\"value\\\": 35}, {\\\"name\\\": \\\"16:00\\\", \\\"value\\\": 40}, {\\\"name\\\": \\\"17:00\\\", \\\"value\\\": 33}, {\\\"name\\\": \\\"18:00\\\", \\\"value\\\": 26}, {\\\"name\\\": \\\"19:00\\\", \\\"value\\\": 20}, {\\\"name\\\": \\\"20:00\\\", \\\"value\\\": 15}, {\\\"name\\\": \\\"21:00\\\", \\\"value\\\": 18}, {\\\"name\\\": \\\"22:00\\\", \\\"value\\\": 22}, {\\\"name\\\": \\\"23:00\\\", \\\"value\\\": 16}]\",\"size\":{\"width\":1140,\"height\":268},\"background\":\"#FFFFFF00\",\"w\":1140,\"customOption\":\"option.legend = {\\\"textStyle\\\": {\\\"color\\\": \\\"#607890\\\"}, \\\"right\\\": 10, \\\"top\\\": 5};\",\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JBar\",\"category\":\"Bar\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"lineStyle\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1e3048\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#4a9eff\",\"color\":\"#4a9eff\"},{\"color1\":\"#f7c948\",\"color\":\"#f7c948\"},{\"color1\":\"#5be5a6\",\"color\":\"#5be5a6\"},{\"color1\":\"#3db8d6\",\"color\":\"#3db8d6\"},{\"color1\":\"#7c6cf0\",\"color\":\"#7c6cf0\"},{\"color1\":\"#ff9f43\",\"color\":\"#ff9f43\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#20b2aa\",\"color\":\"#20b2aa\"},{\"color1\":\"#36d7b7\",\"color\":\"#36d7b7\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1e3048\"}}},\"color\":[\"#4a9eff\",\"#f7c948\",\"#5be5a6\",\"#3db8d6\",\"#7c6cf0\",\"#ff9f43\",\"#f47a75\",\"#20b2aa\",\"#36d7b7\"],\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"show\":false,\"right\":40,\"containLabel\":true},\"series\":[{\"barWidth\":40,\"data\":[],\"itemStyle\":{\"borderRadius\":0,\"color\":\"#4a9eff\",\"shadowBlur\":4,\"shadowColor\":\"rgba(0,0,0,0.3)\"},\"label\":{\"position\":\"top\"},\"type\":\"bar\"}],\"tooltip\":{\"backgroundColor\":\"#0c1a2ecc\",\"borderColor\":\"#1e3048\",\"borderWidth\":1,\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#EEF1FA\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"24小时进出港船次分布\",\"textStyle\":{\"color\":\"#5ba8f0\",\"fontSize\":13,\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796193095680', NULL, '1231392793810731008', NULL, 'JMultipleLine', '{\"borderColor\":\"#FFFFFF00\",\"markLineConfig\":{\"show\":false,\"markLine\":[]},\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"分组\"},{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":160,\"url\":\"http://api.jeecg.com/mock/26/stackedBar\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\": \\\"06-24\\\", \\\"value\\\": 18200, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-24\\\", \\\"value\\\": 16500, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-25\\\", \\\"value\\\": 19500, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-25\\\", \\\"value\\\": 17800, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-26\\\", \\\"value\\\": 20800, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-26\\\", \\\"value\\\": 19200, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-27\\\", \\\"value\\\": 17600, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-27\\\", \\\"value\\\": 20100, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-28\\\", \\\"value\\\": 22100, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-28\\\", \\\"value\\\": 18500, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-29\\\", \\\"value\\\": 19800, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-29\\\", \\\"value\\\": 21300, \\\"type\\\": \\\"卸船量\\\"}, {\\\"name\\\": \\\"06-30\\\", \\\"value\\\": 23500, \\\"type\\\": \\\"装船量\\\"}, {\\\"name\\\": \\\"06-30\\\", \\\"value\\\": 20800, \\\"type\\\": \\\"卸船量\\\"}]\",\"size\":{\"width\":600,\"height\":160},\"background\":\"#FFFFFF00\",\"w\":600,\"customOption\":\"option.legend = {\\\"textStyle\\\": {\\\"color\\\": \\\"#607890\\\"}, \\\"right\\\": 10, \\\"top\\\": 5};\",\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JMultipleLine\",\"category\":\"Line\"},\"option\":{\"yAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1e3048\"}},\"splitLine\":{\"lineStyle\":{\"color\":\"#8F8D8D\"},\"show\":false,\"interval\":2},\"yUnit\":\"\"},\"customColor\":[{\"color1\":\"#36d7b7\",\"color\":\"#36d7b7\"},{\"color1\":\"#4a9eff\",\"color\":\"#4a9eff\"},{\"color1\":\"#f7c948\",\"color\":\"#f7c948\"},{\"color1\":\"#5be5a6\",\"color\":\"#5be5a6\"},{\"color1\":\"#3db8d6\",\"color\":\"#3db8d6\"},{\"color1\":\"#7c6cf0\",\"color\":\"#7c6cf0\"},{\"color1\":\"#ff9f43\",\"color\":\"#ff9f43\"},{\"color1\":\"#f47a75\",\"color\":\"#f47a75\"},{\"color1\":\"#20b2aa\",\"color\":\"#20b2aa\"}],\"xAxis\":{\"axisLabel\":{\"color\":\"#EEF1FA\"},\"axisLine\":{\"lineStyle\":{\"color\":\"#1e3048\"}}},\"color\":[\"#36d7b7\",\"#4a9eff\",\"#f7c948\",\"#5be5a6\",\"#3db8d6\",\"#7c6cf0\",\"#ff9f43\",\"#f47a75\",\"#20b2aa\"],\"grid\":{\"top\":30,\"left\":0,\"bottom\":18,\"right\":40,\"containLabel\":true},\"series\":[{\"lineType\":\"line\",\"label\":{\"position\":\"top\"},\"type\":\"line\"}],\"tooltip\":{\"backgroundColor\":\"#0c1a2ecc\",\"borderColor\":\"#1e3048\",\"borderWidth\":1,\"axisPointer\":{\"label\":{\"backgroundColor\":\"#333\",\"show\":true},\"type\":\"shadow\"},\"trigger\":\"axis\",\"textStyle\":{\"color\":\"#d8e8f4\"}},\"title\":{\"textAlign\":\"left\",\"show\":true,\"text\":\"近7天装卸箱量对比\",\"textStyle\":{\"color\":\"#5ba8f0\",\"fontSize\":13,\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
@@ -5541,6 +5570,13 @@ INSERT INTO `onl_drag_page_comp` VALUES ('1231392796407005184', NULL, '123139279
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796415393792', NULL, '1231392793810731008', NULL, 'JDragDecoration', '{\"dataType\": 1, \"timeOut\": 0, \"size\": {\"width\": 220, \"height\": 42}, \"chart\": {\"subclass\": \"JDragDecoration\", \"category\": \"Decoration\"}, \"option\": {\"type\": \"5\", \"title\": \"\", \"mainColor\": \"#05f8d6\", \"subColor\": \"#0082fc\", \"reverse\": false, \"dur\": 3, \"fontSize\": 15}, \"chartData\": [], \"linkageConfig\": [], \"turnConfig\": {\"url\": \"\", \"type\": \"_blank\"}, \"linkType\": \"url\", \"background\": \"#FFFFFF00\", \"borderColor\": \"#FFFFFF00\", \"w\": 220, \"h\": 42}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796419588096', NULL, '1231392793810731008', NULL, 'JDragDecoration', '{\"dataType\": 1, \"timeOut\": 0, \"size\": {\"width\": 220, \"height\": 42}, \"chart\": {\"subclass\": \"JDragDecoration\", \"category\": \"Decoration\"}, \"option\": {\"type\": \"5\", \"title\": \"\", \"mainColor\": \"#05f8d6\", \"subColor\": \"#0082fc\", \"reverse\": false, \"dur\": 3, \"fontSize\": 15}, \"chartData\": [], \"linkageConfig\": [], \"turnConfig\": {\"url\": \"\", \"type\": \"_blank\"}, \"linkType\": \"url\", \"background\": \"#FFFFFF00\", \"borderColor\": \"#FFFFFF00\", \"w\": 220, \"h\": 42}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1231392796427976704', NULL, '1231392793810731008', NULL, 'JDragBorder', '{\"dataType\": 1, \"timeOut\": 0, \"size\": {\"width\": 1920, \"height\": 1080}, \"chart\": {\"subclass\": \"JDragBorder\", \"category\": \"Border\"}, \"option\": {\"type\": \"5\", \"title\": \"边框\", \"titleWidth\": 250, \"mainColor\": \"#05f8d6\", \"subColor\": \"#0082fc\", \"backgroundColor\": \"#FFFFFF00\", \"reverse\": false, \"dur\": 3}, \"chartData\": [], \"linkageConfig\": [], \"turnConfig\": {\"url\": \"\", \"type\": \"_blank\"}, \"linkType\": \"url\", \"background\": \"#FFFFFF00\", \"borderColor\": \"#FFFFFF00\", \"w\": 1920, \"h\": 1080}', 'admin', '2026-06-29 10:02:11', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823161274368', NULL, '1229579046974345216', NULL, 'JCustomEchart', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":300,\"customEchartOption\":\"\",\"url\":\"\",\"timeOut\":0,\"size\":{\"width\":979.1666666666667,\"height\":712.5},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":450,\"customRenderType\":\"html\",\"customHtmlContent\":\"\\n\\n\\n\\n \\n \\n 3D 地球 + 中国 3D 地图(纯 HTML 版)\\n\\n \\n\\n \\n\\n\\n\\n\\n\\n\\n \\n \\n\\n \\n \\n\\n \\n \\n
\\n \\n
\\n ‹ 返回全球地图\\n
\\n
\\n
\\n\\n \\n \\n\\n \\n \\n
\\n
\\n 标题内容\\n TITLE CONTENT\\n
\\n
\\n 关闭 ×\\n \\n
\\n
\\n
\\n
\\n 事件名称\\n 标题名称内容详情\\n
\\n
\\n 发生时间\\n 2024.03.18\\n
\\n
\\n 处理速度\\n \\n \\n 32%\\n \\n
\\n
\\n
\\n\\n \\n \\n\\n\\n \\n \\n\\n \\n \\n\\n \\n\\n \\n \\n\\n \\n \\n\\n\\n\",\"option\":{\"title\":{\"textAlign\":\"left\",\"show\":false,\"text\":\"\"},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823345823744', NULL, '1229579046974345216', NULL, 'JCurrentTime', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":50,\"url\":\"http://api.jeecg.com/mock/42/nav\",\"timeOut\":0,\"chartData\":\"\",\"size\":{\"width\":420,\"height\":50},\"background\":\"#FFFFFF00\",\"w\":420,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JCurrentTime\",\"category\":\"Time\"},\"option\":{\"hourlySystem\":\"24\",\"format\":\"YYYY-MM-DD HH:mm:ss\",\"body\":{\"color\":\"#CFE6FF\",\"text\":\"\",\"fontWeight\":\"normal\"},\"showWeek\":\"show\",\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823350018048', NULL, '1229579046974345216', NULL, 'JText', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":50,\"viewLoading\":true,\"timeOut\":0,\"chartData\":\"{\\n \\\"value\\\": \\\"全球销售运营大屏 · 实时驾驶舱\\\"\\n}\",\"size\":{\"width\":840,\"height\":111.11111111111111},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":840,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JText\",\"category\":\"Text\"},\"option\":{\"body\":{\"color\":\"#40A9FF\",\"textAlign\":\"center\",\"gradient\":{\"endColor\":\"#0066CC\",\"type\":\"linear\",\"enabled\":true,\"startColor\":\"#00D4FF\",\"direction\":\"to bottom\"},\"letterSpacing\":4,\"fontSize\":44,\"text\":\"全国销售运营大屏 · 实时驾驶舱\",\"fontWeight\":\"bold\"}}}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823354212352', NULL, '1229579046974345216', NULL, 'JDragDecoration', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":70,\"timeOut\":0,\"chartData\":\"[]\",\"size\":{\"width\":480,\"height\":70},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":480,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JDragDecoration\",\"category\":\"Decoration\"},\"option\":{\"dur\":3,\"mainColor\":\"#1890FF\",\"type\":\"6\",\"subColor\":\"#40A9FF\",\"reverse\":true}}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823358406656', NULL, '1229579046974345216', NULL, 'JDragDecoration', '{\"borderColor\":\"#FFFFFF00\",\"dataType\":1,\"h\":70,\"timeOut\":0,\"chartData\":\"[]\",\"size\":{\"width\":480,\"height\":70},\"background\":\"#FFFFFF00\",\"w\":480,\"turnConfig\":{\"type\":\"_blank\",\"url\":\"\"},\"linkType\":\"url\",\"linkageConfig\":[],\"chart\":{\"subclass\":\"JDragDecoration\",\"category\":\"Decoration\"},\"option\":{\"dur\":3,\"mainColor\":\"#1890FF\",\"type\":\"6\",\"subColor\":\"#40A9FF\",\"reverse\":true}}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823362600960', NULL, '1229579046974345216', NULL, 'JGroup', '{\"borderColor\":\"#FFFFFF00\",\"size\":{\"width\":1921,\"height\":918.1111111111111},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\"}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
+INSERT INTO `onl_drag_page_comp` VALUES ('1231521823366795264', NULL, '1229579046974345216', NULL, 'JGroup', '{\"borderColor\":\"#FFFFFF00\",\"size\":{},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\"}', 'admin', '2026-06-29 18:34:53', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1234373856589807616', NULL, '1067415011364732928', NULL, 'JCapsuleChart', '{\"dataMapping\":[{\"mapping\":\"name\",\"filed\":\"维度\"},{\"mapping\":\"value\",\"filed\":\"数值\"}],\"paramOption\":[],\"dataType\":2,\"dataSetName\":\"车辆归属地\",\"query\":[],\"h\":300,\"dataSetApi\":\"https://api.jeecg.com/mock/26/activering\",\"drillData\":[],\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[{\\\"name\\\":\\\"苹果\\\",\\\"value\\\":1000879,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"三星\\\",\\\"value\\\":3400879,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"小米\\\",\\\"value\\\":2300879,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"oppo\\\",\\\"value\\\":5400879,\\\"type\\\":\\\"手机品牌\\\"},{\\\"name\\\":\\\"vivo\\\",\\\"value\\\":3400879,\\\"type\\\":\\\"手机品牌\\\"}]\",\"size\":{\"width\":450,\"height\":300},\"dataSetId\":\"1011805223195824128\",\"fieldOption\":[{\"label\":\"name\",\"text\":\"name\",\"value\":\"name\"},{\"label\":\"value\",\"text\":\"value\",\"value\":\"value\"}],\"dataSetType\":\"api\",\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"seriesType\":[],\"w\":450,\"turnConfig\":{\"url\":\"\"},\"linkageConfig\":[],\"dataSetIzAgent\":\"0\",\"option\":{\"showValue\":false,\"unit\":\"\",\"customColor\":[],\"title\":{\"show\":true,\"text\":\"\",\"textStyle\":{\"color\":\"#464646\",\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-07-07 15:27:51', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1234373856707248128', NULL, '1067415011364732928', NULL, 'JDragDecoration', '{\"size\":{\"width\":421,\"height\":47},\"w\":300,\"dataType\":1,\"h\":27,\"option\":{\"dur\":3,\"mainColor\":\"#00CED1\",\"fontSize\":15,\"type\":\"10\",\"title\":\"装饰10\",\"subColor\":\"#FAD400\",\"reverse\":false}}', 'admin', '2026-07-07 15:27:51', NULL, NULL);
INSERT INTO `onl_drag_page_comp` VALUES ('1234373856744996864', NULL, '1067415011364732928', NULL, 'JRing', '{\"borderColor\":\"#FFFFFF00\",\"dataMapping\":[{\"mapping\":\"\",\"filed\":\"维度\"},{\"mapping\":\"\",\"filed\":\"数值\"}],\"dataType\":1,\"h\":300,\"url\":\"http://api.jeecg.com/mock/33/chart\",\"timeOut\":0,\"chartData\":\"[ { \\\"name\\\": \\\"客车\\\", \\\"value\\\": 1000879 }, { \\\"name\\\": \\\"轿车\\\", \\\"value\\\": 3400879 }, { \\\"name\\\": \\\"SUV\\\", \\\"value\\\": 2300879 }, { \\\"name\\\": \\\"货车\\\", \\\"value\\\": 5400879 }, { \\\"name\\\": \\\"摩托车\\\", \\\"value\\\": 3000 }, { \\\"name\\\": \\\"自行车\\\", \\\"value\\\": 2000 }]\",\"size\":{\"width\":436,\"height\":300},\"actionConfig\":{\"operateType\":\"modal\",\"modalName\":\"\",\"url\":\"\"},\"background\":\"#FFFFFF00\",\"w\":480,\"turnConfig\":{\"url\":\"\"},\"linkageConfig\":[],\"option\":{\"grid\":{\"top\":50,\"left\":50,\"show\":false},\"series\":[{\"data\":[],\"name\":\"Access From\",\"avoidLabelOverlap\":false,\"emphasis\":{\"label\":{\"color\":\"#FFFFFF\",\"show\":true,\"fontSize\":14,\"fontWeight\":\"bold\"}},\"label\":{\"color\":\"#EEF1FA\",\"show\":true,\"position\":\"center\"},\"labelLine\":{\"show\":false},\"type\":\"pie\",\"radius\":[\"40%\",\"70%\"]}],\"legend\":{\"r\":1,\"orient\":\"vertical\",\"t\":1,\"show\":false},\"tooltip\":{\"trigger\":\"item\"},\"title\":{\"show\":true,\"text\":\"\",\"textStyle\":{\"fontWeight\":\"normal\"}},\"card\":{\"rightHref\":\"\",\"size\":\"default\",\"extra\":\"\",\"title\":\"\"}}}', 'admin', '2026-07-07 15:27:51', NULL, NULL);
@@ -6382,8 +6418,9 @@ CREATE TABLE `open_api` (
`request_method` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求方法',
`request_url` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '接口地址',
`white_list` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'IP白名单,支持IP、CIDR、通配符,逗号或换行分隔',
- `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '白名单备注说明',
- `body` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求体内容',
+ `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '白名单备注说明',
+ `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '接口描述',
+ `request_body` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求体内容',
`origin_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '原始地址',
`status` int(10) NULL DEFAULT NULL COMMENT '状态',
`del_flag` int(10) NULL DEFAULT NULL COMMENT '删除标识',
@@ -6399,7 +6436,7 @@ CREATE TABLE `open_api` (
-- ----------------------------
-- Records of open_api
-- ----------------------------
-INSERT INTO `open_api` VALUES ('1922132683346649090', '根据部门查询用户', 'GET', 'TEwcXBlr', NULL, NULL, NULL, '/sys/user/queryUserByDepId', 1, 0, 'admin', '2025-05-13 11:31:58', 'admin', '2025-05-15 10:10:01', '[]', '[{\"id\": \"row_24\", \"note\": \"\", \"paramKey\": \"id\", \"required\": \"1\", \"defaultValue\": \"\"}]');
+INSERT INTO `open_api` VALUES ('1922132683346649090', '根据部门查询用户', 'GET', 'TEwcXBlr', NULL, NULL, NULL, NULL, '/sys/user/queryUserByDepId', 1, 0, 'admin', '2025-05-13 11:31:58', 'admin', '2025-05-15 10:10:01', '[]', '[{\"id\": \"row_24\", \"note\": \"\", \"paramKey\": \"id\", \"required\": \"1\", \"defaultValue\": \"\"}]');
-- ----------------------------
-- Table structure for open_api_auth
@@ -6431,6 +6468,14 @@ CREATE TABLE `open_api_log` (
`id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`api_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '接口ID',
`call_auth_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '调用ID',
+ `caller_ak` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '调用者AK',
+ `request_method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'HTTP请求方式',
+ `request_path` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求路径',
+ `ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '来源IP',
+ `request_params` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '请求参数摘要(Query String)',
+ `request_headers` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '请求头信息',
+ `response_code` int(6) NULL DEFAULT NULL COMMENT '响应状态码',
+ `error_msg` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '失败原因(认证/授权异常描述)',
`call_time` datetime NULL DEFAULT NULL COMMENT '调用时间',
`used_time` bigint(20) NULL DEFAULT NULL COMMENT '耗时',
`response_time` datetime NULL DEFAULT NULL COMMENT '响应时间',
@@ -6625,7 +6670,7 @@ CREATE TABLE `qrtz_scheduler_state` (
-- ----------------------------
-- Records of qrtz_scheduler_state
-- ----------------------------
-INSERT INTO `qrtz_scheduler_state` VALUES ('MyScheduler', 'qin1786333051631', 1786333219389, 15000);
+INSERT INTO `qrtz_scheduler_state` VALUES ('MyScheduler', 'qin1787302359792', 1787302407274, 15000);
-- ----------------------------
-- Table structure for qrtz_simple_triggers
@@ -7262,7 +7307,7 @@ CREATE TABLE `sys_data_source` (
-- ----------------------------
-- Records of sys_data_source
-- ----------------------------
-INSERT INTO `sys_data_source` VALUES ('1209779538310004737', 'local_mysql', '本地测试库', '本地数据库MySQL5.7', '4', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai', 'jeecg-boot', 'root', 'f5b6775e8d1749483f2320627de0e706', 'admin', '2019-12-25 18:14:53', 'admin', '2025-09-13 18:46:43', 'A01', 0);
+INSERT INTO `sys_data_source` VALUES ('1209779538310004737', 'local_mysql', '本地测试库', '本地数据库MySQL5.7', '4', 'com.mysql.cj.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai', 'jeecg-boot', 'root', 'f5b6775e8d1749483f2320627de0e706', 'admin', '2019-12-25 18:14:53', 'admin', '2026-08-21 14:20:19', 'A01', 0);
-- ----------------------------
-- Table structure for sys_depart
@@ -7287,6 +7332,7 @@ CREATE TABLE `sys_depart` (
`del_flag` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除状态(0,正常,1已删除)',
`qywx_identifier` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对接企业微信的ID',
`ding_identifier` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对接钉钉部门的ID',
+ `feishu_identifier` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '对接飞书的部门ID',
`create_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人',
@@ -7306,56 +7352,56 @@ CREATE TABLE `sys_depart` (
-- ----------------------------
-- Records of sys_depart
-- ----------------------------
-INSERT INTO `sys_depart` VALUES ('1582683631414632450', 'c6d7cb4deeac411cb3384b1b31278596', '销售公关岗位', NULL, NULL, 0, NULL, '3', '2', 'A01A06', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2022-10-19 18:42:37', NULL, NULL, 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958496243038556161', '', '控股集团', NULL, NULL, 0, NULL, '2', '1', 'A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:47:48', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958496444470005762', '1958496243038556161', '投资控股集团有限公司', NULL, NULL, 0, NULL, '4', '2', 'A05A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:48:34', 'admin', '2025-08-21 19:49:57', 0, 0, NULL, '');
-INSERT INTO `sys_depart` VALUES ('1958496759810363394', '1958496243038556161', '城市运营管理集团有限公司', NULL, NULL, 1, NULL, '4', '2', 'A05A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:49:49', 'admin', '2025-08-21 20:30:23', 0, 0, NULL, '');
-INSERT INTO `sys_depart` VALUES ('1958496836318662658', '1958496444470005762', '领导班子', NULL, NULL, 0, NULL, '2', '3', 'A05A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:50:08', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958496891561840641', '1958496444470005762', '办公室', NULL, NULL, 2, NULL, '2', '3', 'A05A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:50:21', 'admin', '2025-08-21 19:50:36', 0, 0, NULL, '');
-INSERT INTO `sys_depart` VALUES ('1958496943017562114', '1958496444470005762', '财务管理中心', NULL, NULL, 3, NULL, '2', '3', 'A05A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:50:33', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958497020528300033', '1958496444470005762', '投资发展部', NULL, NULL, 4, NULL, '2', '3', 'A05A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:50:51', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958497164103520258', '1958496836318662658', '董事长', NULL, NULL, 0, NULL, '3', '4', 'A05A01A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:51:26', NULL, NULL, 0, 1, '1958471111989067778', '');
-INSERT INTO `sys_depart` VALUES ('1958497256772472834', '1958496836318662658', '党委书记', NULL, NULL, 1, NULL, '3', '4', 'A05A01A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:51:48', 'admin', '2025-08-21 19:54:53', 0, 1, '1958471030867034113', '1958497164103520258');
-INSERT INTO `sys_depart` VALUES ('1958497591230468098', '1958496836318662658', '控股总经理', NULL, NULL, 3, NULL, '3', '4', 'A05A01A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:53:08', 'admin', '2025-08-21 19:54:42', 0, 1, '1958471074953363458', '1958497164103520258');
-INSERT INTO `sys_depart` VALUES ('1958497769387724802', '1958496836318662658', '纪委书记', NULL, NULL, 4, NULL, '3', '4', 'A05A01A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:53:50', 'admin', '2025-08-21 19:54:06', 0, 1, '1958471030867034113', '1958497591230468098');
-INSERT INTO `sys_depart` VALUES ('1958498187287203841', '1958496891561840641', '控股办公室主任', NULL, NULL, 1, NULL, '3', '4', 'A05A01A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:55:30', 'admin', '2025-08-21 19:55:50', 0, 1, '1958470912214368258', '1958497164103520258');
-INSERT INTO `sys_depart` VALUES ('1958498716927135745', '1958496891561840641', '副主任', NULL, NULL, 2, NULL, '3', '4', 'A05A01A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 19:57:36', 'admin', '2025-08-21 19:57:50', 0, 1, '1958470865577902082', '1958498187287203841');
-INSERT INTO `sys_depart` VALUES ('1958502219078733826', '1958496891561840641', '职员', NULL, NULL, 3, NULL, '3', '4', 'A05A01A02A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:11:31', NULL, NULL, 0, 1, '1958470823064436737', '1958498187287203841');
-INSERT INTO `sys_depart` VALUES ('1958502381062754305', '1958496943017562114', '主任', NULL, NULL, 1, NULL, '3', '4', 'A05A01A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:12:10', 'admin', '2025-08-21 20:13:13', 0, 1, '1958470912214368258', '1958502611426512898');
-INSERT INTO `sys_depart` VALUES ('1958502611426512898', '1958496836318662658', '控股副总经理', NULL, NULL, 5, NULL, '3', '4', 'A05A01A01A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:13:04', 'admin', '2025-08-21 20:27:14', 0, 1, '1958471030867034113', '1958497591230468098');
-INSERT INTO `sys_depart` VALUES ('1958502810966331393', '1958496943017562114', '副主任', NULL, NULL, 2, NULL, '3', '4', 'A05A01A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:13:52', 'admin', '2025-08-21 20:14:40', 0, 1, '1958470865577902082', '1958502381062754305');
-INSERT INTO `sys_depart` VALUES ('1958502942289989634', '1958496943017562114', '职员', NULL, NULL, 2, NULL, '3', '4', 'A05A01A03A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:14:23', 'admin', '2025-08-21 20:14:28', 0, 1, '1958470823064436737', '1958502810966331393');
-INSERT INTO `sys_depart` VALUES ('1958503159999533057', '1958497020528300033', '部长', NULL, NULL, 1, NULL, '3', '4', 'A05A01A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:15:15', NULL, NULL, 0, 1, '1958470912214368258', '1958502611426512898');
-INSERT INTO `sys_depart` VALUES ('1958503409933914114', '1958497020528300033', '副部长', NULL, NULL, 2, NULL, '3', '4', 'A05A01A04A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:16:15', NULL, NULL, 0, 1, '1958470865577902082', '1958503159999533057');
-INSERT INTO `sys_depart` VALUES ('1958503468805165058', '1958497020528300033', '员工', NULL, NULL, 3, NULL, '3', '4', 'A05A01A04A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:16:29', NULL, NULL, 0, 1, '1958470823064436737', '1958503409933914114');
-INSERT INTO `sys_depart` VALUES ('1958507136782733313', '1958496759810363394', '领导班子', NULL, NULL, 1, NULL, '2', '3', 'A05A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:31:03', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958507356253884418', '1958496759810363394', '信息技术发展有限公司', NULL, NULL, 4, NULL, '4', '3', 'A05A02A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:31:56', 'admin', '2025-08-21 21:12:57', 0, 0, NULL, '');
-INSERT INTO `sys_depart` VALUES ('1958507448138502146', '1958507136782733313', '董事长', NULL, NULL, 1, NULL, '3', '4', 'A05A02A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:32:18', 'admin', '2025-08-21 20:33:24', 0, 1, '1958471111989067778', '');
-INSERT INTO `sys_depart` VALUES ('1958507542866857985', '1958507136782733313', '副总经理', NULL, NULL, 3, NULL, '3', '4', 'A05A02A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:32:40', 'admin', '2025-08-21 20:33:26', 0, 1, '1958471030867034113', '');
-INSERT INTO `sys_depart` VALUES ('1958507650828242946', '1958507136782733313', '总经理', NULL, NULL, 2, NULL, '3', '4', 'A05A02A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 20:33:06', 'admin', '2025-08-21 20:33:20', 0, 1, '1958471074953363458', '');
-INSERT INTO `sys_depart` VALUES ('1958518943542972418', '1958507356253884418', '领导班子', NULL, NULL, 1, NULL, '2', '4', 'A05A02A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:17:58', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958519010207240193', '1958507356253884418', '综合管理部', NULL, NULL, 2, NULL, '2', '4', 'A05A02A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:18:14', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958519045623943169', '1958507356253884418', '财务部', NULL, NULL, 3, NULL, '2', '4', 'A05A02A03A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:18:23', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958519097058693121', '1958507356253884418', '软件研发部', NULL, NULL, 4, NULL, '2', '4', 'A05A02A03A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:18:35', NULL, NULL, 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('1958520331257810945', '1958496891561840641', '总工程师', NULL, NULL, 2, NULL, '3', '4', 'A05A01A02A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:23:29', 'admin', '2025-08-21 21:23:52', 0, 1, '1958471030867034113', '1958497164103520258');
-INSERT INTO `sys_depart` VALUES ('1958520788395003906', '1958496759810363394', '办公室', NULL, NULL, 2, NULL, '2', '3', 'A05A02A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:25:18', 'admin', '2025-08-21 21:26:51', 0, 0, NULL, '');
-INSERT INTO `sys_depart` VALUES ('1958520876810932225', '1958520788395003906', '总工程师', NULL, NULL, 1, NULL, '3', '4', 'A05A02A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:25:39', 'admin', '2025-08-21 21:26:25', 0, 1, '1958471030867034113', '1958507650828242946');
-INSERT INTO `sys_depart` VALUES ('1958521034948775937', '1958518943542972418', '执行董事兼总经理', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:26:17', NULL, NULL, 0, 1, '1958471111989067778', '1958520876810932225');
-INSERT INTO `sys_depart` VALUES ('1958521513564999681', '1958518943542972418', '副总经理', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:28:11', NULL, NULL, 0, 1, '1958471030867034113', '1958521034948775937');
-INSERT INTO `sys_depart` VALUES ('1958521634549698561', '1958519010207240193', '副部长', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:28:40', 'admin', '2025-08-21 21:30:15', 0, 1, '1958470865577902082', '1958521034948775937');
-INSERT INTO `sys_depart` VALUES ('1958523766002716674', '1958519010207240193', '信息归档员', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:37:08', NULL, NULL, 0, 1, '1958470823064436737', '1958521634549698561');
-INSERT INTO `sys_depart` VALUES ('1958524282631917570', '1958519045623943169', '部长', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:39:11', NULL, NULL, 0, 1, '1958470912214368258', '1958521034948775937');
-INSERT INTO `sys_depart` VALUES ('1958524369311404033', '1958519045623943169', '出纳', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:39:32', NULL, NULL, 0, 1, '1958470823064436737', '1958524282631917570');
-INSERT INTO `sys_depart` VALUES ('1958524471841165313', '1958519097058693121', '项目经理', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:39:56', NULL, NULL, 0, 1, '1958470912214368258', '1958521513564999681');
-INSERT INTO `sys_depart` VALUES ('1958524565596442626', '1958519097058693121', '软件工程师', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A04A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2025-08-21 21:40:19', NULL, NULL, 0, 1, '1958470823064436737', '1958524471841165313');
-INSERT INTO `sys_depart` VALUES ('4f1765520d6346f9bd9c79e2479e5b12', 'c6d7cb4deeac411cb3384b1b31278596', '市场部', NULL, NULL, 0, NULL, '2', '2', 'A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-20 17:15:34', 'admin', '2019-02-26 16:36:18', 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('5159cde220114246b045e574adceafe9', '6d35e179cd814e3299bd588ea7daed3f', '研发部', NULL, NULL, 0, NULL, '2', '2', 'A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-26 16:44:38', 'admin', '2019-03-07 09:36:53', 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('57197590443c44f083d42ae24ef26a2c', 'c6d7cb4deeac411cb3384b1b31278596', '研发部', NULL, NULL, 0, NULL, '2', '2', 'A01A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-21 16:14:41', 'admin', '2019-03-27 19:05:49', 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('63775228b7b041a99825f79760590b7d', '57197590443c44f083d42ae24ef26a2c', '研发经理', NULL, NULL, 0, NULL, '3', '3', 'A01A05A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2020-05-02 15:29:09', NULL, NULL, 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('67fc001af12a4f9b8458005d3f19934a', 'c6d7cb4deeac411cb3384b1b31278596', '财务部', NULL, NULL, 0, NULL, '2', '2', 'A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-21 16:14:35', 'admin', '2019-02-25 12:49:41', 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('6d35e179cd814e3299bd588ea7daed3f', '', '北京卓尔互动', NULL, NULL, 0, NULL, '2', '1', 'A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-26 16:36:39', 'admin', '2020-05-02 18:21:22', 0, 0, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('a7d7e77e06c84325a40932163adcdaa6', '6d35e179cd814e3299bd588ea7daed3f', '财务部', NULL, NULL, 0, NULL, '2', '2', 'A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-26 16:36:47', 'admin', '2022-10-14 18:57:56', 0, 1, NULL, NULL);
-INSERT INTO `sys_depart` VALUES ('c6d7cb4deeac411cb3384b1b31278596', '', '北京国炬软件', NULL, NULL, 0, NULL, '2', '1', 'A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, 'admin', '2019-02-11 14:21:51', 'admin', '2020-05-02 18:21:27', 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1582683631414632450', 'c6d7cb4deeac411cb3384b1b31278596', '销售公关岗位', NULL, NULL, 0, NULL, '3', '2', 'A01A06', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2022-10-19 18:42:37', NULL, NULL, 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958496243038556161', '', '控股集团', NULL, NULL, 0, NULL, '2', '1', 'A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:47:48', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958496444470005762', '1958496243038556161', '投资控股集团有限公司', NULL, NULL, 0, NULL, '4', '2', 'A05A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:48:34', 'admin', '2025-08-21 19:49:57', 0, 0, NULL, '');
+INSERT INTO `sys_depart` VALUES ('1958496759810363394', '1958496243038556161', '城市运营管理集团有限公司', NULL, NULL, 1, NULL, '4', '2', 'A05A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:49:49', 'admin', '2025-08-21 20:30:23', 0, 0, NULL, '');
+INSERT INTO `sys_depart` VALUES ('1958496836318662658', '1958496444470005762', '领导班子', NULL, NULL, 0, NULL, '2', '3', 'A05A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:50:08', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958496891561840641', '1958496444470005762', '办公室', NULL, NULL, 2, NULL, '2', '3', 'A05A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:50:21', 'admin', '2025-08-21 19:50:36', 0, 0, NULL, '');
+INSERT INTO `sys_depart` VALUES ('1958496943017562114', '1958496444470005762', '财务管理中心', NULL, NULL, 3, NULL, '2', '3', 'A05A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:50:33', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958497020528300033', '1958496444470005762', '投资发展部', NULL, NULL, 4, NULL, '2', '3', 'A05A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:50:51', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958497164103520258', '1958496836318662658', '董事长', NULL, NULL, 0, NULL, '3', '4', 'A05A01A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:51:26', NULL, NULL, 0, 1, '1958471111989067778', '');
+INSERT INTO `sys_depart` VALUES ('1958497256772472834', '1958496836318662658', '党委书记', NULL, NULL, 1, NULL, '3', '4', 'A05A01A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:51:48', 'admin', '2025-08-21 19:54:53', 0, 1, '1958471030867034113', '1958497164103520258');
+INSERT INTO `sys_depart` VALUES ('1958497591230468098', '1958496836318662658', '控股总经理', NULL, NULL, 3, NULL, '3', '4', 'A05A01A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:53:08', 'admin', '2025-08-21 19:54:42', 0, 1, '1958471074953363458', '1958497164103520258');
+INSERT INTO `sys_depart` VALUES ('1958497769387724802', '1958496836318662658', '纪委书记', NULL, NULL, 4, NULL, '3', '4', 'A05A01A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:53:50', 'admin', '2025-08-21 19:54:06', 0, 1, '1958471030867034113', '1958497591230468098');
+INSERT INTO `sys_depart` VALUES ('1958498187287203841', '1958496891561840641', '控股办公室主任', NULL, NULL, 1, NULL, '3', '4', 'A05A01A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:55:30', 'admin', '2025-08-21 19:55:50', 0, 1, '1958470912214368258', '1958497164103520258');
+INSERT INTO `sys_depart` VALUES ('1958498716927135745', '1958496891561840641', '副主任', NULL, NULL, 2, NULL, '3', '4', 'A05A01A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 19:57:36', 'admin', '2025-08-21 19:57:50', 0, 1, '1958470865577902082', '1958498187287203841');
+INSERT INTO `sys_depart` VALUES ('1958502219078733826', '1958496891561840641', '职员', NULL, NULL, 3, NULL, '3', '4', 'A05A01A02A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:11:31', NULL, NULL, 0, 1, '1958470823064436737', '1958498187287203841');
+INSERT INTO `sys_depart` VALUES ('1958502381062754305', '1958496943017562114', '主任', NULL, NULL, 1, NULL, '3', '4', 'A05A01A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:12:10', 'admin', '2025-08-21 20:13:13', 0, 1, '1958470912214368258', '1958502611426512898');
+INSERT INTO `sys_depart` VALUES ('1958502611426512898', '1958496836318662658', '控股副总经理', NULL, NULL, 5, NULL, '3', '4', 'A05A01A01A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:13:04', 'admin', '2025-08-21 20:27:14', 0, 1, '1958471030867034113', '1958497591230468098');
+INSERT INTO `sys_depart` VALUES ('1958502810966331393', '1958496943017562114', '副主任', NULL, NULL, 2, NULL, '3', '4', 'A05A01A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:13:52', 'admin', '2025-08-21 20:14:40', 0, 1, '1958470865577902082', '1958502381062754305');
+INSERT INTO `sys_depart` VALUES ('1958502942289989634', '1958496943017562114', '职员', NULL, NULL, 2, NULL, '3', '4', 'A05A01A03A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:14:23', 'admin', '2025-08-21 20:14:28', 0, 1, '1958470823064436737', '1958502810966331393');
+INSERT INTO `sys_depart` VALUES ('1958503159999533057', '1958497020528300033', '部长', NULL, NULL, 1, NULL, '3', '4', 'A05A01A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:15:15', NULL, NULL, 0, 1, '1958470912214368258', '1958502611426512898');
+INSERT INTO `sys_depart` VALUES ('1958503409933914114', '1958497020528300033', '副部长', NULL, NULL, 2, NULL, '3', '4', 'A05A01A04A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:16:15', NULL, NULL, 0, 1, '1958470865577902082', '1958503159999533057');
+INSERT INTO `sys_depart` VALUES ('1958503468805165058', '1958497020528300033', '员工', NULL, NULL, 3, NULL, '3', '4', 'A05A01A04A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:16:29', NULL, NULL, 0, 1, '1958470823064436737', '1958503409933914114');
+INSERT INTO `sys_depart` VALUES ('1958507136782733313', '1958496759810363394', '领导班子', NULL, NULL, 1, NULL, '2', '3', 'A05A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:31:03', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958507356253884418', '1958496759810363394', '信息技术发展有限公司', NULL, NULL, 4, NULL, '4', '3', 'A05A02A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:31:56', 'admin', '2025-08-21 21:12:57', 0, 0, NULL, '');
+INSERT INTO `sys_depart` VALUES ('1958507448138502146', '1958507136782733313', '董事长', NULL, NULL, 1, NULL, '3', '4', 'A05A02A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:32:18', 'admin', '2025-08-21 20:33:24', 0, 1, '1958471111989067778', '');
+INSERT INTO `sys_depart` VALUES ('1958507542866857985', '1958507136782733313', '副总经理', NULL, NULL, 3, NULL, '3', '4', 'A05A02A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:32:40', 'admin', '2025-08-21 20:33:26', 0, 1, '1958471030867034113', '');
+INSERT INTO `sys_depart` VALUES ('1958507650828242946', '1958507136782733313', '总经理', NULL, NULL, 2, NULL, '3', '4', 'A05A02A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 20:33:06', 'admin', '2025-08-21 20:33:20', 0, 1, '1958471074953363458', '');
+INSERT INTO `sys_depart` VALUES ('1958518943542972418', '1958507356253884418', '领导班子', NULL, NULL, 1, NULL, '2', '4', 'A05A02A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:17:58', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958519010207240193', '1958507356253884418', '综合管理部', NULL, NULL, 2, NULL, '2', '4', 'A05A02A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:18:14', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958519045623943169', '1958507356253884418', '财务部', NULL, NULL, 3, NULL, '2', '4', 'A05A02A03A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:18:23', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958519097058693121', '1958507356253884418', '软件研发部', NULL, NULL, 4, NULL, '2', '4', 'A05A02A03A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:18:35', NULL, NULL, 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('1958520331257810945', '1958496891561840641', '总工程师', NULL, NULL, 2, NULL, '3', '4', 'A05A01A02A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:23:29', 'admin', '2025-08-21 21:23:52', 0, 1, '1958471030867034113', '1958497164103520258');
+INSERT INTO `sys_depart` VALUES ('1958520788395003906', '1958496759810363394', '办公室', NULL, NULL, 2, NULL, '2', '3', 'A05A02A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:25:18', 'admin', '2025-08-21 21:26:51', 0, 0, NULL, '');
+INSERT INTO `sys_depart` VALUES ('1958520876810932225', '1958520788395003906', '总工程师', NULL, NULL, 1, NULL, '3', '4', 'A05A02A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:25:39', 'admin', '2025-08-21 21:26:25', 0, 1, '1958471030867034113', '1958507650828242946');
+INSERT INTO `sys_depart` VALUES ('1958521034948775937', '1958518943542972418', '执行董事兼总经理', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A01A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:26:17', NULL, NULL, 0, 1, '1958471111989067778', '1958520876810932225');
+INSERT INTO `sys_depart` VALUES ('1958521513564999681', '1958518943542972418', '副总经理', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A01A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:28:11', NULL, NULL, 0, 1, '1958471030867034113', '1958521034948775937');
+INSERT INTO `sys_depart` VALUES ('1958521634549698561', '1958519010207240193', '副部长', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:28:40', 'admin', '2025-08-21 21:30:15', 0, 1, '1958470865577902082', '1958521034948775937');
+INSERT INTO `sys_depart` VALUES ('1958523766002716674', '1958519010207240193', '信息归档员', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:37:08', NULL, NULL, 0, 1, '1958470823064436737', '1958521634549698561');
+INSERT INTO `sys_depart` VALUES ('1958524282631917570', '1958519045623943169', '部长', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A03A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:39:11', NULL, NULL, 0, 1, '1958470912214368258', '1958521034948775937');
+INSERT INTO `sys_depart` VALUES ('1958524369311404033', '1958519045623943169', '出纳', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A03A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:39:32', NULL, NULL, 0, 1, '1958470823064436737', '1958524282631917570');
+INSERT INTO `sys_depart` VALUES ('1958524471841165313', '1958519097058693121', '项目经理', NULL, NULL, 1, NULL, '3', '5', 'A05A02A03A04A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:39:56', NULL, NULL, 0, 1, '1958470912214368258', '1958521513564999681');
+INSERT INTO `sys_depart` VALUES ('1958524565596442626', '1958519097058693121', '软件工程师', NULL, NULL, 2, NULL, '3', '5', 'A05A02A03A04A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2025-08-21 21:40:19', NULL, NULL, 0, 1, '1958470823064436737', '1958524471841165313');
+INSERT INTO `sys_depart` VALUES ('4f1765520d6346f9bd9c79e2479e5b12', 'c6d7cb4deeac411cb3384b1b31278596', '市场部', NULL, NULL, 0, NULL, '2', '2', 'A01A03', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-20 17:15:34', 'admin', '2019-02-26 16:36:18', 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('5159cde220114246b045e574adceafe9', '6d35e179cd814e3299bd588ea7daed3f', '研发部', NULL, NULL, 0, NULL, '2', '2', 'A02A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-26 16:44:38', 'admin', '2019-03-07 09:36:53', 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('57197590443c44f083d42ae24ef26a2c', 'c6d7cb4deeac411cb3384b1b31278596', '研发部', NULL, NULL, 0, NULL, '2', '2', 'A01A05', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-21 16:14:41', 'admin', '2019-03-27 19:05:49', 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('63775228b7b041a99825f79760590b7d', '57197590443c44f083d42ae24ef26a2c', '研发经理', NULL, NULL, 0, NULL, '3', '3', 'A01A05A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2020-05-02 15:29:09', NULL, NULL, 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('67fc001af12a4f9b8458005d3f19934a', 'c6d7cb4deeac411cb3384b1b31278596', '财务部', NULL, NULL, 0, NULL, '2', '2', 'A01A04', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-21 16:14:35', 'admin', '2019-02-25 12:49:41', 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('6d35e179cd814e3299bd588ea7daed3f', '', '北京卓尔互动', NULL, NULL, 0, NULL, '2', '1', 'A02', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-26 16:36:39', 'admin', '2020-05-02 18:21:22', 0, 0, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('a7d7e77e06c84325a40932163adcdaa6', '6d35e179cd814e3299bd588ea7daed3f', '财务部', NULL, NULL, 0, NULL, '2', '2', 'A02A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-26 16:36:47', 'admin', '2022-10-14 18:57:56', 0, 1, NULL, NULL);
+INSERT INTO `sys_depart` VALUES ('c6d7cb4deeac411cb3384b1b31278596', '', '北京国炬软件', NULL, NULL, 0, NULL, '2', '1', 'A01', NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, 'admin', '2019-02-11 14:21:51', 'admin', '2020-05-02 18:21:27', 0, 0, NULL, NULL);
-- ----------------------------
-- Table structure for sys_depart_permission
@@ -7929,8 +7975,55 @@ INSERT INTO `sys_log` VALUES ('1939497644808986625', 1, '用户名: admin,登录
INSERT INTO `sys_log` VALUES ('1939497738702675969', 2, 'online表单加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.a.c()', NULL, '', NULL, 76, NULL, '2025-06-30 09:34:30', NULL, NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1939497738702675970', 2, 'online表单加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.a.c()', NULL, '', NULL, 79, NULL, '2025-06-30 09:34:30', NULL, NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('1939497738971111425', 2, 'online列表加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.a.a()', NULL, '', NULL, 172, NULL, '2025-06-30 09:34:30', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696411141152770', 2, '角色首页配置-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysRoleIndexController.queryPageList()', NULL, ' sysRoleIndex: SysRoleIndex(id=null, roleCode=null, url=null, component=null, route=null, priority=null, status=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, relationType=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@7ace1f91', NULL, 22, NULL, '2026-08-21 15:04:02', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696452048199682', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=null, name=null, postLevel=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@6a00261d', NULL, 13, NULL, '2026-08-21 15:04:12', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696459665055746', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=null, name=null, postLevel=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@1edbbd42', NULL, 10, NULL, '2026-08-21 15:04:14', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696492862971906', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=null, name=null, postLevel=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 99999 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@3c3bd2e3', NULL, 17, NULL, '2026-08-21 15:04:22', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696526803279874', 2, '职务表-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysPositionController.queryPageList()', NULL, ' sysPosition: SysPosition(id=null, code=null, name=null, postLevel=null, companyId=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@79fdbd08', NULL, 14, NULL, '2026-08-21 15:04:30', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696580179992577', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@67d61e51', NULL, 18, NULL, '2026-08-21 15:04:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090697094972088321', 2, '修改角色ID: 1501570619841810433 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 15:06:45', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090697297640857601', 2, 'online表单加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: d35109c3632c4952a19ecc094943dd71 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@40ae5c57', NULL, 130, NULL, '2026-08-21 15:07:34', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090697297666023426', 2, 'online表单加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: d35109c3632c4952a19ecc094943dd71 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@5c4f01ab', NULL, 140, NULL, '2026-08-21 15:07:34', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090697297674412033', 2, 'online列表加载,表名:test_demo,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.a()', NULL, ' code: d35109c3632c4952a19ecc094943dd71 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@33163ea0', NULL, 142, NULL, '2026-08-21 15:07:34', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090697324174024705', 2, '角色首页配置-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysRoleIndexController.queryPageList()', NULL, ' sysRoleIndex: SysRoleIndex(id=null, roleCode=null, url=null, component=null, route=null, priority=null, status=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, relationType=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@43d1ee27', NULL, 13, NULL, '2026-08-21 15:07:40', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685392964591617', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@71a4942b', NULL, 10, NULL, '2026-08-21 14:20:15', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685397796429825', 2, '多数据源管理-通过id查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryById()', NULL, ' id: 1209779538310004737', NULL, 4, NULL, '2026-08-21 14:20:17', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685409922162689', 2, '多数据源管理-编辑', 3, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.edit()', NULL, '[{\"code\":\"local_mysql\",\"dbDriver\":\"com.mysql.cj.jdbc.Driver\",\"dbType\":\"4\",\"dbUrl\":\"jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\",\"dbUsername\":\"root\",\"id\":\"1209779538310004737\",\"name\":\"本地测试库\",\"remark\":\"本地数据库MySQL5.7\",\"updateBy\":\"admin\",\"updateTime\":\"2026-08-21 14:20:19\"}]', NULL, 26, NULL, '2026-08-21 14:20:19', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685410123489281', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@11b87397', NULL, 10, NULL, '2026-08-21 14:20:19', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090686992282066945', 2, '多数据源管理-添加', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.add()', NULL, '[{\"code\":\"11\",\"createBy\":\"admin\",\"createTime\":\"2026-08-21 14:26:36\",\"dbDriver\":\"com.mysql.jdbc.Driver\",\"dbType\":\"1\",\"dbUrl\":\"jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false\",\"dbUsername\":\"11\",\"id\":\"2090686992193986562\",\"name\":\"11\",\"sysOrgCode\":\"A01A03\"}]', NULL, 32, NULL, '2026-08-21 14:26:37', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090686992525336578', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@411c853f', NULL, 17, NULL, '2026-08-21 14:26:37', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090686999320109057', 2, '多数据源管理-通过id查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryById()', NULL, ' id: 2090686992193986562', NULL, 4, NULL, '2026-08-21 14:26:38', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090687016822939650', 2, '多数据源管理-通过id删除', 4, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.delete()', NULL, ' id: 2090686992193986562', NULL, 22, NULL, '2026-08-21 14:26:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090687016999100418', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@39eff04d', NULL, 10, NULL, '2026-08-21 14:26:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090687303918854145', 2, '编码校验规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysCheckRuleController.queryPageList()', NULL, ' sysCheckRule: SysCheckRule(id=null, ruleName=null, ruleCode=null, ruleJson=null, ruleDescription=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@64c28389', NULL, 11, NULL, '2026-08-21 14:27:51', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090695597572005890', 1, '用户名: 管理员,退出成功!', NULL, 'admin', '管理员', '127.0.0.1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 15:00:48', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090695602168963074', 1, '用户名: admin,登录成功!', NULL, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 15:00:49', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090696118047383553', 2, '修改角色ID: 1501570619841810433 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 15:02:52', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090696360637538306', 2, '编码校验规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysCheckRuleController.queryPageList()', NULL, ' sysCheckRule: SysCheckRule(id=null, ruleName=null, ruleCode=null, ruleJson=null, ruleDescription=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@716b1860', NULL, 18, NULL, '2026-08-21 15:03:50', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090696364009758722', 2, '填值规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysFillRuleController.queryPageList()', NULL, ' sysFillRule: SysFillRule(id=null, ruleName=null, ruleCode=null, ruleClass=null, ruleParams=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@79014776', NULL, 11, NULL, '2026-08-21 15:03:51', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090452817159430146', 2, '编辑用户,username: ceshi', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-20 22:56:05', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090453909029036034', 2, '编辑用户,username: ceshi', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-20 23:00:25', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090454214433087490', 2, '角色首页配置-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysRoleIndexController.queryPageList()', NULL, ' sysRoleIndex: SysRoleIndex(id=null, roleCode=null, url=null, component=null, route=null, priority=null, status=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, relationType=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@401328e', NULL, 10, NULL, '2026-08-20 23:01:38', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458140922388481', 2, '角色首页配置-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysRoleIndexController.queryPageList()', NULL, ' sysRoleIndex: SysRoleIndex(id=null, roleCode=null, url=null, component=null, route=null, priority=null, status=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, relationType=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@5e3b09cd', NULL, 18, NULL, '2026-08-20 23:17:14', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458512902627329', 2, 'online列表加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.a()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@6ddd6f03', NULL, 110, NULL, '2026-08-20 23:18:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458513099759617', 2, 'online表单加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@48c70957', NULL, 165, NULL, '2026-08-20 23:18:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458513162674177', 2, 'online表单加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@60ce11d7', NULL, 169, NULL, '2026-08-20 23:18:43', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458700861972482', 2, '编码校验规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysCheckRuleController.queryPageList()', NULL, ' sysCheckRule: SysCheckRule(id=null, ruleName=null, ruleCode=null, ruleJson=null, ruleDescription=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@23397193', NULL, 24, NULL, '2026-08-20 23:19:28', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090458704259358722', 2, '填值规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysFillRuleController.queryPageList()', NULL, ' sysFillRule: SysFillRule(id=null, ruleName=null, ruleCode=null, ruleClass=null, ruleParams=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@676e92c9', NULL, 15, NULL, '2026-08-20 23:19:29', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090459035525488642', 2, '编码校验规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysCheckRuleController.queryPageList()', NULL, ' sysCheckRule: SysCheckRule(id=null, ruleName=null, ruleCode=null, ruleJson=null, ruleDescription=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@20810b5e', NULL, 8, NULL, '2026-08-20 23:20:48', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090611413423792130', 2, '编码校验规则-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysCheckRuleController.queryPageList()', NULL, ' sysCheckRule: SysCheckRule(id=null, ruleName=null, ruleCode=null, ruleJson=null, ruleDescription=null, updateBy=null, updateTime=null, createBy=null, createTime=null) pageNo: 1 pageSize: 10 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@289200ac', NULL, 10, NULL, '2026-08-21 09:26:17', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090684959902703618', 2, '修改角色ID: 1501570619841810433 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 14:18:32', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090685138500362241', 2, '修改角色ID: f6817f48af4fb3af11b9e8bf182f618b 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-21 14:19:15', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090685382441082882', 2, '多数据源管理-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryPageList()', NULL, ' sysDataSource: SysDataSource(id=null, code=null, name=null, remark=null, dbType=null, dbDriver=null, dbUrl=null, dbName=null, dbUsername=null, dbPassword=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, tenantId=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@1d3a7d2a', NULL, 26, NULL, '2026-08-21 14:20:13', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685387323252737', 2, '多数据源管理-通过id查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.queryById()', NULL, ' id: 1209779538310004737', NULL, 5, NULL, '2026-08-21 14:20:14', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090685392742293506', 2, '多数据源管理-编辑', 3, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysDataSourceController.edit()', NULL, '[{\"code\":\"local_mysql\",\"dbDriver\":\"com.mysql.cj.jdbc.Driver\",\"dbType\":\"4\",\"dbUrl\":\"jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\",\"dbUsername\":\"root\",\"id\":\"1209779538310004737\",\"name\":\"本地测试库\",\"remark\":\"本地数据库MySQL5.7\",\"updateBy\":\"admin\",\"updateTime\":\"2026-08-21 14:20:15\"}]', NULL, 34, NULL, '2026-08-21 14:20:15', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090452798306033665', 2, '角色首页配置-分页列表查询', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.system.controller.SysRoleIndexController.queryPageList()', NULL, ' sysRoleIndex: SysRoleIndex(id=null, roleCode=null, url=null, component=null, route=null, priority=null, status=null, createBy=null, createTime=null, updateBy=null, updateTime=null, sysOrgCode=null, relationType=null) pageNo: 1 pageSize: 10 req: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@7f1ff68f', NULL, 43, NULL, '2026-08-20 22:56:01', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090448470988070914', 2, 'online表单加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@10a2ec69', NULL, 282, NULL, '2026-08-20 22:38:49', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090448470988070915', 2, 'online表单加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.c()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@1abd9df', NULL, 282, NULL, '2026-08-20 22:38:49', NULL, NULL, NULL, NULL);
+INSERT INTO `sys_log` VALUES ('2090448470790938625', 2, 'online列表加载,表名:test_note,操作成功', 1, 'admin', '管理员', '0:0:0:0:0:0:0:1', 'org.jeecg.modules.online.cgform.c.b.a()', NULL, ' code: 05a3a30dada7411c9109306aa4117068 request: org.springframework.web.servlet.resource.ResourceUrlEncodingFilter$ResourceUrlEncodingRequestWrapper@494a75ea', NULL, 233, NULL, '2026-08-20 22:38:49', NULL, NULL, NULL, NULL);
INSERT INTO `sys_log` VALUES ('2086657874244362242', 2, '修改角色ID: 1501570619841810433 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-10 11:36:20', NULL, NULL, NULL, 'pc');
INSERT INTO `sys_log` VALUES ('2086657895941496835', 2, '修改角色ID: f6817f48af4fb3af11b9e8bf182f618b 的权限配置,操作人: admin', 2, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-10 11:36:25', NULL, NULL, NULL, 'pc');
+INSERT INTO `sys_log` VALUES ('2090448417317756930', 1, '用户名: admin,登录成功!', NULL, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-20 22:38:36', NULL, NULL, NULL, 'pc');
INSERT INTO `sys_log` VALUES ('2086656840839143425', 1, '用户名: admin,登录成功!', NULL, 'admin', '管理员', '0:0:0:0:0:0:0:1', NULL, NULL, NULL, NULL, NULL, NULL, '2026-08-10 11:32:14', NULL, NULL, NULL, 'pc');
-- ----------------------------
@@ -8142,8 +8235,8 @@ INSERT INTO `sys_permission` VALUES ('1438108223489040385', '1438108221551271937
INSERT INTO `sys_permission` VALUES ('1438108223661006850', '1438108221551271937', '修改密码', '/system/changePassword', 'demo/system/password/index', 1, NULL, NULL, 1, NULL, '1', 6.00, 0, 'ant-design:field-number-outlined', 1, 0, 0, NULL, NULL, 'admin', '2021-09-15 19:51:34', 'admin', '2021-09-17 15:56:46', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1438108225263230978', '1438108178010202113', '引导页', '/setup/index', 'demo/setup/index', 1, NULL, NULL, 1, NULL, '1', 12.00, 0, 'whh:paintroll', 1, 0, 0, NULL, NULL, 'admin', '2021-09-15 19:51:34', 'admin', '2021-09-17 09:02:19', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1438108225451974658', '', '关于', '/about/index', 'sys/about/index', 1, NULL, NULL, 0, NULL, '1', 13.00, 0, 'simple-icons:about-dot-me', 1, 0, 0, NULL, NULL, 'admin', '2021-09-15 19:51:34', NULL, NULL, 0, 0, '1', 0);
-INSERT INTO `sys_permission` VALUES ('1438115924159881218', '1438108183395688450', 'Tab带参1', '/testTab/id1', 'demo/feat/tab-params/index', 1, NULL, NULL, 1, NULL, '0', 0.00, 0, NULL, 1, 0, 0, NULL, NULL, 'admin', '2021-09-15 20:22:10', 'admin', '2021-09-16 14:38:32', 0, 0, '1', 0);
-INSERT INTO `sys_permission` VALUES ('1438116003012796418', '1438108183395688450', 'Tab带参2', '/feat/testTab/id2', 'demo/feat/tab-params/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-09-15 20:22:29', 'admin', '2023-08-25 13:32:42', 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1438115924159881218', '1438108183395688450', 'Tab带参1', '/testTab/id1', 'demo/feat/tab-params/index', 0, NULL, NULL, 1, NULL, '0', 0.00, 0, NULL, 1, 0, 0, NULL, NULL, 'admin', '2021-09-15 20:22:10', 'admin', '2021-09-16 14:38:32', 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('1438116003012796418', '1438108183395688450', 'Tab带参2', '/feat/testTab/id2', 'demo/feat/tab-params/index', 0, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-09-15 20:22:29', 'admin', '2023-08-25 13:32:42', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1438469604861403137', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '职务级别', '/system/position', 'system/position/index', 1, NULL, NULL, 1, NULL, '0', 5.00, 0, 'ant-design:database-filled', 1, 0, 0, NULL, NULL, 'admin', '2021-09-16 19:47:33', 'admin', '2021-09-17 15:58:22', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1438782530717495298', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '分类字典', '/system/category', 'system/category/index', 1, NULL, NULL, 1, NULL, '0', 9.00, 0, 'ant-design:group-outlined', 1, 0, 0, NULL, NULL, 'admin', '2021-09-17 16:31:01', NULL, NULL, 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1438782641187074050', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '数据字典', '/system/dict', 'system/dict/index', 1, NULL, NULL, 1, NULL, '0', 4.00, 0, 'ant-design:hdd-twotone', 0, 0, 0, 0, NULL, 'admin', '2021-09-17 16:31:27', 'admin', '2023-03-04 15:01:55', 0, 0, NULL, 0);
@@ -8172,7 +8265,7 @@ INSERT INTO `sys_permission` VALUES ('1447763172274495489', '', '统计报表',
INSERT INTO `sys_permission` VALUES ('1447763517847396354', '1447763172274495489', 'EChartDemo', '/report/chartDemo', 'report/chartdemo/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-12 11:18:15', 'jeecg', '2021-10-14 14:36:38', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1448252726202859522', '1447763172274495489', '布局统计报表', '/statisticst', 'report/statisticst/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'jeecg', '2021-10-13 19:42:12', NULL, NULL, 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1450308897429536769', '1438108197958311537', 'JVxeTable示例', '/jeecg/j-vxe-table-demo', 'demo/jeecg/JVxeTableDemo/index', 1, NULL, NULL, 1, NULL, '0', 10.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-10-19 11:52:41', 'admin', '2021-10-19 11:54:46', 0, 0, NULL, 0);
-INSERT INTO `sys_permission` VALUES ('1452508868884353026', '1866001513609637890', '报表设计器', '/jmreport', '{{ window._CONFIG[\'domianURL\'] }}/jmreport/list?token=${token}', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, '', 1, 0, 0, 0, NULL, 'admin', '2021-10-25 13:34:35', 'admin', '2025-05-22 10:53:59', 0, 0, '1', 1);
+INSERT INTO `sys_permission` VALUES ('1452508868884353026', '1866001513609637890', '报表设计器', '/jmreport', '{{ window._CONFIG[\'domianURL\'] }}/jmreport/list?token=${token}', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, '', 0, 0, 0, 0, NULL, 'admin', '2021-10-25 13:34:35', 'admin', '2025-05-22 10:53:59', 0, 0, '1', 1);
INSERT INTO `sys_permission` VALUES ('1453250018282573826', '1438108197958311537', '一对多内嵌', '/innerTable', 'demo/jeecg/InnerExpandTable', 1, NULL, NULL, 1, NULL, '0', 12.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-10-27 14:39:39', 'admin', '2021-10-27 14:40:29', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1454031324835807233', '1450308897429536769', '综合示例', '/jeecg/j-vxe-table-demo/normal', 'demo/jeecg/JVxeTableDemo/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-10-29 18:24:17', 'admin', '2021-10-29 18:25:28', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1454031820661260289', '1450308897429536769', '即时保存', '/jeecg/j-vxe-table-demo/jsbc', 'demo/jeecg/JVxeTableDemo/func-demo/JSBCDemo', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-10-29 18:26:15', NULL, NULL, 0, 0, NULL, 0);
@@ -8183,7 +8276,7 @@ INSERT INTO `sys_permission` VALUES ('1455100420297859074', '', '低代码开发
INSERT INTO `sys_permission` VALUES ('1455101470794850305', '1455100420297859074', 'Online表单开发', '/online/cgform', 'super/online/cgform/index', 1, NULL, NULL, 1, NULL, '0', 1.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-11-01 17:16:40', 'admin', '2022-04-04 18:36:25', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1455735714507472898', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '通讯录', '/address', 'system/address/index', 1, NULL, NULL, 1, NULL, '0', 20.00, 0, 'ant-design:book-outlined', 1, 0, 0, 0, NULL, 'admin', '2021-11-03 11:16:55', 'admin', '2023-10-18 13:54:58', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1457678003102879745', '1455100420297859074', '系统编码规则', '/system/fillrule', 'system/fillRule/index', 1, NULL, NULL, 1, NULL, '0', 6.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-11-08 19:54:53', 'jeecg', '2024-06-13 11:36:43', 0, 0, NULL, 0);
-INSERT INTO `sys_permission` VALUES ('1458353686530232321', '1455100420297859074', '系统校验规则', '/system/checkrule', 'system/checkRule/index', 1, NULL, NULL, 1, NULL, '0', 5.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2021-11-10 16:39:48', 'jeecg', '2024-06-13 11:36:37', 0, 0, NULL, 0);
+INSERT INTO `sys_permission` VALUES ('1458353686530232321', '1455100420297859074', '系统校验规则', '/system/checkrule', 'system/checkRule/index', 1, NULL, NULL, 1, NULL, '0', 5.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-11-10 16:39:48', 'jeecg', '2024-06-13 11:36:37', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1458389305235984385', '1438108197958311537', '一对多ERP', '/erplist', 'demo/jeecg/erplist/index', 1, NULL, NULL, 1, NULL, '0', 11.00, 0, '', 1, 0, 0, 0, NULL, 'admin', '2021-11-10 19:01:21', 'admin', '2021-11-30 14:06:53', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1460888189937176577', '1455100420297859074', 'Online报表配置', '/online/cgreport', 'super/online/cgreport/index', 1, NULL, NULL, 1, NULL, '0', 2.00, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2021-11-17 16:31:01', 'admin', '2021-12-08 10:55:32', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1461270075543347202', '1455100420297859074', 'Online表单视图', '/online/copyform/:code', 'super/online/cgform/CgformCopyList', 1, NULL, NULL, 1, NULL, '0', 99.00, 0, NULL, 1, 0, 1, 0, NULL, 'admin', '2021-11-18 17:48:30', NULL, NULL, 0, 0, NULL, 0);
@@ -8290,7 +8383,7 @@ INSERT INTO `sys_permission` VALUES ('1593161697348722689', '1439488251473993730
INSERT INTO `sys_permission` VALUES ('1593161743607701505', '1439488251473993730', '立即执行定时任务', NULL, NULL, 0, NULL, NULL, 2, 'system:quartzJob:execute', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-17 16:38:54', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1593173018886709250', '1442055284830769154', '文件oos上传', NULL, NULL, 0, NULL, NULL, 2, 'system:ossFile:upload', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-17 17:23:42', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1593185714482880514', '3f915b2769fc80648e92d04e84ca059d', '用户导出', NULL, NULL, 0, NULL, NULL, 2, 'system:user:export', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-17 18:14:09', NULL, NULL, 0, 0, '1', 0);
-INSERT INTO `sys_permission` VALUES ('1594930803956920321', '1439398677984878593', '在线用户', '/system/onlineuser', 'system/onlineuser/OnlineUserList', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:aliwangwang-outlined', 1, 0, 0, 0, NULL, 'admin', '2022-11-22 13:48:31', 'admin', '2023-03-04 15:15:36', 0, 0, NULL, 0);
+INSERT INTO `sys_permission` VALUES ('1594930803956920321', '1439398677984878593', '在线用户', '/system/onlineuser', 'system/onlineuser/OnlineUserList', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:aliwangwang-outlined', 0, 0, 0, 0, NULL, 'admin', '2022-11-22 13:48:31', 'admin', '2023-03-04 15:15:36', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1596141938193747970', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '用户设置', '/system/usersetting', 'system/usersetting/UserSetting', 1, '', NULL, 1, NULL, '0', 12.00, 0, 'ant-design:setting-twotone', 0, 0, 1, 0, NULL, 'admin', '2022-11-25 22:01:08', 'admin', '2023-03-04 15:00:26', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('1596335805278990338', '1596141938193747970', '账户设置用户编辑权限', NULL, NULL, 0, NULL, NULL, 2, 'system:user:setting:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2022-11-26 10:51:29', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('1597419994965786625', '1674708136602542082', '租户角色', '/system/role/TenantRoleList', 'system/role/TenantRoleList', 1, 'tenant-role-list', NULL, 1, NULL, '0', 3.00, 0, 'ant-design:line-height-outlined', 0, 0, 0, 0, NULL, 'admin', '2022-11-29 10:39:40', 'admin', '2025-08-12 18:23:22', 0, 0, NULL, 0);
@@ -8445,8 +8538,6 @@ INSERT INTO `sys_permission` VALUES ('2025050105554940201', '2025050105554940200
INSERT INTO `sys_permission` VALUES ('2025050105554940202', '2025050105554940200', '编辑授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-05-01 17:55:20', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2025050105554940203', '2025050105554940200', '删除授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-05-01 17:55:20', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2025050105554940204', '2025050105554940200', '批量删除授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-05-01 17:55:20', NULL, NULL, 0, 0, '1', 0);
-INSERT INTO `sys_permission` VALUES ('2025050105554940205', '2025050105554940200', '导出excel_授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-05-01 17:55:20', NULL, NULL, 0, 0, '1', 0);
-INSERT INTO `sys_permission` VALUES ('2025050105554940206', '2025050105554940200', '导入excel_授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-05-01 17:55:20', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2025070908023480210', '2012375501376606210', 'AI简历', '/airag/word', 'super/airag/wordtpl/EoaWordTemplateList', 1, NULL, NULL, 1, NULL, '1', 15.00, 0, 'ant-design:file-word-outlined', 0, 0, 0, 0, NULL, 'admin', '2025-07-09 20:02:21', 'admin', '2026-01-17 12:05:20', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2025070908023490211', '2025070908023480210', '添加word模版管理', NULL, NULL, 0, NULL, NULL, 2, 'wordtpl:template:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-07-09 20:02:21', 'admin', '2025-07-09 20:11:09', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2025070908023490212', '2025070908023480210', '编辑word模版管理', NULL, NULL, 0, NULL, NULL, 2, 'wordtpl:template:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-07-09 20:02:21', 'admin', '2025-07-09 20:11:13', 0, 0, '1', 0);
@@ -8481,6 +8572,59 @@ INSERT INTO `sys_permission` VALUES ('2041551000000000013', '1438782851980210178
INSERT INTO `sys_permission` VALUES ('2041551000000000014', '1438782851980210178', '通告导出', NULL, NULL, 0, NULL, NULL, 2, 'system:sysAnnouncement:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-04-07 00:00:00', 'admin', '2026-04-07 00:00:00', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2041551000000000015', '1438782851980210178', '通告导入', NULL, NULL, 0, NULL, NULL, 2, 'system:sysAnnouncement:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-04-07 00:00:00', 'admin', '2026-04-07 00:00:00', 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('2041551000000000016', '1438782851980210178', '同步消息通知', NULL, NULL, 0, NULL, NULL, 2, 'system:sysAnnouncement:syncNotic', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-04-07 00:00:00', 'admin', '2026-04-07 00:00:00', 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052355912047931394', '1737321792727388161', '图库配置', NULL, NULL, 0, NULL, NULL, 2, 'drag:iconlib:config', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 19:52:35', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052355973364461569', '1737321792727388161', '地图配置', NULL, NULL, 0, NULL, NULL, 2, 'drag:map:config', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 19:52:50', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240321', '1452508868884353026', '定时导出-列表', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240322', '1452508868884353026', '报表自动导出(插件)', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:plugin', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240323', '1452508868884353026', '定时导出-保存', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:save', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240324', '1452508868884353026', '定时导出-详情', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:detail', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240325', '1452508868884353026', '定时导出-删除', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240326', '1452508868884353026', '定时导出-启动/停止', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:status', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240327', '1452508868884353026', '定时导出-立即执行', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:exportJob:run', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240328', '1452508868884353026', 'SQL数据集-预览数据', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:design:loadTableData', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240329', '1452508868884353026', '新增文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240330', '1452508868884353026', '编辑文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240331', '1452508868884353026', '删除文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240332', '1452508868884353026', '还原文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:reduction', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240333', '1452508868884353026', '彻底删除文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:completelyDelete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240334', '1452508868884353026', '批量移动文件和文件夹', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:batchMove', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240335', '1452508868884353026', '文件夹排序', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:category:folderSort', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240336', '1452508868884353026', '报表组合-列表', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:reportGroup:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240337', '1452508868884353026', '报表组合-详情', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:reportGroup:detail', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240338', '1452508868884353026', '报表组合-保存', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:reportGroup:save', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2052360437613240339', '1452508868884353026', '报表组合-删除', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:reportGroup:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-07 20:10:34', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2056723764139307010', '1438108196993622018', '嵌套大屏示例', '/demo/example/example01', 'demo/example/example01', 1, '', NULL, 1, NULL, '0', 20.00, 0, 'ant-design:area-chart-outlined', 1, 0, 0, 0, NULL, 'admin', '2026-05-19 21:08:52', 'admin', '2026-05-20 09:59:05', 0, 0, NULL, 0);
+INSERT INTO `sys_permission` VALUES ('2059180471099322370', '1438782641187074050', '还原被逻辑删除的字典', NULL, NULL, 0, NULL, NULL, 2, 'system:dict:putRecycleBin', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-26 15:50:57', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2059180586211995650', '3f915b2769fc80648e92d04e84ca059d', '还原被逻辑删除的用户', NULL, NULL, 0, NULL, NULL, 2, 'system:user:putRecycleBin', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-26 15:51:24', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2059228876525760514', '1922109301837606914', '日志管理', '/openapi/log', 'openapi/OpenApiLogList', 1, '', NULL, 1, NULL, '0', 0.50, 0, NULL, 0, 0, 0, 0, NULL, 'admin', '2026-05-26 19:03:17', 'admin', '2026-05-26 19:54:52', 0, 0, NULL, 0);
+INSERT INTO `sys_permission` VALUES ('2059241964536848385', '2059228876525760514', '删除日志', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-26 19:55:18', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2059547329249923074', '1737321792727388161', '地图配置新增', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:map:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-27 16:08:42', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2059547433017004034', '1737321792727388161', '地图配置删除', NULL, NULL, 0, NULL, NULL, 2, 'jmreport:map:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-27 16:09:07', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2060333370265276417', '1737321792727388161', '获取表格原始数据', NULL, NULL, 0, NULL, NULL, 2, 'onl:drag:getRawTableData', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 20:12:09', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2060333482639069186', '1737321792727388161', '数据源查询', NULL, NULL, 0, NULL, NULL, 2, 'drag:datasource:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 20:12:36', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000010', '2025050105554940200', '查询授权管理', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000011', '2025050105554940200', '查询授权管理详情', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000012', '2025050105554940200', '生成AKSK', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_auth:genAKSK', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000013', '2025050105554940200', '保存API权限', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_permission:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000014', '2025050105554940200', '查询API权限列表', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_permission:getOpenApi', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000031', '2059228876525760514', '查询调用记录', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000032', '2059228876525760514', '添加调用记录', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000033', '2059228876525760514', '编辑调用记录', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000034', '2059228876525760514', '删除调用记录', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000035', '2059228876525760514', '批量删除调用记录', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2070435540000000036', '2059228876525760514', '查询调用记录详情', NULL, NULL, 0, NULL, NULL, 2, 'openapi:open_api_log:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-06-27 10:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000000001', '1892553778493022209', '查询AI模型列表', NULL, NULL, 0, NULL, NULL, 2, 'airag:model:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000000002', '1892557342028226561', '查询AI知识库列表', NULL, NULL, 0, NULL, NULL, 2, 'airag:knowledge:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000000003', '1892557342028226561', '查询AI知识库文档列表', NULL, NULL, 0, NULL, NULL, 2, 'airag:knowledge:doc:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000000004', '1893865471550578689', '查询AI应用列表', NULL, NULL, 0, NULL, NULL, 2, 'airag:app:list', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000009601', '1892553778493022209', '按ID查询AI模型', NULL, NULL, 0, NULL, NULL, 2, 'airag:model:queryById', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 12:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000009602', '1892553778493022209', '导出AI模型', NULL, NULL, 0, NULL, NULL, 2, 'airag:model:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 12:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000009603', '1892553778493022209', '导入AI模型', NULL, NULL, 0, NULL, NULL, 2, 'airag:model:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 12:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074321420000009604', '1892553778493022209', '测试AI模型连接', NULL, NULL, 0, NULL, NULL, 2, 'airag:model:test', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 12:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074322000000000001', '1458353686530232321', '添加校验规则', NULL, NULL, 0, NULL, NULL, 2, 'system:checkRule:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074322000000000002', '1458353686530232321', '编辑校验规则', NULL, NULL, 0, NULL, NULL, 2, 'system:checkRule:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074322000000000003', '1458353686530232321', '删除校验规则', NULL, NULL, 0, NULL, NULL, 2, 'system:checkRule:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
+INSERT INTO `sys_permission` VALUES ('2074322000000000004', '1458353686530232321', '批量删除校验规则', NULL, NULL, 0, NULL, NULL, 2, 'system:checkRule:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-06 11:00:00', NULL, NULL, 0, 0, '1', 0);
INSERT INTO `sys_permission` VALUES ('3f915b2769fc80648e92d04e84ca059d', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '用户管理', '/system/user', 'system/user/index', 1, NULL, NULL, 1, NULL, NULL, 1.00, 0, 'ant-design:user', 0, 1, 0, NULL, NULL, NULL, '2018-12-25 20:34:38', 'sunjianlei', '2021-05-08 09:57:31', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('45c966826eeff4c99b8f8ebfe74511fc', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '部门管理', '/system/depart', 'system/depart/index', 1, NULL, NULL, 1, NULL, NULL, 3.00, 0, 'ant-design:team', 0, 0, 0, NULL, NULL, 'admin', '2019-01-29 18:47:40', 'admin', '2021-09-17 15:58:13', 0, 0, NULL, 0);
INSERT INTO `sys_permission` VALUES ('5c2f42277948043026b7a14692456828', 'd7d6e2e4e2934f2c9385a623fd98c6f3', '我的部门', '/system/depart-user', 'system/departUser/index', 1, NULL, NULL, 1, NULL, NULL, 3.00, 0, 'ant-design:home-outlined', 0, 0, 0, 0, NULL, 'admin', '2019-04-17 15:12:24', 'admin', '2023-03-04 15:03:07', 0, 0, NULL, 0);
@@ -9294,8 +9438,6 @@ INSERT INTO `sys_role_permission` VALUES ('1917857071806648326', 'f6817f48af4fb3
INSERT INTO `sys_role_permission` VALUES ('1917881149426864129', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940200', NULL, '2025-05-01 17:57:53', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1917881149431058436', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940203', NULL, '2025-05-01 17:57:53', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1917881149431058437', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940204', NULL, '2025-05-01 17:57:53', '0:0:0:0:0:0:0:1');
-INSERT INTO `sys_role_permission` VALUES ('1917881149431058438', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940205', NULL, '2025-05-01 17:57:53', '0:0:0:0:0:0:0:1');
-INSERT INTO `sys_role_permission` VALUES ('1917881149431058439', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940206', NULL, '2025-05-01 17:57:53', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1917957659860963330', 'f6817f48af4fb3af11b9e8bf182f618b', '1917957565728198657', NULL, '2025-05-01 23:01:55', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1922109760551858178', 'f6817f48af4fb3af11b9e8bf182f618b', '1922109301837606914', NULL, '2025-05-13 10:00:53', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1922164055780016129', 'f6817f48af4fb3af11b9e8bf182f618b', '2025050105554940201', NULL, '2025-05-13 13:36:38', '0:0:0:0:0:0:0:1');
@@ -9321,8 +9463,6 @@ INSERT INTO `sys_role_permission` VALUES ('1937756570658693131', '15015706198418
INSERT INTO `sys_role_permission` VALUES ('1937756570658693132', '1501570619841810433', '2025050105554940202', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1937756570658693133', '1501570619841810433', '2025050105554940203', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1937756570658693134', '1501570619841810433', '2025050105554940204', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
-INSERT INTO `sys_role_permission` VALUES ('1937756570658693135', '1501570619841810433', '2025050105554940205', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
-INSERT INTO `sys_role_permission` VALUES ('1937756570658693136', '1501570619841810433', '2025050105554940206', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1937756570658693137', '1501570619841810433', '1917957565728198657', NULL, '2025-06-25 14:15:43', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1937789330064568321', '1501570619841810433', '1930222558582472705', NULL, '2025-06-25 16:25:53', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('1937789330077151234', '1501570619841810433', '1930222617197871105', NULL, '2025-06-25 16:25:53', '0:0:0:0:0:0:0:1');
@@ -9784,8 +9924,123 @@ INSERT INTO `sys_role_permission` VALUES ('2049055424019292164', 'f6817f48af4fb3
INSERT INTO `sys_role_permission` VALUES ('2049055424019292165', 'f6817f48af4fb3af11b9e8bf182f618b', '1535125603236051996', NULL, '2026-04-28 17:17:37', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('2049055424019292166', 'f6817f48af4fb3af11b9e8bf182f618b', '1535225603236052993', NULL, '2026-04-28 17:17:37', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('2049341652660682754', '1501570619841810433', 'ca784c27782b4bd1b1fe98627f8afcaf', NULL, '2026-04-29 12:15:00', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250321', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240321', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250322', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240322', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250323', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240323', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250324', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240324', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250325', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240325', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250326', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240326', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250327', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240327', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250328', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240328', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250329', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240329', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250330', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240330', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250331', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240331', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250332', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240332', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250333', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240333', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250334', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240334', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250335', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240335', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250336', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240336', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250337', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240337', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250338', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240338', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2052360437613250339', 'f6817f48af4fb3af11b9e8bf182f618b', '2052360437613240339', NULL, '2026-05-22 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2059229108147810305', 'f6817f48af4fb3af11b9e8bf182f618b', '2059228876525760514', NULL, '2026-05-26 19:04:13', '115.171.169.170');
+INSERT INTO `sys_role_permission` VALUES ('2059231965106368514', '1456165677820301314', '2059180586211995650', NULL, '2026-05-26 19:15:34', '115.171.169.170');
+INSERT INTO `sys_role_permission` VALUES ('2059231965114757121', '1456165677820301314', '2059180471099322370', NULL, '2026-05-26 19:15:34', '115.171.169.170');
+INSERT INTO `sys_role_permission` VALUES ('2059242157269311490', 'f6817f48af4fb3af11b9e8bf182f618b', '2059241964536848385', NULL, '2026-05-26 19:56:04', '115.171.169.170');
+INSERT INTO `sys_role_permission` VALUES ('2059548796484571138', 'f6817f48af4fb3af11b9e8bf182f618b', '2059547329249923074', NULL, '2026-05-27 16:14:32', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2059548796488765442', 'f6817f48af4fb3af11b9e8bf182f618b', '2059547433017004034', NULL, '2026-05-27 16:14:32', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2060333580320215042', 'f6817f48af4fb3af11b9e8bf182f618b', '2060333482639069186', NULL, '2026-05-29 20:12:59', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2060333580324409345', 'f6817f48af4fb3af11b9e8bf182f618b', '2060333370265276417', NULL, '2026-05-29 20:12:59', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2060333625220239361', '1456165677820301314', '2060333370265276417', NULL, '2026-05-29 20:13:10', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2060333625249599490', '1456165677820301314', '2060333482639069186', NULL, '2026-05-29 20:13:10', '192.168.1.66');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000001', 'f6817f48af4fb3af11b9e8bf182f618b', '2070424707180863490', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000020', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000010', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000021', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000011', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000022', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000012', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000023', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000013', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000024', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000014', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000041', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000031', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000042', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000032', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000043', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000033', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000044', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000034', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000045', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000035', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2070435540000000046', 'f6817f48af4fb3af11b9e8bf182f618b', '2070435540000000036', NULL, '2026-06-27 10:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000000001', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000000001', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000000002', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000000002', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000000003', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000000003', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000000004', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000000004', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000009601', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000009601', NULL, '2026-05-06 12:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000009602', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000009602', NULL, '2026-05-06 12:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000009603', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000009603', NULL, '2026-05-06 12:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074321421000009604', 'f6817f48af4fb3af11b9e8bf182f618b', '2074321420000009604', NULL, '2026-05-06 12:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074322001000000001', 'f6817f48af4fb3af11b9e8bf182f618b', '2074322000000000001', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074322001000000002', 'f6817f48af4fb3af11b9e8bf182f618b', '2074322000000000002', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074322001000000003', 'f6817f48af4fb3af11b9e8bf182f618b', '2074322000000000003', NULL, '2026-05-06 11:00:00', '127.0.0.1');
+INSERT INTO `sys_role_permission` VALUES ('2074322001000000004', 'f6817f48af4fb3af11b9e8bf182f618b', '2074322000000000004', NULL, '2026-05-06 11:00:00', '127.0.0.1');
INSERT INTO `sys_role_permission` VALUES ('2086657874244362241', '1501570619841810433', '1790521000000000001', NULL, '2026-08-10 11:36:20', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('2086657895941496834', 'f6817f48af4fb3af11b9e8bf182f618b', '1790521000000000001', NULL, '2026-08-10 11:36:25', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959688794114', '1501570619841810433', '2074321420000009604', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571330', '1501570619841810433', '2074321420000009603', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571331', '1501570619841810433', '2074321420000009602', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571332', '1501570619841810433', '2074321420000009601', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571333', '1501570619841810433', '2074322000000000001', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571334', '1501570619841810433', '2074322000000000002', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959705571335', '1501570619841810433', '2074322000000000003', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959937', '1501570619841810433', '2074322000000000004', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959938', '1501570619841810433', '2052360437613240321', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959939', '1501570619841810433', '2052360437613240322', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959940', '1501570619841810433', '2052360437613240323', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959941', '1501570619841810433', '2052360437613240324', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959942', '1501570619841810433', '2052360437613240325', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959713959943', '1501570619841810433', '2052360437613240326', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154241', '1501570619841810433', '2052360437613240327', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154242', '1501570619841810433', '2052360437613240328', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154243', '1501570619841810433', '2052360437613240329', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154244', '1501570619841810433', '2052360437613240330', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154245', '1501570619841810433', '2052360437613240331', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154246', '1501570619841810433', '2052360437613240332', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154247', '1501570619841810433', '2052360437613240333', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154248', '1501570619841810433', '2052360437613240334', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154249', '1501570619841810433', '2052360437613240335', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154250', '1501570619841810433', '2052360437613240336', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154251', '1501570619841810433', '2052360437613240337', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154252', '1501570619841810433', '2052360437613240338', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959718154253', '1501570619841810433', '2052360437613240339', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348545', '1501570619841810433', '1907441271556497409', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348546', '1501570619841810433', '2059180586211995650', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348547', '1501570619841810433', '1592120649007329281', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348548', '1501570619841810433', '1592120594695286785', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348549', '1501570619841810433', '2059180471099322370', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348550', '1501570619841810433', '1810652607946940417', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348551', '1501570619841810433', '2070435540000000014', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348552', '1501570619841810433', '2070435540000000013', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348553', '1501570619841810433', '2070435540000000012', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348554', '1501570619841810433', '2070435540000000011', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348555', '1501570619841810433', '2070435540000000010', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348556', '1501570619841810433', '2059228876525760514', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348557', '1501570619841810433', '2059241964536848385', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348558', '1501570619841810433', '2070435540000000031', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348559', '1501570619841810433', '2070435540000000032', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348560', '1501570619841810433', '2070435540000000033', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348561', '1501570619841810433', '2070435540000000034', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348562', '1501570619841810433', '2070435540000000035', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090684959722348563', '1501570619841810433', '2070435540000000036', NULL, '2026-08-21 14:18:32', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138403893249', 'f6817f48af4fb3af11b9e8bf182f618b', '2059180586211995650', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476161', 'f6817f48af4fb3af11b9e8bf182f618b', '2059180471099322370', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476162', 'f6817f48af4fb3af11b9e8bf182f618b', '2041551000000000001', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476163', 'f6817f48af4fb3af11b9e8bf182f618b', '2038567162158080001', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476164', 'f6817f48af4fb3af11b9e8bf182f618b', '2038567065030582273', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476165', 'f6817f48af4fb3af11b9e8bf182f618b', '2038566382055284738', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476166', 'f6817f48af4fb3af11b9e8bf182f618b', '2038566315785281538', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476167', 'f6817f48af4fb3af11b9e8bf182f618b', '2038566470550904833', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476168', 'f6817f48af4fb3af11b9e8bf182f618b', 'ca784c27782b4bd1b1fe98627f8afcaf', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090685138416476169', 'f6817f48af4fb3af11b9e8bf182f618b', '1804046424930480129', NULL, '2026-08-21 14:19:15', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090696117913165826', '1501570619841810433', '2074321420000000004', NULL, '2026-08-21 15:02:52', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090696117913165827', '1501570619841810433', '2074321420000000002', NULL, '2026-08-21 15:02:52', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090696117913165828', '1501570619841810433', '2074321420000000003', NULL, '2026-08-21 15:02:52', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090696117913165829', '1501570619841810433', '2074321420000000001', NULL, '2026-08-21 15:02:52', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090697094875619330', '1501570619841810433', '1999406402585542657', NULL, '2026-08-21 15:06:45', '0:0:0:0:0:0:0:1');
+INSERT INTO `sys_role_permission` VALUES ('2090697094875619331', '1501570619841810433', '1999406500300242946', NULL, '2026-08-21 15:06:45', '0:0:0:0:0:0:0:1');
INSERT INTO `sys_role_permission` VALUES ('248d288586c6ff3bd14381565df84163', '52b0cf022ac4187b2a70dfa4f8b2d940', '3f915b2769fc80648e92d04e84ca059d', NULL, NULL, NULL);
INSERT INTO `sys_role_permission` VALUES ('25f5443f19c34d99718a016d5f54112e', 'ee8626f80f7c2619917b6236f3a7f02b', '6e73eb3c26099c191bf03852ee1310a1', NULL, NULL, NULL);
INSERT INTO `sys_role_permission` VALUES ('27489816708b18859768dfed5945c405', 'a799c3b1b12dd3ed4bd046bfaef5fe6e', '9502685863ab87f0ad1134142788a385', NULL, NULL, NULL);
@@ -10056,6 +10311,7 @@ CREATE TABLE `sys_sms_template` (
INSERT INTO `sys_sms_template` VALUES ('1199606397416775681', '系统消息通知', 'sys_ts_note', '2', NULL, ' 系统通知
\n\n- 通知时间: ${ts_date}
\n- 通知内容: ${ts_content}
\n
', NULL, '2019-11-27 16:30:27', 'admin', '2019-11-27 19:36:50', 'admin', NULL);
INSERT INTO `sys_sms_template` VALUES ('1199615897335095298', '流程催办', 'bpm_cuiban', '2', NULL, ' 流程催办提醒
\n\n- 流程名称: ${bpm_name}
\n- 催办任务: ${bpm_task}
\n- 催办时间 : ${datetime}
\n- 催办内容 : ${remark}
\n
', NULL, '2019-11-27 17:08:12', 'admin', '2019-11-27 19:36:45', 'admin', NULL);
INSERT INTO `sys_sms_template` VALUES ('1199648914107625473', '流程办理超时提醒', 'bpm_chaoshi_tip', '2', NULL, ' 流程办理超时提醒
\n\n- 超时提醒信息: 您有待处理的超时任务,请尽快处理!
\n- 超时任务标题: ${title}
\n- 超时任务节点: ${task}
\n- 任务处理人: ${user}
\n- 任务开始时间: ${time}
\n
', NULL, '2019-11-27 19:19:24', 'admin', '2019-11-27 19:36:37', 'admin', NULL);
+INSERT INTO `sys_sms_template` VALUES ('1922767046954508289', '飞书消息', 'bpm_feishu', '5', NULL, '### 收到新任务\n\n---\n\n> 业务标题:${title}\n> 流程名称:${name}\n> 任务节点:${task}\n\n---\n\n详情请点击[立刻办理](${url})', NULL, '2026-05-15 00:00:00', 'admin', '2026-05-15 00:00:00', 'admin', '0');
INSERT INTO `sys_sms_template` VALUES ('4028608164691b000164693108140003', '催办:${taskName}', 'SYS001', '1', NULL, '${userName},您好!\r\n请前待办任务办理事项!${taskName}\r\n\r\n\r\n===========================\r\n此消息由系统发出', '{\r\n\"taskName\":\"HR审批\",\r\n\"userName\":\"admin\"\r\n}', '2018-07-05 14:46:18', 'admin', '2018-07-05 18:31:34', 'admin', NULL);
-- ----------------------------
@@ -10395,7 +10651,7 @@ CREATE TABLE `sys_user` (
-- ----------------------------
-- Records of sys_user
-- ----------------------------
-INSERT INTO `sys_user` VALUES ('1714471285016895490', 'ceshi', '测试用户', 'a9932bb12d2cbc5a', 'AF4vhXUz', NULL, '2024-04-11', NULL, 'winter@jeecg.org', '15201111112', NULL, 1, 0, NULL, NULL, 1, '123', NULL, 'admin', '2023-10-18 10:39:42', 'ceshi', '2025-05-08 16:11:05', 1, '', NULL, 0, NULL, NULL, NULL, NULL, NULL, '2025-11-25 15:42:34', 1000, NULL);
+INSERT INTO `sys_user` VALUES ('1714471285016895490', 'ceshi', '测试用户', 'a9932bb12d2cbc5a', 'AF4vhXUz', NULL, '2024-04-11', NULL, 'winter@jeecg.org', '15201111112', NULL, 1, 0, NULL, NULL, 1, '123', NULL, 'admin', '2023-10-18 10:39:42', 'admin', '2026-08-20 23:00:25', 1, '', NULL, 0, NULL, NULL, NULL, '', NULL, '2025-11-25 15:42:34', 1000, NULL);
INSERT INTO `sys_user` VALUES ('3d464b4ea0d2491aab8a7bde74c57e95', 'zhangsan', '张三', '02ea098224c7d0d2077c14b9a3a1ed16', 'x5xRdeKB', 'https://static.jeecg.com/temp/jmlogo_1606575041993.png', '2024-04-11', NULL, '111@1.com', '13426411111', '财务部', 1, 0, NULL, NULL, 1, '0005', NULL, 'admin', '2020-05-14 21:26:24', 'admin', '2024-04-26 13:25:37', 1, '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2025-11-25 15:42:34', 1000, NULL);
INSERT INTO `sys_user` VALUES ('a75d45a015c44384a04449ee80dc3503', 'jeecg', 'jeecg', 'eee378a1258530cb', 'mIgiYJow', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', NULL, 1, '418799587@qq.com', '18611788525', 'A02A01', 1, 0, NULL, NULL, 1, '00002', NULL, 'admin', '2019-02-13 16:02:36', 'admin', '2023-10-18 13:51:36', 1, '', NULL, 1001, NULL, NULL, NULL, NULL, NULL, '2025-11-25 15:42:34', 1000, NULL);
INSERT INTO `sys_user` VALUES ('e9ca23d68d884d4ebb19d07889727dae', 'admin', '管理员', 'cb362cfeefbf3d8d', 'RCGTeGiH', 'https://static.jeecg.com/temp/国炬软件logo_1606575029126.png', '1986-02-01', 1, 'jeecg@163.com', '18611111111', 'A01A03', 1, 0, NULL, NULL, 1, '00001', NULL, NULL, '2019-06-21 17:54:10', 'admin', '2025-12-03 19:12:32', 2, '', NULL, 1000, NULL, 0, NULL, '', NULL, '2025-11-25 15:42:34', 1000, NULL);
@@ -10465,7 +10721,6 @@ CREATE TABLE `sys_user_position` (
-- ----------------------------
-- Records of sys_user_position
-- ----------------------------
-INSERT INTO `sys_user_position` VALUES ('1920390985293144065', '1714471285016895490', '1185040064792571906', 'ceshi', '2025-05-08 16:11:05', NULL, NULL);
-- ----------------------------
-- Table structure for sys_user_role
@@ -10491,9 +10746,9 @@ INSERT INTO `sys_user_role` VALUES ('1714519577000091651', 'a75d45a015c44384a044
INSERT INTO `sys_user_role` VALUES ('1783729121881956354', '3d464b4ea0d2491aab8a7bde74c57e95', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1794912584001581058', 'a75d45a015c44384a04449ee80dc3503', '1169504891467464706', 0);
INSERT INTO `sys_user_role` VALUES ('1794912584001581059', 'a75d45a015c44384a04449ee80dc3503', '1169504891467464707', 0);
-INSERT INTO `sys_user_role` VALUES ('1920390985230229505', '1714471285016895490', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('1996175712356261889', 'e9ca23d68d884d4ebb19d07889727dae', '1501570619841810433', 0);
INSERT INTO `sys_user_role` VALUES ('1996175712356261890', 'e9ca23d68d884d4ebb19d07889727dae', 'f6817f48af4fb3af11b9e8bf182f618b', 0);
+INSERT INTO `sys_user_role` VALUES ('2090453909096144898', '1714471285016895490', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('79d66ef7aa137cfa9957081a1483009d', '9a668858c4c74cf5a2b25ad9608ba095', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
INSERT INTO `sys_user_role` VALUES ('b3ffd9311a1ca296c44e2409b547384f', '01b802058ea94b978a2c96f4807f6b48', '1', 0);
INSERT INTO `sys_user_role` VALUES ('be2639167ede09379937daca7fc3bb73', '526f300ab35e44faaed54a9fb0742845', 'ee8626f80f7c2619917b6236f3a7f02b', 0);
diff --git a/jeecg-boot/jeecg-boot-base-core/pom.xml b/jeecg-boot/jeecg-boot-base-core/pom.xml
index 591f387c8..2fda39c53 100644
--- a/jeecg-boot/jeecg-boot-base-core/pom.xml
+++ b/jeecg-boot/jeecg-boot-base-core/pom.xml
@@ -159,9 +159,9 @@
- com.oracle
- ojdbc6
- ${ojdbc6.version}
+ com.oracle.database.jdbc
+ ojdbc11
+ ${ojdbc11.version}
runtime
@@ -384,4 +384,4 @@
-
\ No newline at end of file
+
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java
index b8cec7cc5..ec2b89033 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/DataLogDTO.java
@@ -17,7 +17,9 @@ public class DataLogDTO {
private String type;
- private String createName;
+ private String createBy;
+
+ private String createName;
public DataLogDTO(){
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
index 14725e2a2..b23c3b2b1 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
@@ -573,6 +573,11 @@ public interface CommonConstant {
*/
String WECHAT_ENTERPRISE = "WECHAT_ENTERPRISE";
+ /**
+ * 飞书
+ */
+ String FEISHU = "FEISHU";
+
/**
* 系统默认租户id 0
*/
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java
index 77b94286f..f983680b3 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/PasswordConstant.java
@@ -9,7 +9,7 @@ package org.jeecg.common.constant;
public interface PasswordConstant {
/**
- * 导入用户默认密码
+ * 导入用户默认密码 (重置密码)
*/
String DEFAULT_PASSWORD = "123456";
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
index 8b667b393..ea4f3da40 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
@@ -13,6 +13,7 @@ import java.util.ArrayList;
import java.util.Scanner;
import java.util.Set;
import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
/**
* @Description: 省市区
@@ -20,12 +21,15 @@ import java.util.List;
*/
@Component("pca")
public class ProvinceCityArea {
- List areaList;
+ // 使用 CopyOnWriteArrayList + volatile 解决懒加载场景下并发 add / 遍历导致的 ConcurrentModificationException
+ // 列表在 initAreaList 完成后即不再修改,迭代器为快照式,读路径无锁
+ private volatile List areaList;
public String getText(String code){
if(StringUtils.isNotBlank(code)){
this.initAreaList();
- if(this.areaList!=null || this.areaList.size()>0){
+ // 修复逻辑 bug:原 || 写错,areaList==null 时会先 false 再走 size() 抛 NPE,改为 &&
+ if(this.areaList!=null && this.areaList.size()>0){
List ls = new ArrayList();
getAreaByCode(code,ls);
return String.join("/",ls);
@@ -127,39 +131,44 @@ public class ProvinceCityArea {
}
private void initAreaList(){
- //System.out.println("=====================");
- if(this.areaList==null || this.areaList.size()==0){
- this.areaList = new ArrayList();
- try {
- String jsonData = oConvertUtils.readStatic("classpath:static/pca.json");
- JSONObject baseJson = JSONObject.parseObject(jsonData);
- //第一层 省
- JSONObject provinceJson = baseJson.getJSONObject("86");
- for(String provinceKey: provinceJson.keySet()){
- //System.out.println("===="+provinceKey);
- Area province = new Area(provinceKey,provinceJson.getString(provinceKey),"86");
- this.areaList.add(province);
- //第二层 市
- JSONObject cityJson = baseJson.getJSONObject(provinceKey);
- for(String cityKey:cityJson.keySet()){
- //System.out.println("-----"+cityKey);
- Area city = new Area(cityKey,cityJson.getString(cityKey),provinceKey);
- this.areaList.add(city);
- //第三层 区
- JSONObject areaJson = baseJson.getJSONObject(cityKey);
- if(areaJson!=null){
- for(String areaKey:areaJson.keySet()){
- //System.out.println("········"+areaKey);
- Area area = new Area(areaKey,areaJson.getString(areaKey),cityKey);
- // 代码逻辑说明: VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
- area.setAheadText(cityJson.getString(cityKey));
- this.areaList.add(area);
+ // 双重检查 + volatile:保证列表仅被一个线程初始化,避免懒加载场景下并发 add / 遍历导致的 ConcurrentModificationException
+ if(this.areaList==null || this.areaList.isEmpty()){
+ synchronized (this) {
+ if(this.areaList==null || this.areaList.isEmpty()){
+ // CopyOnWriteArrayList 的迭代器为快照式,即使与其他读线程并发也不会抛 CME
+ this.areaList = new CopyOnWriteArrayList();
+ try {
+ String jsonData = oConvertUtils.readStatic("classpath:static/pca.json");
+ JSONObject baseJson = JSONObject.parseObject(jsonData);
+ //第一层 省
+ JSONObject provinceJson = baseJson.getJSONObject("86");
+ for(String provinceKey: provinceJson.keySet()){
+ //System.out.println("===="+provinceKey);
+ Area province = new Area(provinceKey,provinceJson.getString(provinceKey),"86");
+ this.areaList.add(province);
+ //第二层 市
+ JSONObject cityJson = baseJson.getJSONObject(provinceKey);
+ for(String cityKey:cityJson.keySet()){
+ //System.out.println("-----"+cityKey);
+ Area city = new Area(cityKey,cityJson.getString(cityKey),provinceKey);
+ this.areaList.add(city);
+ //第三层 区
+ JSONObject areaJson = baseJson.getJSONObject(cityKey);
+ if(areaJson!=null){
+ for(String areaKey:areaJson.keySet()){
+ //System.out.println("········"+areaKey);
+ Area area = new Area(areaKey,areaJson.getString(areaKey),cityKey);
+ // 代码逻辑说明: VUEN-1088 online 导入 省市区导入后 导入数据错乱 北京市/市辖区/西城区-->山西省/晋城市/城区
+ area.setAheadText(cityJson.getString(cityKey));
+ this.areaList.add(area);
+ }
+ }
}
}
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
- } catch (Exception e) {
- e.printStackTrace();
}
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java
index 83690fbfc..74ca490da 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/MessageTypeEnum.java
@@ -29,7 +29,15 @@ public enum MessageTypeEnum {
/**
* 企业微信
*/
- QYWX("wechat_enterprise", "企业微信");
+ QYWX("wechat_enterprise", "企业微信"),
+ /**
+ * 飞书
+ */
+ FS("feishu", "飞书消息"),
+ /**
+ * 短信消息
+ */
+ DX("sms", "短信消息");
MessageTypeEnum(String type, String note) {
this.type = type;
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java
index 7b419d42c..5a6f2d98e 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java
@@ -108,13 +108,16 @@ public class JeecgBootExceptionHandler {
/**
* 处理静态资源不存在异常(Spring Boot 3.2+)
- * WebSocket路径被当作静态资源请求时会触发此异常,降级为debug日志避免刷屏
+ * Source Map、WebSocket路径被当作静态资源请求时会触发此异常,降级为debug日志避免刷屏
*/
@ExceptionHandler(NoResourceFoundException.class)
public Result> handleNoResourceFoundException(NoResourceFoundException e, HttpServletRequest request) {
String uri = request.getRequestURI();
- // WebSocket路径的非upgrade请求,降级为debug日志
- if (uri.contains("Socket/") || uri.contains("websocket/") || uri.contains("Websocket/")) {
+ // Source Map仅用于浏览器调试,缺失不影响业务功能,降级为debug日志
+ if (uri.endsWith(".map")) {
+ log.debug("Source Map资源不存在: {}", uri);
+ } else if (uri.contains("Socket/") || uri.contains("websocket/") || uri.contains("Websocket/")) {
+ // WebSocket路径的非upgrade请求,降级为debug日志
log.debug("WebSocket路径被当作静态资源请求: {}", uri);
} else {
log.error(e.getMessage(), e);
@@ -264,7 +267,13 @@ public class JeecgBootExceptionHandler {
// 文件上传过大异常时不能获取参数,否则会报错
Map parameterMap = request.getParameterMap();
if(!CollectionUtils.isEmpty(parameterMap)) {
- log.setMethod(oConvertUtils.mapToString(request.getParameterMap()));
+ //update-begin---author:scott ---date:2026-05-09 for:sys_log.method字段长度1000,过长导致Data truncation异常吞掉原始错误-----------
+ String methodStr = oConvertUtils.mapToString(request.getParameterMap());
+ if (methodStr != null && methodStr.length() > 950) {
+ methodStr = methodStr.substring(0, 950) + "...(truncated)";
+ }
+ log.setMethod(methodStr);
+ //update-end---author:scott ---date:2026-05-09 for:sys_log.method字段长度1000,过长导致Data truncation异常吞掉原始错误-----------
}
}
// 请求地址
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryConditionIgnore.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryConditionIgnore.java
new file mode 100644
index 000000000..6dce3fa96
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryConditionIgnore.java
@@ -0,0 +1,16 @@
+package org.jeecg.common.system.query;
+
+import java.lang.annotation.*;
+
+/**
+ * 查询条件忽略注解
+ * 标记此注解的字段将被 QueryGenerator 跳过,不参与查询条件构建。
+ * 适用于密码、盐值等敏感字段,防止通过请求参数进行模糊查询探测。
+ *
+ * @see QueryGenerator#initQueryWrapper
+ */
+@Target({ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface QueryConditionIgnore {
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
index bb3fa4f72..3d1aff1e2 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
@@ -2,6 +2,7 @@ package org.jeecg.common.system.query;
import java.beans.PropertyDescriptor;
import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.ParseException;
@@ -154,6 +155,11 @@ public class QueryGenerator {
if (judgedIsUselessField(name)|| !PropertyUtils.isReadable(searchObj, name)) {
continue;
}
+ //update-begin---author:liusq ---date:2026-05-25 for:【QQYUN-15535】敏感字段加@QueryConditionIgnore注解后跳过查询条件构建-----------
+ if (isQueryConditionIgnoreField(searchObj.getClass(), name)) {
+ continue;
+ }
+ //update-end---author:liusq ---date:2026-05-25 for:【QQYUN-15535】敏感字段加@QueryConditionIgnore注解后跳过查询条件构建-----------
Object value = PropertyUtils.getSimpleProperty(searchObj, name);
column = ReflectHelper.getTableFieldName(searchObj.getClass(), name);
@@ -581,12 +587,10 @@ public class QueryGenerator {
value = val.substring(1);
//mysql 模糊查询之特殊字符下划线 (_、\)
value = specialStrConvert(value.toString());
- //update-begin---author:scott ---date:20260416 for:【PR#9322】修复NE规则与LEFT_LIKE共用substring(1)导致ID首位字符丢失-----------
} else if (rule == QueryRuleEnum.NE) {
- if (val.startsWith(QueryRuleEnum.NE.getValue())) {
+ if (val.startsWith(NOT_EQUAL)) {
value = val.substring(1);
}
- //update-end---author:scott ---date:20260416 for:【PR#9322】修复NE规则与LEFT_LIKE共用substring(1)导致ID首位字符丢失-----------
} else if (rule == QueryRuleEnum.RIGHT_LIKE) {
value = val.substring(0, val.length() - 1);
//mysql 模糊查询之特殊字符下划线 (_、\)
@@ -804,7 +808,32 @@ public class QueryGenerator {
;
}
-
+ //update-begin---author:liusq ---date:2026-05-25 for:【QQYUN-15535】检测字段是否标注@QueryConditionIgnore,支持父类字段查找-----------
+ /**
+ * 判断字段是否标注了 {@link QueryConditionIgnore} 注解,支持查找父类字段。
+ * 标注此注解的字段(如密码、盐值等敏感字段)将被跳过,不参与查询条件构建。
+ *
+ * @param clazz 实体类
+ * @param fieldName 字段名
+ * @return true 表示应跳过该字段
+ */
+ private static boolean isQueryConditionIgnoreField(Class> clazz, String fieldName) {
+ Class> current = clazz;
+ while (current != null && current != Object.class) {
+ try {
+ Field field = current.getDeclaredField(fieldName);
+ if (field.isAnnotationPresent(QueryConditionIgnore.class)) {
+ return true;
+ }
+ } catch (NoSuchFieldException ignored) {
+ // 当前类没有该字段,继续查找父类
+ }
+ current = current.getSuperclass();
+ }
+ return false;
+ }
+ //update-end---author:liusq ---date:2026-05-25 for:【QQYUN-15535】检测字段是否标注@QueryConditionIgnore,支持父类字段查找-----------
+
/**
* 获取请求对应的数据权限规则 TODO 相同列权限多个 有问题
@@ -1033,7 +1062,7 @@ public class QueryGenerator {
}
/**
- * mysql 模糊查询之特殊字符下划线 (_、\)
+ * mysql、sqlserver 模糊查询特殊字符转义
*
* @param value:
* @Return: java.lang.String
@@ -1046,6 +1075,10 @@ public class QueryGenerator {
value = value.replace(str, "\\" + str);
}
}
+ // update-begin--author:wangshuai---date:20260820---for:【LHZP-1165】【系统管理】字典 编码查询 输入br_ branch_的也查出来了
+ } else if (DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())) {
+ value = value.replace("[", "[[]").replace("%", "[%]").replace("_", "[_]");
+ // update-end--author:wangshuai---date:20260820---for:【LHZP-1165】【系统管理】字典 编码查询 输入br_ branch_的也查出来了
}
return value;
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
index 2a405d953..c78674073 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
@@ -368,8 +368,14 @@ public class CommonUtils {
//1.【兼容】兼容微服务下的 base path-------
String xGatewayBasePath = request.getHeader(ServiceNameConstants.X_GATEWAY_BASE_PATH);
if(oConvertUtils.isNotEmpty(xGatewayBasePath)){
- log.info("x_gateway_base_path = "+ xGatewayBasePath);
- return xGatewayBasePath;
+ //update-begin---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
+ String validated = validateGatewayBasePath(xGatewayBasePath);
+ if(validated != null){
+ log.info("x_gateway_base_path = {}", validated);
+ return validated;
+ }
+ log.warn("X_GATEWAY_BASE_PATH header 校验失败,已忽略: {}", xGatewayBasePath);
+ //update-end---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
}
//2.【兼容】SSL认证之后,request.getScheme()获取不到https的问题
// https://blog.csdn.net/weixin_34376986/article/details/89767950
@@ -398,6 +404,72 @@ public class CommonUtils {
return baseDomainPath;
}
+ //update-begin---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
+ /**
+ * 校验 X_GATEWAY_BASE_PATH 请求头:仅允许 http/https 协议,不允许 userInfo,
+ * 从解析后的 URI 组件重新拼接,防止注入特殊字符绕过。
+ * @return 校验通过返回安全的 baseUrl,否则返回 null
+ */
+ public static String validateGatewayBasePathForDomain(String headerValue) {
+ return validateGatewayBasePath(headerValue);
+ }
+
+ private static String validateGatewayBasePath(String headerValue) {
+ if (oConvertUtils.isEmpty(headerValue)) {
+ return null;
+ }
+ try {
+ java.net.URI uri = new java.net.URI(headerValue.trim());
+ String scheme = uri.getScheme();
+ if (scheme == null || (!"http".equalsIgnoreCase(scheme) && !"https".equalsIgnoreCase(scheme))) {
+ return null;
+ }
+ if (uri.getUserInfo() != null) {
+ return null;
+ }
+ String host = uri.getHost();
+ if (oConvertUtils.isEmpty(host)) {
+ return null;
+ }
+ StringBuilder sb = new StringBuilder();
+ sb.append(scheme.toLowerCase()).append("://").append(host);
+ if (uri.getPort() != -1) {
+ sb.append(":").append(uri.getPort());
+ }
+ if (uri.getPath() != null && !uri.getPath().isEmpty()) {
+ sb.append(uri.getPath());
+ }
+ return sb.toString();
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ /**
+ * 校验 URL 的 host 是否为内网地址(回环 / 局域网 / 链路本地),
+ * 用于 OpenAPI 转发等服务端发起请求的场景,防止 SSRF 到公网。
+ * 校验失败抛出 JeecgBootException。
+ */
+ public static void checkInternalUrl(String url) {
+ try {
+ java.net.URI uri = new java.net.URI(url);
+ String host = uri.getHost();
+ if (oConvertUtils.isEmpty(host)) {
+ throw new JeecgBootException("URL host 为空: " + url);
+ }
+ java.net.InetAddress addr = java.net.InetAddress.getByName(host);
+ if (addr.isLoopbackAddress() || addr.isSiteLocalAddress() || addr.isLinkLocalAddress()) {
+ return;
+ }
+ throw new JeecgBootException("OpenAPI baseUrl 仅允许内网地址,当前解析到外部地址: " + host + " -> " + addr.getHostAddress());
+ } catch (JeecgBootException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new JeecgBootException("OpenAPI baseUrl 校验失败: " + e.getMessage());
+ }
+ }
+ //update-end---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
+
/**
* 递归合并 fastJSON 对象
*
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java
index b1051c722..9c9f4b036 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FileDownloadUtils.java
@@ -14,7 +14,6 @@ import org.jeecg.common.util.filter.SsrfFileTypeFilter;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
-import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -122,6 +121,79 @@ public class FileDownloadUtils {
}
}
+ //update-begin---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞(CWE-918),禁止自动跳转并逐跳校验-----------
+ /**
+ * 安全地打开 HTTP(S) 连接:禁止自动重定向,对初始 URL 及每一跳重定向目标都做 SSRF 校验,
+ * 返回最终已连接(且校验通过)的连接对象。
+ *
+ * @param fileUrl 文件URL
+ * @return 已连接的 HttpURLConnection
+ * @throws IOException 连接异常
+ */
+ private static HttpURLConnection openSafeConnection(String fileUrl) throws IOException {
+ int maxRedirects = 5;
+ String currentUrl = fileUrl;
+ for (int i = 0; i <= maxRedirects; i++) {
+ // 每一跳(含初始 URL)都重新做 SSRF 校验,拦截 loopback / link-local / 云元数据地址
+ SsrfFileTypeFilter.checkSsrfHttpUrl(currentUrl);
+
+ HttpURLConnection conn = (HttpURLConnection) new URL(currentUrl).openConnection();
+ // 关键:禁止 JDK 自动跟随重定向,否则会绕过上面的校验
+ conn.setInstanceFollowRedirects(false);
+ conn.setConnectTimeout(5 * 1000);
+ conn.setReadTimeout(30 * 1000);
+ // 防止屏蔽程序
+ conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ conn.connect();
+
+ int code = conn.getResponseCode();
+ if (code >= 300 && code < 400) {
+ String location = conn.getHeaderField("Location");
+ conn.disconnect();
+ if (oConvertUtils.isEmpty(location)) {
+ throw new JeecgBootException("非法重定向:Location 为空");
+ }
+ // 处理相对路径跳转,解析为绝对地址后回到循环顶部再次校验
+ currentUrl = new URL(new URL(currentUrl), location).toString();
+ continue;
+ }
+ return conn;
+ }
+ throw new JeecgBootException("非法URL:重定向次数过多");
+ }
+ //update-end---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞(CWE-918),禁止自动跳转并逐跳校验-----------
+
+ //update-begin---author:liusq ---date:2026-06-29 for:【issues/9725】uploadImgByHttp 复用安全连接,修复SSRF重定向绕过漏洞(CWE-918)-----------
+ /**
+ * 安全地从网络下载资源为字节数组:内部复用 {@link #openSafeConnection(String)},
+ * 禁止自动跟随重定向,并对初始 URL 及每一跳重定向目标都做 SSRF 校验。
+ *
+ * @param fileUrl 文件URL
+ * @return 文件字节数组
+ * @throws IOException 连接或读取异常
+ */
+ public static byte[] download2BytesFromNet(String fileUrl) throws IOException {
+ HttpURLConnection conn = openSafeConnection(fileUrl);
+ try {
+ int responseCode = conn.getResponseCode();
+ if (responseCode != HttpURLConnection.HTTP_OK) {
+ throw new IOException("HTTP请求失败,响应码: " + responseCode);
+ }
+ try (InputStream inputStream = conn.getInputStream();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ byte[] buffer = new byte[4096];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ return outputStream.toByteArray();
+ }
+ } finally {
+ conn.disconnect();
+ }
+ }
+ //update-end---author:liusq ---date:2026-06-29 for:【issues/9725】uploadImgByHttp 复用安全连接,修复SSRF重定向绕过漏洞(CWE-918)-----------
+
/**
* 下载网络资源到磁盘
*
@@ -148,12 +220,10 @@ public class FileDownloadUtils {
SsrfFileTypeFilter.checkSsrfHttpUrl(fileUrl);
//update-end---author:zhangdaihao ---date:2026-04-15 for:【issues/9553】下载网络资源前增加SSRF校验-----------
try {
- URL url = new URL(fileUrl);
- URLConnection conn = url.openConnection();
- // 设置超时间为3秒
- conn.setConnectTimeout(3 * 1000);
- // 防止屏蔽程序
- conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+ //update-begin---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞,改用禁止自动跳转并逐跳校验的安全连接-----------
+ // 安全打开连接:内部已对初始 URL 及每一跳重定向目标做 SSRF 校验,并禁止自动跟随重定向
+ HttpURLConnection conn = openSafeConnection(fileUrl);
+ //update-end---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞,改用禁止自动跳转并逐跳校验的安全连接-----------
// 确保目录存在
File file = ensureDestFileDir(storePath);
try (InputStream inStream = conn.getInputStream();
@@ -279,10 +349,10 @@ public class FileDownloadUtils {
//update-begin---author:zhangdaihao ---date:2026-04-15 for:【issues/9553】修复二次SSRF漏洞,对HTTP下载URL进行安全校验-----------
SsrfFileTypeFilter.checkSsrfHttpUrl(fileUrl);
//update-end---author:zhangdaihao ---date:2026-04-15 for:【issues/9553】修复二次SSRF漏洞,对HTTP下载URL进行安全校验-----------
- URL url = new URL(fileUrl);
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setConnectTimeout(5000); // 连接超时5秒
- connection.setReadTimeout(30000); // 读取超时30秒
+ //update-begin---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞,改用禁止自动跳转并逐跳校验的安全连接-----------
+ // 安全打开连接:内部已对初始 URL 及每一跳重定向目标做 SSRF 校验,并禁止自动跟随重定向
+ HttpURLConnection connection = openSafeConnection(fileUrl);
+ //update-end---author:wangshuai ---date:2026-06-17 for:【issues/9681】修复SSRF重定向绕过漏洞,改用禁止自动跳转并逐跳校验的安全连接-----------
return connection.getInputStream();
} else {
// 处理本地文件:直接读取文件系统
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
index a40a93bb4..ab802150b 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
@@ -62,17 +62,21 @@ public class SpringContextUtils implements ApplicationContextAware {
//1.微服务情况下,获取gateway的basePath
String basePath = request.getHeader(ServiceNameConstants.X_GATEWAY_BASE_PATH);
if(oConvertUtils.isNotEmpty(basePath)){
- return basePath;
- }else{
- String domain = url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
- //2.【兼容】SSL认证之后,request.getScheme()获取不到https的问题
- // https://blog.csdn.net/weixin_34376986/article/details/89767950
- String scheme = request.getHeader(CommonConstant.X_FORWARDED_SCHEME);
- if(scheme!=null && !request.getScheme().equals(scheme)){
- domain = domain.replace(request.getScheme(),scheme);
+ //update-begin---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
+ String validated = CommonUtils.validateGatewayBasePathForDomain(basePath);
+ if(validated != null){
+ return validated;
}
- return domain;
+ //update-end---author:wangshuai ---date:20260616 for:【issues/9695】校验X_GATEWAY_BASE_PATH防止SSRF header注入-----------
}
+ String domain = url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
+ //2.【兼容】SSL认证之后,request.getScheme()获取不到https的问题
+ // https://blog.csdn.net/weixin_34376986/article/details/89767950
+ String scheme = request.getHeader(CommonConstant.X_FORWARDED_SCHEME);
+ if(scheme!=null && !request.getScheme().equals(scheme)){
+ domain = domain.replace(request.getScheme(),scheme);
+ }
+ return domain;
}
public static String getOrigin(){
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java
index 15ce7ceb3..77560ff0d 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java
@@ -124,7 +124,10 @@ public class SqlInjectionUtil {
checkSqlAnnotation(value);
// 转为小写进行后续比较
value = value.toLowerCase().trim();
-
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+ value = value.replaceAll("\\s+", " ");
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+
// 二、SQL注入检测存在绕过风险 (普通文本校验)
//https://gitee.com/jeecg/jeecg-boot/issues/I4NZGE
String[] xssArr = XSS_STR.split("\\|");
@@ -149,7 +152,9 @@ public class SqlInjectionUtil {
// 四、SQL注入检测存在绕过风险 (正则校验)
for (String regularOriginal : XSS_REGULAR_STR_ARRAY) {
- String regular = ".*" + regularOriginal + ".*";
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
+ String regular = "(?s).*" + regularOriginal + ".*";
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
if (Pattern.matches(regular, value)) {
log.error(SqlInjectionUtil.SQL_INJECTION_KEYWORD_TIP, regularOriginal);
log.error(SqlInjectionUtil.SQL_INJECTION_TIP_VARIABLE, value);
@@ -274,7 +279,10 @@ public class SqlInjectionUtil {
// 一、校验sql注释 不允许有sql注释
checkSqlAnnotation(value);
value = value.toLowerCase().trim();
-
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+ value = value.replaceAll("\\s+", " ");
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+
// 二、SQL注入检测存在绕过风险 (普通文本校验)
for (int i = 0; i < xssArr.length; i++) {
if (isExistSqlInjectKeyword(value, xssArr[i])) {
@@ -294,7 +302,9 @@ public class SqlInjectionUtil {
// 三、SQL注入检测存在绕过风险 (正则校验)
for (String regularOriginal : XSS_REGULAR_STR_ARRAY) {
- String regular = ".*" + regularOriginal + ".*";
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
+ String regular = "(?s).*" + regularOriginal + ".*";
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
if (Pattern.matches(regular, value)) {
log.error(SqlInjectionUtil.SQL_INJECTION_KEYWORD_TIP, regularOriginal);
log.error(SqlInjectionUtil.SQL_INJECTION_TIP_VARIABLE, value);
@@ -318,7 +328,10 @@ public class SqlInjectionUtil {
// 一、校验sql注释 不允许有sql注释
checkSqlAnnotation(value);
value = value.toLowerCase().trim();
-
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+ value = value.replaceAll("\\s+", " ");
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】修复换行符绕过SQL注入检测-----------
+
// 二、SQL注入检测存在绕过风险 (普通文本校验)
for (int i = 0; i < xssArr.length; i++) {
if (isExistSqlInjectKeyword(value, xssArr[i])) {
@@ -338,7 +351,9 @@ public class SqlInjectionUtil {
// 三、SQL注入检测存在绕过风险 (正则校验)
for (String regularOriginal : XSS_REGULAR_STR_ARRAY) {
- String regular = ".*" + regularOriginal + ".*";
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
+ String regular = "(?s).*" + regularOriginal + ".*";
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issue/9677】正则加DOTALL模式,防止换行绕过-----------
if (Pattern.matches(regular, value)) {
log.error(SqlInjectionUtil.SQL_INJECTION_KEYWORD_TIP, regularOriginal);
log.error(SqlInjectionUtil.SQL_INJECTION_TIP_VARIABLE, value);
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java
index 20aa47bcc..25948cadb 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java
@@ -95,6 +95,8 @@ public class DbTypeUtils {
return DataBaseConstant.DB_TYPE_DB2;
}else if(DbType.HSQL.equals(dbType)){
return DataBaseConstant.DB_TYPE_HSQL;
+ }else if(DbType.DM.equals(dbType)){
+ return DataBaseConstant.DB_TYPE_DM;
}else if(dbTypeIsOracle(dbType)){
return DataBaseConstant.DB_TYPE_ORACLE;
}else if(dbTypeIsSqlServer(dbType)){
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
index 0fe13edc7..bd3bfee1b 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
@@ -56,8 +56,10 @@ public class DynamicDBUtil {
dataSource.setTestOnBorrow(false);
dataSource.setTestOnReturn(false);
dataSource.setBreakAfterAcquireFailure(true);
- //设置超时时间60秒
- dataSource.setLoginTimeout(60);
+ // TCP建连超时 3s,防止目标库不可达时连接线程挂住
+ dataSource.setConnectTimeout(3000);
+ // 登录超时 5s(原为60s,过长会导致线程被占住;不影响SQL执行阶段)
+ dataSource.setLoginTimeout(5);
dataSource.setConnectionErrorRetryAttempts(0);
dataSource.setUsername(dbUser);
dataSource.setMaxWait(30000);
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java
index 818dea154..623967d8e 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/SsrfFileTypeFilter.java
@@ -11,10 +11,15 @@ import java.net.InetAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.UnknownHostException;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
+import java.util.regex.Pattern;
/**
* @Description: 校验文件敏感后缀
@@ -187,6 +192,10 @@ public class SsrfFileTypeFilter {
if (!isAllowExtension) {
throw new JeecgBootException("上传失败,存在非法文件类型:" + suffix);
}
+ //3. SVG文件内容安全校验(issues/9693)
+ if ("svg".equalsIgnoreCase(suffix)) {
+ checkSvgSafety(file);
+ }
}
/**
@@ -210,9 +219,12 @@ public class SsrfFileTypeFilter {
Iterator keyIter = FILE_TYPE_MAP.keySet().iterator();
while (keyIter.hasNext()) {
String key = keyIter.next();
- // 验证前5个字符比较
- if (key.toLowerCase().startsWith(fileTypeHex.toLowerCase().substring(0, 5))
- || fileTypeHex.toLowerCase().substring(0, 5).startsWith(key.toLowerCase())) {
+ //update-begin---author:lsq ---date:2026-05-26 for:修复SVG文件被误判为php的问题( SVG_DANGEROUS_TAGS = new HashSet<>(Arrays.asList(
+ "script", "foreignobject", "iframe", "object", "embed", "applet",
+ "form", "input", "textarea", "button", "select",
+ "link", "meta", "base", "import",
+ "handler", "set", "animate", "animatemotion", "animatetransform"
+ ));
+
+ /**
+ * SVG 危险属性正则:匹配事件属性(on*="...")和 javascript: 协议
+ */
+ private static final Pattern SVG_EVENT_ATTR_PATTERN = Pattern.compile(
+ "\\bon\\w+\\s*=", Pattern.CASE_INSENSITIVE
+ );
+ private static final Pattern SVG_JS_PROTOCOL_PATTERN = Pattern.compile(
+ "javascript\\s*:", Pattern.CASE_INSENSITIVE
+ );
+ /**
+ * HTML entity 编码的 javascript 协议(javascript: 等变体)
+ */
+ private static final Pattern SVG_ENTITY_JS_PATTERN = Pattern.compile(
+ "\\d+;|[0-9a-f]+;", Pattern.CASE_INSENSITIVE
+ );
+
+ /**
+ * 校验 SVG 文件内容是否安全,防止存储型 XSS(issues/9693)。
+ * 采用文本扫描方式检测危险标签、事件属性和 javascript: 协议。
+ *
+ * @param file 上传的 SVG 文件
+ */
+ private static void checkSvgSafety(MultipartFile file) throws Exception {
+ String originalContent;
+ try (InputStream is = file.getInputStream()) {
+ originalContent = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+ }
+ String content = originalContent.toLowerCase();
+ // 检测危险标签
+ for (String tag : SVG_DANGEROUS_TAGS) {
+ if (content.contains("<" + tag + ">") || content.contains("<" + tag + " ")
+ || content.contains("<" + tag + "/") || content.contains("<" + tag + "\t")
+ || content.contains("<" + tag + "\n") || content.contains("<" + tag + "\r")) {
+ throw new JeecgBootException("上传失败,SVG文件包含不安全的标签:<" + tag + ">");
+ }
+ }
+ // 检测事件属性(onclick、onload、onerror、onbegin 等)
+ if (SVG_EVENT_ATTR_PATTERN.matcher(originalContent).find()) {
+ throw new JeecgBootException("上传失败,SVG文件包含不安全的事件属性");
+ }
+ // 检测 javascript: 协议
+ if (SVG_JS_PROTOCOL_PATTERN.matcher(originalContent).find()) {
+ throw new JeecgBootException("上传失败,SVG文件包含不安全的javascript协议");
+ }
+ // 检测 HTML entity 编码(防止 javascript: 等绕过)
+ if (SVG_ENTITY_JS_PATTERN.matcher(originalContent).find()) {
+ throw new JeecgBootException("上传失败,SVG文件包含不安全的编码内容");
+ }
+ // 检测 DOCTYPE/ENTITY 声明(防止 XML Bomb / Billion Laughs DoS 攻击)
+ if (content.contains("对所有 .svg 请求的响应自动追加 Content-Security-Policy:sandbox 和 X-Content-Type-Options:nosniff,
+ * 阻止浏览器以顶层文档方式渲染已上传 SVG 时执行内嵌脚本(存储型 XSS)。
+ *
+ * @see SvgSecurityFilter
+ */
+ @Bean
+ public FilterRegistrationBean svgSecurityFilterRegistration() {
+ FilterRegistrationBean registration = new FilterRegistrationBean<>();
+ registration.setFilter(new SvgSecurityFilter());
+ registration.addUrlPatterns("/*");
+ registration.setName("svgSecurityFilter");
+ return registration;
+ }
+ //update-end---author:liusq ---date:20260525 for:【QQYUN-15536】修复上传SVG文件通过静态资源路径触发存储型XSS-----------
+
/**
* 在Bean初始化完成后立即配置PrometheusMeterRegistry,避免在Meter注册后才配置MeterFilter
* for [QQYUN-12558]【监控】系统监控的头两个tab不好使,接口404
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/SvgSecurityFilter.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/SvgSecurityFilter.java
new file mode 100644
index 000000000..c81a9ca05
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/SvgSecurityFilter.java
@@ -0,0 +1,43 @@
+package org.jeecg.config.filter;
+
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import java.io.IOException;
+
+/**
+ * 【QQYUN-15536】修复上传SVG文件通过静态资源路径触发存储型XSS
+ * 对 .svg 后缀的响应自动追加以下安全响应头,阻止浏览器在顶层文档渲染 SVG 时执行内嵌脚本
+ * Content-Security-Policy: sandbox —— 沙箱化页面,禁止脚本、表单提交、同源操作等
+ * X-Content-Type-Options: nosniff —— 禁止 MIME 类型嗅探,防止绕过 Content-Type 限制
+ * 对通过 {@code
} 方式内嵌的 SVG 无任何影响(子资源加载不受此类头部限制)
+ * @author liusq
+ * @date 2026/05/25
+ * @see issues/9646
+ */
+@Slf4j
+public class SvgSecurityFilter extends OncePerRequestFilter {
+
+ private static final String SVG_SUFFIX = ".svg";
+
+ @Override
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
+ FilterChain filterChain) throws ServletException, IOException {
+ //update-begin---author:liusq ---date:2026-05-26 for:【QQYUN-15536】补充URL编码绕过防御:getServletPath()由Servlet容器解码,可防止%2E等编码绕过-----------
+ // 使用 getServletPath() 而非 getRequestURI():前者由 Servlet 容器自动 URL 解码,
+ // 后者返回原始未解码路径,攻击者可用 %2e%73%76%67 绕过 endsWith(".svg") 检测
+ String uri = request.getServletPath();
+ //update-end---author:liusq ---date:2026-05-26 for:【QQYUN-15536】补充URL编码绕过防御:getServletPath()由Servlet容器解码,可防止%2E等编码绕过-----------
+ if (uri != null && uri.toLowerCase().endsWith(SVG_SUFFIX)) {
+ // 沙箱化限制:即使浏览器以顶层文档方式访问 SVG,内嵌脚本也无法执行
+ response.setHeader("Content-Security-Policy", "sandbox");
+ // 禁止 MIME 类型嗅探,强制浏览器遵守声明的 Content-Type,防止绕过
+ response.setHeader("X-Content-Type-Options", "nosniff");
+ }
+ filterChain.doFilter(request, response);
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
index e7383ed5f..e602a1e69 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
@@ -55,7 +55,7 @@ public class LowCodeModeInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
CommonAPI commonAPI = null;
- log.info("低代码模式,拦截请求路径:" + request.getRequestURI());
+ log.debug("低代码模式,拦截请求路径:" + request.getRequestURI());
//1、验证是否开启低代码开发模式控制
if (jeecgBaseConfig == null) {
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
index a370ff972..23a3365e4 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
@@ -1,16 +1,12 @@
package org.jeecg.config.mybatis;
import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
-import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.log.Log;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
import org.jeecg.common.config.TenantContext;
@@ -19,13 +15,13 @@ import org.jeecg.common.constant.TenantConstant;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.TokenUtils;
import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.config.mybatis.interceptor.MultiDataSourcePaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
-import javax.sql.DataSource;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -38,8 +34,6 @@ import java.util.List;
@Configuration
@MapperScan(value={"org.jeecg.**.mapper*"})
public class MybatisPlusSaasConfig {
- @Autowired
- private DataSource dataSource;
/**
* 是否开启系统模块的租户隔离
@@ -90,6 +84,10 @@ public class MybatisPlusSaasConfig {
@Bean
+ // 顺序需低于 OnlineCgformDataSourceMybatisInterceptor(其为 LOWEST_PRECEDENCE),使分页插件处于数据源切换拦截器的内层,
+ // 保证 Online 物理表查询时数据源已 push、分页插件 beforeQuery 探测连接能路由到正确的数据源
+ // author:zhangdaiscott date:2026-07-09 for:修复Online配置多数据源导出excel数据为空
+ @Order(Ordered.LOWEST_PRECEDENCE - 1)
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 先 add TenantLineInnerInterceptor 再 add PaginationInnerInterceptor
@@ -127,27 +125,12 @@ public class MybatisPlusSaasConfig {
return true;
}
}));
- //update-begin-author:zyf date:20220425 for:【VUEN-606】注入动态表名适配拦截器解决多表名问题
+ // 注入动态表名适配拦截器解决多表名问题
interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor());
- //update-end-author:zyf date:20220425 for:【VUEN-606】注入动态表名适配拦截器解决多表名问题
-
- //update-begin---author:scott ---date:2025-08-02 for:【issues/8666】升级mybatisPlus后SqlServer分页使用OFFSET ? ROWS FETCH NEXT ? ROWS ONLY,导致online报表报错---
- DbType dbType = null;
- try {
- dbType = JdbcUtils.getDbType(dataSource.getConnection().getMetaData().getURL());
- log.info("当前数据库类型: {}", dbType);
- } catch (SQLException e) {
- Log.error(e.getMessage(), e);
- }
- if (dbType!=null && (dbType == DbType.SQL_SERVER || dbType == DbType.SQL_SERVER2005)) {
- // 如果是SQL Server则覆盖为2005分页方式
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005));
- } else {
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
- }
- //update-end---author:scott ---date::2025-08-02 for:【issues/8666】升级mybatisPlus后SqlServer分页使用OFFSET ? ROWS FETCH NEXT ? ROWS ONLY,导致online报表报错---
-
- //【jeecg-boot/issues/3847】增加@Version乐观锁支持
+ //update-begin---author:scott ---date:2026-07-09 for:【LHZP-9、LHZP-8】使用按连接实时探测方言的分页拦截器,兼容主库/从库不同数据库类型(多数据源);SQL Server 走 2005 方言并做 ORDER BY 去重(保留 issues/8666 修复)---
+ interceptor.addInnerInterceptor(new MultiDataSourcePaginationInnerInterceptor());
+ //update-end---author:scott ---date:2026-07-09 for:【LHZP-9、LHZP-8】使用按连接实时探测方言的分页拦截器,兼容主库/从库不同数据库类型(多数据源);SQL Server 走 2005 方言并做 ORDER BY 去重(保留 issues/8666 修复)---
+ // 增加@Version乐观锁支持
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/MultiDataSourcePaginationInnerInterceptor.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/MultiDataSourcePaginationInnerInterceptor.java
new file mode 100644
index 000000000..680707f31
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/MultiDataSourcePaginationInnerInterceptor.java
@@ -0,0 +1,130 @@
+package org.jeecg.config.mybatis.interceptor;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.pagination.DialectFactory;
+import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
+import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import net.sf.jsqlparser.statement.Statement;
+import net.sf.jsqlparser.statement.select.OrderByElement;
+import net.sf.jsqlparser.statement.select.PlainSelect;
+import net.sf.jsqlparser.statement.select.SetOperationList;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.List;
+
+/**
+ * 支持动态多数据源的分页拦截器
+ *
+ * 原生 {@link PaginationInnerInterceptor} 一旦用固定 {@link DbType} 构造,
+ * {@code findIDialect()} 会缓存该方言并对所有数据源生效。当主库与 Online 表单/报表
+ * 使用的从数据源类型不一致时(例如主库 SQL Server、从库 MySQL),会用主库方言分页,
+ * 生成对方数据库无法识别的分页 SQL 而报错。
+ *
+ * 本子类做两件事,均按当前连接实时探测数据库类型({@link JdbcUtils#getDbType(Executor)}
+ * 内部按 URL 缓存,开销极小),从而正确适配多数据源:
+ *
+ * - {@link #findIDialect(Executor)}:让不同类型的数据源各自使用正确的分页方言,
+ * 其中 SQL Server 统一映射为 {@link DbType#SQL_SERVER2005} 方言,以保留
+ * issues/8666 对旧版 SQL Server 分页的兼容处理;
+ * - {@link #beforeQuery}:仅当探测到 SQL Server 时,对 ORDER BY 去重
+ * (保留首次出现、维持排序优先级),解决 QueryGenerator + 手动 orderBy 叠加导致
+ * 重复列 error 169 的问题;其它数据库不做处理,避免无谓的 SQL 解析开销。
+ *
+ *
+ * @author scott
+ * @date 2026-07-09
+ */
+@Slf4j
+public class MultiDataSourcePaginationInnerInterceptor extends PaginationInnerInterceptor {
+
+ @Override
+ protected IDialect findIDialect(Executor executor) {
+ if (isSqlServer(executor)) {
+ // SQL Server 统一走 2005 方言(ROW_NUMBER 分页),兼容旧版 SQL Server
+ return DialectFactory.getDialect(DbType.SQL_SERVER2005);
+ }
+ return DialectFactory.getDialect(JdbcUtils.getDbType(executor));
+ }
+
+ @Override
+ public void beforeQuery(Executor executor, MappedStatement ms, Object parameter,
+ RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
+ // 仅 SQL Server 需要 ORDER BY 去重(error 169),其它库跳过以免无谓的 SQL 解析开销
+ if (isSqlServer(executor)) {
+ dedupOrderBy(boundSql);
+ }
+ super.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql);
+ }
+
+ /**
+ * 按当前连接判断是否为 SQL Server
+ */
+ private boolean isSqlServer(Executor executor) {
+ DbType dbType = JdbcUtils.getDbType(executor);
+ return dbType == DbType.SQL_SERVER || dbType == DbType.SQL_SERVER2005;
+ }
+
+ /**
+ * SQL Server ORDER BY 去重:移除 ORDER BY 中重复的列(保留首次出现,维持排序优先级)。
+ * SQL Server 不允许 ORDER BY 中出现重复列(error 169),而项目中有多处在
+ * QueryGenerator.initQueryWrapper() 之后又手动调了 orderByDesc/orderByAsc。
+ */
+ private void dedupOrderBy(BoundSql boundSql) {
+ String originalSql = boundSql.getSql();
+ if (originalSql == null || originalSql.isEmpty()) {
+ return;
+ }
+ // 快速跳过非 SELECT 语句
+ String upper = originalSql.trim().toUpperCase();
+ if (!upper.startsWith("SELECT") && !upper.startsWith("(SELECT")) {
+ return;
+ }
+ try {
+ Statement stmt = CCJSqlParserUtil.parse(originalSql);
+ List orderByElements = null;
+ if (stmt instanceof PlainSelect) {
+ orderByElements = ((PlainSelect) stmt).getOrderByElements();
+ } else if (stmt instanceof SetOperationList) {
+ orderByElements = ((SetOperationList) stmt).getOrderByElements();
+ }
+ if (orderByElements == null || orderByElements.size() <= 1) {
+ return;
+ }
+
+ // 去重:保留首次出现,维持顺序
+ List deduped = new ArrayList<>(orderByElements.size());
+ LinkedHashSet seen = new LinkedHashSet<>();
+ for (OrderByElement element : orderByElements) {
+ // toString() 包含表达式 + ASC/DESC + NULLS FIRST/LAST,完整作为去重 key
+ if (seen.add(element.toString())) {
+ deduped.add(element);
+ }
+ }
+ if (deduped.size() == orderByElements.size()) {
+ return;
+ }
+
+ // 回写去重后的 ORDER BY
+ if (stmt instanceof PlainSelect) {
+ ((PlainSelect) stmt).setOrderByElements(deduped);
+ } else {
+ ((SetOperationList) stmt).setOrderByElements(deduped);
+ }
+ PluginUtils.mpBoundSql(boundSql).sql(stmt.toString());
+ log.debug("SQL Server ORDER BY 去重: {} 个重复列已移除", orderByElements.size() - deduped.size());
+ } catch (Exception e) {
+ // 解析失败时保持原始 SQL,不中断查询
+ log.warn("SQL Server ORDER BY 去重解析失败,使用原始 SQL: {}", e.getMessage());
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
index b6214f864..f407aa59f 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -138,6 +138,9 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
+ //Chat2BI分享页(页面自带独立登录)
+ filterChainDefinitionMap.put("/jimu/chat2bi/chat", "anon");
+
//积木报表排除
filterChainDefinitionMap.put("/jmreport/**", "anon");
filterChainDefinitionMap.put("/**/*.js.map", "anon");
@@ -225,6 +228,7 @@ public class ShiroConfig {
registration.addUrlPatterns("/test/ai/chat/send");
registration.addUrlPatterns("/airag/flow/run");
registration.addUrlPatterns("/airag/flow/debug");
+ registration.addUrlPatterns("/airag/flow/code/generate");
registration.addUrlPatterns("/airag/chat/send");
registration.addUrlPatterns("/airag/app/debug");
registration.addUrlPatterns("/airag/app/prompt/generate");
@@ -326,7 +330,6 @@ public class ShiroConfig {
public IRedisManager redisManager() {
log.info("===============(2)创建RedisManager,连接Redis..");
IRedisManager manager;
- //update-begin---author:scott ---date:2026-07-07 for:【Spring Boot 4.0 升级】恢复 Sentinel 哨兵模式支持,API 兼容-----------
// sentinel cluster redis(【issues/5569】shiro集成 redis 不支持 sentinel 方式部署的redis集群 #5569)
if (Objects.nonNull(redisProperties)
&& Objects.nonNull(redisProperties.getSentinel())
@@ -339,7 +342,6 @@ public class ShiroConfig {
return sentinelManager;
}
- //update-end---author:scott ---date:2026-07-07 for:【Spring Boot 4.0 升级】恢复 Sentinel 哨兵模式支持,API 兼容-----------
// redis 单机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com
if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) {
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
index 058a2fa6c..3b00ad3ea 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
@@ -33,7 +33,7 @@ public class SignAuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- log.info("签名拦截器 Interceptor request URI = " + request.getRequestURI());
+ log.debug("签名拦截器 Interceptor request URI = " + request.getRequestURI());
try {
// 调用验证逻辑
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/DomainUrl.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/DomainUrl.java
index df6b8c334..d72b71766 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/DomainUrl.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/DomainUrl.java
@@ -12,4 +12,10 @@ public class DomainUrl {
private String pc;
private String app;
+
+ /**
+ * 后端自代理 baseUrl:相对路径 originUrl 转发时使用,
+ * 解决 Docker / K8s NodePort / 反向代理等入站端口与监听端口不一致问题。
+ */
+ private String back;
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Firewall.java b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Firewall.java
index 4dc719314..156a2d685 100644
--- a/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Firewall.java
+++ b/jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/vo/Firewall.java
@@ -33,6 +33,13 @@ public class Firewall {
*/
private Boolean enableLoginCaptcha = true;
+ //update-begin---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关-----------
+ /**
+ * 是否开启三级等保强密码校验(true 开启强密码模式,false 使用简单密码规则)
+ */
+ private Boolean enableStrongPwd = false;
+ //update-end---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关-----------
+
// /**
// * 表字典安全模式(white:白名单——配置了白名单的表才能通过表字典方式访问,black:黑名单——配置了黑名单的表不允许表字典方式访问)
// */
@@ -86,4 +93,14 @@ public class Firewall {
public void setIsConcurrent(Boolean isConcurrent) {
this.isConcurrent = isConcurrent;
}
+
+ //update-begin---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关-----------
+ public Boolean getEnableStrongPwd() {
+ return enableStrongPwd;
+ }
+
+ public void setEnableStrongPwd(Boolean enableStrongPwd) {
+ this.enableStrongPwd = enableStrongPwd;
+ }
+ //update-end---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关-----------
}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9672_SsrfFileTypeFilterTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9672_SsrfFileTypeFilterTest.java
new file mode 100644
index 000000000..0233ec696
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9672_SsrfFileTypeFilterTest.java
@@ -0,0 +1,165 @@
+package org.jeecg.test.security;
+
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.filter.SsrfFileTypeFilter;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * SsrfFileTypeFilter.checkSsrfHttpUrl SSRF 防护单元测试
+ *
+ * 覆盖:
+ * - 【issues/9672】RFC1918 私网地址(10.x / 172.16-31.x / 192.168.x)应放行,兼容企业内网 MinIO/OSS
+ * - 回归:loopback / link-local 仍拦截
+ * - 回归:公网 URL 正常放行
+ * - 协议校验、空值校验
+ *
+ * @author wangshuai
+ * @date 2026-06-16
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9672_SsrfFileTypeFilterTest {
+
+ @Nested
+ @DisplayName("【issues/9672】RFC1918 私网地址应放行(兼容内网 MinIO/OSS)")
+ class Issue9672_PrivateNetwork {
+
+ @Test
+ @DisplayName("10.0.0.0/8 段应放行(内网 MinIO 等服务)")
+ void shouldAllow_10Network() {
+ String url = "http://10.0.0.1/secret.txt";
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 放行(RFC1918 私网)");
+ }
+
+ @Test
+ @DisplayName("172.16.0.0/12 段应放行(内网 MinIO 等服务)")
+ void shouldAllow_172_16Network() {
+ String url = "http://172.16.0.1:9000/bucket/file.pdf";
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 放行(RFC1918 私网)");
+ }
+
+ @Test
+ @DisplayName("192.168.0.0/16 段应放行(内网 MinIO 等服务)")
+ void shouldAllow_192_168Network() {
+ String url = "http://192.168.1.100/internal/data.txt";
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 放行(RFC1918 私网)");
+ }
+ }
+
+ @Nested
+ @DisplayName("回归:loopback / link-local 仍拦截")
+ class Regression_LoopbackLinkLocal {
+
+ @Test
+ @DisplayName("127.0.0.1 应被拦截")
+ void shouldBlock_loopback_ipv4() {
+ String url = "http://127.0.0.1/etc/passwd";
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ assertTrue(ex.getMessage().contains("本机或链路本地地址"));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截: " + ex.getMessage());
+ }
+
+ @Test
+ @DisplayName("localhost 应被拦截")
+ void shouldBlock_localhost() {
+ String url = "http://localhost:8080/admin";
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截: " + ex.getMessage());
+ }
+
+ @Test
+ @DisplayName("169.254.169.254 云元数据应被拦截")
+ void shouldBlock_cloudMetadata() {
+ String url = "http://169.254.169.254/latest/meta-data/";
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截(云元数据): " + ex.getMessage());
+ }
+ }
+
+ @Nested
+ @DisplayName("公网 URL 正常放行")
+ class PublicUrl_AllowThrough {
+
+ @Test
+ @DisplayName("HTTPS 公网 URL 应放行")
+ void shouldAllow_publicHttps() {
+ String url = "https://www.baidu.com/index.html";
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 放行(公网)");
+ }
+
+ @Test
+ @DisplayName("HTTP 公网 URL 应放行")
+ void shouldAllow_publicHttp() {
+ String url = "http://cdn.example.com/file.pdf";
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 放行(公网)");
+ }
+ }
+
+ @Nested
+ @DisplayName("协议与格式校验")
+ class ProtocolAndFormat {
+
+ @Test
+ @DisplayName("空 URL 应拦截")
+ void shouldBlock_emptyUrl() {
+ assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(""));
+ assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(null));
+ System.out.println(" [SSRF校验] 空值 \"\" / null -> 拦截");
+ }
+
+ @Test
+ @DisplayName("非 http/https 协议应拦截")
+ void shouldBlock_nonHttpProtocol() {
+ for (String url : new String[]{"file:///etc/passwd", "ftp://192.168.1.1/data", "gopher://127.0.0.1:6379/_INFO"}) {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截(非 http/https): " + ex.getMessage());
+ }
+ }
+
+ @Test
+ @DisplayName("格式错误的 URL 应拦截")
+ void shouldBlock_malformedUrl() {
+ String url = "http://";
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截(格式错误): " + ex.getMessage());
+ }
+
+ @Test
+ @DisplayName("无法解析的主机名应拦截")
+ void shouldBlock_unresolvableHost() {
+ String host = "this-host-does-not-exist-12345.invalid";
+ String url = "http://" + host + "/test";
+ // 某些网络环境存在通配 DNS(把任意不存在域名解析到一个真实公网地址),
+ // 此时该 host 并非"无法解析",本用例前提不成立,跳过以免环境误报。
+ boolean resolvable;
+ try {
+ java.net.InetAddress.getByName(host);
+ resolvable = true;
+ } catch (java.net.UnknownHostException e) {
+ resolvable = false;
+ }
+ org.junit.jupiter.api.Assumptions.assumeFalse(resolvable,
+ "当前网络存在通配 DNS," + host + " 被解析为真实地址,跳过该用例");
+
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl(url));
+ System.out.println(" [SSRF校验] " + url + " -> 拦截(主机无法解析): " + ex.getMessage());
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9677_SqlInjectionNewlineBypassTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9677_SqlInjectionNewlineBypassTest.java
new file mode 100644
index 000000000..fec93b6fc
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9677_SqlInjectionNewlineBypassTest.java
@@ -0,0 +1,274 @@
+package org.jeecg.test.security;
+
+import org.jeecg.common.exception.JeecgSqlInjectionException;
+import org.jeecg.common.util.SqlInjectionUtil;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+/**
+ * 【issue/9677】SQL注入换行符绕过修复 — 单元测试
+ *
+ * 漏洞:攻击者用换行符(\n)替代空格,绕过关键词黑名单和正则检测
+ * 例如 "1\nand\nsleep(2)" 绕过 "and " 和 "sleep\\s*\\(" 的检测
+ *
+ * 修复:在所有检测入口对输入做 \\s+ → 空格 的归一化,正则加 (?s) DOTALL 模式
+ *
+ * @author wangshuai
+ * @date 2026-06-16
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9677_SqlInjectionNewlineBypassTest {
+
+ // ========== 漏洞一:SQL注入换行绕过 ==========
+
+ @Nested
+ @DisplayName("filterContent — 换行绕过检测")
+ class FilterContentNewlineBypass {
+
+ @Test
+ @DisplayName("正常空格形式 'and sleep(2)' 被拦截(回归)")
+ void normalSpaceBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1 and sleep(2)", null));
+ }
+
+ @Test
+ @DisplayName("换行符形式 '1\\nand\\nsleep(2)' 应被拦截")
+ void newlineAndSleepBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\nand\nsleep(2)", null));
+ }
+
+ @Test
+ @DisplayName("制表符形式 '1\\tand\\tsleep(2)' 应被拦截")
+ void tabAndSleepBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\tand\tsleep(2)", null));
+ }
+
+ @Test
+ @DisplayName("回车换行混合 '1\\r\\nand\\r\\nsleep(2)' 应被拦截")
+ void crlfAndSleepBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\r\nand\r\nsleep(2)", null));
+ }
+
+ @Test
+ @DisplayName("换行符形式 '1\\nselect\\n1' 应被拦截")
+ void newlineSelectBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\nselect\n1", null));
+ }
+
+ @Test
+ @DisplayName("换行符形式 '1\\nor\\n1=1' 应被拦截")
+ void newlineOrBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\nor\n1=1", null));
+ }
+
+ @Test
+ @DisplayName("换行符+正则函数 'benchmark\\n(1000,md5(1))' 应被拦截")
+ void newlineBenchmarkBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\nand\nbenchmark\n(1000,md5(1))", null));
+ }
+
+ @Test
+ @DisplayName("换行符+show tables应被拦截")
+ void newlineShowTablesBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.filterContent("1\nand\nshow\ntables", null));
+ }
+ }
+
+ @Nested
+ @DisplayName("specialFilterContentForDictSql — 换行绕过检测")
+ class DictSqlNewlineBypass {
+
+ @Test
+ @DisplayName("正常空格形式 'and sleep(5)' 被拦截(回归)")
+ void normalSpaceBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and sleep(5)"));
+ }
+
+ @Test
+ @DisplayName("换行符形式 '1\\nand\\nsleep(5)' 应被拦截")
+ void newlineSleepBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1\nand\nsleep(5)"));
+ }
+
+ @Test
+ @DisplayName("换行符+select 绕过应被拦截")
+ void newlineSelectBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1\nunion\nselect\npassword\nfrom\nsys_user"));
+ }
+
+ @Test
+ @DisplayName("换行符+database()应被拦截")
+ void newlineDatabaseFuncBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1\nand\ndatabase()='jeecg'"));
+ }
+
+ @Test
+ @DisplayName("制表符+extractvalue应被拦截")
+ void tabExtractvalueBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1\tand\textractvalue(1,concat(0x7e))"));
+ }
+
+ @Test
+ @DisplayName("多种空白混合应被拦截")
+ void mixedWhitespaceBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1\n\tand \nsleep(5)"));
+ }
+ }
+
+ @Nested
+ @DisplayName("specialFilterContentForOnlineReport — 换行绕过检测")
+ class OnlineReportNewlineBypass {
+
+ @Test
+ @DisplayName("换行符+insert绕过应被拦截")
+ void newlineInsertBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForOnlineReport("1\ninsert\ninto\nsys_user"));
+ }
+
+ @Test
+ @DisplayName("换行符+delete绕过应被拦截")
+ void newlineDeleteBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForOnlineReport("1\ndelete\nfrom\nsys_user"));
+ }
+
+ @Test
+ @DisplayName("换行符+drop绕过应被拦截")
+ void newlineDropBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForOnlineReport("1;\ndrop\ntable\nsys_user"));
+ }
+ }
+
+ // ========== 合法输入不被误拦截 ==========
+
+ @Nested
+ @DisplayName("合法输入回归 — 确保不误拦截")
+ class LegitimateInputs {
+
+ @Test
+ @DisplayName("简单条件通过")
+ void simpleConditionPasses() {
+ assertDoesNotThrow(() -> SqlInjectionUtil.filterContent("status=1", null));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("status=1"));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForOnlineReport("status=1"));
+ }
+
+ @Test
+ @DisplayName("含引号的字符串值通过")
+ void quotedValuePasses() {
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("dept_id='10001'"));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("create_time > '2026-01-01'"));
+ }
+
+ @Test
+ @DisplayName("空/null值通过")
+ void blankPasses() {
+ assertDoesNotThrow(() -> SqlInjectionUtil.filterContent((String) "", null));
+ assertDoesNotThrow(() -> SqlInjectionUtil.filterContent((String) null, null));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql(""));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql(null));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForOnlineReport(""));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForOnlineReport(null));
+ }
+
+ @Test
+ @DisplayName("字典条件中含like的合法查询通过")
+ void likePasses() {
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("name like '%张%'"));
+ }
+
+ @Test
+ @DisplayName("含数字比较的条件通过")
+ void numericComparisonPasses() {
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("age >= 18"));
+ assertDoesNotThrow(() -> SqlInjectionUtil.specialFilterContentForDictSql("level != 0"));
+ }
+ }
+
+ // ========== 既有攻击回归 ==========
+
+ @Nested
+ @DisplayName("既有攻击向量回归 — 确保已有修复不被破坏")
+ class ExistingAttackRegression {
+
+ @Test
+ @DisplayName("【#9523】时间盲注 sleep/benchmark/pg_sleep/waitfor delay 仍拦截")
+ void timeBlindStillBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and sleep(5)"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and benchmark(1000000,md5(1))"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and pg_sleep(5)"));
+ }
+
+ @Test
+ @DisplayName("【#9524】(extractvalue/(updatexml 报错注入仍拦截")
+ void errorBasedStillBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql(
+ "id=1 and (updatexml(1,concat(0x7e,(user())),1))"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql(
+ "id=1 and (extractvalue(1,concat(0x7e,(user()))))"));
+ }
+
+ @Test
+ @DisplayName("【#9571】database()/version()/ascii() 信息泄露函数仍拦截")
+ void booleanBlindStillBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and database()='jeecg-boot'"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 and version() like '8%'"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=ascii('a')"));
+ }
+
+ @Test
+ @DisplayName("【#9572】select(/insert(/delete( 紧贴形式仍拦截")
+ void keywordParenStillBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql(
+ "id=(select(id)from(sys_user)where(username='admin'))"));
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("x=insert(1,2,3,'a')"));
+ }
+
+ @Test
+ @DisplayName("SQL注释 -- 和 /**/ 仍拦截")
+ void sqlCommentStillBlocked() {
+ assertThrows(RuntimeException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1-- "));
+ assertThrows(RuntimeException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id=1 /*comment*/"));
+ }
+
+ @Test
+ @DisplayName("information_schema 仍拦截")
+ void infoSchemaStillBlocked() {
+ assertThrows(JeecgSqlInjectionException.class,
+ () -> SqlInjectionUtil.specialFilterContentForDictSql("id in (select 1 from information_schema.tables)"));
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9681_SsrfRedirectBypassTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9681_SsrfRedirectBypassTest.java
new file mode 100644
index 000000000..3bd42b66a
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9681_SsrfRedirectBypassTest.java
@@ -0,0 +1,222 @@
+package org.jeecg.test.security;
+
+import com.sun.net.httpserver.HttpServer;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.FileDownloadUtils;
+import org.jeecg.common.util.filter.SsrfFileTypeFilter;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.MockedStatic;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.net.HttpURLConnection;
+import java.net.InetSocketAddress;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.times;
+
+/**
+ * 【issues/9681】SSRF 重定向绕过漏洞修复 (CWE-918) — 单元测试
+ *
+ * ── 漏洞 ──────────────────────────────────────────────────────────────────────
+ * 修复前:download2DiskFromNet / getDownInputStream 仅在打开连接前对 fileUrl 做了
+ * 一次 SsrfFileTypeFilter.checkSsrfHttpUrl(...),随后用 HttpURLConnection 打开连接,
+ * 而 JDK 默认 followRedirects=true 会【自动跟随 3xx 重定向】。
+ *
+ * 攻击者:传入公网地址 http://attacker.com/x(首检通过),其服务器返回
+ * 302 Location: http://127.0.0.1:xxx/... 或 http://169.254.169.254/latest/meta-data/。
+ * JDK 自动跟随该跳且【不再复检】,于是访问到内网/云元数据 —— SSRF 成立。
+ * 根因:被校验的 URL 与最终被访问的 URL 不一致(重定向逃逸)。
+ *
+ * ── 修复 ──────────────────────────────────────────────────────────────────────
+ * openSafeConnection(...):setInstanceFollowRedirects(false) 关闭自动跳转,改为手动
+ * 循环(最多 5 跳),对【初始 URL 及每一跳重定向目标】都重新 checkSsrfHttpUrl,
+ * 相对 Location 解析为绝对地址后再校验,超过次数抛异常。
+ *
+ * ── 测试策略 ──────────────────────────────────────────────────────────────────
+ * 1. 漏洞根因(用真实过滤器,无网络):证明"公网首检通过、内网目标会被拦",
+ * 从而说明单次前置校验对重定向无效,必须逐跳复检。
+ * 2. 修复行为(mockStatic + 本地 HttpServer):本地测试服在 127.0.0.1,会被真实
+ * SSRF 过滤器拦截,故用 mockStatic 放行测试服,专注断言"每一跳都调用了
+ * checkSsrfHttpUrl"以及"某一跳校验失败会整体抛异常 / 不会自动跟随"。
+ *
+ * @author wangshuai
+ * @date 2026-06-17
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9681_SsrfRedirectBypassTest {
+
+ private static HttpServer server;
+ private static String base;
+
+ @BeforeAll
+ static void startServer() throws IOException {
+ server = HttpServer.create(new InetSocketAddress("127.0.0.1", 0), 0);
+
+ // 302 相对跳转 /redirect -> /target,验证"相对 Location 解析 + 逐跳复检"
+ server.createContext("/redirect", ex -> {
+ ex.getResponseHeaders().add("Location", "/target");
+ ex.sendResponseHeaders(302, -1);
+ ex.close();
+ });
+ // 最终 200 资源
+ server.createContext("/target", ex -> {
+ byte[] body = "OK-BODY".getBytes(StandardCharsets.UTF_8);
+ ex.sendResponseHeaders(200, body.length);
+ ex.getResponseBody().write(body);
+ ex.close();
+ });
+ // 直接 200,无重定向
+ server.createContext("/direct", ex -> {
+ byte[] body = "DIRECT".getBytes(StandardCharsets.UTF_8);
+ ex.sendResponseHeaders(200, body.length);
+ ex.getResponseBody().write(body);
+ ex.close();
+ });
+ // 无限自跳,验证"最大重定向次数"保护
+ server.createContext("/loop", ex -> {
+ ex.getResponseHeaders().add("Location", "/loop");
+ ex.sendResponseHeaders(302, -1);
+ ex.close();
+ });
+ server.start();
+ base = "http://127.0.0.1:" + server.getAddress().getPort();
+ }
+
+ @AfterAll
+ static void stopServer() {
+ if (server != null) {
+ server.stop(0);
+ }
+ }
+
+ /** 反射调用 private static FileDownloadUtils.openSafeConnection,并解包反射异常。 */
+ private HttpURLConnection openSafeConnection(String url) throws Throwable {
+ Method m = FileDownloadUtils.class.getDeclaredMethod("openSafeConnection", String.class);
+ m.setAccessible(true);
+ try {
+ return (HttpURLConnection) m.invoke(null, url);
+ } catch (InvocationTargetException e) {
+ throw e.getCause();
+ }
+ }
+
+ // ==================================================================
+ // 一、漏洞根因:单次前置校验无法防住重定向(真实过滤器,无网络)
+ // ==================================================================
+
+ @Nested
+ @DisplayName("漏洞根因 —— 为什么单次前置校验会被重定向绕过")
+ class RootCause {
+
+ @Test
+ @DisplayName("攻击者提供的公网 URL 首检通过(旧逻辑只校验这一次)")
+ void publicUrlPassesFirstCheck() {
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://cdn.example.com/x"));
+ System.out.println("[publicUrlPassesFirstCheck] 公网 http://cdn.example.com/x 首检通过(攻击者入口)");
+ }
+
+ @Test
+ @DisplayName("重定向目标(内网/元数据)若被复检则会拦截 —— 旧逻辑因自动跟随而漏检")
+ void redirectTargetWouldBeBlockedIfRechecked() {
+ // 这两个地址正是攻击者用 302 跳过去的目标;旧逻辑 JDK 自动跟随、不复检 → 绕过
+ JeecgBootException e1 = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://127.0.0.1:6379/"));
+ JeecgBootException e2 = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://169.254.169.254/latest/meta-data/"));
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 127.0.0.1:6379 复检 -> " + e1.getMessage());
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 169.254.169.254 复检 -> " + e2.getMessage());
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 结论:校验的URL≠实际访问的URL,必须逐跳复检");
+ }
+ }
+
+ // ==================================================================
+ // 二、修复行为:openSafeConnection 逐跳复检 + 关闭自动跳转
+ // ==================================================================
+
+ @Nested
+ @DisplayName("修复行为 —— openSafeConnection 对每一跳重定向都复检")
+ class FixBehavior {
+
+ @Test
+ @DisplayName("发生重定向时,初始 URL 与重定向目标都各被 checkSsrfHttpUrl 校验一次")
+ void everyHopIsValidated() throws Throwable {
+ java.util.List checked = new java.util.ArrayList<>();
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ // 默认放行(void 方法 mock 后即 no-op),让本地测试服可达;同时记录每一跳被校验的 URL
+ mocked.when(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(anyString()))
+ .thenAnswer(inv -> { checked.add(inv.getArgument(0)); return null; });
+
+ HttpURLConnection conn = openSafeConnection(base + "/redirect");
+
+ System.out.println("[everyHopIsValidated] 被 SSRF 复检的每一跳 = " + checked);
+ System.out.println("[everyHopIsValidated] 最终响应码 = " + conn.getResponseCode());
+
+ assertEquals(200, conn.getResponseCode(), "应手动跟随到最终 200 资源");
+
+ // 关键断言:初始跳与重定向目标都被复检 —— 证明没有走 JDK 自动跟随
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/redirect"), times(1));
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/target"), times(1));
+ conn.disconnect();
+ }
+ }
+
+ @Test
+ @DisplayName("重定向目标被判定为危险地址时,整体抛 JeecgBootException(绕过被堵死)")
+ void blockedRedirectTargetThrows() {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ // 模拟:初始公网放行,但重定向目标(/target,代表内网)校验失败
+ mocked.when(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(anyString())).thenAnswer(inv -> {
+ String u = inv.getArgument(0);
+ if (u.contains("/target")) {
+ throw new JeecgBootException("非法URL:禁止访问本机或链路本地地址");
+ }
+ return null;
+ });
+
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> openSafeConnection(base + "/redirect"));
+ System.out.println("[blockedRedirectTargetThrows] 重定向到内网被拦截 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("禁止访问"),
+ "应在跟随重定向前就因目标地址校验失败而中断");
+ }
+ }
+
+ @Test
+ @DisplayName("无重定向的直连资源:仅校验一次并正常返回 200")
+ void directResourceValidatedOnce() throws Throwable {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ HttpURLConnection conn = openSafeConnection(base + "/direct");
+ System.out.println("[directResourceValidatedOnce] 直连无重定向,响应码 = " + conn.getResponseCode());
+ assertEquals(200, conn.getResponseCode());
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/direct"), times(1));
+ conn.disconnect();
+ }
+ }
+
+ @Test
+ @DisplayName("重定向次数超过上限(5)时抛异常,防止恶意死循环跳转")
+ void tooManyRedirectsThrows() {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> openSafeConnection(base + "/loop"));
+ System.out.println("[tooManyRedirectsThrows] 死循环跳转被阻断 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("重定向次数过多"));
+ // 初始 + 5 次重定向 = 共 6 次校验(i 从 0 到 5)
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(anyString()), times(6));
+ }
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9695_OpenApiSsrfHeaderInjectionTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9695_OpenApiSsrfHeaderInjectionTest.java
new file mode 100644
index 000000000..b4a573a2d
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9695_OpenApiSsrfHeaderInjectionTest.java
@@ -0,0 +1,199 @@
+package org.jeecg.test.security;
+
+import org.jeecg.common.constant.ServiceNameConstants;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.CommonUtils;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.mock.web.MockHttpServletRequest;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * 【issues/9695】OpenAPI 转发 SSRF 漏洞修复 (CWE-918) — 单元测试
+ *
+ * ── 漏洞是怎么引起的 ──────────────────────────────────────────────────────────
+ * OpenApiController#call(/openapi/call/{path}) 是一个"服务端转发"接口:它读取数据库里
+ * 配置的 originUrl,由【服务器】自己发起 restTemplate.exchange(...) 去请求该地址,并把
+ * 内部用户的 X-Access-Token 一并带上。
+ *
+ * 当 originUrl 是相对路径(如 /house/list)时,需要补一个 baseUrl 拼成完整地址。
+ * baseUrl 由 CommonUtils.getBaseUrl(request) 计算,而该方法为兼容微服务网关,会直接信任
+ * 请求头 X_GATEWAY_BASE_PATH 作为 base。
+ *
+ * 问题就在这里:X_GATEWAY_BASE_PATH 是【客户端可控的请求头】。修复前,攻击者只要发:
+ * POST /openapi/call/xxx
+ * X_GATEWAY_BASE_PATH: http://169.254.169.254 (或 http://attacker.com)
+ * 服务器就会把转发目标拼成 http://169.254.169.254/,并由服务器主动访问,
+ * 从而探测云元数据 / 内网服务 / 把携带内部 token 的请求打到攻击者站点 —— 典型 SSRF。
+ * 根因:把"客户端可控的 header"当成"可信的服务端 base 地址"使用。
+ *
+ * ── 修复 ──────────────────────────────────────────────────────────────────────
+ * 1) CommonUtils.validateGatewayBasePath(header):对 X_GATEWAY_BASE_PATH 做白名单校验——
+ * 仅允许 http/https、禁止 userInfo(防 http://victim@evil 混淆)、host 不能为空,
+ * 并【从解析后的 URI 组件重新拼接】返回,过滤掉注入字符;非法则返回 null 直接忽略该头。
+ * 2) CommonUtils.checkInternalUrl(url):relative-path 转发场景下,再校验解析出的 baseUrl
+ * host 必须是内网地址(回环/局域网/链路本地),解析到公网地址则抛 JeecgBootException。
+ * SpringContextUtils.getDomain() 走同一套 validateGatewayBasePathForDomain 校验。
+ *
+ * ── 测试策略 ──────────────────────────────────────────────────────────────────
+ * 校验逻辑都收敛在 CommonUtils 的 public static 方法里,可纯单测、无需 Spring / 无需联网
+ * (全部使用 URI 解析与字面量 IP,不触发 DNS)。三组用例分别覆盖:
+ * 一、入口复现:getBaseUrl 对恶意 X_GATEWAY_BASE_PATH 头不再信任;
+ * 二、header 白名单:validateGatewayBasePath 的放行/拒绝边界;
+ * 三、SSRF 兜底:checkInternalUrl 拦截公网地址、放行内网地址。
+ *
+ * @author wangshuai
+ * @date 2026-06-17
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9695_OpenApiSsrfHeaderInjectionTest {
+
+ /** 构造带指定 X_GATEWAY_BASE_PATH 头的 mock 请求。 */
+ private MockHttpServletRequest requestWithGatewayHeader(String headerValue) {
+ MockHttpServletRequest req = new MockHttpServletRequest();
+ // MockHttpServletRequest 默认 scheme=http, serverName=localhost, serverPort=80
+ if (headerValue != null) {
+ req.addHeader(ServiceNameConstants.X_GATEWAY_BASE_PATH, headerValue);
+ }
+ return req;
+ }
+
+ // ==================================================================
+ // 一、入口复现:复刻 OpenApiController#call 对相对路径的两层防御
+ // 第 1 层 getBaseUrl(...) —— header 格式白名单(协议/userInfo/host)
+ // 第 2 层 checkInternalUrl(base) —— 解析出的 baseUrl 必须是内网地址
+ // 注意:单看 getBaseUrl 并不足以挡住 http://attacker.com(格式合法),
+ // 真正挡住公网外联的是随后那一句 checkInternalUrl —— 两层缺一不可。
+ // ==================================================================
+
+ @Nested
+ @DisplayName("漏洞入口 —— 复刻 controller 对相对路径转发的两层防御")
+ class GetBaseUrlEntry {
+
+ /** 复刻 OpenApiController#call 中相对路径分支:getBaseUrl 后再 checkInternalUrl。 */
+ private String resolveBaseUrlAsController(String gatewayHeader) {
+ String baseUrl = CommonUtils.getBaseUrl(requestWithGatewayHeader(gatewayHeader));
+ CommonUtils.checkInternalUrl(baseUrl); // controller 在拼接前的强制校验
+ return baseUrl;
+ }
+
+ @Test
+ @DisplayName("【漏洞复现】注入公网地址 http://attacker.com:格式校验放过,但被 checkInternalUrl 拦死")
+ void maliciousPublicGatewayHeaderBlockedByInternalCheck() {
+ // getBaseUrl 只做格式白名单,attacker.com 格式合法 → 会被原样返回
+ String baseUrl = CommonUtils.getBaseUrl(requestWithGatewayHeader("http://attacker.com"));
+ assertEquals("http://attacker.com", baseUrl,
+ "getBaseUrl 仅校验头部格式,不负责拦公网(这一层挡不住)");
+
+ // 真正的 SSRF 防线是 controller 紧接着的 checkInternalUrl
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> resolveBaseUrlAsController("http://attacker.com"));
+ System.out.println("[maliciousPublicGatewayHeaderBlockedByInternalCheck] -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("内网"),
+ "controller 完整流程下,注入公网网关头最终被 checkInternalUrl 拦截");
+ }
+
+ @Test
+ @DisplayName("【漏洞复现】带 userInfo 的混淆头(http://localhost@evil.com)在第 1 层就被忽略 → 回落本机")
+ void userInfoObfuscationHeaderIsIgnored() {
+ // userInfo 混淆地址连格式白名单都过不了 → validateGatewayBasePath 返回 null → 忽略该头
+ String baseUrl = resolveBaseUrlAsController("http://localhost@evil.com");
+ System.out.println("[userInfoObfuscationHeaderIsIgnored] 注入 http://localhost@evil.com -> baseUrl=" + baseUrl);
+
+ assertFalse(baseUrl.contains("evil.com"), "userInfo 混淆地址不得被采纳");
+ assertTrue(baseUrl.startsWith("http://localhost"), "非法头被忽略后回落到当前服务自身地址");
+ }
+
+ @Test
+ @DisplayName("合法的内网网关头被采纳(保证微服务网关正常功能不被误伤)")
+ void legitInternalGatewayHeaderIsAccepted() {
+ String baseUrl = resolveBaseUrlAsController("http://127.0.0.1:8080/jeecg-boot");
+ System.out.println("[legitInternalGatewayHeaderIsAccepted] baseUrl=" + baseUrl);
+
+ assertEquals("http://127.0.0.1:8080/jeecg-boot", baseUrl,
+ "合法内网 http 网关头应通过两层校验并被规范化采纳");
+ }
+ }
+
+ // ==================================================================
+ // 二、header 白名单:validateGatewayBasePath 的放行/拒绝边界
+ // ==================================================================
+
+ @Nested
+ @DisplayName("网关头白名单 —— validateGatewayBasePathForDomain")
+ class GatewayHeaderWhitelist {
+
+ @Test
+ @DisplayName("合法 http/https 地址:从 URI 组件重新拼接后返回")
+ void validHttpUrlPasses() {
+ assertEquals("http://10.0.0.5:9999/jeecg-boot",
+ CommonUtils.validateGatewayBasePathForDomain("http://10.0.0.5:9999/jeecg-boot"));
+ assertEquals("https://gateway.internal",
+ CommonUtils.validateGatewayBasePathForDomain("https://gateway.internal"));
+ }
+
+ @Test
+ @DisplayName("非 http(s) 协议(file/gopher/...)一律拒绝 → 返回 null")
+ void nonHttpSchemeRejected() {
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("file:///etc/passwd"));
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("gopher://127.0.0.1:6379/_xxx"));
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("ftp://host/x"));
+ }
+
+ @Test
+ @DisplayName("含 userInfo 的混淆地址拒绝 → 返回 null")
+ void userInfoRejected() {
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("http://trusted.com@evil.com/"));
+ }
+
+ @Test
+ @DisplayName("空值 / 无 host / 非法字符 一律返回 null")
+ void emptyOrMalformedReturnsNull() {
+ assertNull(CommonUtils.validateGatewayBasePathForDomain(null));
+ assertNull(CommonUtils.validateGatewayBasePathForDomain(""));
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("not a url"));
+ assertNull(CommonUtils.validateGatewayBasePathForDomain("/only/path"));
+ }
+ }
+
+ // ==================================================================
+ // 三、SSRF 兜底:checkInternalUrl 仅放行内网地址
+ // ==================================================================
+
+ @Nested
+ @DisplayName("SSRF 兜底 —— checkInternalUrl 仅允许内网地址")
+ class CheckInternalUrl {
+
+ @Test
+ @DisplayName("内网地址(回环/局域网)放行,不抛异常")
+ void internalAddressesPass() {
+ // 字面量 IP,不触发 DNS,离线可重复执行
+ assertDoesNotThrow(() -> CommonUtils.checkInternalUrl("http://127.0.0.1:8080/jeecg-boot"));
+ assertDoesNotThrow(() -> CommonUtils.checkInternalUrl("http://10.0.0.8/api"));
+ assertDoesNotThrow(() -> CommonUtils.checkInternalUrl("http://192.168.1.20:9999/x"));
+ }
+
+ @Test
+ @DisplayName("【漏洞复现】公网地址被拦截 → 抛 JeecgBootException,堵死 SSRF 外联")
+ void publicAddressIsBlocked() {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> CommonUtils.checkInternalUrl("http://8.8.8.8/latest/meta-data/"));
+ System.out.println("[publicAddressIsBlocked] 公网 8.8.8.8 被拦截 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("内网"), "应明确提示仅允许内网地址");
+ }
+
+ @Test
+ @DisplayName("host 为空的非法 URL 被拦截")
+ void emptyHostBlocked() {
+ assertThrows(JeecgBootException.class, () -> CommonUtils.checkInternalUrl("/no/host/url"));
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9725_UploadImgByHttpSsrfTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9725_UploadImgByHttpSsrfTest.java
new file mode 100644
index 000000000..de951fd5d
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9725_UploadImgByHttpSsrfTest.java
@@ -0,0 +1,214 @@
+package org.jeecg.test.security;
+
+import com.sun.net.httpserver.HttpServer;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.FileDownloadUtils;
+import org.jeecg.common.util.filter.SsrfFileTypeFilter;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.MockedStatic;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.times;
+
+/**
+ * 【issues/9725】uploadImgByHttp SSRF 重定向绕过漏洞修复 (CWE-918) — 单元测试
+ *
+ * ── 漏洞 ──────────────────────────────────────────────────────────────────────
+ * 入口:POST /sys/common/uploadImgByHttp → HttpFileToMultipartFileUtil.httpFileToMultipartFile,
+ * 修复前其内部 downloadImageData 仅在下载前对 fileUrl 做了一次 SsrfFileTypeFilter.checkSsrfHttpUrl,
+ * 随后用 HttpURLConnection 打开连接,而 JDK 默认 followRedirects=true 会【自动跟随 3xx 重定向】且不再复检。
+ *
+ * 攻击者:传入公网地址 http://attacker.com/x(首检通过),其服务器返回
+ * 302 Location: http://127.0.0.1:xxx/... 或 http://169.254.169.254/latest/meta-data/,
+ * JDK 自动跟随该跳且不复检 → 访问到内网/云元数据,SSRF 成立。
+ *
+ * ── 修复 ──────────────────────────────────────────────────────────────────────
+ * httpFileToMultipartFile 改为复用 FileDownloadUtils.download2BytesFromNet,其内部走
+ * openSafeConnection(...):setInstanceFollowRedirects(false) 关闭自动跳转,改为手动循环(最多 5 跳),
+ * 对【初始 URL 及每一跳重定向目标】都重新 checkSsrfHttpUrl,相对 Location 解析为绝对地址后再校验,
+ * 超过次数抛异常;最终非 200 响应码抛 IOException。
+ *
+ * ── 测试策略 ──────────────────────────────────────────────────────────────────
+ * 1. 漏洞根因(真实过滤器,无网络):证明"公网首检通过、内网目标会被拦",说明单次前置校验对重定向无效。
+ * 2. 修复行为(mockStatic + 本地 HttpServer):本地测试服在 127.0.0.1 会被真实过滤器拦截,故用
+ * mockStatic 放行测试服,专注断言"每一跳都复检""某跳失败整体抛异常""非200抛IOException""死循环被阻断"。
+ *
+ * @author wangshuai
+ * @date 2026-06-29
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9725_UploadImgByHttpSsrfTest {
+
+ private static HttpServer server;
+ private static String base;
+
+ @BeforeAll
+ static void startServer() throws IOException {
+ server = HttpServer.create(new InetSocketAddress("127.0.0.1", 0), 0);
+
+ // 302 相对跳转 /redirect -> /target,验证"相对 Location 解析 + 逐跳复检"
+ server.createContext("/redirect", ex -> {
+ ex.getResponseHeaders().add("Location", "/target");
+ ex.sendResponseHeaders(302, -1);
+ ex.close();
+ });
+ // 最终 200 资源
+ server.createContext("/target", ex -> {
+ byte[] body = "OK-BODY".getBytes(StandardCharsets.UTF_8);
+ ex.sendResponseHeaders(200, body.length);
+ ex.getResponseBody().write(body);
+ ex.close();
+ });
+ // 直接 200,无重定向
+ server.createContext("/direct", ex -> {
+ byte[] body = "DIRECT".getBytes(StandardCharsets.UTF_8);
+ ex.sendResponseHeaders(200, body.length);
+ ex.getResponseBody().write(body);
+ ex.close();
+ });
+ // 无限自跳,验证"最大重定向次数"保护
+ server.createContext("/loop", ex -> {
+ ex.getResponseHeaders().add("Location", "/loop");
+ ex.sendResponseHeaders(302, -1);
+ ex.close();
+ });
+ // 404,验证非 200 响应码抛 IOException
+ server.createContext("/notfound", ex -> {
+ ex.sendResponseHeaders(404, -1);
+ ex.close();
+ });
+ server.start();
+ base = "http://127.0.0.1:" + server.getAddress().getPort();
+ }
+
+ @AfterAll
+ static void stopServer() {
+ if (server != null) {
+ server.stop(0);
+ }
+ }
+
+ // ==================================================================
+ // 一、漏洞根因:单次前置校验无法防住重定向(真实过滤器,无网络)
+ // ==================================================================
+
+ @Nested
+ @DisplayName("漏洞根因 —— 为什么单次前置校验会被重定向绕过")
+ class RootCause {
+
+ @Test
+ @DisplayName("攻击者提供的公网 URL 首检通过(旧逻辑只校验这一次)")
+ void publicUrlPassesFirstCheck() {
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://cdn.example.com/poc.png"));
+ System.out.println("[publicUrlPassesFirstCheck] 公网 http://cdn.example.com/poc.png 首检通过(攻击者入口)");
+ }
+
+ @Test
+ @DisplayName("重定向目标(内网/元数据)若被复检则会拦截 —— 旧逻辑因自动跟随而漏检")
+ void redirectTargetWouldBeBlockedIfRechecked() {
+ // 这两个地址正是攻击者用 302 跳过去的目标;旧逻辑 JDK 自动跟随、不复检 → 绕过
+ JeecgBootException e1 = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://127.0.0.1:6379/"));
+ JeecgBootException e2 = assertThrows(JeecgBootException.class,
+ () -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://169.254.169.254/latest/meta-data/"));
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 127.0.0.1:6379 复检 -> " + e1.getMessage());
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 169.254.169.254 复检 -> " + e2.getMessage());
+ System.out.println("[redirectTargetWouldBeBlockedIfRechecked] 结论:校验的URL≠实际访问的URL,必须逐跳复检");
+ }
+ }
+
+ // ==================================================================
+ // 二、修复行为:download2BytesFromNet 逐跳复检 + 关闭自动跳转
+ // ==================================================================
+
+ @Nested
+ @DisplayName("修复行为 —— download2BytesFromNet 对每一跳重定向都复检")
+ class FixBehavior {
+
+ @Test
+ @DisplayName("发生重定向时,初始 URL 与重定向目标都各被 checkSsrfHttpUrl 校验一次,并返回最终资源字节")
+ void everyHopIsValidatedAndBytesReturned() throws Exception {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ // 默认放行(void 方法 mock 后即 no-op),让本地测试服可达
+ byte[] bytes = FileDownloadUtils.download2BytesFromNet(base + "/redirect");
+
+ System.out.println("[everyHopIsValidatedAndBytesReturned] 最终下载内容 = " + new String(bytes, StandardCharsets.UTF_8));
+ assertArrayEquals("OK-BODY".getBytes(StandardCharsets.UTF_8), bytes, "应手动跟随到最终 200 资源并返回其字节");
+
+ // 关键断言:初始跳与重定向目标都被复检 —— 证明没有走 JDK 自动跟随
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/redirect"), times(1));
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/target"), times(1));
+ }
+ }
+
+ @Test
+ @DisplayName("重定向目标被判定为危险地址时,整体抛 JeecgBootException(绕过被堵死)")
+ void blockedRedirectTargetThrows() {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ // 模拟:初始公网放行,但重定向目标(/target,代表内网)校验失败
+ mocked.when(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(anyString())).thenAnswer(inv -> {
+ String u = inv.getArgument(0);
+ if (u.contains("/target")) {
+ throw new JeecgBootException("非法URL:禁止访问本机或链路本地地址");
+ }
+ return null;
+ });
+
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> FileDownloadUtils.download2BytesFromNet(base + "/redirect"));
+ System.out.println("[blockedRedirectTargetThrows] 重定向到内网被拦截 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("禁止访问"),
+ "应在跟随重定向前就因目标地址校验失败而中断");
+ }
+ }
+
+ @Test
+ @DisplayName("无重定向的直连资源:仅校验一次并正常返回字节")
+ void directResourceValidatedOnce() throws Exception {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ byte[] bytes = FileDownloadUtils.download2BytesFromNet(base + "/direct");
+ System.out.println("[directResourceValidatedOnce] 直连无重定向,内容 = " + new String(bytes, StandardCharsets.UTF_8));
+ assertArrayEquals("DIRECT".getBytes(StandardCharsets.UTF_8), bytes);
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(base + "/direct"), times(1));
+ }
+ }
+
+ @Test
+ @DisplayName("最终响应码非 200(如 404)时抛 IOException")
+ void non200ResponseThrowsIOException() {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ IOException ex = assertThrows(IOException.class,
+ () -> FileDownloadUtils.download2BytesFromNet(base + "/notfound"));
+ System.out.println("[non200ResponseThrowsIOException] 非200被拒 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("HTTP请求失败"));
+ }
+ }
+
+ @Test
+ @DisplayName("重定向次数超过上限(5)时抛异常,防止恶意死循环跳转")
+ void tooManyRedirectsThrows() {
+ try (MockedStatic mocked = mockStatic(SsrfFileTypeFilter.class)) {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> FileDownloadUtils.download2BytesFromNet(base + "/loop"));
+ System.out.println("[tooManyRedirectsThrows] 死循环跳转被阻断 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("重定向次数过多"));
+ // 初始 + 5 次重定向 = 共 6 次校验(i 从 0 到 5)
+ mocked.verify(() -> SsrfFileTypeFilter.checkSsrfHttpUrl(anyString()), times(6));
+ }
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9726_OpenApiOriginUrlSsrfTest.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9726_OpenApiOriginUrlSsrfTest.java
new file mode 100644
index 000000000..7da92546c
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/Issue9726_OpenApiOriginUrlSsrfTest.java
@@ -0,0 +1,142 @@
+package org.jeecg.test.security;
+
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.CommonUtils;
+import org.jeecg.common.util.filter.SsrfFileTypeFilter;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * 【issues/9726】OpenAPI originUrl 存储型 SSRF 漏洞修复 (CWE-918) — 单元测试
+ *
+ * ── 漏洞是怎么引起的 ──────────────────────────────────────────────────────────
+ * OpenApiController#call(/openapi/call/{path}) 是一个"服务端转发"接口:它读取数据库里
+ * 配置的 originUrl,由【服务器】自己发起 restTemplate.exchange(...) 去请求该地址。
+ * originUrl 由管理员通过 POST /openapi/add、PUT /openapi/edit 写入并持久化(存储型)。
+ *
+ * 自 issues/9590 起,originUrl 允许填写完整的 http(s)://host URL(用于微服务跨模块调用,
+ * 如部署在 erp 7003 的接口)。修复前 validOriginUrl 的【完整URL分支】只校验了协议——
+ * 禁止 file/ftp/gopher/jar/netdoc,却【完全不限制 host】。于是管理员可存入:
+ * originUrl = http://169.254.169.254/latest/meta-data/ (云元数据)
+ * originUrl = http://127.0.0.1:6379/ (本机 redis 等内网服务)
+ * originUrl = http://attacker.com/ (任意公网,把服务器当代理)
+ * 再以合法 OpenAPI 凭证触发 /openapi/call/{path},服务器即主动访问该地址 —— 存储型 SSRF。
+ * 根因:完整URL分支"校验协议、放过主机",被校验的内容覆盖不到真正危险的 host。
+ *
+ * ── 修复 ──────────────────────────────────────────────────────────────────────
+ * 在 validOriginUrl 完整URL分支补两套互补的 host 校验(两者交集才放行):
+ * 1) SsrfFileTypeFilter.checkSsrfHttpUrl(url):拦回环(127.x/::1)与链路本地
+ * (169.254.x,含云元数据 169.254.169.254);放行 RFC1918 与公网。
+ * 2) CommonUtils.checkInternalUrl(url):拦公网地址;放行回环/局域网/链路本地。
+ * 取交集后【仅 RFC1918 内网地址可通过】——既保留微服务跨模块内网调用,又同时堵死
+ * 回环、链路本地/元数据、公网三类 SSRF 目标。单独任一方法都不足以覆盖(见各自反例)。
+ *
+ * ── 测试策略 ──────────────────────────────────────────────────────────────────
+ * 校验逻辑都在 public static 方法里,纯单测、无需 Spring / 无需联网(全部用字面量 IP,
+ * 不触发 DNS)。下面用 validateFullOriginUrl 复刻 controller 完整URL分支的两步校验,
+ * 对四类目标分别断言放行/拦截。
+ *
+ * @author liusq
+ * @date 2026-06-29
+ */
+@ExtendWith(PrintTestResultExtension.class)
+public class Issue9726_OpenApiOriginUrlSsrfTest {
+
+ /**
+ * 复刻 OpenApiController#validOriginUrl 完整URL分支在修复后执行的两步 host 校验。
+ * 任一步抛 JeecgBootException 即视为该 URL 被拦截。
+ */
+ private void validateFullOriginUrl(String originUrl) {
+ SsrfFileTypeFilter.checkSsrfHttpUrl(originUrl); // 拦回环 + 链路本地(含元数据)
+ CommonUtils.checkInternalUrl(originUrl); // 拦公网
+ }
+
+ // ==================================================================
+ // 一、漏洞复现:四类危险目标在修复后都被拦截
+ // ==================================================================
+
+ @Nested
+ @DisplayName("漏洞复现 —— 修复后存入完整URL的各类 SSRF 目标均被拦死")
+ class MaliciousTargetsBlocked {
+
+ @Test
+ @DisplayName("【元数据】云元数据端点 169.254.169.254 被拦截(checkSsrfHttpUrl 兜底)")
+ void cloudMetadataBlocked() {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> validateFullOriginUrl("http://169.254.169.254/latest/meta-data/"));
+ System.out.println("[cloudMetadataBlocked] 169.254.169.254 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("链路本地") || ex.getMessage().contains("本机"),
+ "云元数据属链路本地地址,应被 checkSsrfHttpUrl 拦截");
+ }
+
+ @Test
+ @DisplayName("【回环】本机服务 127.0.0.1:6379 被拦截(checkSsrfHttpUrl 兜底)")
+ void loopbackBlocked() {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> validateFullOriginUrl("http://127.0.0.1:6379/"));
+ System.out.println("[loopbackBlocked] 127.0.0.1:6379 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("本机") || ex.getMessage().contains("链路本地"),
+ "回环地址应被 checkSsrfHttpUrl 拦截");
+ }
+
+ @Test
+ @DisplayName("【公网】任意公网地址 8.8.8.8 被拦截(checkInternalUrl 兜底)")
+ void publicAddressBlocked() {
+ JeecgBootException ex = assertThrows(JeecgBootException.class,
+ () -> validateFullOriginUrl("http://8.8.8.8/x"));
+ System.out.println("[publicAddressBlocked] 8.8.8.8 -> " + ex.getMessage());
+ assertTrue(ex.getMessage().contains("内网"),
+ "公网地址应被 checkInternalUrl 拦截,仅允许内网");
+ }
+ }
+
+ // ==================================================================
+ // 二、合法功能不被误伤:微服务跨模块内网(RFC1918)调用放行
+ // ==================================================================
+
+ @Nested
+ @DisplayName("合法功能 —— 微服务跨模块内网(RFC1918)地址正常放行")
+ class LegitInternalTargetsPass {
+
+ @Test
+ @DisplayName("RFC1918 内网地址(10/172.16/192.168)放行,不抛异常")
+ void rfc1918AddressesPass() {
+ assertDoesNotThrow(() -> validateFullOriginUrl("http://10.0.0.8:7003/erp/order/list"));
+ assertDoesNotThrow(() -> validateFullOriginUrl("http://172.16.5.20:8080/api"));
+ assertDoesNotThrow(() -> validateFullOriginUrl("http://192.168.1.30:9999/house/list"));
+ System.out.println("[rfc1918AddressesPass] RFC1918 内网地址全部放行,微服务跨模块调用不受影响");
+ }
+ }
+
+ // ==================================================================
+ // 三、为什么必须两套校验【组合】—— 单独任一方法都有漏网之鱼
+ // ==================================================================
+
+ @Nested
+ @DisplayName("互补性证明 —— 单独任一校验都不足以覆盖全部 SSRF 目标")
+ class WhyBothChecksNeeded {
+
+ @Test
+ @DisplayName("仅 checkInternalUrl 不够:它把链路本地视为内网,会放过云元数据 169.254.169.254")
+ void internalCheckAloneLeaksMetadata() {
+ // checkInternalUrl 单独使用时,链路本地地址被当作"内网"放行 —— 这正是必须叠加
+ // checkSsrfHttpUrl 的原因
+ assertDoesNotThrow(() -> CommonUtils.checkInternalUrl("http://169.254.169.254/latest/meta-data/"));
+ System.out.println("[internalCheckAloneLeaksMetadata] 仅 checkInternalUrl 会放过云元数据 → 需 checkSsrfHttpUrl 兜底");
+ }
+
+ @Test
+ @DisplayName("仅 checkSsrfHttpUrl 不够:它放行公网,会把服务器当作访问任意公网的代理")
+ void ssrfCheckAloneLeaksPublic() {
+ // checkSsrfHttpUrl 单独使用时,公网地址被放行 —— 这正是必须叠加 checkInternalUrl 的原因
+ assertDoesNotThrow(() -> SsrfFileTypeFilter.checkSsrfHttpUrl("http://8.8.8.8/x"));
+ System.out.println("[ssrfCheckAloneLeaksPublic] 仅 checkSsrfHttpUrl 会放过公网地址 → 需 checkInternalUrl 兜底");
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/PrintTestResultExtension.java b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/PrintTestResultExtension.java
new file mode 100644
index 000000000..2bf46e728
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-base-core/src/test/java/org/jeecg/test/security/PrintTestResultExtension.java
@@ -0,0 +1,44 @@
+package org.jeecg.test.security;
+
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.TestWatcher;
+
+import java.util.Optional;
+
+/**
+ * 通用测试结果打印扩展:每个用例执行结束后自动打印一行结果,
+ * 解决"测试通过时控制台静默、看起来像没跑"的困惑。
+ *
+ * 用法:在测试类上加 @ExtendWith(PrintTestResultExtension.class)。
+ * 输出形如: [PASS] 发生重定向时,初始 URL 与重定向目标都各被 checkSsrfHttpUrl 校验一次
+ *
+ * 注:状态标记用 ASCII,避免 Windows GBK 控制台乱码;用例名(@DisplayName 中文)
+ * 在 IDE 的 UTF-8 控制台可正常显示。
+ *
+ * @author wangshuai
+ * @date 2026-06-17
+ */
+public class PrintTestResultExtension implements TestWatcher {
+
+ @Override
+ public void testSuccessful(ExtensionContext context) {
+ System.out.println(" [PASS] " + context.getDisplayName());
+ }
+
+ @Override
+ public void testFailed(ExtensionContext context, Throwable cause) {
+ System.out.println(" [FAIL] " + context.getDisplayName()
+ + " -> " + (cause == null ? "" : cause.getMessage()));
+ }
+
+ @Override
+ public void testAborted(ExtensionContext context, Throwable cause) {
+ System.out.println(" [ABORTED] " + context.getDisplayName());
+ }
+
+ @Override
+ public void testDisabled(ExtensionContext context, Optional reason) {
+ System.out.println(" [SKIP] " + context.getDisplayName()
+ + reason.map(r -> " (" + r + ")").orElse(""));
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/pom.xml b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/pom.xml
index 4857f3e37..64f024039 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/pom.xml
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/pom.xml
@@ -31,10 +31,9 @@
- 2.2.0
- 2.15.0
3.3.1
1.17.2-beta27
+ 2.15.0
@@ -72,27 +71,11 @@
jeecg-system-cloud-api
-->
-
org.jeecgframework.boot3
jeecg-aiflow-boot4
- 3.9.2
-
-
- commons-io
- commons-io
-
-
- commons-beanutils
- commons-beanutils
-
-
- com.yomahub
- liteflow-script-python
-
-
+ 3.9.5
-
org.jetbrains.kotlin
@@ -106,46 +89,8 @@
${liteflow.version}
provided
-
- com.yomahub
- liteflow-script-groovy
- ${liteflow.version}
- runtime
-
-
-
- com.yomahub
- liteflow-script-python
- ${liteflow.version}
- runtime
-
-
- com.yomahub
- liteflow-script-kotlin
- ${liteflow.version}
-
-
- org.jetbrains.kotlin
- kotlin-scripting-jsr223
-
-
- runtime
-
-
- com.yomahub
- liteflow-script-aviator
- ${liteflow.version}
- runtime
-
-
- aviator
- com.googlecode.aviator
-
-
-
-
@@ -262,13 +207,6 @@
com.deepoove
poi-tl
- 1.12.2
-
-
- poi-ooxml
- org.apache.poi
-
-
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/api/AiragBaseApiImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/api/AiragBaseApiImpl.java
index 0f904c2a0..6fa24e2fa 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/api/AiragBaseApiImpl.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/api/AiragBaseApiImpl.java
@@ -1,6 +1,12 @@
package org.jeecg.modules.airag.api;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.airag.api.IAiragBaseApi;
import org.jeecg.common.api.vo.Result;
@@ -54,6 +60,74 @@ public class AiragBaseApiImpl implements IAiragBaseApi {
return knowledgeDoc.getId();
}
+ @Override
+ public String checkKnowledgeDocsVectorizeStatus(String documentIds) {
+ if (oConvertUtils.isEmpty(documentIds)) {
+ return "COMPLETED";
+ }
+ List idList = new ArrayList<>();
+ for (String id : documentIds.split(",")) {
+ String trimmed = id == null ? "" : id.trim();
+ if (oConvertUtils.isNotEmpty(trimmed)) {
+ idList.add(trimmed);
+ }
+ }
+ if (idList.isEmpty()) {
+ return "COMPLETED";
+ }
+ List docs = airagKnowledgeDocService.listByIds(idList);
+ boolean hasFailed = false;
+ boolean hasProcessing = false;
+ Set foundIds = new HashSet<>();
+ for (AiragKnowledgeDoc doc : docs) {
+ foundIds.add(doc.getId());
+ String status = doc.getStatus();
+ if (LLMConsts.KNOWLEDGE_DOC_STATUS_FAILED.equals(status)) {
+ hasFailed = true;
+ } else if (!LLMConsts.KNOWLEDGE_DOC_STATUS_COMPLETE.equals(status)) {
+ hasProcessing = true;
+ }
+ }
+ // 未查到的文档视为失败(可能被删除)
+ for (String id : idList) {
+ if (!foundIds.contains(id)) {
+ hasFailed = true;
+ }
+ }
+ if (hasProcessing) {
+ return hasFailed ? "PROCESSING_WITH_FAIL" : "PROCESSING";
+ }
+ return hasFailed ? "COMPLETED_WITH_FAIL" : "COMPLETED";
+ }
+
+ @Override
+ public String knowledgeWriteFileDocument(String knowledgeId, String title, String filePath, String segmentConfig) {
+ AssertUtils.assertNotEmpty("知识库ID不能为空", knowledgeId);
+ AssertUtils.assertNotEmpty("文件地址不能为空", filePath);
+ AiragKnowledgeDoc knowledgeDoc = new AiragKnowledgeDoc();
+ knowledgeDoc.setKnowledgeId(knowledgeId);
+ knowledgeDoc.setTitle(title);
+ knowledgeDoc.setType(LLMConsts.KNOWLEDGE_DOC_TYPE_FILE);
+ // 文件类型文档将 filePath 放入 metadata,复用知识库文档功能的存储约定
+ JSONObject metadata;
+ if (oConvertUtils.isNotEmpty(segmentConfig)) {
+ metadata = JSONObject.parseObject(segmentConfig);
+ } else {
+ metadata = new JSONObject();
+ }
+ metadata.put("filePath", filePath);
+ knowledgeDoc.setMetadata(metadata.toJSONString());
+ Result> result = airagKnowledgeDocService.editDocument(knowledgeDoc);
+ if (!result.isSuccess()) {
+ throw new JeecgBootBizTipException(result.getMessage());
+ }
+ if (knowledgeDoc.getId() == null) {
+ throw new JeecgBootBizTipException("知识库文档ID为空");
+ }
+ log.info("[AI-KNOWLEDGE] 文件文档写入完成,知识库:{}, 文档ID:{}, 文件:{}", knowledgeId, knowledgeDoc.getId(), filePath);
+ return knowledgeDoc.getId();
+ }
+
@Autowired
private IAiragAppService airagAppService;
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/AiAppConsts.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/AiAppConsts.java
index 0e0f2ef69..aa0d9c456 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/AiAppConsts.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/AiAppConsts.java
@@ -27,6 +27,10 @@ public class AiAppConsts {
*/
public static final String DEFAULT_APP_ID = "default";
+ /**
+ * 未保存应用的调试应用id
+ */
+ public static final String DEBUG_APP_ID = "__DEBUG_APP";
/**
* 应用类型:简单聊天
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/Prompts.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/Prompts.java
index 53e9daf63..adb89d3cd 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/Prompts.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/consts/Prompts.java
@@ -118,22 +118,22 @@ public class Prompts {
"4. 语气专业、清晰、指令性强。\n" +
"5. 说明内容请使用中文。\n\n";
- /**
- * 变量生成提示词
- */
- public static final String GENERATE_VAR_PART = "## 任务:生成变量使用指南\n" +
- "### 输入信息\n" +
- "**变量列表**:\n" +
- "%s\n" +
- "### 要求\n" +
- "1. 请生成一段**变量使用指南**。\n" +
- "2. **遍历生成**:请遍历【输入信息】中的所有变量,为**每一个**变量生成一条具体的使用指南。\n" +
- "3. **格式要求**:请仿照以下句式,根据变量的实际含义生成(确保包含{{变量名}}):\n" +
- " 例如:针对name变量 -> “回复问题时,请称呼你的用户为{{name}}。”\n" +
- " 例如:针对age变量 -> “用户的年龄是{{age}},请在对话中适时使用。”\n" +
- " 例如:针对其他变量 -> “用户的[变量描述]是{{[变量名]}},请在对话中适时使用。”\n" +
- "4. **通用更新指令**:请在变量指南的最后,单独生成一条指令,明确指示AI:“当从用户对话中获取到上述变量(<列出所有变量名,用顿号分隔>)的**新信息**时,**必须立即调用** `update_variable` 工具进行存储。**注意**:调用前请检查上下文,如果已调用过该工具或变量值未改变,**严禁**重复调用。”\n" +
- "5. **保留原文**:如果输入信息中包含具体的行为指令(如“回复问题时,请称呼你的用户为{{name}}”),请在生成的指南中**直接引用原文**,不要进行改写或格式化,以免改变用户的原意。\n\n";
+// /**
+// * 变量生成提示词
+// */
+// public static final String GENERATE_VAR_PART = "## 任务:生成变量使用指南\n" +
+// "### 输入信息\n" +
+// "**变量列表**:\n" +
+// "%s\n" +
+// "### 要求\n" +
+// "1. 请生成一段**变量使用指南**。\n" +
+// "2. **遍历生成**:请遍历【输入信息】中的所有变量,为**每一个**变量生成一条具体的使用指南。\n" +
+// "3. **格式要求**:请仿照以下句式,根据变量的实际含义生成(确保包含{{变量名}}):\n" +
+// " 例如:针对name变量 -> “回复问题时,请称呼你的用户为{{name}}。”\n" +
+// " 例如:针对age变量 -> “用户的年龄是{{age}},请在对话中适时使用。”\n" +
+// " 例如:针对其他变量 -> “用户的[变量描述]是{{[变量名]}},请在对话中适时使用。”\n" +
+// "4. **通用更新指令**:请在变量指南的最后,单独生成一条指令,明确指示AI:“当从用户对话中获取到上述变量(<列出所有变量名,用顿号分隔>)的**新信息**时,**必须立即调用** `update_variable` 工具进行存储。**注意**:调用前请检查上下文,如果已调用过该工具或变量值未改变,**严禁**重复调用。”\n" +
+// "5. **保留原文**:如果输入信息中包含具体的行为指令(如“回复问题时,请称呼你的用户为{{name}}”),请在生成的指南中**直接引用原文**,不要进行改写或格式化,以免改变用户的原意。\n\n";
/**
* 记忆库生成提示词
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragAppController.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragAppController.java
index 40f00d865..2a8a7c6e1 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragAppController.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragAppController.java
@@ -10,8 +10,8 @@ import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
-import org.jeecg.config.shiro.IgnoreAuth;
import org.jeecg.modules.airag.app.consts.AiAppConsts;
import org.jeecg.modules.airag.app.entity.AiragApp;
import org.jeecg.modules.airag.app.service.IAiragAppService;
@@ -54,6 +54,7 @@ public class AiragAppController extends JeecgController> queryPageList(AiragApp airagApp,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@@ -114,26 +115,52 @@ public class AiragAppController extends JeecgController copy(@RequestParam(name = "id") String id, HttpServletRequest request) {
+ AssertUtils.assertNotEmpty("id必须填写", id);
+ String copiedAppId = airagAppService.copyApp(id, TokenUtils.getTenantIdByRequest(request));
+ return Result.OK("复制成功", copiedAppId);
+ }
+
/**
* 发布应用
*
* @return
*/
@RequestMapping(value = "/release", method = RequestMethod.POST)
- public Result release(@RequestParam(name = "id") String id, @RequestParam(name = "release") Boolean release) {
+ public Result release(@RequestParam(name = "id") String id,
+ @RequestParam(name = "release") Boolean release,
+ HttpServletRequest request) {
AssertUtils.assertNotEmpty("id必须填写", id);
if (release == null) {
release = true;
}
- AiragApp airagApp = new AiragApp();
- airagApp.setId(id);
- if (release) {
- airagApp.setStatus(AiAppConsts.STATUS_RELEASE);
- } else {
- airagApp.setStatus(AiAppConsts.STATUS_ENABLE);
+ AiragApp app = airagAppService.getById(id);
+ if (app == null) {
+ return Result.error("应用不存在");
}
- airagAppService.updateById(airagApp);
- return Result.OK(release ? "发布成功" : "取消发布成功");
+ // SaaS 多租户隔离:禁止跨租户发布/取消发布
+ if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL) {
+ String currentTenantId = TokenUtils.getTenantIdByRequest(request);
+ if (oConvertUtils.isEmpty(app.getTenantId()) || !app.getTenantId().equals(currentTenantId)) {
+ return Result.error("操作失败,不能操作其他租户的AI应用!");
+ }
+ }
+ String shareToken = airagAppService.releaseApp(id, release);
+ // result 固定返回 shareToken(取消发布为 null),避免与提示文案混用
+ Result result = Result.OK(shareToken);
+ result.setMessage(release ? "发布成功" : "取消发布成功");
+ return result;
}
/**
@@ -166,7 +193,6 @@ public class AiragAppController extends JeecgController queryById(@RequestParam(name = "id", required = true) String id) {
AiragApp airagApp = airagAppService.getById(id);
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java
index 46a1fdeb5..ee35b22c5 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java
@@ -3,15 +3,20 @@ package org.jeecg.modules.airag.app.controller;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.config.shiro.IgnoreAuth;
import org.jeecg.modules.airag.app.service.IAiragChatService;
+import org.jeecg.modules.airag.app.service.impl.AiragChatRateLimitService;
import org.jeecg.modules.airag.app.vo.AiDrawGenerateVo;
import org.jeecg.modules.airag.app.vo.AiWriteGenerateVo;
import org.jeecg.modules.airag.app.vo.ChatConversation;
import org.jeecg.modules.airag.app.vo.ChatSendParams;
+import org.jeecg.modules.airag.common.vo.event.EventData;
+import org.jeecg.modules.airag.common.vo.event.EventFlowData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
@@ -19,6 +24,8 @@ import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+import java.util.UUID;
+
/**
@@ -35,6 +42,9 @@ public class AiragChatController {
@Autowired
IAiragChatService chatService;
+ @Autowired
+ AiragChatRateLimitService rateLimitService;
+
@Value(value = "${jeecg.path.upload}")
private String uploadpath;
@@ -54,8 +64,21 @@ public class AiragChatController {
*/
@IgnoreAuth
@PostMapping(value = "/send")
- public SseEmitter send(@RequestBody ChatSendParams chatSendParams) {
- return chatService.send(chatSendParams);
+ public SseEmitter send(@RequestBody ChatSendParams chatSendParams, HttpServletRequest request) {
+ try {
+ rateLimitService.checkSendLimit(request);
+ } catch (Exception e) {
+ log.warn("AI聊天发送接口限流: {}", e.getMessage());
+ return buildErrorEmitter(e.getMessage());
+ }
+ //update-begin---author:scott ---date:20260721 for:【issues/9787】匿名访问校验失败按SSE错误协议返回-----------
+ try {
+ return chatService.send(chatSendParams);
+ } catch (JeecgBootException e) {
+ log.warn("AI聊天发送接口访问校验失败: {}", e.getMessage());
+ return buildErrorEmitter(e.getMessage());
+ }
+ //update-end---author:scott ---date:20260721 for:【issues/9787】匿名访问校验失败按SSE错误协议返回-----------
}
/**
@@ -73,9 +96,45 @@ public class AiragChatController {
public SseEmitter sendByGet(@RequestParam("content") String content,
@RequestParam(value = "conversationId", required = false) String conversationId,
@RequestParam(value = "topicId", required = false) String topicId,
- @RequestParam(value = "appId", required = false) String appId) {
+ @RequestParam(value = "appId", required = false) String appId,
+ @RequestParam(value = "shareToken", required = false) String shareToken,
+ HttpServletRequest request) {
+ try {
+ rateLimitService.checkSendLimit(request);
+ } catch (Exception e) {
+ log.warn("AI聊天发送接口限流: {}", e.getMessage());
+ return buildErrorEmitter(e.getMessage());
+ }
ChatSendParams chatSendParams = new ChatSendParams(content, conversationId, topicId, appId);
- return chatService.send(chatSendParams);
+ chatSendParams.setShareToken(shareToken);
+ //update-begin---author:scott ---date:20260721 for:【issues/9787】兼容GET发送接口的匿名访问校验错误协议-----------
+ try {
+ return chatService.send(chatSendParams);
+ } catch (JeecgBootException e) {
+ log.warn("AI聊天GET发送接口访问校验失败: {}", e.getMessage());
+ return buildErrorEmitter(e.getMessage());
+ }
+ //update-end---author:scott ---date:20260721 for:【issues/9787】兼容GET发送接口的匿名访问校验错误协议-----------
+ }
+
+ /**
+ * 构造聊天错误 SSE 响应
+ *
+ * @param errorMessage 错误消息
+ * @return SseEmitter
+ */
+ private SseEmitter buildErrorEmitter(String errorMessage) {
+ SseEmitter emitter = new SseEmitter(0L);
+ String requestId = UUID.randomUUID().toString();
+ EventData eventData = new EventData(requestId, null, EventData.EVENT_FLOW_ERROR);
+ eventData.setData(EventFlowData.builder().success(false).message(errorMessage).build());
+ try {
+ emitter.send(SseEmitter.event().data(JSONObject.toJSONString(eventData)));
+ } catch (Exception e) {
+ log.error("发送聊天错误SSE事件失败", e);
+ }
+ emitter.complete();
+ return emitter;
}
/**
@@ -87,8 +146,9 @@ public class AiragChatController {
*/
@IgnoreAuth
@GetMapping(value = "/init")
- public Result> initChat(@RequestParam(name = "id", required = true) String id) {
- return chatService.initChat(id);
+ public Result> initChat(@RequestParam(name = "id", required = true) String id,
+ @RequestParam(name = "shareToken", required = false) String shareToken) {
+ return chatService.initChat(id, shareToken);
}
/**
@@ -245,6 +305,14 @@ public class AiragChatController {
@IgnoreAuth
@PostMapping(value = "/upload")
public Result> upload(HttpServletRequest request, HttpServletResponse response) throws Exception {
+ rateLimitService.checkUploadLimit(request);
+ // 匿名上传必须携带已发布应用的分享令牌;登录用户放行
+ try {
+ chatService.validateAnonymousShareAccess(request.getParameter("appId"), request.getParameter("shareToken"));
+ } catch (JeecgBootException e) {
+ return Result.error(e.getMessage());
+ }
+
String bizPath = "airag";
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/entity/AiragApp.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/entity/AiragApp.java
index 28d8c8e04..c6d94be0e 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/entity/AiragApp.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/entity/AiragApp.java
@@ -159,6 +159,14 @@ public class AiragApp implements Serializable {
@Schema(description = "状态")
private java.lang.String status;
+ /**
+ * 分享令牌(匿名聊天凭证,发布时生成,取消发布清空)
+ *
+ * @author scott
+ * @since 2026-07-21 【issues/9787】应用级分享令牌
+ */
+ @Schema(description = "分享令牌")
+ private java.lang.String shareToken;
/**
* 元数据
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragAppService.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragAppService.java
index 00e3a40fa..b4e202536 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragAppService.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragAppService.java
@@ -13,6 +13,28 @@ import java.util.List;
*/
public interface IAiragAppService extends IService {
+ /**
+ * 发布/取消发布应用,并维护分享令牌
+ *
+ * @param id 应用ID
+ * @param release true=发布,false=取消发布
+ * @return 发布成功时返回 shareToken;取消发布返回 null
+ * @author scott
+ * @since 2026-07-21 【issues/9787】应用级分享令牌
+ */
+ String releaseApp(String id, boolean release);
+
+ /**
+ * 复制应用
+ *
+ * @param id 原应用ID
+ * @param currentTenantId 当前租户ID
+ * @return 新应用ID
+ * @author scott
+ * @since 2026-08-06 【LHZP-1512】AI应用增加复制功能
+ */
+ String copyApp(String id, String currentTenantId);
+
/**
* 生成提示词
* @param prompt
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragChatService.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragChatService.java
index e6ff07d53..3a5ef11e7 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragChatService.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/IAiragChatService.java
@@ -98,11 +98,23 @@ public interface IAiragChatService {
* 初始化聊天(忽略租户)
* [QQYUN-12113]分享之后的聊天,应用、模型、知识库不根据租户查询
* @param appId
+ * @param shareToken 分享令牌(匿名访问必填)
* @return
* @author chenrui
* @date 2025/4/21 14:17
*/
- Result> initChat(String appId);
+ Result initChat(String appId, String shareToken);
+
+ /**
+ * 匿名分享访问校验(登录用户直接放行)。
+ * 用于 upload 等匿名写接口,与 send/init 共用同一套规则。
+ *
+ * @param appId 应用ID
+ * @param shareToken 分享令牌
+ * @author scott
+ * @since 2026-07-21 【issues/9787】匿名上传补分享令牌校验
+ */
+ void validateAnonymousShareAccess(String appId, String shareToken);
/**
* 继续接收消息
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragAppServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragAppServiceImpl.java
index 5e2489f6a..00fbd027c 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragAppServiceImpl.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragAppServiceImpl.java
@@ -18,6 +18,7 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.UUIDGenerator;
import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.modules.airag.app.consts.AiAppConsts;
import org.jeecg.modules.airag.app.consts.Prompts;
import org.jeecg.modules.airag.app.entity.AiragApp;
@@ -34,9 +35,11 @@ import org.jeecg.modules.airag.common.vo.event.EventFlowData;
import org.jeecg.modules.airag.common.vo.event.EventMessageData;
import org.jeecg.modules.airag.llm.entity.AiragKnowledge;
import org.jeecg.modules.airag.llm.service.IAiragKnowledgeService;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import java.io.IOException;
@@ -44,6 +47,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -58,6 +62,8 @@ import java.util.stream.Collectors;
@Service
public class AiragAppServiceImpl extends ServiceImpl implements IAiragAppService {
+ private static final String COPY_NAME_SUFFIX = "-复制";
+
@Autowired
IAIChatHandler aiChatHandler;
@@ -67,6 +73,80 @@ public class AiragAppServiceImpl extends ServiceImpl i
@Autowired
private RedisTemplate redisTemplate;
+ /**
+ * 发布/取消发布应用,并维护分享令牌。
+ * 发布时生成随机 shareToken;取消发布时清空。
+ *
+ * @param id 应用ID
+ * @param release true=发布,false=取消发布
+ * @return 发布成功时返回 shareToken;取消发布返回 null
+ * @author scott
+ * @since 2026-07-21 【issues/9787】应用级分享令牌
+ */
+ @Override
+ public String releaseApp(String id, boolean release) {
+ AssertUtils.assertNotEmpty("id必须填写", id);
+ if (release) {
+ String shareToken = java.util.UUID.randomUUID().toString().replace("-", "");
+ boolean updated = this.lambdaUpdate()
+ .eq(AiragApp::getId, id)
+ .set(AiragApp::getStatus, AiAppConsts.STATUS_RELEASE)
+ .set(AiragApp::getShareToken, shareToken)
+ .update();
+ if (!updated) {
+ throw new JeecgBootBizTipException("发布失败,应用不存在或已被删除");
+ }
+ return shareToken;
+ }
+ boolean updated = this.lambdaUpdate()
+ .eq(AiragApp::getId, id)
+ .set(AiragApp::getStatus, AiAppConsts.STATUS_ENABLE)
+ .set(AiragApp::getShareToken, null)
+ .update();
+ if (!updated) {
+ throw new JeecgBootBizTipException("取消发布失败,应用不存在或已被删除");
+ }
+ return null;
+ }
+
+ /**
+ * 复制应用
+ *
+ * @param id 原应用ID
+ * @param currentTenantId 当前租户ID
+ * @return 新应用ID
+ * @author scott
+ * @since 2026-08-06 【LHZP-1512】AI应用增加复制功能
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public String copyApp(String id, String currentTenantId) {
+ AssertUtils.assertNotEmpty("id必须填写", id);
+ AiragApp sourceApp = this.getById(id);
+ if (sourceApp == null) {
+ throw new JeecgBootBizTipException("复制失败,应用不存在或已被删除");
+ }
+ if (MybatisPlusSaasConfig.OPEN_SYSTEM_TENANT_CONTROL && (oConvertUtils.isEmpty(sourceApp.getTenantId()) || !sourceApp.getTenantId().equals(currentTenantId))) {
+ throw new JeecgBootBizTipException("复制AI应用失败,不能复制其他租户的AI应用!");
+ }
+
+ AiragApp copiedApp = new AiragApp();
+ BeanUtils.copyProperties(sourceApp, copiedApp);
+ copiedApp.setId(null)
+ .setName(sourceApp.getName() + COPY_NAME_SUFFIX)
+ .setCreateBy(null)
+ .setCreateTime(null)
+ .setUpdateBy(null)
+ .setUpdateTime(null)
+ .setSysOrgCode(null)
+ .setStatus(AiAppConsts.STATUS_ENABLE)
+ .setShareToken(null);
+ if (!this.save(copiedApp)) {
+ throw new JeecgBootBizTipException("复制应用失败");
+ }
+ return copiedApp.getId();
+ }
+
@Override
public Object generatePrompt(String prompt, boolean blocking) {
AssertUtils.assertNotEmpty("请输入提示词", prompt);
@@ -96,71 +176,53 @@ public class AiragAppServiceImpl extends ServiceImpl i
if(oConvertUtils.isEmpty(variables) && oConvertUtils.isEmpty(memoryId)){
throw new JeecgBootBizTipException("请先添加变量或者记忆后再次重试!");
}
- // 构建变量描述
- StringBuilder variablesDesc = new StringBuilder();
+ // 1. 解析变量列表,本地拼接变量使用指南(无 LLM 介入,结果确定)
+ String variableGuide = "";
if (oConvertUtils.isNotEmpty(variables)) {
List variableList = JSONArray.parseArray(variables, AppVariableVo.class);
- if (variableList != null && !variableList.isEmpty()) {
- for (AppVariableVo var : variableList) {
- if (var.getEnable() != null && !var.getEnable()) {
- continue;
- }
- String name = var.getName();
- if (oConvertUtils.isNotEmpty(var.getAction())) {
- String action = var.getAction();
- if (oConvertUtils.isNotEmpty(name)) {
- try {
- // 使用正则替换未被{{}}包裹的变量名
- String regex = "(? messages = List.of(new UserMessage(prompt));
-
+ // 3. 有记忆库 → 仅记忆库部分走 LLM,变量部分作为前置本地内容
+ String memoryDescr = "";
+ AiragKnowledge memory = airagKnowledgeService.getById(memoryId);
+ if (memory != null && oConvertUtils.isNotEmpty(memory.getDescr())) {
+ memoryDescr = "记忆库描述:" + memory.getDescr();
+ }
+ String memoryPrompt = Prompts.GENERATE_GUIDE_HEADER + String.format(Prompts.GENERATE_MEMORY_PART, memoryDescr);
+ List messages = List.of(new UserMessage(memoryPrompt));
AIChatParams params = new AIChatParams();
params.setTemperature(0.7);
- if(blocking){
- String promptValue = aiChatHandler.completionsByDefaultModel(messages, params);
- if (promptValue == null || promptValue.isEmpty()) {
+ // 4. 阻塞模式:拼接本地变量指南 + LLM 同步生成的记忆库指南
+ if (blocking) {
+ String memoryPart = aiChatHandler.completionsByDefaultModel(messages, params);
+ if (memoryPart == null || memoryPart.isEmpty()) {
return Result.error("生成失败");
}
- return Result.OK("success", promptValue);
- }else{
- return startSseChat(messages, params);
+ StringBuilder combined = new StringBuilder();
+ if (oConvertUtils.isNotEmpty(variableGuide)) {
+ combined.append(variableGuide).append("\n");
+ }
+ combined.append(memoryPart);
+ return Result.OK("success", combined.toString());
}
+
+ // 5. SSE 流式模式:先 emit 本地变量指南,再衔接 LLM 流式输出记忆库指南
+ String localPrefix = oConvertUtils.isNotEmpty(variableGuide) ? variableGuide + "\n" : "";
+ return startSseChatWithLocalPrefix(localPrefix, messages, params);
}
/**
@@ -171,13 +233,22 @@ public class AiragAppServiceImpl extends ServiceImpl i
*/
private SseEmitter startSseChat(List messages, AIChatParams params) {
SseEmitter emitter = new SseEmitter(-0L);
- // 异步运行(流式)
+ String requestId = UUIDGenerator.generate();
+ startLLMStream(emitter, requestId, messages, params);
+ return emitter;
+ }
+
+ /**
+ * 在已有 SseEmitter 上启动 LLM 流式响应。
+ *
+ * 从原 startSseChat 中抽出可复用的子段,使前置本地内容(变量使用指南)能与 LLM 流式记忆库指南共用同一个 emitter 与 requestId。
+ */
+ private void startLLMStream(SseEmitter emitter, String requestId, List messages, AIChatParams params) {
TokenStream tokenStream = aiChatHandler.chatByDefaultModel(messages, params);
/**
* 是否正在思考
*/
AtomicBoolean isThinking = new AtomicBoolean(false);
- String requestId = UUIDGenerator.generate();
// ai聊天响应逻辑
tokenStream.onPartialResponse((String resMessage) -> {
// 兼容推理模型
@@ -242,7 +313,6 @@ public class AiragAppServiceImpl extends ServiceImpl i
closeSSE(emitter, eventData);
})
.start();
- return emitter;
}
//update-end---author:wangshuai---date:2026-01-05---for:【QQYUN-14479】增加一个开启记忆的按钮。下面为提示词和记忆,将记忆提示词单独拆分---
@@ -260,6 +330,154 @@ public class AiragAppServiceImpl extends ServiceImpl i
}
}
+ /**
+ * 拼接「变量使用指南」(无需 LLM,全部本地拼接)。
+ *
+ * 结果以 Markdown 表格展示「变量名 / 变量描述 / 当前值」,「当前值」一列使用 {{变量名}} 占位符,
+ * 运行时由系统提示词渲染替换为真实值。表格下方原文保留用户自定义的 action 行为指令,
+ * 最后附带固定的「变量更新协议」,强约束 LLM 在新会话中不要把已有当前值当作新信息而误调用 update_variable。
+ *
+ * @param variableList AI 应用的变量列表
+ * @return 拼接好的变量使用指南文本;若没有启用的变量则返回空字符串
+ */
+ private String buildVariableGuide(List variableList) {
+ if (variableList == null || variableList.isEmpty()) {
+ return "";
+ }
+ List enabledVars = variableList.stream()
+ .filter(v -> v.getEnable() == null || v.getEnable())
+ .filter(v -> oConvertUtils.isNotEmpty(v.getName()))
+ .toList();
+ if (enabledVars.isEmpty()) {
+ return "";
+ }
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("## 变量使用指南\n\n");
+ sb.append("> ⚠️ **重要**:下表展示了当前用户已设置的变量值。若「当前值」一列非空,表示用户在历史交互中已设置过该变量,请直接采信并使用,**严禁**假装用户从未设置过而忽略或反问。\n\n");
+
+ // 变量状态总览表格
+ sb.append("| 变量名 | 变量描述 | 当前值 |\n");
+ sb.append("| --- | --- | --- |\n");
+ for (AppVariableVo var : enabledVars) {
+ String name = var.getName();
+ String desc = oConvertUtils.isNotEmpty(var.getDescription()) ? var.getDescription() : "-";
+ // 防止 | 和换行破坏 markdown 表格结构
+ desc = desc.replace("|", "\\|").replace("\n", " ");
+ sb.append("| ").append(name).append(" | ").append(desc)
+ .append(" | {{").append(name).append("}} |\n");
+ }
+ sb.append("\n");
+
+ // 用户自定义的 action 行为指令(原文保留,不改写以避免偏离用户原意)
+ List actions = new ArrayList<>();
+ for (AppVariableVo var : enabledVars) {
+ if (oConvertUtils.isNotEmpty(var.getAction())) {
+ String action = var.getAction();
+ String name = var.getName();
+ try {
+ // 使用正则替换未被{{}}包裹的变量名
+ String regex = "(?用于「只有变量、无记忆库」场景:把后端拼接好的变量指南按行 emit 出去,
+ * 然后发送 MESSAGE_END 关闭 SSE。运行在异步线程中以保持 controller 即时返回 emitter。
+ */
+ private SseEmitter streamLocalGuideOnly(String localText) {
+ SseEmitter emitter = new SseEmitter(-0L);
+ String requestId = UUIDGenerator.generate();
+ CompletableFuture.runAsync(() -> {
+ try {
+ emitGuideLines(emitter, requestId, localText);
+ EventData endEvent = new EventData(requestId, null, EventData.EVENT_MESSAGE_END);
+ closeSSE(emitter, endEvent);
+ } catch (Exception e) {
+ log.error("本地变量指南流式输出失败", e);
+ EventData errEvent = new EventData(requestId, null, EventData.EVENT_FLOW_ERROR);
+ errEvent.setData(EventFlowData.builder().success(false).message(e.getMessage()).build());
+ closeSSE(emitter, errEvent);
+ }
+ });
+ return emitter;
+ }
+
+ /**
+ * 前置本地内容 + 后续 LLM 流式的复合 SSE 输出。
+ *
+ * 用于「变量 + 记忆库」场景:先 emit 后端拼接好的变量指南,再启动 LLM 流式生成记忆库指南,
+ * 共用同一个 SseEmitter 和 requestId,前端体验为连续流式输出。
+ */
+ private SseEmitter startSseChatWithLocalPrefix(String localPrefix, List messages, AIChatParams params) {
+ SseEmitter emitter = new SseEmitter(-0L);
+ String requestId = UUIDGenerator.generate();
+ CompletableFuture.runAsync(() -> {
+ try {
+ if (oConvertUtils.isNotEmpty(localPrefix)) {
+ emitGuideLines(emitter, requestId, localPrefix);
+ }
+ // 衔接 LLM 流式输出(共用 emitter / requestId,由 LLM 流的 onCompleteResponse 发送 MESSAGE_END)
+ startLLMStream(emitter, requestId, messages, params);
+ } catch (Exception e) {
+ log.error("前置本地内容 + LLM 流式输出失败", e);
+ EventData errEvent = new EventData(requestId, null, EventData.EVENT_FLOW_ERROR);
+ errEvent.setData(EventFlowData.builder().success(false).message(e.getMessage()).build());
+ closeSSE(emitter, errEvent);
+ }
+ });
+ return emitter;
+ }
+
+ /**
+ * 按行 emit SSE 消息(不发送 MESSAGE_END,由调用方决定何时结束)。
+ */
+ private void emitGuideLines(SseEmitter emitter, String requestId, String text) throws IOException {
+ String[] lines = text.split("\n", -1);
+ int total = lines.length;
+ for (int i = 0; i < total; i++) {
+ String chunk = (i == total - 1) ? lines[i] : lines[i] + "\n";
+ if (chunk.isEmpty()) {
+ continue;
+ }
+ EventData eventData = new EventData(requestId, null, EventData.EVENT_MESSAGE);
+ EventMessageData messageEventData = EventMessageData.builder().message(chunk).build();
+ eventData.setData(messageEventData);
+ emitter.send(SseEmitter.event().data(JSONObject.toJSONString(eventData)));
+ }
+ }
/**
* 写作列表
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatRateLimitService.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatRateLimitService.java
new file mode 100644
index 000000000..968728d2a
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatRateLimitService.java
@@ -0,0 +1,100 @@
+package org.jeecg.modules.airag.app.service.impl;
+
+import jakarta.servlet.http.HttpServletRequest;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.IpUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * AI聊天匿名访问限流服务
+ * 用于防止 /airag/chat/send、/airag/chat/upload 被恶意刷接口
+ *
+ * @author scott
+ * @date 2026-07-20
+ */
+@Service
+public class AiragChatRateLimitService {
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ /**
+ * 每会话每分钟最多发送消息次数
+ */
+ @Value("${jeecg.airag.rate-limit.send-per-session-per-minute:20}")
+ private int sendPerSessionPerMinute;
+
+ /**
+ * 每 IP 每分钟最多发送消息次数
+ */
+ @Value("${jeecg.airag.rate-limit.send-per-ip-per-minute:60}")
+ private int sendPerIpPerMinute;
+
+ /**
+ * 每会话每小时最多上传文件次数
+ */
+ @Value("${jeecg.airag.rate-limit.upload-per-session-per-hour:20}")
+ private int uploadPerSessionPerHour;
+
+ private static final DateTimeFormatter MINUTE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMddHHmm");
+ private static final DateTimeFormatter HOUR_FORMAT = DateTimeFormatter.ofPattern("yyyyMMddHH");
+
+ /**
+ * 校验 /airag/chat/send 调用频次
+ *
+ * @param request HttpServletRequest
+ */
+ public void checkSendLimit(HttpServletRequest request) {
+ String sessionId = request.getSession().getId();
+ String clientIp = IpUtils.getIpAddr(request);
+ String minute = LocalDateTime.now().format(MINUTE_FORMAT);
+
+ checkLimit("airag:rate:send:session:" + sessionId + ":" + minute, sendPerSessionPerMinute, 120,
+ "发送消息过于频繁,请稍后再试");
+ checkLimit("airag:rate:send:ip:" + clientIp + ":" + minute, sendPerIpPerMinute, 120,
+ "发送消息过于频繁,请稍后再试");
+ }
+
+ /**
+ * 校验 /airag/chat/upload 调用频次
+ *
+ * @param request HttpServletRequest
+ */
+ public void checkUploadLimit(HttpServletRequest request) {
+ String sessionId = request.getSession().getId();
+ String clientIp = IpUtils.getIpAddr(request);
+ String hour = LocalDateTime.now().format(HOUR_FORMAT);
+
+ checkLimit("airag:rate:upload:session:" + sessionId + ":" + hour, uploadPerSessionPerHour, 7200,
+ "上传文件过于频繁,请稍后再试");
+ checkLimit("airag:rate:upload:ip:" + clientIp + ":" + hour, uploadPerSessionPerHour, 7200,
+ "上传文件过于频繁,请稍后再试");
+ }
+
+ /**
+ * 固定窗口计数限流
+ *
+ * @param key Redis key
+ * @param limit 窗口上限
+ * @param expireSeconds key 过期时间(秒)
+ */
+ private void checkLimit(String key, int limit, int expireSeconds, String errorMessage) {
+ Long count = redisTemplate.opsForValue().increment(key, 1);
+ if (count == null) {
+ return;
+ }
+ if (count == 1) {
+ redisTemplate.expire(key, expireSeconds, TimeUnit.SECONDS);
+ }
+ if (count > limit) {
+ throw new JeecgBootException(errorMessage);
+ }
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatServiceImpl.java
index 39d4406c4..c7f83314a 100644
--- a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatServiceImpl.java
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/AiragChatServiceImpl.java
@@ -13,6 +13,7 @@ import dev.langchain4j.model.output.FinishReason;
import dev.langchain4j.service.TokenStream;
import dev.langchain4j.service.tool.ToolExecutor;
import jakarta.servlet.http.HttpServletRequest;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.tika.parser.AutoDetectParser;
@@ -25,6 +26,7 @@ import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.*;
import org.jeecg.common.util.filter.SsrfFileTypeFilter;
+import org.jeecg.common.util.oss.OssBootUtil;
import org.jeecg.config.AiChatConfig;
import org.jeecg.config.AiRagConfigBean;
import org.jeecg.config.JeecgBaseConfig;
@@ -53,14 +55,17 @@ import org.jeecg.modules.airag.flow.helper.JeecgTagHelper;
import org.jeecg.modules.airag.flow.service.IAiragFlowService;
import org.jeecg.modules.airag.flow.vo.api.FlowRunParams;
import org.jeecg.modules.airag.flow.vo.tool.ToolExecutionVo;
+import org.jeecg.modules.airag.llm.consts.FlowPluginContent;
import org.jeecg.modules.airag.llm.consts.LLMConsts;
import org.jeecg.modules.airag.llm.document.TikaDocumentParser;
+import org.jeecg.modules.airag.llm.entity.AiragKnowledgeDoc;
import org.jeecg.modules.airag.llm.entity.AiragModel;
import org.jeecg.modules.airag.flow.handler.BraveSearchToolBuilder;
import org.jeecg.modules.airag.llm.handler.AIChatHandler;
import org.jeecg.modules.airag.llm.handler.JeecgToolsProvider;
import org.jeecg.modules.airag.llm.mapper.AiragModelMapper;
import org.jeecg.modules.airag.llm.service.IAiragFlowPluginService;
+import org.jeecg.modules.airag.llm.service.IAiragKnowledgeDocService;
import org.jeecg.modules.airag.llm.service.IAiragKnowledgeService;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
@@ -78,6 +83,7 @@ import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BiConsumer;
+import java.util.function.Function;
import java.util.stream.Collectors;
@@ -89,8 +95,12 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
+@RequiredArgsConstructor
public class AiragChatServiceImpl implements IAiragChatService {
+ private final ImageGenerationToolBuilder imageGenerationToolBuilder;
+ private final ImageGenerationContentAssembler imageGenerationContentAssembler;
+
@Autowired
IAIChatHandler aiChatHandler;
@@ -151,6 +161,10 @@ public class AiragChatServiceImpl implements IAiragChatService {
if (oConvertUtils.isNotEmpty(chatSendParams.getAppId())) {
app = airagAppMapper.getByIdIgnoreTenant(chatSendParams.getAppId());
}
+ //update-begin---author:scott ---date:20260721 for:【issues/9787】AI聊天匿名接口安全加固:匿名必须指定已发布应用+分享令牌,禁止回退默认应用-----------
+ // 匿名访问校验:必须指定已发布的应用并携带分享令牌,禁止回退默认应用(issues/9787)
+ checkAnonymousShareAccess(app, oConvertUtils.isNotEmpty(chatSendParams.getAppId()), chatSendParams.getShareToken());
+ //update-end---author:scott ---date:20260721 for:【issues/9787】AI聊天匿名接口安全加固:匿名必须指定已发布应用+分享令牌,禁止回退默认应用-----------
//update-begin---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
ChatConversation chatConversation = getOrCreateChatConversation(app, conversationId, chatSendParams.getSessionType());
//update-end---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
@@ -184,7 +198,10 @@ public class AiragChatServiceImpl implements IAiragChatService {
// 获取会话信息
String topicId = oConvertUtils.getString(appDebugParams.getTopicId(), UUIDGenerator.generate());
AiragApp app = appDebugParams.getApp();
- app.setId("__DEBUG_APP");
+ //update-begin---author:scott ---date:20260811 for:【LHZP-1619】应用预览与流程调试共用真实应用变量-----------
+ app.setId(resolveDebugAppId(app.getId()));
+ saveVariables(app);
+ //update-end---author:scott ---date:20260811 for:【LHZP-1619】应用预览与流程调试共用真实应用变量-----------
//update-begin---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
ChatConversation chatConversation = getOrCreateChatConversation(app, topicId, "");
//update-end---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
@@ -203,6 +220,15 @@ public class AiragChatServiceImpl implements IAiragChatService {
return emitter;
}
+ /**
+ * 已保存应用调试时保留真实应用id,未保存应用使用调试应用id。
+ *
+ * @author scott
+ * @since 2026-08-11 【LHZP-1619】应用预览与流程调试共用真实应用变量
+ */
+ static String resolveDebugAppId(String appId) {
+ return oConvertUtils.isEmpty(appId) ? AiAppConsts.DEBUG_APP_ID : appId;
+ }
@Override
public Result> stop(String requestId) {
@@ -343,7 +369,8 @@ public class AiragChatServiceImpl implements IAiragChatService {
// 合并工具调用相关的消息
List messages = chatConversation.getMessages();
if (oConvertUtils.isObjectNotEmpty(messages)) {
- messages = mergeToolMessages(messages, showToolProcess);
+ Map toolDisplayNames = showToolProcess ? getFlowToolDisplayNames(chatApp) : Collections.emptyMap();
+ messages = mergeToolMessages(messages, showToolProcess, toolDisplayNames);
}
result.put("messages", messages);
result.put("flowInputs", chatConversation.getFlowInputs());
@@ -362,9 +389,10 @@ public class AiragChatServiceImpl implements IAiragChatService {
*
* @param histories 历史消息列表
* @param showToolProcess 是否显示工具调用过程
+ * @param toolDisplayNames 工具展示名称
* @return 合并后的历史消息列表
*/
- private List mergeToolMessages(List histories, boolean showToolProcess) {
+ private List mergeToolMessages(List histories, boolean showToolProcess, Map toolDisplayNames) {
List mergedMessages = new ArrayList<>();
if (oConvertUtils.isObjectEmpty(histories)) {
return mergedMessages;
@@ -443,6 +471,7 @@ public class AiragChatServiceImpl implements IAiragChatService {
}
String toolResult = message.getToolExecutionResult();
ToolExecutionVo vo = ToolExecutionVo.build(toolId, request.getName(), request.getArguments(), toolResult);
+ fillToolDisplayName(vo, toolDisplayNames);
String execTag = JeecgTagHelper.createTag(JeecgTagHelper.TAG_JEECG_TOOL_EXEC, JSON.toJSONString(vo));
mergeMsg.accept(currentAiMsg, execTag);
}
@@ -454,6 +483,45 @@ public class AiragChatServiceImpl implements IAiragChatService {
return mergedMessages;
}
+ /**
+ * 获取应用流程工具的展示名称
+ *
+ * @param app AI应用
+ * @return 工具名与流程名映射
+ * @author scott
+ * @since 2026-08-04 LHZP-1610
+ */
+ private Map getFlowToolDisplayNames(AiragApp app) {
+ if (app == null || oConvertUtils.isEmpty(app.getFlowId())) {
+ return Collections.emptyMap();
+ }
+ List flowIds = Arrays.asList(app.getFlowId().split(SymbolConstant.COMMA));
+ List flows = airagFlowService.listByIds(flowIds);
+ if (CollectionUtils.isEmpty(flows)) {
+ return Collections.emptyMap();
+ }
+ return flows.stream().collect(Collectors.toMap(
+ flow -> FlowPluginContent.FLOW_TOOL_NAME_PREFIX + flow.getId(),
+ AiragFlow::getName,
+ (first, _second) -> first
+ ));
+ }
+
+ /**
+ * 补充工具展示名称
+ *
+ * @param vo 工具执行记录
+ * @param toolDisplayNames 工具展示名称
+ * @author scott
+ * @since 2026-08-04 LHZP-1610
+ */
+ private void fillToolDisplayName(ToolExecutionVo vo, Map toolDisplayNames) {
+ if (vo == null || toolDisplayNames == null || toolDisplayNames.isEmpty()) {
+ return;
+ }
+ vo.setDisplayName(toolDisplayNames.get(vo.getName()));
+ }
+
@Override
public Result> clearMessage(String conversationId, String sessionType) {
AssertUtils.assertNotEmpty("请先选择会话", conversationId);
@@ -474,8 +542,11 @@ public class AiragChatServiceImpl implements IAiragChatService {
}
@Override
- public Result> initChat(String appId) {
+ public Result initChat(String appId, String shareToken) {
AiragApp app = airagAppMapper.getByIdIgnoreTenant(appId);
+ //update-begin---author:scott ---date:20260721 for:【issues/9787】init匿名访问校验:应用必须已发布且令牌匹配,同时防止app为空导致空指针-----------
+ checkAnonymousShareAccess(app, true, shareToken);
+ //update-end---author:scott ---date:20260721 for:【issues/9787】init匿名访问校验:应用必须已发布且令牌匹配,同时防止app为空导致空指针-----------
//update-begin---author:chenrui ---date:20251106 for:[issues/8545]新建AI应用的时候只能选择没有自定义参数的AI流程------------
if(AiAppConsts.APP_TYPE_CHAT_FLOW.equalsIgnoreCase(app.getType())) {
AiragFlow flow = airagFlowService.getById(app.getFlowId());
@@ -521,7 +592,7 @@ public class AiragChatServiceImpl implements IAiragChatService {
}
//update-end---author:chenrui ---date:202501XX for:在initChat接口中返回模型供应商信息,避免前端多次调用模型查询接口------------
- return Result.ok(app);
+ return Result.ok(buildShareInfoVO(app));
}
@Override
@@ -566,7 +637,7 @@ public class AiragChatServiceImpl implements IAiragChatService {
break;
} else {
// 主线程未结束, 未超时, 休眠一会再查
- log.warn("[AI应用]继续接收-等待消息更新: {}", requestId);
+ log.debug("[AI应用]继续接收-等待消息更新: {}", requestId);
Thread.sleep(500);
}
}
@@ -996,10 +1067,12 @@ public class AiragChatServiceImpl implements IAiragChatService {
//update-begin---author:wangshuai---date:2026-01-09---for:【QQYUN-14261】【AI】AI助手,支持多模态能力- 文档---
appendMessage(messages, userMessage, chatConversation, topicId, sendParams.getFiles(), sendParams.getContent());
//update-end---author:wangshuai---date:2026-01-09---for:【QQYUN-14261】【AI】AI助手,支持多模态能力- 文档---
- // 绘画AI逻辑:当开启生成绘画时调用
- if (oConvertUtils.isObjectNotEmpty(sendParams.getEnableDraw()) && sendParams.getEnableDraw()) {
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ // 手动开启时强制纯生图;未开启时由应用聊天模型通过生图工具自动判断并支持图文混排
+ if (Boolean.TRUE.equals(sendParams.getEnableDraw())) {
return genImageChat(emitter,sendParams,requestId,messages,chatConversation,topicId);
}
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
/* 这里应该是有几种情况:
* 1. 非ai应用:获取默认模型->开始聊天
* 2. AI应用-聊天助手(ChatAssistant):从应用信息组装模型和提示词->开始聊天
@@ -1332,6 +1405,28 @@ public class AiragChatServiceImpl implements IAiragChatService {
airagVariableService.addUpdateVariableTool(aiApp,username,aiChatParams);
}
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ Function> generatedImageGenerator = null;
+ //update-begin---author:scott ---date:20260810 for:图片类插件与应用内置绘画能力互斥---
+ boolean imageRelatedPluginEnabled = imageGenerationToolBuilder.hasImageRelatedPlugin(aiChatParams);
+ if (imageRelatedPluginEnabled) {
+ log.info("[AI-CHAT]应用已启用图片类插件,跳过内置绘画模型注册, appId:{}", aiApp.getId());
+ } else if (imageGenerationToolBuilder.hasExplicitImageRequest(aiApp, sendParams.getContent())) {
+ //update-end---author:scott ---date:20260810 for:图片类插件与应用内置绘画能力互斥---
+ appendMessage(messages, SystemMessage.from(imageGenerationToolBuilder.buildPlacementInstruction(sendParams.getContent())), chatConversation, topicId);
+ generatedImageGenerator = articleContent -> imageGenerationToolBuilder.generateForRequest(
+ aiApp, sendParams.getContent(), articleContent, this::uploadImage);
+ } else {
+ Map imageTools = imageGenerationToolBuilder.buildTools(aiApp, this::uploadImage);
+ if (!imageTools.isEmpty()) {
+ if (aiChatParams.getTools() == null) {
+ aiChatParams.setTools(new HashMap<>());
+ }
+ aiChatParams.getTools().putAll(imageTools);
+ }
+ }
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+
//update-begin---author:wangshuai---date:2026-03-18---for:【QQYUN-14935】Langchain4j 新版支持 Agent Skills,重新定义 Java AI 应用的能力边界---
// 封装skills及上下文信息
fillSkillsParams(aiChatParams);
@@ -1341,7 +1436,9 @@ public class AiragChatServiceImpl implements IAiragChatService {
printChatDuration(requestId, "构造应用自定义参数完成");
// 发消息
//update-begin---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
- sendWithDefault(requestId, chatConversation, topicId, modelId, messages, aiChatParams, sendParams.getSessionType());
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ sendWithDefault(requestId, chatConversation, topicId, modelId, messages, aiChatParams, sendParams.getSessionType(), generatedImageGenerator);
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
//update-end---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
}
@@ -1428,6 +1525,18 @@ public class AiragChatServiceImpl implements IAiragChatService {
* @date 2025/2/25 19:24
*/
private void sendWithDefault(String requestId, ChatConversation chatConversation, String topicId, String modelId, List messages, AIChatParams aiChatParams, String sessionType) {
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ sendWithDefault(requestId, chatConversation, topicId, modelId, messages, aiChatParams, sessionType, null);
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ }
+
+ /**
+ * 处理可延迟合并图片的流式聊天响应。
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ private void sendWithDefault(String requestId, ChatConversation chatConversation, String topicId, String modelId, List messages, AIChatParams aiChatParams, String sessionType, Function> generatedImageGenerator) {
// 调用ai聊天
if (null == aiChatParams) {
aiChatParams = new AIChatParams();
@@ -1524,11 +1633,17 @@ public class AiragChatServiceImpl implements IAiragChatService {
}
}
final boolean finalShowToolProcess = showToolProcess;
+ final Map toolDisplayNames = finalShowToolProcess ? getFlowToolDisplayNames(chatConversation.getApp()) : Collections.emptyMap();
+
+ //update-begin---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
+ Set executedToolNames = ConcurrentHashMap.newKeySet();
+ //update-end---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
/**
* 是否正在思考
*/
AtomicBoolean isThinking = new AtomicBoolean(false);
+ boolean deferTextResponse = generatedImageGenerator != null;
// ai聊天响应逻辑
chatStream.onPartialResponse((String resMessage) -> {
//update-begin---author:wangshuai---date:2025-11-07---for:[issues/8506]/[issues/8260]/[issues/8166]新增推理模型的支持---
@@ -1538,15 +1653,23 @@ public class AiragChatServiceImpl implements IAiragChatService {
isThinking.set(false);
}
//update-end---author:wangshuai---date:2025-11-07---for:[issues/8506]/[issues/8260]/[issues/8166]新增推理模型的支持---
- send2Client.accept(resMessage, EventData.EVENT_MESSAGE);
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ if (!deferTextResponse) {
+ send2Client.accept(resMessage, EventData.EVENT_MESSAGE);
+ }
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
}).beforeToolExecution(beforeToolExecution -> {
// 监听工具执行请求(根据配置决定是否发送给前端)
if (finalShowToolProcess) {
ToolExecutionVo vo = ToolExecutionVo.build(beforeToolExecution);
+ fillToolDisplayName(vo, toolDisplayNames);
String execTag = JeecgTagHelper.createTag(JeecgTagHelper.TAG_JEECG_TOOL_EXEC, JSON.toJSONString(vo));
send2Client.accept(execTag, EventData.EVENT_TOOL_EXEC_BEFORE);
}
}).onToolExecuted((toolExecution) -> {
+ //update-begin---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
+ executedToolNames.add(toolExecution.request().name());
+ //update-end---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
// 打印工具执行结果
log.debug("[AI应用]工具执行结果: toolName={}, toolId={}, result={}",
toolExecution.request().name(),
@@ -1561,9 +1684,14 @@ public class AiragChatServiceImpl implements IAiragChatService {
// 根据配置决定是否将工具调用过程发送给前端
if (finalShowToolProcess) {
ToolExecutionVo vo = ToolExecutionVo.build(toolExecution);
+ fillToolDisplayName(vo, toolDisplayNames);
String execTag = JeecgTagHelper.createTag(JeecgTagHelper.TAG_JEECG_TOOL_EXEC, JSON.toJSONString(vo));
send2Client.accept(execTag, EventData.EVENT_TOOL_EXEC_DONE);
- send2Client.accept(execTag, EventData.EVENT_MESSAGE);
+ //update-begin---author:scott ---date:20260810 for:AI应用思考过程隐藏工具执行原始数据-----------
+ if (!isThinking.get()) {
+ send2Client.accept(execTag, EventData.EVENT_MESSAGE);
+ }
+ //update-end---author:scott ---date:20260810 for:AI应用思考过程隐藏工具执行原始数据-----------
}
}).onIntermediateResponse((chatResponse) -> {
// 中间响应:包含tool_calls的AI消息
@@ -1598,6 +1726,9 @@ public class AiragChatServiceImpl implements IAiragChatService {
}).onCompleteResponse((responseMessage) -> {
// 打印流程耗时日志
printChatDuration(requestId, "LLM输出消息完成");
+ //update-begin---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
+ saveMemoryAfterVariableUpdate(chatConversation.getApp(), messages, executedToolNames);
+ //update-end---author:wangshuai ---date:20260804 for:【LHZP-1591】智普模型单轮只调用变量工具时兜底写入记忆库-----------
AiragLocalCache.remove(AiragConsts.CACHE_TYPE_SSE_SEND_TIME, requestId);
// for [QQYUN-9234] MCP服务连接关闭 - 聊天完成时关闭MCP连接
finalAiChatParams.closeMcpConnections();
@@ -1614,6 +1745,14 @@ public class AiragChatServiceImpl implements IAiragChatService {
if (FinishReason.STOP.equals(finishReason) || null == finishReason) {
// 正常结束
EventData eventData = new EventData(requestId, null, EventData.EVENT_MESSAGE_END, chatConversation.getId(), topicId);
+ //update-begin---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
+ if (deferTextResponse) {
+ String sanitizedText = imageGenerationContentAssembler.removeGeneratedImageMarkdown(aiMessage == null ? null : aiMessage.text());
+ String mixedContent = imageGenerationContentAssembler.mergeGeneratedImages(sanitizedText, generatedImageGenerator.apply(sanitizedText));
+ send2Client.accept(mixedContent, EventData.EVENT_MESSAGE);
+ aiMessage = imageGenerationContentAssembler.replaceAiMessageContent(aiMessage, mixedContent);
+ }
+ //update-end---author:scott ---date:20260810 for:AI应用支持智能识别和图文混合生成-----------
appendMessage(messages, aiMessage, chatConversation, topicId);
// 保存会话
//update-begin---author:wangshuai---date:2025-12-10---for:【QQYUN-14127】【AI】AI应用门户---
@@ -1807,6 +1946,140 @@ public class AiragChatServiceImpl implements IAiragChatService {
});
}
+ /**
+ * 智普模型仅调用变量工具时,将本轮用户信息兜底写入记忆库。
+ *
+ * @param aiApp AI应用
+ * @param messages 本轮消息
+ * @param executedToolNames 已执行工具名称
+ * @author wangshuai
+ * @since 2026-08-04 LHZP-1591
+ */
+ private void saveMemoryAfterVariableUpdate(AiragApp aiApp, List messages, Set executedToolNames) {
+ if (aiApp == null || oConvertUtils.isEmpty(aiApp.getMemoryId())
+ || (!AiAppConsts.IZ_OPEN_MEMORY.equals(aiApp.getIzOpenMemory()) && aiApp.getIzOpenMemory() != null)
+ || !executedToolNames.contains("update_variable") || executedToolNames.contains("add_memory")) {
+ return;
+ }
+ String userContent = messages.stream()
+ .filter(UserMessage.class::isInstance)
+ .map(UserMessage.class::cast)
+ .reduce((first, second) -> second)
+ .map(userMessage -> userMessage.contents().stream()
+ .filter(TextContent.class::isInstance)
+ .map(TextContent.class::cast)
+ .map(TextContent::text)
+ .collect(Collectors.joining("\n")))
+ .orElse("");
+ if (oConvertUtils.isEmpty(userContent)) {
+ return;
+ }
+ try {
+ AiragKnowledgeDoc memoryDoc = new AiragKnowledgeDoc();
+ memoryDoc.setKnowledgeId(aiApp.getMemoryId());
+ memoryDoc.setTitle(userContent.length() > 20 ? userContent.substring(0, 20) : userContent);
+ memoryDoc.setContent(userContent);
+ memoryDoc.setType(LLMConsts.KNOWLEDGE_DOC_TYPE_TEXT);
+ IAiragKnowledgeDocService knowledgeDocService = SpringContextUtils.getBean(IAiragKnowledgeDocService.class);
+ knowledgeDocService.editDocument(memoryDoc);
+ log.info("[AI应用][LHZP-1591] 变量更新后兜底写入记忆库成功, memoryId={}", aiApp.getMemoryId());
+ } catch (Exception e) {
+ log.error("[AI应用][LHZP-1591] 变量更新后兜底写入记忆库失败, memoryId={}", aiApp.getMemoryId(), e);
+ }
+ }
+
+ /**
+ * 匿名访问安全校验(issues/9787)
+ * 匿名用户必须指定一个"已发布"的AI应用并携带正确的分享令牌,禁止回退默认应用、禁止访问未发布/不存在的应用;
+ * 登录用户不受任何影响。
+ *
+ * @param app 按appId查询到的应用(可能为空)
+ * @param hasAppId 请求是否携带了appId
+ * @param shareToken 分享令牌
+ * @author scott
+ * @since 2026-07-21 【issues/9787】AI聊天匿名接口安全加固
+ */
+ private void checkAnonymousShareAccess(AiragApp app, boolean hasAppId, String shareToken) {
+ // 登录用户走原有逻辑,直接放行
+ if (oConvertUtils.isNotEmpty(getUsername(null))) {
+ return;
+ }
+ // 匿名:必须携带appId,禁止回退默认应用刷默认模型额度
+ if (!hasAppId) {
+ throw new JeecgBootException("请通过分享链接访问");
+ }
+ // 匿名:必须携带分享令牌
+ if (oConvertUtils.isEmpty(shareToken)) {
+ throw new JeecgBootException("请通过分享链接访问");
+ }
+ // 匿名:应用必须存在、已发布且令牌匹配(统一文案,不区分具体原因,防止探测)
+ if (app == null
+ || !AiAppConsts.STATUS_RELEASE.equals(app.getStatus())
+ || !shareToken.equals(app.getShareToken())) {
+ throw new JeecgBootException("分享链接无效或已取消发布");
+ }
+ }
+
+ @Override
+ public void validateAnonymousShareAccess(String appId, String shareToken) {
+ AiragApp app = null;
+ if (oConvertUtils.isNotEmpty(appId)) {
+ app = airagAppMapper.getByIdIgnoreTenant(appId);
+ }
+ checkAnonymousShareAccess(app, oConvertUtils.isNotEmpty(appId), shareToken);
+ }
+
+ /**
+ * 元数据白名单key:聊天页仅需这些配置(issues/9787)
+ */
+ private static final Set SHARE_METADATA_KEYS = new HashSet<>(Arrays.asList(
+ AiAppConsts.APP_METADATA_FLOW_INPUTS, "multiSession", "izDraw", "defaultSelect", "drawModelId", "modelInfo"));
+
+ /**
+ * 构建分享视图对象:只保留前端聊天页必需字段(issues/9787)
+ *
+ * @param app 应用实体
+ * @return 分享视图对象
+ * @author scott
+ * @since 2026-07-21 【issues/9787】init接口返回最小化VO
+ */
+ private AiragAppShareInfoVO buildShareInfoVO(AiragApp app) {
+ AiragAppShareInfoVO vo = new AiragAppShareInfoVO();
+ vo.setId(app.getId());
+ vo.setShareToken(app.getShareToken());
+ vo.setName(app.getName());
+ vo.setDescr(app.getDescr());
+ vo.setIcon(app.getIcon());
+ vo.setType(app.getType());
+ vo.setPrologue(app.getPrologue());
+ vo.setPresetQuestion(app.getPresetQuestion());
+ vo.setQuickCommand(app.getQuickCommand());
+ vo.setMetadata(filterShareMetadata(app.getMetadata()));
+ return vo;
+ }
+
+ /**
+ * 元数据按白名单key过滤重组,不原样透传(issues/9787)
+ *
+ * @param metadata 原元数据JSON串
+ * @return 过滤后的元数据JSON串
+ * @author scott
+ * @since 2026-07-21 【issues/9787】init接口返回最小化VO
+ */
+ private String filterShareMetadata(String metadata) {
+ if (oConvertUtils.isEmpty(metadata)) {
+ return null;
+ }
+ JSONObject source = JSONObject.parseObject(metadata);
+ JSONObject target = new JSONObject();
+ for (String key : SHARE_METADATA_KEYS) {
+ if (source.containsKey(key)) {
+ target.put(key, source.get(key));
+ }
+ }
+ return target.toJSONString();
+ }
+
/**
* 获取用户名
*
@@ -2167,6 +2440,17 @@ public class AiragChatServiceImpl implements IAiragChatService {
private File ensureLocalFile(String fileRef, String fileName) {
String uploadpath = jeecgBaseConfig.getPath().getUpload();
if (LLMConsts.WEB_PATTERN.matcher(fileRef).matches()) {
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issues/9672】匿名请求禁止远程URL文件引用,防止SSRF攻击-----------
+ String currentUser = null;
+ try {
+ HttpServletRequest req = SpringContextUtils.getHttpServletRequest();
+ currentUser = JwtUtil.getUserNameByToken(req);
+ } catch (Exception ignored) {
+ }
+ if (currentUser == null) {
+ checkAnonymousFileRef(fileRef);
+ }
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issues/9672】匿名请求禁止远程URL文件引用,防止SSRF攻击-----------
//update-begin---author:wangshuai ---date:2026-04-13 for:【issues/9519】AI附件处理路径遍历漏洞:下载文件名做安全过滤,临时目录隔离---
// 远程下载:使用 FilenameUtils.getName 剥离任何路径分隔符,再次校验防止 ..
String safeFileName = FilenameUtils.getName(fileName);
@@ -2255,4 +2539,53 @@ public class AiragChatServiceImpl implements IAiragChatService {
sendWithFlow(requestId, AiAppConsts.ARTICLE_WRITER_FLOW_ID, chatConversation, topicId, new ArrayList<>(), sendParams);
return emitter;
}
+
+ //update-begin---author:wangshuai ---date:2026-06-16 for:【issues/9672】匿名请求文件引用安全校验-----------
+ /**
+ * 匿名请求文件引用校验:只允许访问已配置存储中 airag/ 目录下的文件
+ */
+ private void checkAnonymousFileRef(String fileRef) {
+ String airag = "airag/";
+ String relativePath = extractStorageRelativePath(fileRef);
+ if (relativePath == null || !relativePath.startsWith(airag)) {
+ log.warn("匿名请求文件路径不在允许范围内: {}", fileRef);
+ throw new JeecgBootException("匿名聊天不支持远程文件引用,请直接上传文件");
+ }
+ }
+
+ /**
+ * 从完整URL中提取存储服务的相对路径,非已配置存储的URL返回null
+ */
+ private String extractStorageRelativePath(String url) {
+ if (oConvertUtils.isEmpty(url)) {
+ return null;
+ }
+ // 匹配 OSS staticDomain(如 https://jeecgdev.oss-cn-beijing.aliyuncs.com)
+ String ossDomain = OssBootUtil.getStaticDomain();
+ if (oConvertUtils.isNotEmpty(ossDomain) && url.toLowerCase().startsWith(ossDomain.toLowerCase())) {
+ String path = url.substring(ossDomain.length());
+ return path.startsWith("/") ? path.substring(1) : path;
+ }
+ // 匹配 OSS endpoint(如 oss-cn-beijing.aliyuncs.com)
+ String ossEndpoint = OssBootUtil.getEndPoint();
+ if (oConvertUtils.isNotEmpty(ossEndpoint) && url.toLowerCase().contains(ossEndpoint.toLowerCase())) {
+ int idx = url.indexOf(ossEndpoint);
+ String afterEndpoint = url.substring(idx + ossEndpoint.length());
+ int slashIdx = afterEndpoint.indexOf('/');
+ return slashIdx >= 0 ? afterEndpoint.substring(slashIdx + 1) : null;
+ }
+ // 匹配 MinIO URL(如 http://192.168.1.100:9000/)
+ String minioUrl = MinioUtil.getMinioUrl();
+ if (oConvertUtils.isNotEmpty(minioUrl) && url.toLowerCase().startsWith(minioUrl.toLowerCase())) {
+ String path = url.substring(minioUrl.length());
+ if (path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ // 跳过 bucket 名称
+ int slashIdx = path.indexOf('/');
+ return slashIdx >= 0 ? path.substring(slashIdx + 1) : null;
+ }
+ return null;
+ }
+ //update-end---author:wangshuai ---date:2026-06-16 for:【issues/9672】匿名请求文件引用安全校验-----------
}
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationContentAssembler.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationContentAssembler.java
new file mode 100644
index 000000000..bf3ab2d19
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationContentAssembler.java
@@ -0,0 +1,153 @@
+package org.jeecg.modules.airag.app.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import dev.langchain4j.data.message.AiMessage;
+import org.jeecg.common.util.oConvertUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 图片生成内容组装组件,负责清理模型内容并将真实图片插入文章。
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+@Component("imageGenerationContentAssembler")
+public class ImageGenerationContentAssembler {
+
+ private static final Pattern MARKDOWN_IMAGE_PATTERN = Pattern.compile("!\\[[^\\]]*\\]\\([^\\r\\n]*\\)");
+ private static final Pattern IMAGE_PLACEHOLDER_PATTERN = Pattern.compile("\\{\\{IMAGE_\\d+}}");
+ private static final Pattern PARAGRAPH_BOUNDARY_PATTERN = Pattern.compile("(?:\\r?\\n){2,}");
+ private static final int GENERATED_ARTICLE_IMAGE_WIDTH = 720;
+
+ /**
+ * 将组装后的内容写回AI消息,同时保留思考过程和工具调用信息。
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ public AiMessage replaceAiMessageContent(AiMessage aiMessage, String content) {
+ if (aiMessage == null) {
+ return AiMessage.from(content);
+ }
+ return AiMessage.builder()
+ .text(content)
+ .thinking(aiMessage.thinking())
+ .toolExecutionRequests(aiMessage.toolExecutionRequests())
+ .attributes(aiMessage.attributes())
+ .build();
+ }
+
+ /**
+ * 移除文本模型自行生成的图片标签,防止展示无效或虚构地址。
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ public String removeGeneratedImageMarkdown(String content) {
+ if (oConvertUtils.isEmpty(content)) {
+ return "";
+ }
+ return MARKDOWN_IMAGE_PATTERN.matcher(content).replaceAll("").trim();
+ }
+
+ /**
+ * 将真实生成的图片替换到正文占位符或结构化插入位置。
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ public String mergeGeneratedImages(String content, List imageUrls) {
+ if (CollectionUtils.isEmpty(imageUrls)) {
+ return removeGeneratedImagePlaceholders(content) + "\n\n> 配图生成失败:绘画模型未返回有效图片。";
+ }
+ String mergedContent = content;
+ List unplacedImages = new ArrayList<>();
+ for (int i = 0; i < imageUrls.size(); i++) {
+ String placeholder = "{{IMAGE_" + (i + 1) + "}}";
+ String imageMarkdown = " + " =" + GENERATED_ARTICLE_IMAGE_WIDTH + ")";
+ int placeholderIndex = mergedContent.indexOf(placeholder);
+ if (placeholderIndex >= 0) {
+ mergedContent = mergedContent.substring(0, placeholderIndex)
+ + imageMarkdown
+ + mergedContent.substring(placeholderIndex + placeholder.length());
+ } else {
+ unplacedImages.add(imageMarkdown);
+ }
+ }
+ if (!unplacedImages.isEmpty()) {
+ mergedContent = distributeImagesByArticleStructure(mergedContent, unplacedImages);
+ }
+ return removeGeneratedImagePlaceholders(mergedContent);
+ }
+
+ private String removeGeneratedImagePlaceholders(String content) {
+ if (oConvertUtils.isEmpty(content)) {
+ return "";
+ }
+ return IMAGE_PLACEHOLDER_PATTERN.matcher(content).replaceAll("").trim();
+ }
+
+ private String distributeImagesByArticleStructure(String content, List imageMarkdownList) {
+ if (oConvertUtils.isEmpty(content)) {
+ return String.join("\n\n", imageMarkdownList);
+ }
+ List insertionPoints = findArticleInsertionPoints(content);
+ if (insertionPoints.isEmpty()) {
+ return content + "\n\n" + String.join("\n\n", imageMarkdownList);
+ }
+
+ List selectedPoints = new ArrayList<>(imageMarkdownList.size());
+ for (int i = 0; i < imageMarkdownList.size(); i++) {
+ int target = content.length() * (i + 1) / (imageMarkdownList.size() + 1);
+ Integer selectedPoint = insertionPoints.stream()
+ .filter(point -> !selectedPoints.contains(point))
+ .min(Comparator.comparingInt(point -> Math.abs(point - target)))
+ .orElse(null);
+ if (selectedPoint != null) {
+ selectedPoints.add(selectedPoint);
+ }
+ }
+
+ StringBuilder result = new StringBuilder(content);
+ for (int i = selectedPoints.size() - 1; i >= 0; i--) {
+ result.insert(selectedPoints.get(i), "\n\n" + imageMarkdownList.get(i) + "\n\n");
+ }
+ if (selectedPoints.size() < imageMarkdownList.size()) {
+ result.append("\n\n")
+ .append(String.join("\n\n", imageMarkdownList.subList(selectedPoints.size(), imageMarkdownList.size())));
+ }
+ return result.toString();
+ }
+
+ private List findArticleInsertionPoints(String content) {
+ List insertionPoints = new ArrayList<>();
+ Matcher matcher = PARAGRAPH_BOUNDARY_PATTERN.matcher(content);
+ int minPosition = content.length() / 10;
+ int maxPosition = content.length() * 9 / 10;
+ while (matcher.find()) {
+ int position = matcher.start();
+ if (position >= minPosition && position <= maxPosition && isBodyParagraphEnd(content, position)) {
+ insertionPoints.add(position);
+ }
+ }
+ return insertionPoints;
+ }
+
+ private boolean isBodyParagraphEnd(String content, int position) {
+ String before = content.substring(0, position).stripTrailing();
+ int lineStart = Math.max(before.lastIndexOf('\n'), before.lastIndexOf('\r')) + 1;
+ String previousLine = before.substring(lineStart).trim();
+ return !previousLine.isEmpty()
+ && !previousLine.matches("^#{1,6}\\s+.*")
+ && !previousLine.matches("^[-*+]\\s+.*")
+ && !previousLine.matches("^\\d+[.)、]\\s+.*")
+ && !previousLine.startsWith("|")
+ && !previousLine.startsWith("```");
+ }
+}
diff --git a/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationToolBuilder.java b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationToolBuilder.java
new file mode 100644
index 000000000..6cb66dad0
--- /dev/null
+++ b/jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/service/impl/ImageGenerationToolBuilder.java
@@ -0,0 +1,423 @@
+package org.jeecg.modules.airag.app.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import dev.langchain4j.agent.tool.ToolSpecification;
+import dev.langchain4j.model.chat.request.json.JsonObjectSchema;
+import dev.langchain4j.service.tool.ToolExecutor;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.airag.app.entity.AiragApp;
+import org.jeecg.modules.airag.common.handler.AIChatParams;
+import org.jeecg.modules.airag.common.handler.IAIChatHandler;
+import org.jeecg.modules.airag.llm.consts.LLMConsts;
+import org.jeecg.modules.airag.llm.entity.AiragMcp;
+import org.jeecg.modules.airag.llm.mapper.AiragMcpMapper;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * AI应用图片生成工具构建器。(AI应用配置的绘画模型 做成工具注入到应用中)
+ *
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class ImageGenerationToolBuilder {
+
+ private static final String TOOL_NAME = "generate_images";
+ private static final String DRAW_ENABLED = "1";
+ private static final String METADATA_DRAW_ENABLED = "izDraw";
+ private static final String METADATA_DRAW_MODEL_ID = "drawModelId";
+ private static final int DEFAULT_IMAGE_COUNT = 1;
+ private static final int MAX_IMAGE_COUNT = 4;
+ private static final String IMAGE_TYPE_REGEX = "(?:图片|图像|配图|插图|海报|照片|插画)";
+ private static final String IMAGE_QUANTITY_REGEX = "(?:张(?:\\s*" + IMAGE_TYPE_REGEX + ")?|个\\s*" + IMAGE_TYPE_REGEX + ")";
+ private static final Pattern EXPLICIT_IMAGE_REQUEST_PATTERN = Pattern.compile(
+ "(?:生成|制作|创建|绘制|画|设计|添加|配).{0,20}" + IMAGE_TYPE_REGEX
+ + "|(?:\\d+|[一二两三四])\\s*" + IMAGE_QUANTITY_REGEX
+ );
+ private static final Pattern IMAGE_COUNT_PATTERN = Pattern.compile("(\\d+|[一二两三四])\\s*" + IMAGE_QUANTITY_REGEX);
+ private static final Pattern IMAGE_PLUGIN_SUBJECT_PATTERN = Pattern.compile(
+ "(?:^|[^a-z0-9])(?:image|images|photo|photos|picture|pictures|illustration|illustrations)(?:$|[^a-z0-9])"
+ + "|图片|图像|照片|配图|插图|海报|插画|图库",
+ Pattern.CASE_INSENSITIVE
+ );
+ private static final Pattern IMAGE_PLUGIN_ACTION_PATTERN = Pattern.compile(
+ "(?:^|[^a-z0-9])(?:search|find|generate|create|draw|render|design|produce|retrieve|fetch|get|query|list|recommend)(?:$|[^a-z0-9])"
+ + "|搜索|查询|生成|绘制|创建|设计|获取|推荐",
+ Pattern.CASE_INSENSITIVE
+ );
+ private static final Map CHINESE_IMAGE_COUNTS = Map.of(
+ "一", 1,
+ "二", 2,
+ "两", 2,
+ "三", 3,
+ "四", 4
+ );
+
+ private final IAIChatHandler aiChatHandler;
+ private final AiragMcpMapper airagMcpMapper;
+
+ //update-begin---author:scott ---date:20260810 for:图片类插件与应用内置绘画能力互斥---
+ /**
+ * 判断当前应用是否已启用图片搜索或图片生成类插件。
+ *
+ * @param params AI聊天参数
+ * @return 是否存在图片类插件
+ * @author scott
+ * @since 2026-08-10 图片类插件与应用内置绘画能力互斥
+ */
+ public boolean hasImageRelatedPlugin(AIChatParams params) {
+ if (params == null) {
+ return false;
+ }
+ if (hasImageRelatedTool(params.getTools())) {
+ return true;
+ }
+ List pluginIds = params.getPluginIds();
+ if (oConvertUtils.isObjectEmpty(pluginIds)) {
+ return false;
+ }
+ try {
+ List distinctPluginIds = pluginIds.stream()
+ .filter(oConvertUtils::isNotEmpty)
+ .distinct()
+ .collect(Collectors.toList());
+ if (distinctPluginIds.isEmpty()) {
+ return false;
+ }
+ return airagMcpMapper.selectBatchIds(distinctPluginIds).stream()
+ .filter(plugin -> !LLMConsts.STATUS_DISABLE.equals(plugin.getStatus()))
+ .anyMatch(this::isImageRelatedPlugin);
+ } catch (Exception e) {
+ log.warn("[AI-CHAT]识别图片类插件失败,保留应用内置绘画能力: {}", e.getMessage());
+ return false;
+ }
+ }
+
+ private boolean hasImageRelatedTool(Map tools) {
+ return tools != null && tools.keySet().stream()
+ .filter(Objects::nonNull)
+ .anyMatch(tool -> isImageRelatedCapability(tool.name(), tool.description()));
+ }
+
+ private boolean isImageRelatedPlugin(AiragMcp plugin) {
+ if (plugin == null) {
+ return false;
+ }
+ if (isImageRelatedCapability(plugin.getName(), plugin.getDescr())) {
+ return true;
+ }
+ if (oConvertUtils.isEmpty(plugin.getTools())) {
+ return false;
+ }
+ try {
+ JSONArray tools = JSONArray.parseArray(plugin.getTools());
+ if (tools == null) {
+ return false;
+ }
+ return tools.stream()
+ .filter(Objects::nonNull)
+ .map(tool -> JSONObject.parseObject(tool.toString()))
+ .anyMatch(tool -> isImageRelatedCapability(tool.getString("name"), tool.getString("description")));
+ } catch (Exception e) {
+ log.warn("[AI-CHAT]插件[{}]工具定义解析失败,跳过图片能力识别: {}", plugin.getName(), e.getMessage());
+ return false;
+ }
+ }
+
+ private boolean isImageRelatedCapability(String name, String description) {
+ String capability = oConvertUtils.getString(name) + " " + oConvertUtils.getString(description);
+ capability = capability.replaceAll("([a-z0-9])([A-Z])", "$1 $2");
+ return IMAGE_PLUGIN_SUBJECT_PATTERN.matcher(capability).find()
+ && IMAGE_PLUGIN_ACTION_PATTERN.matcher(capability).find();
+ }
+ //update-end---author:scott ---date:20260810 for:图片类插件与应用内置绘画能力互斥---
+
+ /**
+ * 判断用户是否明确要求生成图片。
+ *
+ * @param app AI应用
+ * @param content 用户消息
+ * @return 是否需要由后端确保生成图片
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ public boolean hasExplicitImageRequest(AiragApp app, String content) {
+ return oConvertUtils.isNotEmpty(resolveDrawModelId(app))
+ && oConvertUtils.isNotEmpty(content)
+ && EXPLICIT_IMAGE_REQUEST_PATTERN.matcher(content).find();
+ }
+
+ /**
+ * 按用户消息中指定的数量生成配图。
+ *
+ * @param app AI应用
+ * @param content 用户消息
+ * @param articleContent 已生成的文章正文
+ * @param imageUploader 图片上传函数
+ * @return 已上传的图片地址
+ * @author scott
+ * @since 2026-08-10 AI应用支持智能识别和图文混合生成
+ */
+ public List generateForRequest(AiragApp app, String content, String articleContent,
+ Function-->
+
org.jeecgframework.jimureport
jimubi-spring-boot4-starter
-
-
- org.jeecgframework.boot3
- jeecg-boot-module-airag
- ${jeecgboot.version}
-
-
-
+
+
+ org.jeecgframework.boot3
+ jeecg-boot-module-airag
+ ${jeecgboot.version}
+
+
+
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/firewall/SqlInjection/impl/DictTableWhiteListHandlerImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/firewall/SqlInjection/impl/DictTableWhiteListHandlerImpl.java
index cc3801b79..451996075 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/firewall/SqlInjection/impl/DictTableWhiteListHandlerImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/firewall/SqlInjection/impl/DictTableWhiteListHandlerImpl.java
@@ -77,13 +77,14 @@ public class DictTableWhiteListHandlerImpl implements IDictTableWhiteListHandler
// 遍历当前sql中的所有表名,如果有其中一个表或表的字段不在白名单中,则不通过
for (Map.Entry entry : parsedMap.entrySet()) {
SelectSqlInfo sqlInfo = entry.getValue();
+ String tableName = entry.getKey();
if (sqlInfo.isSelectAll()) {
- log.warn("查询语句中包含 * 字段,暂时先通过");
+ // select * 只有整表字段已授权时才允许;dev 模式沿用自动补充白名单逻辑
+ this.checkWhiteList(tableName, Collections.singleton(SymbolConstant.ASTERISK));
continue;
}
Set queryFields = sqlInfo.getAllRealSelectFields();
// 校验表名和字段是否允许查询
- String tableName = entry.getKey();
if (!this.checkWhiteList(tableName, queryFields)) {
return false;
}
@@ -169,6 +170,10 @@ public class DictTableWhiteListHandlerImpl implements IDictTableWhiteListHandler
// 统一转成小写
allowFieldStr = allowFieldStr.toLowerCase();
Set allowFields = new HashSet<>(Arrays.asList(allowFieldStr.split(",")));
+ // 配置 * 代表允许查询当前表的所有字段
+ if (allowFields.contains(SymbolConstant.ASTERISK)) {
+ return true;
+ }
// 需要合并的字段
Set waitMergerFields = new HashSet<>();
for (String field : queryFields) {
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java
index 8a0d1707e..dd99e6ca0 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java
@@ -7,6 +7,7 @@ import org.jeecgframework.codegenerate.database.CodegenDatasourceConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
/**
* @Description: 代码生成器,自定义DB配置
@@ -21,6 +22,7 @@ import org.springframework.context.annotation.Configuration;
* @ConditionalOnMissingClass("org.jeecg.config.init.CodeGenerateDbConfig")
*/
@Slf4j
+@Lazy(false)
@Configuration
public class CodeGenerateDbConfig {
@Value("${spring.datasource.dynamic.datasource.master.url:}")
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/SystemInitListener.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/SystemInitListener.java
index 5862ea9a4..0b5fbaaf6 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/SystemInitListener.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/SystemInitListener.java
@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Lazy;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
@@ -17,6 +18,7 @@ import org.springframework.stereotype.Component;
*/
@Slf4j
@Component
+@Lazy(false)
@Conditional(JeecgCloudCondition.class)
public class SystemInitListener implements ApplicationListener, Ordered {
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java
index 49c6442d7..110adcf23 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java
@@ -6,6 +6,10 @@ import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
/**
* @Description: TomcatFactoryConfig
* @author: scott
@@ -28,6 +32,16 @@ public class TomcatFactoryConfig {
connector.setProperty("relaxedPathChars", "[]{}");
connector.setProperty("relaxedQueryChars", "[]{}");
});
+ //update-begin---author:scott ---date:20260710 for:【issues】升级Tomcat11后work目录生成在项目目录问题-----------
+ // 自定义Bean覆盖了SpringBoot自动配置,yml里的basedir不生效,Tomcat11默认落到./work,需手动指定系统临时目录
+ try {
+ File tomcatTmpDir = Files.createTempDirectory("tomcat.jeecg.").toFile();
+ tomcatTmpDir.deleteOnExit();
+ factory.setBaseDirectory(tomcatTmpDir);
+ } catch (IOException e) {
+ // ignore, fallback to tomcat default
+ }
+ //update-end---author:scott ---date:20260710 for:【issues】升级Tomcat11后work目录生成在项目目录问题-----------
return factory;
}
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/UndertowConfiguration.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/UndertowConfiguration.java
deleted file mode 100644
index 103928d59..000000000
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/init/UndertowConfiguration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-//package org.jeecg.config.init;
-//
-//import io.undertow.UndertowOptions;
-//import io.undertow.server.DefaultByteBufferPool;
-//import io.undertow.server.handlers.BlockingHandler;
-//import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
-//import org.jeecg.modules.monitor.actuator.undertow.CustomUndertowMetricsHandler;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
-//import org.springframework.boot.web.server.WebServerFactoryCustomizer;
-//import org.springframework.context.annotation.Configuration;
-//
-///**
-// * Undertow配置
-// *
-// * 解决启动提示: WARN io.undertow.websockets.jsr:68 - UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
-// */
-//@Configuration
-//public class UndertowConfiguration implements WebServerFactoryCustomizer {
-//
-// /**
-// * 自定义undertow监控指标工具类
-// * for [QQYUN-11902]tomcat 替换undertow 这里的功能还没修改
-// */
-// @Autowired
-// private CustomUndertowMetricsHandler customUndertowMetricsHandler;
-//
-// @Override
-// public void customize(UndertowServletWebServerFactory factory) {
-// // 设置 Undertow 服务器参数(底层网络配置)
-// factory.addBuilderCustomizers(builder -> {
-// builder.setServerOption(UndertowOptions.MAX_HEADER_SIZE, 65536); // header 最大64KB
-// builder.setServerOption(UndertowOptions.MAX_PARAMETERS, 10000); // 最大参数数
-// });
-// factory.addDeploymentInfoCustomizers(deploymentInfo -> {
-//
-// WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
-//
-// // 设置合理的参数
-// webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(true, 8192));
-//
-// deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
-//
-// // 添加自定义 监控 handler
-// deploymentInfo.addInitialHandlerChainWrapper(next -> new BlockingHandler(customUndertowMetricsHandler.wrap(next)));
-// });
-// }
-//}
\ No newline at end of file
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java
index 838e999af..81578eafe 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java
@@ -2,6 +2,7 @@ package org.jeecg.config.jimureport;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.common.system.vo.ComboModel;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.RedisUtil;
@@ -9,6 +10,9 @@ import org.jeecg.common.util.TokenUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.jmreport.api.JmReportTokenServiceI;
import org.jeecg.modules.jmreport.common.vo.JmDictModel;
+import org.jeecg.modules.jmreport.common.vo.JmRoleModel;
+import org.jeecg.modules.jmreport.common.vo.JmUserModel;
+import org.jeecg.modules.jmreport.desreport.model.JmPage;
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -79,8 +83,12 @@ public class JimuReportTokenService implements JmReportTokenServiceI {
}
//设置账号名
map.put(SYS_USER_CODE, userInfo.getSysUserCode());
+ //设置用户名称(中文名)
+ map.put(sysUserName, userInfo.getSysUserName());
//设置部门编码
map.put(SYS_ORG_CODE, userInfo.getSysOrgCode());
+ //设置用户拥有的所有部门编码
+ map.put("sysMultiOrgCode", userInfo.getSysMultiOrgCode());
// 将所有信息存放至map 解析sql/api会根据map的键值解析
return map;
}
@@ -127,4 +135,37 @@ public class JimuReportTokenService implements JmReportTokenServiceI {
}
return dictItems;
}
+
+ @Override
+ public JmPage getRoleList(String token, String keyword, Integer pageNo, Integer pageSize) {
+ List allRoles = sysBaseApi.queryAllRole();
+ List list = allRoles.stream()
+ .filter(r -> oConvertUtils.isEmpty(keyword) || (r.getTitle() != null && r.getTitle().contains(keyword)) || (r.getRoleCode() != null && r.getRoleCode().contains(keyword)))
+ .map(r -> new JmRoleModel(r.getRoleCode(), r.getTitle()))
+ .collect(java.util.stream.Collectors.toList());
+ return buildPage(list, pageNo, pageSize);
+ }
+
+ @Override
+ public JmPage getUserList(String token, String keyword, Integer pageNo, Integer pageSize) {
+ List allUsers = sysBaseApi.queryAllUserBackCombo();
+ List list = allUsers.stream()
+ .filter(u -> oConvertUtils.isEmpty(keyword) || (u.getUsername() != null && u.getUsername().contains(keyword)) || (u.getTitle() != null && u.getTitle().contains(keyword)))
+ .map(u -> new JmUserModel(u.getUsername(), u.getTitle()))
+ .collect(java.util.stream.Collectors.toList());
+ return buildPage(list, pageNo, pageSize);
+ }
+
+ private JmPage buildPage(List list, Integer pageNo, Integer pageSize) {
+ pageNo = (pageNo == null || pageNo < 1) ? 1 : pageNo;
+ pageSize = (pageSize == null || pageSize < 1) ? 10 : pageSize;
+ JmPage page = new JmPage<>();
+ page.setPageNo(pageNo);
+ page.setPageSize(pageSize);
+ page.setTotal(list.size());
+ int fromIndex = (pageNo - 1) * pageSize;
+ int toIndex = Math.min(fromIndex + pageSize, list.size());
+ page.setRecords(fromIndex >= list.size() ? Collections.emptyList() : list.subList(fromIndex, toIndex));
+ return page;
+ }
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java
index 8cba0ba41..ac052b405 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java
@@ -16,6 +16,7 @@ import org.jeecg.modules.message.entity.MsgParams;
import org.jeecg.modules.message.entity.SysMessageTemplate;
import org.jeecg.modules.message.service.ISysMessageTemplateService;
import org.jeecg.modules.message.util.PushMsgUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
@@ -25,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
@@ -149,7 +152,21 @@ public class SysMessageTemplateController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) {
- return super.importExcel(request, response, SysMessageTemplate.class);
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ Map fileMap = multipartRequest.getFileMap();
+ for (Map.Entry entry : fileMap.entrySet()) {
+ ImportParams params = new ImportParams();
+ params.setTitleRows(2);
+ params.setHeadRows(1);
+ params.setNeedSave(true);
+ try {
+ return sysMessageTemplateService.importExcelCheckTemplateCode(entry.getValue(), params);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ return Result.error("文件导入失败:" + e.getMessage());
+ }
+ }
+ return Result.error("文件导入失败:未找到上传文件");
}
/**
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/enums/RangeDateEnum.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/enums/RangeDateEnum.java
index 4e6ed84ed..a9c7a2d9c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/enums/RangeDateEnum.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/enums/RangeDateEnum.java
@@ -115,11 +115,11 @@ public enum RangeDateEnum {
return null;
}
// 开始时间00:00:00 结束时间23:59:59
- calendar1.set(Calendar.HOUR, 0);
+ calendar1.set(Calendar.HOUR_OF_DAY, 0);
calendar1.set(Calendar.MINUTE, 0);
calendar1.set(Calendar.SECOND, 0);
calendar1.set(Calendar.MILLISECOND, 0);
- calendar2.set(Calendar.HOUR, 23);
+ calendar2.set(Calendar.HOUR_OF_DAY, 23);
calendar2.set(Calendar.MINUTE, 59);
calendar2.set(Calendar.SECOND, 59);
calendar2.set(Calendar.MILLISECOND, 999);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/FsSendMsgHandle.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/FsSendMsgHandle.java
new file mode 100644
index 000000000..5d44620c6
--- /dev/null
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/FsSendMsgHandle.java
@@ -0,0 +1,37 @@
+package org.jeecg.modules.message.handle.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.modules.message.handle.ISendMsgHandle;
+import org.jeecg.modules.system.service.impl.ThirdAppFeishuServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 发飞书消息模板
+ *
+ * @author jeecg-boot
+ */
+@Slf4j
+@Component("fsSendMsgHandle")
+public class FsSendMsgHandle implements ISendMsgHandle {
+
+ @Autowired
+ private ThirdAppFeishuServiceImpl feishuService;
+
+ @Override
+ public void sendMsg(String esReceiver, String esTitle, String esContent) {
+ MessageDTO messageDTO = new MessageDTO();
+ messageDTO.setToUser(esReceiver);
+ messageDTO.setTitle(esTitle);
+ messageDTO.setContent(esContent);
+ messageDTO.setToAll(false);
+ sendMessage(messageDTO);
+ }
+
+ @Override
+ public void sendMessage(MessageDTO messageDTO) {
+ feishuService.sendMessage(messageDTO, true);
+ }
+
+}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java
index 5063ddfcc..ceb85fa41 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java
@@ -1,19 +1,105 @@
package org.jeecg.modules.message.handle.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.dto.message.MessageDTO;
+import org.jeecg.common.constant.enums.DySmsEnum;
+import org.jeecg.common.util.DySmsHelper;
+import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.message.handle.ISendMsgHandle;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
/**
- * @Description: 短信发送
+ * @Description: 短信发送处理
* @author: jeecg-boot
*/
@Slf4j
+@Component("smsSendMsgHandle")
public class SmsSendMsgHandle implements ISendMsgHandle {
- @Override
- public void sendMsg(String esReceiver, String esTitle, String esContent) {
- // TODO Auto-generated method stub
- log.info("发短信");
- }
+ @Autowired
+ private SysUserMapper sysUserMapper;
+ // 流程短信模版code
+ private final String BPM_SMS_TEMPLATE_CODE = "bpm_sms";
+ @Override
+ public void sendMsg(String esReceiver, String esTitle, String esContent) {
+ log.info("发短信,接收人: {},标题: {},内容: {}", esReceiver, esTitle, esContent);
+ }
+
+ @Override
+ public void sendMessage(MessageDTO messageDTO) {
+ String toUser = messageDTO.getToUser();
+ if (oConvertUtils.isEmpty(toUser)) {
+ log.error("短信发送失败:接收人为空");
+ return;
+ }
+
+ // 根据模板编码获取阿里云短信模板配置
+ String templateCode = messageDTO.getTemplateCode();
+ DySmsEnum dySmsEnum = null;
+ if (dySmsEnum == null) {
+ log.warn("未找到精确匹配的短信模板,templateCode: {}");
+ return;
+ }
+ // 解析短信模板参数(消息内容经过FreeMarker解析后应为JSON格式的模板参数)
+ JSONObject templateParamJson = new JSONObject();
+ try {
+ String bpmTitle = messageDTO.getTitle();
+ if (oConvertUtils.isEmpty(bpmTitle)) {
+ log.error("短信发送失败:消息标题为空");
+ return;
+ }
+ templateParamJson.put("bpmTitle", bpmTitle);
+ } catch (Exception e) {
+ log.error("短信发送失败:消息内容不是有效的JSON格式,content: {}", messageDTO.getContent(), e);
+ return;
+ }
+
+ // 查询接收用户的手机号
+ String[] usernames = toUser.split(",");
+ LambdaQueryWrapper query = new LambdaQueryWrapper()
+ .in(SysUser::getUsername, usernames)
+ .isNotNull(SysUser::getPhone)
+ .ne(SysUser::getPhone, "");
+ List users = sysUserMapper.selectList(query);
+
+ if (users == null || users.isEmpty()) {
+ log.warn("短信发送失败:未找到有效的用户手机号,接收人: {}", toUser);
+ return;
+ }
+
+ // 逐个发送短信
+ int successCount = 0;
+ int failCount = 0;
+ for (SysUser user : users) {
+ String phone = user.getPhone();
+ if (oConvertUtils.isEmpty(phone)) {
+ log.warn("用户 {} 未设置手机号,跳过短信发送", user.getUsername());
+ failCount++;
+ continue;
+ }
+ try {
+ templateParamJson.put("realname", oConvertUtils.getString(user.getRealname(),user.getUsername()));
+ boolean success = DySmsHelper.sendSms(phone, templateParamJson, dySmsEnum);
+ if (success) {
+ log.info("短信发送成功,接收人: {},手机号: {}", user.getUsername(), phone);
+ successCount++;
+ } else {
+ log.error("短信发送失败(API返回失败),接收人: {},手机号: {}", user.getUsername(), phone);
+ failCount++;
+ }
+ } catch (Exception e) {
+ log.error("短信发送异常,接收人: {},手机号: {}", user.getUsername(), phone, e);
+ failCount++;
+ }
+ }
+ log.info("短信发送完成,成功: {},失败: {},总数: {}", successCount, failCount, users.size());
+ }
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java
index da3e78e8e..f633f08d9 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java
@@ -2,8 +2,11 @@ package org.jeecg.modules.message.service;
import java.util.List;
+import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.service.JeecgService;
import org.jeecg.modules.message.entity.SysMessageTemplate;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.springframework.web.multipart.MultipartFile;
/**
* @Description: 消息模板
@@ -19,4 +22,14 @@ public interface ISysMessageTemplateService extends JeecgService selectByCode(String code);
+
+ /**
+ * 导入消息模板并校验模板编码。
+ *
+ * @param file 导入文件
+ * @param params 导入参数
+ * @return 导入结果
+ * @throws Exception 导入异常
+ */
+ Result> importExcelCheckTemplateCode(MultipartFile file, ImportParams params) throws Exception;
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java
index 7bce59248..0ccfae7bd 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java
@@ -1,11 +1,21 @@
package org.jeecg.modules.message.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.service.impl.JeecgServiceImpl;
+import org.jeecg.common.util.ImportExcelUtil;
import org.jeecg.modules.message.entity.SysMessageTemplate;
import org.jeecg.modules.message.mapper.SysMessageTemplateMapper;
import org.jeecg.modules.message.service.ISysMessageTemplateService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -25,4 +35,56 @@ public class SysMessageTemplateServiceImpl extends JeecgServiceImpl selectByCode(String code) {
return sysMessageTemplateMapper.selectByCode(code);
}
+
+ @Override
+ public Result> importExcelCheckTemplateCode(MultipartFile file, ImportParams params) throws Exception {
+ List messageTemplates;
+ try (InputStream inputStream = file.getInputStream()) {
+ messageTemplates = ExcelImportUtil.importExcel(inputStream, SysMessageTemplate.class, params);
+ }
+ List errorMessages = new ArrayList<>();
+ int successLines = 0;
+ for (int i = 0; i < messageTemplates.size(); i++) {
+ SysMessageTemplate messageTemplate = messageTemplates.get(i);
+ messageTemplate.setCreateBy(null);
+ messageTemplate.setCreateTime(null);
+ messageTemplate.setUpdateTime(null);
+ messageTemplate.setUpdateBy(null);
+ int excelRowNumber = params.getTitleRows() + params.getHeadRows() + i + 1;
+ if (isTemplateCodeExists(messageTemplate.getTemplateCode())) {
+ errorMessages.add(excelRowNumber + "_模板编码【" + messageTemplate.getTemplateCode() + "】重复,忽略导入。");
+ continue;
+ }
+ try {
+ if (save(messageTemplate)) {
+ successLines++;
+ } else {
+ errorMessages.add(excelRowNumber + "_数据保存失败,忽略导入。");
+ }
+ } catch (Exception e) {
+ if (isDuplicateKeyException(e)) {
+ errorMessages.add(excelRowNumber + "_模板编码【" + messageTemplate.getTemplateCode() + "】重复,忽略导入。");
+ } else {
+ throw e;
+ }
+ }
+ }
+ return ImportExcelUtil.imporReturnRes(errorMessages.size(), successLines, errorMessages);
+ }
+
+ private boolean isTemplateCodeExists(String templateCode) {
+ return templateCode != null && count(Wrappers.lambdaQuery()
+ .eq(SysMessageTemplate::getTemplateCode, templateCode)) > 0;
+ }
+
+ private boolean isDuplicateKeyException(Exception exception) {
+ Throwable cause = exception;
+ while (cause != null) {
+ if (cause instanceof DuplicateKeyException) {
+ return true;
+ }
+ cause = cause.getCause();
+ }
+ return false;
+ }
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiAuthController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiAuthController.java
index fec2ec755..692527a49 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiAuthController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiAuthController.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.openapi.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
@@ -30,6 +31,7 @@ public class OpenApiAuthController extends JeecgController queryPageList(OpenApiAuth openApiAuth, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
@@ -45,6 +47,7 @@ public class OpenApiAuthController extends JeecgController add(@RequestBody OpenApiAuth openApiAuth) {
service.save(openApiAuth);
@@ -57,6 +60,7 @@ public class OpenApiAuthController extends JeecgController edit(@RequestBody OpenApiAuth openApiAuth) {
service.updateById(openApiAuth);
@@ -70,6 +74,7 @@ public class OpenApiAuthController extends JeecgController delete(@RequestParam(name = "id", required = true) String id) {
service.removeById(id);
@@ -82,6 +87,7 @@ public class OpenApiAuthController extends JeecgController deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
@@ -95,6 +101,7 @@ public class OpenApiAuthController extends JeecgController queryById(@RequestParam(name = "id", required = true) String id) {
OpenApiAuth openApiAuth = service.getById(id);
@@ -105,6 +112,7 @@ public class OpenApiAuthController extends JeecgController genAKSK() {
return Result.ok(AKSKGenerator.genAKSKPair());
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java
index 5e518f164..d2bdf9d2c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiController.java
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
+import jakarta.servlet.http.HttpServletRequest;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootBizTipException;
@@ -15,7 +17,9 @@ import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.common.util.RedisUtil;
+import org.jeecg.common.util.filter.SsrfFileTypeFilter;
import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.config.JeecgBaseConfig;
import org.jeecg.modules.openapi.entity.OpenApi;
import org.jeecg.modules.openapi.entity.OpenApiAuth;
import org.jeecg.modules.openapi.entity.OpenApiHeader;
@@ -26,7 +30,6 @@ import org.jeecg.modules.openapi.service.OpenApiService;
import org.jeecg.modules.openapi.swagger.*;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
-import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
@@ -36,7 +39,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
-import jakarta.servlet.http.HttpServletRequest;
import java.net.URI;
import java.util.*;
import java.util.stream.Collectors;
@@ -56,6 +58,8 @@ public class OpenApiController extends JeecgController
private ISysUserService sysUserService;
@Autowired
private OpenApiAuthService openApiAuthService;
+ @Autowired
+ private JeecgBaseConfig jeecgBaseConfig;
/**
* 分页列表查询
@@ -81,7 +85,7 @@ public class OpenApiController extends JeecgController
* @param openApi
* @return
*/
- @RequiresRoles({"admin"})
+ @RequiresPermissions("openapi:open_api:add")
@PostMapping(value = "/add")
public Result> add(@RequestBody OpenApi openApi) {
if (openApi == null) {
@@ -98,7 +102,7 @@ public class OpenApiController extends JeecgController
* @param openApi
* @return
*/
- @RequiresRoles({"admin"})
+ @RequiresPermissions("openapi:open_api:edit")
@PutMapping(value = "/edit")
public Result> edit(@RequestBody OpenApi openApi) {
if (openApi == null) {
@@ -116,7 +120,7 @@ public class OpenApiController extends JeecgController
* @param id
* @return
*/
- @RequiresRoles({"admin"})
+ @RequiresPermissions("openapi:open_api:delete")
@DeleteMapping(value = "/delete")
public Result> delete(@RequestParam(name = "id", required = true) String id) {
service.removeById(id);
@@ -129,7 +133,7 @@ public class OpenApiController extends JeecgController
* @param ids
* @return
*/
- @RequiresRoles({"admin"})
+ @RequiresPermissions("openapi:open_api:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
@@ -154,7 +158,7 @@ public class OpenApiController extends JeecgController
* @param path
* @return
*/
- @RequestMapping(value = "/call/{path}", method = {RequestMethod.GET,RequestMethod.POST})
+ @RequestMapping(value = "/call/{path}", method = {RequestMethod.GET,RequestMethod.POST,RequestMethod.DELETE,RequestMethod.PUT,RequestMethod.PATCH,RequestMethod.HEAD,RequestMethod.OPTIONS,RequestMethod.TRACE})
public Result> call(@PathVariable String path, @RequestBody(required = false) String json, HttpServletRequest request) {
OpenApi openApi = service.findByPath(path);
if (Objects.isNull(openApi)) {
@@ -184,20 +188,47 @@ public class OpenApiController extends JeecgController
httpHeaders.put("X-Access-Token", Lists.newArrayList(token));
httpHeaders.put("Content-Type",Lists.newArrayList("application/json"));
HttpEntity httpEntity = new HttpEntity<>(json, httpHeaders);
- //update-begin---author:scott ---date:20260429 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
+ //update-begin---author:scott ---date:20260430 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
// originUrl 支持两种形式:
- // 1) 相对路径(如 /house/houseTest/list):拼接当前请求的 baseUrl;
+ // 1) 相对路径(如 /house/houseTest/list):默认拼接当前请求的 baseUrl;
// 使用 CommonUtils.getBaseUrl(request)(而非 RestUtil.getBaseUrl()),
- // 可读取 X-Gateway-Base-Path 请求头,兼容微服务网关下的真实 base path
+ // 可读取 X-Gateway-Base-Path 请求头,兼容微服务网关下的真实 base path。
+ // Docker / K8s NodePort / 反向代理等入站端口与容器监听端口不一致时,
+ // 可通过配置 jeecg.domainUrl.back 显式指定本机自代理地址。
// 2) 完整URL(http(s)://host:port/path):直接使用,适用于微服务模式下接口部署在其他微服务模块(如 erp 7003)的场景
String lowerUrl = url.toLowerCase();
+ //update-begin---author:zhang ---date:20260806 for:【issues/9794】OpenAPI 相对 originUrl 自代理使用入站 Host/port,Docker 端口映射时 Connection refused-----------
if (!lowerUrl.startsWith("http://") && !lowerUrl.startsWith("https://")) {
- url = CommonUtils.getBaseUrl(request) + url;
+ String baseUrl = null;
+ if (jeecgBaseConfig.getDomainUrl() != null && oConvertUtils.isNotEmpty(jeecgBaseConfig.getDomainUrl().getBack())) {
+ baseUrl = jeecgBaseConfig.getDomainUrl().getBack();
+ } else {
+ baseUrl = CommonUtils.getBaseUrl(request);
+ }
+ CommonUtils.checkInternalUrl(baseUrl);
+ url = baseUrl + url;
}
- //update-end---author:scott ---date:20260429 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
+ //update-end---author:zhang ---date:20260806 for:【issues/9794】OpenAPI 相对 originUrl 自代理使用入站 Host/port,Docker 端口映射时 Connection refused-----------
+ //update-end---author:wangshuai ---date:20260616 for:【issues/9695】修复SSRF漏洞,校验baseUrl必须为内网地址-----------
+ //update-end---author:scott ---date:20260430 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
+
+ // 将 originUrl 中的路径占位符 {key} 替换为调用方传入的 query 参数值,
+ // 替换过的 key 收集到 pathVarKeys,后续不再重复追加到 query string
+ Set pathVarKeys = new HashSet<>();
+ if (url.contains("{")) {
+ for (Map.Entry entry : request.getParameterMap().entrySet()) {
+ String placeholder = "{" + entry.getKey() + "}";
+ if (url.contains(placeholder) && entry.getValue() != null && entry.getValue().length > 0) {
+ url = url.replace(placeholder, entry.getValue()[0]);
+ pathVarKeys.add(entry.getKey());
+ }
+ }
+ }
+
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url);
if (HttpMethod.GET.matches(method)
|| HttpMethod.DELETE.matches(method)
+ || HttpMethod.HEAD.matches(method)
|| HttpMethod.OPTIONS.matches(method)
|| HttpMethod.TRACE.matches(method)) {
//拼接参数
@@ -207,6 +238,10 @@ public class OpenApiController extends JeecgController
if (params.size()>0) {
Map openApiParamMap = params.stream().collect(Collectors.toMap(p -> p.getParamKey(), p -> p, (e, r) -> e));
request.getParameterMap().forEach((k, v) -> {
+ // 已作为路径参数替换的 key 不再追加到 query string
+ if (pathVarKeys.contains(k)) {
+ return;
+ }
OpenApiParam openApiParam = openApiParamMap.get(k);
if (Objects.nonNull(openApiParam)) {
if(v==null&&StrUtil.isNotEmpty(openApiParam.getDefaultValue())){
@@ -257,7 +292,7 @@ public class OpenApiController extends JeecgController
} catch (Exception e) {
throw new JeecgBootBizTipException("原始接口路径包含非法字符");
}
- //update-begin---author:scott ---date:20260429 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
+ //update-begin---author:scott ---date:20260430 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
// 微服务部署时,OpenAPI 配置的接口可能位于其他微服务模块(如 erp 7003),允许 originUrl 直接配置完整 http(s) URL
String lower = decoded.toLowerCase();
boolean isFullHttpUrl = lower.startsWith("http://") || lower.startsWith("https://");
@@ -279,21 +314,47 @@ public class OpenApiController extends JeecgController
|| afterScheme.contains("jar:") || afterScheme.contains("netdoc:")) {
throw new JeecgBootBizTipException("原始接口路径不允许嵌套 file/ftp/gopher/jar/netdoc 等协议");
}
+ //update-begin---author:liusq ---date:2026-06-29 for:【issues/9726】修复存储型SSRF,完整URL必须校验host,仅放行内网地址-----------
+ // 仅校验协议无法阻止 SSRF:完整URL的host可指向回环/内网/云元数据。这里复用两套互补校验,
+ // 交集只放行 RFC1918 内网(兼容微服务跨模块调用,如 erp:7003),拦死回环、链路本地、公网:
+ // 1) checkSsrfHttpUrl:拦回环(127.x/::1)与链路本地(169.254.x,含云元数据 169.254.169.254)
+ SsrfFileTypeFilter.checkSsrfHttpUrl(decoded);
+ // 2) checkInternalUrl:拦公网地址,host 必须解析为内网(回环/局域网/链路本地)
+ CommonUtils.checkInternalUrl(decoded);
+ //update-end---author:liusq ---date:2026-06-29 for:【issues/9726】修复存储型SSRF,完整URL必须校验host,仅放行内网地址-----------
}
if (decoded.contains("..")) {
throw new JeecgBootBizTipException("原始接口路径不能包含 ..");
}
- //update-end---author:scott ---date:20260429 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
+ //update-end---author:scott ---date:20260430 for:【issues/9590】微服务nginx部署openApi接口访问不到-----------
}
@GetMapping("/json")
- public SwaggerModel swaggerModel() {
+ public SwaggerModel swaggerModel(HttpServletRequest request) {
+ // 从当前请求动态解析 host/basePath/scheme,兼容网关和反向代理场景
+ String baseUrl = CommonUtils.getBaseUrl(request);
+ String host;
+ // 优先取 request.getContextPath():
+ // - 单体模式 server.servlet.context-path=/jeecg-boot → basePath=/jeecg-boot
+ // - 微服务网关模式 system 容器无 context-path → basePath=""(request 实际 path 为 "/openapi/json",会被 uri.getPath() 覆盖为空)
+ // 修复【issues/微服务下 OpenAPI 文档 URL 误带 /jeecg-boot】:原实现硬编码默认 "/jeecg-boot",
+ // 导致微服务网关(gateway:9999)下文档 Request URL 始终带 /jeecg-boot 而实际网关无该前缀,curl 报 404。
+ String basePath = request.getContextPath() == null ? "" : request.getContextPath();
+ try {
+ java.net.URI uri = new java.net.URI(baseUrl);
+ host = uri.getPort() > 0 ? uri.getHost() + ":" + uri.getPort() : uri.getHost();
+ if (uri.getPath() != null && !uri.getPath().isEmpty()) {
+ basePath = uri.getPath();
+ }
+ } catch (Exception e) {
+ host = request.getServerName() + ":" + request.getServerPort();
+ }
SwaggerModel swaggerModel = new SwaggerModel();
swaggerModel.setSwagger("2.0");
swaggerModel.setInfo(swaggerInfo());
- swaggerModel.setHost("jeecg.com");
- swaggerModel.setBasePath("/jeecg-boot");
+ swaggerModel.setHost(host);
+ swaggerModel.setBasePath(basePath);
swaggerModel.setSchemes(Lists.newArrayList("http", "https"));
SwaggerTag swaggerTag = new SwaggerTag();
@@ -320,13 +381,13 @@ public class OpenApiController extends JeecgController
parameters(operation, openApi);
// body入参
- if (StringUtils.hasText(openApi.getBody())) {
+ if (StringUtils.hasText(openApi.getRequestBody())) {
SwaggerDefinition definition = new SwaggerDefinition();
definition.setType("object");
Map definitionProperties = new HashMap<>();
definition.setProperties(definitionProperties);
- if (openApi.getBody()!=null){
- JSONObject jsonObject = JSONObject.parseObject(openApi.getBody());
+ if (openApi.getRequestBody()!=null){
+ JSONObject jsonObject = JSONObject.parseObject(openApi.getRequestBody());
if (jsonObject.size()>0){
for (Map.Entry properties : jsonObject.entrySet()) {
SwaggerDefinitionProperties swaggerDefinitionProperties = new SwaggerDefinitionProperties();
@@ -426,13 +487,17 @@ public class OpenApiController extends JeecgController
private void parameters(SwaggerOperation operation, OpenApi openApi) {
List parameters = new ArrayList<>();
if (openApi.getParamsJson()!=null) {
+ String originUrl = openApi.getOriginUrl() != null ? openApi.getOriginUrl() : "";
List openApiParams = JSON.parseArray(openApi.getParamsJson(), OpenApiParam.class);
for (OpenApiParam openApiParam : openApiParams) {
SwaggerOperationParameter parameter = new SwaggerOperationParameter();
- parameter.setIn("path");
+ // 外部调用统一使用 query 传参;若该参数在原始接口路径中以 {key} 形式出现,加备注说明
+ boolean isPathVar = originUrl.contains("{" + openApiParam.getParamKey() + "}");
+ parameter.setIn("query");
parameter.setName(openApiParam.getParamKey());
parameter.setRequired(openApiParam.getRequired() == 1);
- parameter.setDescription(openApiParam.getNote());
+ String desc = openApiParam.getNote() != null ? openApiParam.getNote() : "";
+ parameter.setDescription(isPathVar ? desc + (desc.isEmpty() ? "" : " ") + "[路径参数]" : desc);
parameters.add(parameter);
}
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiLogController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiLogController.java
index 6ca5e0315..b255070c5 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiLogController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiLogController.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.openapi.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
@@ -29,6 +30,7 @@ public class OpenApiLogController extends JeecgController queryPageList(OpenApiLog OpenApiLog, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
@@ -44,6 +46,7 @@ public class OpenApiLogController extends JeecgController add(@RequestBody OpenApiLog OpenApiLog) {
service.save(OpenApiLog);
@@ -56,6 +59,7 @@ public class OpenApiLogController extends JeecgController edit(@RequestBody OpenApiLog OpenApiLog) {
service.updateById(OpenApiLog);
@@ -69,6 +73,7 @@ public class OpenApiLogController extends JeecgController delete(@RequestParam(name = "id", required = true) String id) {
service.removeById(id);
@@ -81,6 +86,7 @@ public class OpenApiLogController extends JeecgController deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
@@ -94,6 +100,7 @@ public class OpenApiLogController extends JeecgController queryById(@RequestParam(name = "id", required = true) String id) {
OpenApiLog OpenApiLog = service.getById(id);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiPermissionController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiPermissionController.java
index 9f4d3a445..181341da2 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiPermissionController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/controller/OpenApiPermissionController.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.openapi.controller;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.openapi.entity.OpenApiPermission;
@@ -10,11 +11,13 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/openapi/permission")
public class OpenApiPermissionController extends JeecgController {
+ @RequiresPermissions("openapi:open_api_permission:add")
@PostMapping("add")
public Result add(@RequestBody OpenApiPermission openApiPermission) {
service.add(openApiPermission);
return Result.ok("保存成功");
}
+ @RequiresPermissions("openapi:open_api_permission:getOpenApi")
@GetMapping("/getOpenApi")
public Result> getOpenApi( String apiAuthId) {
return service.getOpenApi(apiAuthId);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApi.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApi.java
index e2da03ce6..24dc6877f 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApi.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApi.java
@@ -51,8 +51,14 @@ public class OpenApi implements Serializable {
/**
* 白名单备注说明
*/
- private String comment;
+ private String remarks;
//update-end---author:scott ---date:20260417 for:【PR/9083】OpenAPI新增白名单备注字段-----------
+ //update-begin---author:liusq ---date:20260805 for:LHZP-1356 接口描述-----------
+ /**
+ * 接口描述
+ */
+ private String description;
+ //update-end---author:liusq ---date:20260805 for:LHZP-1356 接口描述-----------
/**
* 请求头json
*/
@@ -66,7 +72,7 @@ public class OpenApi implements Serializable {
/**
* 目前仅支持json
*/
- private String body;
+ private String requestBody;
/**
* 原始接口路径
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiLog.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiLog.java
index 80d2c2607..a3d6ffbb5 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiLog.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/entity/OpenApiLog.java
@@ -35,6 +35,41 @@ public class OpenApiLog implements Serializable {
*/
private String callAuthId;
+ /**
+ * 调用者AK
+ */
+ private String callerAk;
+
+ /**
+ * 请求路径
+ */
+ private String requestPath;
+
+ /**
+ * 来源IP
+ */
+ private String ip;
+
+ /**
+ * HTTP 请求方式(GET/POST/PUT/DELETE 等)
+ */
+ private String requestMethod;
+
+ /**
+ * 请求参数摘要(Query String,最多500字符)
+ */
+ private String requestParams;
+
+ /**
+ * 响应状态码
+ */
+ private Integer responseCode;
+
+ /**
+ * 失败原因(认证/授权异常时的错误描述)
+ */
+ private String errorMsg;
+
/**
* 调用时间
*/
@@ -49,4 +84,11 @@ public class OpenApiLog implements Serializable {
* 响应时间
*/
private Date responseTime;
+
+ //update-begin---author:jeecg ---date:2026-05-27 for:【增加header日志记录】保存请求Header信息-----------
+ /**
+ * 请求头信息(JSON格式,最多2000字符)
+ */
+ private String requestHeaders;
+ //update-end---author:jeecg ---date:2026-05-27 for:【增加header日志记录】保存请求Header信息-----------
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/filter/ApiAuthFilter.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/filter/ApiAuthFilter.java
index 9462ddacb..bd08d0ee0 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/filter/ApiAuthFilter.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/openapi/filter/ApiAuthFilter.java
@@ -2,6 +2,7 @@ package org.jeecg.modules.openapi.filter;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.IpUtils;
@@ -20,6 +21,7 @@ import java.io.IOException;
import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Date;
+import java.util.Enumeration;
import java.util.List;
import java.util.stream.Collectors;
@@ -39,39 +41,155 @@ public class ApiAuthFilter implements Filter {
long startTime = System.currentTimeMillis();
Date callTime = new Date();
- HttpServletRequest request = (HttpServletRequest)servletRequest;
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+
+ // OPTIONS 预检请求直接放行,由 CorsFilter 负责写入 CORS 响应头
+ if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
+ filterChain.doFilter(servletRequest, servletResponse);
+ return;
+ }
+
String ip = IpUtils.getIpAddr(request);
String appkey = request.getHeader("appkey");
String signature = request.getHeader("signature");
String timestamp = request.getHeader("timestamp");
+ String requestPath = request.getRequestURI();
+ String requestMethod = request.getMethod();
+ String requestParams = buildParamsSummary(request);
+ //update-begin---author:jeecg ---date:2026-05-27 for:【增加header日志记录】采集请求Header信息-----------
+ String requestHeaders = buildHeadersSummary(request);
+ //update-end---author:jeecg ---date:2026-05-27 for:【增加header日志记录】采集请求Header信息-----------
- OpenApi openApi = findOpenApi(request);
+ OpenApi openApi = null;
+ OpenApiAuth openApiAuth = null;
+ int responseCode = HttpServletResponse.SC_OK;
+ String errorMsg = null;
- // IP 白名单核验
- checkWhiteList(openApi, ip);
+ try {
+ openApi = findOpenApi(request);
+ // IP 白名单核验
+ checkWhiteList(openApi, ip);
+ // 签名核验
+ checkSignValid(appkey, signature, timestamp);
+ openApiAuth = openApiAuthService.getByAppkey(appkey);
+ // 认证信息核验
+ checkSignature(appkey, signature, timestamp, openApiAuth);
+ // 业务核验
+ checkPermission(openApi, openApiAuth);
- // 签名核验
- checkSignValid(appkey, signature, timestamp);
-
- OpenApiAuth openApiAuth = openApiAuthService.getByAppkey(appkey);
- // 认证信息核验
- checkSignature(appkey, signature, timestamp, openApiAuth);
- // 业务核验
- checkPermission(openApi, openApiAuth);
-
- filterChain.doFilter(servletRequest, servletResponse);
- long endTime = System.currentTimeMillis();
-
- OpenApiLog openApiLog = new OpenApiLog();
- openApiLog.setApiId(openApi.getId());
- openApiLog.setCallAuthId(openApiAuth.getId());
- openApiLog.setCallTime(callTime);
- openApiLog.setUsedTime(endTime - startTime);
- openApiLog.setResponseTime(new Date());
- openApiLogService.save(openApiLog);
+ filterChain.doFilter(servletRequest, servletResponse);
+ responseCode = response.getStatus();
+ } catch (JeecgBootException e) {
+ responseCode = HttpServletResponse.SC_UNAUTHORIZED;
+ errorMsg = e.getMessage();
+ writeErrorResponse(response, request.getHeader("Origin"), responseCode, errorMsg);
+ } catch (Exception e) {
+ responseCode = HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
+ errorMsg = e.getMessage();
+ writeErrorResponse(response, request.getHeader("Origin"), responseCode, "服务器内部错误");
+ } finally {
+ long endTime = System.currentTimeMillis();
+ //update-begin---author:jeecg ---date:2026-05-27 for:【增加header日志记录】传入requestHeaders参数-----------
+ saveLog(openApi, openApiAuth, appkey, requestPath, requestMethod, ip, requestParams,
+ requestHeaders, responseCode, errorMsg, callTime, endTime - startTime);
+ //update-end---author:jeecg ---date:2026-05-27 for:【增加header日志记录】传入requestHeaders参数-----------
+ }
}
+ /**
+ * 保存调用记录
+ * @param openApi
+ * @param openApiAuth
+ * @param callerAk
+ * @param requestPath
+ * @param requestMethod
+ * @param sourceIp
+ * @param requestParams
+ * @param responseCode
+ * @param errorMsg
+ * @param callTime
+ * @param usedTime
+ */
+ //update-begin---author:jeecg ---date:2026-05-27 for:【增加header日志记录】saveLog方法新增requestHeaders参数-----------
+ private void saveLog(OpenApi openApi, OpenApiAuth openApiAuth, String callerAk,
+ String requestPath, String requestMethod, String sourceIp,
+ String requestParams, String requestHeaders, int responseCode, String errorMsg,
+ Date callTime, long usedTime) {
+ try {
+ OpenApiLog openApiLog = new OpenApiLog();
+ openApiLog.setApiId(openApi != null ? openApi.getId() : null);
+ openApiLog.setCallAuthId(openApiAuth != null ? openApiAuth.getId() : null);
+ openApiLog.setCallerAk(callerAk);
+ openApiLog.setRequestPath(requestPath);
+ openApiLog.setRequestMethod(requestMethod);
+ openApiLog.setIp(sourceIp);
+ openApiLog.setRequestParams(requestParams);
+ openApiLog.setRequestHeaders(requestHeaders);
+ openApiLog.setResponseCode(responseCode);
+ openApiLog.setErrorMsg(errorMsg);
+ openApiLog.setCallTime(callTime);
+ openApiLog.setUsedTime(usedTime);
+ openApiLog.setResponseTime(new Date());
+ openApiLogService.save(openApiLog);
+ } catch (Exception e) {
+ log.error("保存OpenAPI调用日志失败:{}",e.getMessage(), e);
+ }
+ }
+ //update-end---author:jeecg ---date:2026-05-27 for:【增加header日志记录】saveLog方法新增requestHeaders参数-----------
+
+ /**
+ * 向响应写入 JSON 错误体,并携带 CORS 头(确保跨域调用方如 Swagger UI 能读取错误信息)
+ */
+ private void writeErrorResponse(HttpServletResponse response, String origin, int status, String message) {
+ try {
+ if (StringUtils.hasText(origin)) {
+ response.setHeader("Access-Control-Allow-Origin", origin);
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+ }
+ response.setStatus(status);
+ response.setContentType("application/json;charset=UTF-8");
+ // 转义双引号,防止 message 中含有引号破坏 JSON
+ String safeMsg = message != null ? message.replace("\"", "\\\"") : "";
+ response.getWriter().write("{\"success\":false,\"code\":" + status + ",\"message\":\"" + safeMsg + "\"}");
+ } catch (IOException ex) {
+ log.error("写入OpenAPI错误响应失败", ex);
+ }
+ }
+
+ private String buildParamsSummary(HttpServletRequest request) {
+ String queryString = request.getQueryString();
+ if (StringUtils.hasText(queryString)) {
+ return queryString.length() > 500 ? queryString.substring(0, 500) + "..." : queryString;
+ }
+ return null;
+ }
+
+ //update-begin---author:jeecg ---date:2026-05-27 for:【增加header日志记录】构建请求Header摘要(JSON格式,最多2000字符)-----------
+ private String buildHeadersSummary(HttpServletRequest request) {
+ StringBuilder sb = new StringBuilder("{");
+ Enumeration headerNames = request.getHeaderNames();
+ if (headerNames != null) {
+ boolean first = true;
+ while (headerNames.hasMoreElements()) {
+ String name = headerNames.nextElement();
+ String value = request.getHeader(name);
+ if (!first) {
+ sb.append(", ");
+ }
+ sb.append("\"").append(name).append("\": \"")
+ .append(value != null ? value.replace("\\", "\\\\").replace("\"", "\\\"") : "")
+ .append("\"");
+ first = false;
+ }
+ }
+ sb.append("}");
+ String result = sb.toString();
+ return result.length() > 2000 ? result.substring(0, 2000) + "...}" : result;
+ }
+ //update-end---author:jeecg ---date:2026-05-27 for:【增加header日志记录】构建请求Header摘要(JSON格式,最多2000字符)-----------
+
@Override
public void init(FilterConfig filterConfig) throws ServletException {
ServletContext servletContext = filterConfig.getServletContext();
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
index 223a8a14d..0a078ab27 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
@@ -67,6 +67,8 @@ public class LoginController {
private ISysDepartService sysDepartService;
@Autowired
private ISysDictService sysDictService;
+ @Autowired
+ private ISysUserTenantService sysUserTenantService;
@Resource
private BaseCommonService baseCommonService;
@Autowired
@@ -164,7 +166,13 @@ public class LoginController {
obj.put("userInfo",sysUser);
obj.put("sysAllDictItems", sysDictService.queryAllDictItems());
log.debug("3 获取用户信息耗时 (字典数据)" + (System.currentTimeMillis() - start) + "毫秒");
-
+
+ //update-begin---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关,返回给前端-----------
+ boolean enableStrongPwd = jeecgBaseConfig.getFirewall() != null
+ && Boolean.TRUE.equals(jeecgBaseConfig.getFirewall().getEnableStrongPwd());
+ obj.put("enableStrongPwd", enableStrongPwd);
+ //update-end---author:wangshuai ---date:2026-06-29 for:【QQYUN-16619】三级等保密码强度开关,返回给前端-----------
+
result.setResult(obj);
result.success("");
}
@@ -287,16 +295,38 @@ public class LoginController {
@RequestMapping(value = "/selectDepart", method = RequestMethod.PUT)
public Result selectDepart(@RequestBody SysUser user) {
Result result = new Result();
- String username = user.getUsername();
- if(oConvertUtils.isEmpty(username)) {
- LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
- username = sysUser.getUsername();
+ //update-begin---author:zhangdaihao ---date:20260506 for:【issue/9597】selectDepart越权漏洞修复:强制使用当前登录用户,校验orgCode/loginTenantId归属-----------
+ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (loginUser == null) {
+ return Result.error("用户未登录");
}
-
+ // 强制使用当前登录用户的username,忽略请求体传入的username,防止越权修改他人当前部门/租户
+ String username = loginUser.getUsername();
+
//获取登录部门
- String orgCode= user.getOrgCode();
+ String orgCode = user.getOrgCode();
//获取登录租户
Integer tenantId = user.getLoginTenantId();
+
+ // 校验 orgCode 必须属于当前用户所在部门
+ if (oConvertUtils.isNotEmpty(orgCode)) {
+ List userDeparts = sysDepartService.queryUserDeparts(loginUser.getId());
+ boolean orgOwned = userDeparts != null && userDeparts.stream()
+ .anyMatch(d -> orgCode.equals(d.getOrgCode()));
+ if (!orgOwned) {
+ return Result.error("无权切换到非本人所属的部门");
+ }
+ }
+
+ // 校验 loginTenantId 必须属于当前用户所属租户
+ if (tenantId != null && tenantId != 0) {
+ List userTenantIds = sysUserTenantService.getTenantIdsByUserId(loginUser.getId());
+ if (userTenantIds == null || !userTenantIds.contains(tenantId)) {
+ return Result.error("无权切换到非本人所属的租户");
+ }
+ }
+ //update-end---author:zhangdaihao ---date:20260506 for:【issue/9597】selectDepart越权漏洞修复:强制使用当前登录用户,校验orgCode/loginTenantId归属-----------
+
//设置用户登录部门和登录租户
this.sysUserService.updateUserDepart(username, orgCode,tenantId);
SysUser sysUser = sysUserService.getUserByName(username);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
index 172525b5d..5ee67d7a3 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java
@@ -31,6 +31,7 @@ import org.jeecg.modules.system.service.ISysAnnouncementSendService;
import org.jeecg.modules.system.service.ISysAnnouncementService;
import org.jeecg.modules.system.service.impl.SysBaseApiImpl;
import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl;
+import org.jeecg.modules.system.service.impl.ThirdAppFeishuServiceImpl;
import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl;
import org.jeecg.modules.system.util.XssUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
@@ -82,6 +83,8 @@ public class SysAnnouncementController {
ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService;
@Autowired
ThirdAppDingtalkServiceImpl dingtalkService;
+ @Autowired
+ ThirdAppFeishuServiceImpl feishuService;
@Autowired
private SysBaseApiImpl sysBaseApi;
@Autowired
@@ -143,6 +146,14 @@ public class SysAnnouncementController {
public Result add(@RequestBody SysAnnouncement sysAnnouncement) {
Result result = new Result();
try {
+ // 代码逻辑说明: priority 枚举白名单,防止存入非法 payload 到 sys_announcement.priority 触发存储型 XSS
+ String pri = sysAnnouncement.getPriority();
+ if (pri != null && !pri.isEmpty()
+ && !CommonConstant.PRIORITY_H.equals(pri)
+ && !CommonConstant.PRIORITY_M.equals(pri)
+ && !CommonConstant.PRIORITY_L.equals(pri)) {
+ return result.error500("priority 参数非法,仅允许 H/M/L");
+ }
// 代码逻辑说明: 标题处理xss攻击的问题
String title = XssUtils.scriptXss(sysAnnouncement.getTitile());
sysAnnouncement.setTitile(title);
@@ -181,6 +192,14 @@ public class SysAnnouncementController {
if(sysAnnouncementEntity==null) {
result.error500("未找到对应实体");
}else {
+ // 代码逻辑说明: priority 枚举白名单,防止存入非法 payload 到 sys_announcement.priority 触发存储型 XSS
+ String pri = sysAnnouncement.getPriority();
+ if (pri != null && !pri.isEmpty()
+ && !CommonConstant.PRIORITY_H.equals(pri)
+ && !CommonConstant.PRIORITY_M.equals(pri)
+ && !CommonConstant.PRIORITY_L.equals(pri)) {
+ return result.error500("priority 参数非法,仅允许 H/M/L");
+ }
// 代码逻辑说明: 标题处理xss攻击的问题
String title = XssUtils.scriptXss(sysAnnouncement.getTitile());
sysAnnouncement.setTitile(title);
@@ -354,6 +373,7 @@ public class SysAnnouncementController {
// 同步企业微信、钉钉的消息通知
Response dtResponse = dingtalkService.sendActionCardMessage(sysAnnouncement, null, true);
wechatEnterpriseService.sendTextCardMessage(sysAnnouncement, null,true);
+ feishuService.sendAnnouncementMessage(sysAnnouncement, null, true);
if (dtResponse != null && dtResponse.isSuccess()) {
String taskId = dtResponse.getResult();
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java
index c8840e951..406260c77 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java
@@ -37,7 +37,6 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
-import java.util.stream.Collectors;
/**
* @Description: 分类字典
@@ -70,9 +69,6 @@ public class SysCategoryController {
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
- if(oConvertUtils.isEmpty(sysCategory.getPid())){
- sysCategory.setPid("0");
- }
Result> result = new Result>();
//------------------------------------------------------------------------------------------------
//是否开启系统管理模块的多租户数据隔离【SAAS多租户模式】
@@ -83,12 +79,20 @@ public class SysCategoryController {
//--author:os_chengtgen---date:20190804 -----for: 分类字典页面显示错误,issues:377--------start
//--author:liusq---date:20211119 -----for: 【vue3】分类字典页面查询条件配置--------start
- QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, req.getParameterMap());
String name = sysCategory.getName();
String code = sysCategory.getCode();
+ // 代码逻辑说明: pid 不能提前设置到查询实体上,否则会被 QueryGenerator 自动拼成 pid 查询条件,
+ // 导致按名称/编码查询时只能查到根节点,查不出子级数据
+ String pid = sysCategory.getPid();
+ sysCategory.setPid(null);
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(sysCategory, req.getParameterMap());
//QueryWrapper queryWrapper = new QueryWrapper();
if(StringUtils.isBlank(name)&&StringUtils.isBlank(code)){
- queryWrapper.eq("pid", sysCategory.getPid());
+ //无查询条件时按层级加载,默认加载根节点
+ queryWrapper.eq("pid", oConvertUtils.isEmpty(pid)?"0":pid);
+ }else if(oConvertUtils.isNotEmpty(pid)){
+ //有查询条件时不限制层级,除非调用方明确指定了 pid
+ queryWrapper.eq("pid", pid);
}
//--author:liusq---date:20211119 -----for: 分类字典页面查询条件配置--------end
//--author:os_chengtgen---date:20190804 -----for:【vue3】 分类字典页面显示错误,issues:377--------end
@@ -228,13 +232,15 @@ public class SysCategoryController {
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
// 过滤选中数据
String selections = request.getParameter("selections");
+ //update-begin---author:scott ---date:20260727 for:【LHZP-1208】分类字典导出包含子级并按层级排序-----------
if(oConvertUtils.isEmpty(selections)) {
- mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+ mv.addObject(NormalExcelConstants.DATA_LIST, sysCategoryService.sortByHierarchy(pageList));
}else {
List selectionList = Arrays.asList(selections.split(","));
- List exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
+ List exportList = sysCategoryService.filterSelectionWithChildren(pageList, selectionList);
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
}
+ //update-end---author:scott ---date:20260727 for:【LHZP-1208】分类字典导出包含子级并按层级排序-----------
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME, "分类字典列表");
mv.addObject(NormalExcelConstants.CLASS, SysCategory.class);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java
index 1cd2f5b6c..639e84807 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java
@@ -7,14 +7,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.system.entity.SysCheckRule;
import org.jeecg.modules.system.service.ISysCheckRuleService;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import jakarta.servlet.http.HttpServletRequest;
@@ -22,6 +26,7 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.Arrays;
+import java.util.Map;
/**
* @Description: 编码校验规则
@@ -98,8 +103,11 @@ public class SysCheckRuleController extends JeecgController fileMap = multipartRequest.getFileMap();
+ for (Map.Entry entry : fileMap.entrySet()) {
+ ImportParams params = new ImportParams();
+ params.setTitleRows(2);
+ params.setHeadRows(1);
+ params.setNeedSave(true);
+ try {
+ return sysCheckRuleService.importExcel(entry.getValue(), params);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ return Result.error("文件导入失败:" + e.getMessage());
+ }
+ }
+ return Result.error("文件导入失败:未找到上传文件");
}
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCommentController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCommentController.java
index 11a78b623..5ac317f8c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCommentController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysCommentController.java
@@ -16,6 +16,7 @@ import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.system.entity.SysComment;
import org.jeecg.modules.system.service.ISysCommentService;
+import org.jeecg.modules.system.util.XssUtils;
import org.jeecg.modules.system.vo.SysCommentFileVo;
import org.jeecg.modules.system.vo.SysCommentVO;
import org.springframework.beans.factory.annotation.Autowired;
@@ -86,6 +87,9 @@ public class SysCommentController extends JeecgController addText(@RequestBody SysComment sysComment) {
+ // 对评论内容做 XSS 过滤,防止存储型 XSS 进入数据库并在前端 v-html 时执行
+ String content = XssUtils.richTextXss(sysComment.getCommentContent());
+ sysComment.setCommentContent(content);
String commentId = sysCommentService.saveOne(sysComment);
return Result.OK(commentId);
}
@@ -182,9 +186,19 @@ public class SysCommentController extends JeecgController add(@RequestBody SysComment sysComment) {
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) {
+ return Result.error("用户未登录!");
+ }
+ sysComment.setFromUserId(sysUser.getId());
+ sysComment.setCreateBy(null);
+ sysComment.setCreateTime(null);
+ sysComment.setUpdateBy(null);
+ sysComment.setUpdateTime(null);
+ // 对评论内容做 XSS 过滤
+ sysComment.setCommentContent(XssUtils.richTextXss(sysComment.getCommentContent()));
sysCommentService.save(sysComment);
return Result.OK("添加成功!");
}
@@ -197,9 +211,28 @@ public class SysCommentController extends JeecgController edit(@RequestBody SysComment sysComment) {
+ if (sysComment == null || sysComment.getId() == null || sysComment.getId().isEmpty()) {
+ return Result.error("评论ID不能为空!");
+ }
+ SysComment origin = sysCommentService.getById(sysComment.getId());
+ if (origin == null) {
+ return Result.error("该评论不存在或已删除!");
+ }
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) {
+ return Result.error("用户未登录!");
+ }
+ String username = sysUser.getUsername();
+ String admin = "admin";
+ if (!admin.equals(username) && !username.equals(origin.getCreateBy())) {
+ return Result.error("只能编辑自己的评论!");
+ }
+ sysComment.setFromUserId(origin.getFromUserId());
+ sysComment.setToUserId(origin.getToUserId());
+ sysComment.setCreateBy(origin.getCreateBy());
+ sysComment.setCreateTime(origin.getCreateTime());
sysCommentService.updateById(sysComment);
return Result.OK("编辑成功!");
}
@@ -212,10 +245,26 @@ public class SysCommentController extends JeecgController delete(@RequestParam(name = "id", required = true) String id) {
- sysCommentService.removeById(id);
+ //update-begin---author:wangshuai ---date:2026-06-17 for:【issues/9684】修复评论删除越权漏洞,校验只能删除自己的评论-----------
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) {
+ return Result.error("用户未登录!");
+ }
+ SysComment comment = sysCommentService.getById(id);
+ if (comment == null) {
+ return Result.error("该评论已被删除!");
+ }
+ String username = sysUser.getUsername();
+ String admin = "admin";
+ //除了admin外 其他人只能删除自己的评论
+ if (!admin.equals(username) && !username.equals(comment.getCreateBy())) {
+ return Result.error("只能删除自己的评论!");
+ }
+ //通过deleteOne删除,同时清理关联文件
+ sysCommentService.deleteOne(id);
+ //update-end---author:wangshuai ---date:2026-06-17 for:【issues/9684】修复评论删除越权漏洞,校验只能删除自己的评论-----------
return Result.OK("删除成功!");
}
@@ -227,10 +276,30 @@ public class SysCommentController extends JeecgController deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
- this.sysCommentService.removeByIds(Arrays.asList(ids.split(",")));
+ //update-begin---author:wangshuai ---date:2026-06-17 for:【issues/9684】修复评论批量删除越权漏洞,校验只能删除自己的评论-----------
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ if (sysUser == null) {
+ return Result.error("用户未登录!");
+ }
+ String username = sysUser.getUsername();
+ String admin = "admin";
+ List idList = Arrays.asList(ids.split(","));
+ //非admin需逐一校验评论归属,只能删除自己的评论
+ if (!admin.equals(username)) {
+ for (String id : idList) {
+ SysComment comment = sysCommentService.getById(id);
+ if (comment != null && !username.equals(comment.getCreateBy())) {
+ return Result.error("只能删除自己的评论!");
+ }
+ }
+ }
+ //逐一删除,同时清理关联文件
+ for (String id : idList) {
+ sysCommentService.deleteOne(id);
+ }
+ //update-end---author:wangshuai ---date:2026-06-17 for:【issues/9684】修复评论批量删除越权漏洞,校验只能删除自己的评论-----------
return Result.OK("批量删除成功!");
}
@@ -257,7 +326,6 @@ public class SysCommentController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, SysComment.class);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java
index 763cf0659..f542f8cfd 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java
@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.jeecg.common.api.vo.Result;
@@ -26,16 +25,20 @@ import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
import org.jeecg.config.sign.annotation.SignatureCheck;
import org.jeecg.modules.system.entity.SysDataSource;
import org.jeecg.modules.system.service.ISysDataSourceService;
-import org.jeecg.modules.system.util.SecurityUtil;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
/**
* @Description: 多数据源管理
@@ -201,14 +204,9 @@ public class SysDataSourceController extends JeecgController queryById(@RequestParam(name = "id") String id) throws InterruptedException {
+ public Result> queryById(@RequestParam(name = "id") String id) {
SysDataSource sysDataSource = sysDataSourceService.getById(id);
- //密码解密
- String dbPassword = sysDataSource.getDbPassword();
- if(StringUtils.isNotBlank(dbPassword)){
- String decodedStr = SecurityUtil.jiemi(dbPassword);
- sysDataSource.setDbPassword(decodedStr);
- }
+ // 出于安全考虑,不向前端返回数据库密码(密码字段已通过 @JsonProperty(WRITE_ONLY) 屏蔽序列化,编辑时密码留空表示不修改)
return Result.ok(sysDataSource);
}
@@ -240,7 +238,23 @@ public class SysDataSourceController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) {
- return super.importExcel(request, response, SysDataSource.class);
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ Map fileMap = multipartRequest.getFileMap();
+ for (Map.Entry entity : fileMap.entrySet()) {
+ MultipartFile file = entity.getValue();
+ ImportParams params = new ImportParams();
+ params.setTitleRows(2);
+ params.setHeadRows(1);
+ params.setNeedSave(true);
+ try {
+ List dataSources = ExcelImportUtil.importExcel(file.getInputStream(), SysDataSource.class, params);
+ return sysDataSourceService.importDataSources(dataSources);
+ } catch (Exception e) {
+ log.error("文件导入失败", e);
+ return Result.error("文件导入失败:" + e.getMessage());
+ }
+ }
+ return Result.error("文件导入失败!");
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java
index bc1235404..bf103370b 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java
@@ -762,6 +762,31 @@ public class SysDepartController {
return Result.OK(departName);
}
+ /**
+ * 批量获取部门路径名称(根据多个depId一次性查询)
+ *
+ * @param depIds 逗号分隔的部门/岗位ID
+ * @return Map
+ */
+ @GetMapping("/batchGetDepartPathName")
+ public Result> batchGetDepartPathName(@RequestParam(name = "depIds") String depIds) {
+ Map resultMap = new LinkedHashMap<>();
+ if (StringUtils.isBlank(depIds)) {
+ return Result.OK(resultMap);
+ }
+ String[] ids = depIds.split(",");
+ for (String depId : ids) {
+ String id = depId.trim();
+ if (StringUtils.isNotBlank(id)) {
+ String pathName = sysDepartService.getDepartPathNameByOrgCode(null, id);
+ if (pathName != null) {
+ resultMap.put(id, pathName);
+ }
+ }
+ }
+ return Result.OK(resultMap);
+ }
+
/**
* 根据部门id获取部门下的岗位id
*
@@ -802,4 +827,23 @@ public class SysDepartController {
IPage pageList = sysDepartService.getDepartmentHead(departId,page);
return Result.OK(pageList);
}
+
+ /**
+ * 部门管理页面专用搜索接口,搜索结果支持展开下级并去除父子重复节点。
+ *
+ * @param keyWord 关键字
+ * @param orgCategory 组织机构类型
+ * @return 部门树节点
+ */
+ @GetMapping("/searchByDepartManage")
+ public Result> searchByDepartManage(
+ @RequestParam(name = "keyWord") String keyWord,
+ @RequestParam(name = "orgCategory", required = false) String orgCategory) {
+ List treeList = sysDepartService.searchByKeyWordForDepartManage(keyWord, orgCategory);
+ if (treeList == null || treeList.size() == 0) {
+ return Result.error("未查询匹配数据!");
+ }
+ return Result.ok(treeList);
+ }
+
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
index 538d6e06c..24d006097 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysDictController.java
@@ -755,6 +755,7 @@ public class SysDictController {
* @param id
* @return
*/
+ @RequiresPermissions("system:dict:putRecycleBin")
@RequestMapping(value = "/back/{id}", method = RequestMethod.PUT)
public Result> back(@PathVariable("id") String id) {
try {
@@ -766,11 +767,12 @@ public class SysDictController {
}
}
/**
- * 还原被逻辑删除的用户
+ * 还原被逻辑删除的字典
*
* @param jsonObject
* @return
*/
+ @RequiresPermissions("system:dict:putRecycleBin")
@RequestMapping(value = "/putRecycleBin", method = RequestMethod.PUT)
public Result putRecycleBin(@RequestBody JSONObject jsonObject, HttpServletRequest request) {
try {
@@ -856,4 +858,37 @@ public class SysDictController {
sysDictService.editDictByLowAppId(sysDictVo);
return Result.ok("编辑成功");
}
+
+ /**
+ * 【JLinkTableCard 关联记录专用接口】
+ * 多字段分页查询任意数据库表数据,一次请求返回所有指定字段,支持分页、关键词搜索、按 valueField 回显
+ *
+ * @param tableName 表名,如 sys_user
+ * @param showFields 展示字段,逗号分隔,如 realname,username,avater
+ * @param valueField 值字段,如 id
+ * @param keyword 关键词搜索(可选)
+ * @param keyValues 按 valueField 精确查找的值,逗号分隔(回显用,可选)
+ * @param pageNo 页码,默认 1
+ * @param pageSize 每页大小,默认 10
+ */
+ @GetMapping("/queryTableDataForLinkRecord")
+ //update-begin---author:liusq ---date:2026-05-27 for:【优化】去掉无用参数searchFields、condition-----------
+ public Result> queryTableDataForLinkRecord(
+ @RequestParam String tableName,
+ @RequestParam String showFields,
+ @RequestParam String valueField,
+ @RequestParam(required = false) String keyword,
+ @RequestParam(required = false) String keyValues,
+ @RequestParam(defaultValue = "1") Integer pageNo,
+ @RequestParam(defaultValue = "10") Integer pageSize) {
+ try {
+ Map data = sysDictService.queryTableDataForLinkRecord(
+ tableName, showFields, valueField,
+ keyword, keyValues, pageNo, pageSize);
+ return Result.ok(data);
+ } catch (Exception e) {
+ log.error("[queryTableDataForLinkRecord] 查询失败 tableName={} showFields={}", tableName, showFields, e);
+ return Result.error("查询失败:" + e.getMessage());
+ }
+ }
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java
index ea6cb1102..b65ae96a9 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java
@@ -16,13 +16,17 @@ import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.modules.system.entity.SysFillRule;
import org.jeecg.modules.system.service.ISysFillRuleService;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.Arrays;
+import java.util.Map;
/**
* @Description: 填值规则
@@ -167,7 +171,23 @@ public class SysFillRuleController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) {
- return super.importExcel(request, response, SysFillRule.class);
+ //update-begin---author:wangshuai ---date:20260803 for:【LHZP-1265】系统编码规则导入重复编码时提示具体Excel行号-----------
+ MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+ Map fileMap = multipartRequest.getFileMap();
+ for (Map.Entry entry : fileMap.entrySet()) {
+ ImportParams params = new ImportParams();
+ params.setTitleRows(2);
+ params.setHeadRows(1);
+ params.setNeedSave(true);
+ try {
+ return sysFillRuleService.importExcelCheckRuleCode(entry.getValue(), params);
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ return Result.error("文件导入失败:" + e.getMessage());
+ }
+ }
+ return Result.error("文件导入失败:未找到上传文件");
+ //update-end---author:wangshuai ---date:20260803 for:【LHZP-1265】系统编码规则导入重复编码时提示具体Excel行号-----------
}
/**
@@ -216,4 +236,4 @@ public class SysFillRuleController extends JeecgController> queryPageList(SysRole role,
+ public Result> list(SysRole role,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="isMultiTranslate", required = false) Boolean isMultiTranslate,
@@ -162,6 +162,7 @@ public class SysRoleController {
role.setRoleCode(RandomUtil.randomString(10));
}
role.setCreateTime(new Date());
+ role.setUpdateTime(new Date());
sysRoleService.save(role);
result.success("添加成功!");
} catch (Exception e) {
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
index d3a4ef1d8..03623de3c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java
@@ -487,11 +487,12 @@ public class SysUserController {
* @return
*/
@RequestMapping(value = "/queryUserByDepId", method = RequestMethod.GET)
- public Result> queryUserByDepId(@RequestParam(name = "id", required = true) String id,@RequestParam(name="realname",required=false) String realname) {
+ public Result> queryUserByDepId(@RequestParam(name = "id", required = true) String id,@RequestParam(name="realname",required=false) String realname,
+ @RequestParam(name="status",required=false) Integer status) {
Result> result = new Result<>();
//List userList = sysUserDepartService.queryUserByDepId(id);
SysDepart sysDepart = sysDepartService.getById(id);
- List userList = sysUserDepartService.queryUserByDepCode(sysDepart.getOrgCode(),realname);
+ List userList = sysUserDepartService.queryUserByDepCode(sysDepart.getOrgCode(),realname,status);
//批量查询用户的所属部门
//step.1 先拿到全部的 useids
@@ -878,7 +879,8 @@ public class SysUserController {
String groupId = req.getParameter("groupId");
String username = req.getParameter("username");
String realname = req.getParameter("realname");
- IPage pageList = sysUserService.getUserByUgroupId(page,groupId,username,realname);
+ Integer status = oConvertUtils.getInteger(req.getParameter("status"), null);
+ IPage pageList = sysUserService.getUserByUgroupId(page,groupId,username,realname,status);
result.setSuccess(true);
result.setResult(pageList);
return result;
@@ -921,7 +923,9 @@ public class SysUserController {
});
}
//设置租户id
- page.setRecords(userTenantService.setUserTenantIds(page.getRecords()));
+ //update-begin---author:wangshuai ---date:20260811 for:[LHZP-1141]【系统管理】我的部门编辑用户关联信息未正确回显------------
+ pageList.setRecords(userTenantService.setUserTenantIds(pageList.getRecords()));
+ //update-end---author:wangshuai ---date:20260811 for:[LHZP-1141]【系统管理】我的部门编辑用户关联信息未正确回显------------
result.setSuccess(true);
result.setResult(pageList);
}else{
@@ -1514,6 +1518,7 @@ public class SysUserController {
* @param jsonObject
* @return
*/
+ @RequiresPermissions("system:user:putRecycleBin")
@RequestMapping(value = "/putRecycleBin", method = RequestMethod.PUT)
public Result putRecycleBin(@RequestBody JSONObject jsonObject, HttpServletRequest request) {
String userIds = jsonObject.getString("userIds");
@@ -1924,7 +1929,21 @@ public class SysUserController {
if(!username.equals(user.getUsername())){
return Result.error("只能修改自己的数据");
}
- sysUserService.updateById(sysUser);
+ //update-begin---author:zhangdaihao ---date:2026-05-06 for:【issue/9596】修复userEdit越权漏洞,仅允许修改个人资料字段,防止通过userIdentity/departIds等敏感字段越权-----------
+ SysUser updateUser = new SysUser();
+ updateUser.setId(user.getId());
+ updateUser.setRealname(sysUser.getRealname());
+ updateUser.setAvatar(sysUser.getAvatar());
+ updateUser.setBirthday(sysUser.getBirthday());
+ updateUser.setSex(sysUser.getSex());
+ updateUser.setEmail(sysUser.getEmail());
+ updateUser.setPhone(sysUser.getPhone());
+ updateUser.setTelephone(sysUser.getTelephone());
+ updateUser.setSign(sysUser.getSign());
+ updateUser.setSignEnable(sysUser.getSignEnable());
+ updateUser.setIzHideContact(sysUser.getIzHideContact());
+ sysUserService.updateById(updateUser);
+ //update-end---author:zhangdaihao ---date:2026-05-06 for:【issue/9596】修复userEdit越权漏洞,仅允许修改个人资料字段,防止通过userIdentity/departIds等敏感字段越权-----------
return Result.ok("更新个人信息成功");
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java
index 3f676d2e3..5e8441447 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java
@@ -52,6 +52,7 @@ public class SysUserOnlineController {
@RequiresPermissions("system:online:list")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public Result> list(@RequestParam(name="username", required=false) String username,
+ @RequestParam(name="realname", required=false) String realname,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Collection keys = redisUtil.scan(CommonConstant.PREFIX_USER_TOKEN + "*");
List onlineList = new ArrayList();
@@ -59,7 +60,9 @@ public class SysUserOnlineController {
String token = (String)redisUtil.get(key);
if (StringUtils.isNotEmpty(token)) {
SysUserOnlineVO online = new SysUserOnlineVO();
- online.setToken(token);
+ // 强退需要使用 Redis key 中的原始 Token,不能使用续期后的 value
+ String originalToken = key.substring(CommonConstant.PREFIX_USER_TOKEN.length());
+ online.setToken(originalToken);
//TODO 改成一次性查询
LoginUser loginUser = sysBaseApi.getUserByName(JwtUtil.getUsername(token));
if (loginUser != null && !"_reserve_user_external".equals(loginUser.getUsername())) {
@@ -69,6 +72,9 @@ public class SysUserOnlineController {
if(oConvertUtils.isNotEmpty(username) && !loginUser.getUsername().contains(username)){
isMatchUsername = false;
}
+ if(oConvertUtils.isNotEmpty(realname) && !StringUtils.contains(loginUser.getRealname(), realname)){
+ isMatchUsername = false;
+ }
if(isMatchUsername){
BeanUtils.copyProperties(loginUser, online);
onlineList.add(online);
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java
index 9a7dd21c2..90c84b246 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java
@@ -23,6 +23,7 @@ import org.jeecg.modules.system.entity.SysThirdAppConfig;
import org.jeecg.modules.system.service.ISysThirdAccountService;
import org.jeecg.modules.system.service.ISysThirdAppConfigService;
import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl;
+import org.jeecg.modules.system.service.impl.ThirdAppFeishuServiceImpl;
import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl;
import org.jeecg.modules.system.vo.thirdapp.JwSysUserDepartVo;
import org.jeecg.modules.system.vo.thirdapp.JwUserDepartVo;
@@ -49,6 +50,8 @@ public class ThirdAppController {
ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService;
@Autowired
ThirdAppDingtalkServiceImpl dingtalkService;
+ @Autowired
+ ThirdAppFeishuServiceImpl feishuService;
@Autowired
private ISysThirdAppConfigService appConfigService;
@@ -75,6 +78,8 @@ public class ThirdAppController {
boolean dingConfig = false;
//企业微信是否已配置
boolean qywxConfig = false;
+ //飞书是否已配置
+ boolean feishuConfig = false;
if(null != list && list.size()>0){
for (SysThirdAppConfig config:list) {
if(MessageTypeEnum.DD.getType().equals(config.getThirdType())){
@@ -85,10 +90,15 @@ public class ThirdAppController {
qywxConfig = true;
continue;
}
+ if(MessageTypeEnum.FS.getType().equals(config.getThirdType())){
+ feishuConfig = true;
+ continue;
+ }
}
}
enabledMap.put("wechatEnterprise", qywxConfig);
enabledMap.put("dingtalk", dingConfig);
+ enabledMap.put("feishu", feishuConfig);
return Result.OK(enabledMap);
}
@@ -311,6 +321,15 @@ public class ThirdAppController {
}
return Result.error("钉钉尚未配置,请配置钉钉");
}
+ String feishuType = MessageTypeEnum.FS.getType();
+ if (feishuType.toUpperCase().equals(app) || CommonConstant.FEISHU.equals(app)) {
+ SysThirdAppConfig config = appConfigService.getThirdConfigByThirdType(tenantId, feishuType);
+ if (null != config) {
+ boolean success = feishuService.sendMessage(message, false);
+ return success ? Result.OK("飞书消息发送成功") : Result.error("飞书消息发送失败,请检查接收者是否已绑定飞书账号");
+ }
+ return Result.error("飞书尚未配置,请配置飞书应用");
+ }
return Result.error("不识别的第三方APP");
}
@@ -493,6 +512,27 @@ public class ThirdAppController {
}
return Result.error("钉钉尚未配置,请配置钉钉");
}
+ //update-begin---author:liusq ---date:2026-05-13 for:【QQYUN-12767】飞书集成-同步飞书部门和用户到本地-----------
+ /**
+ * 同步【飞书】通讯录(部门 + 用户)到本地
+ * 飞书应用需开通权限:contact:department:read、contact:user.base:readonly
+ */
+ @GetMapping("/sync/feishu/departAndUser/toLocal")
+ public Result syncFeishuDepartAndUserToLocal(HttpServletRequest request) {
+ int tenantId = oConvertUtils.getInt(TokenUtils.getTenantIdByRequest(request), 0);
+ SysThirdAppConfig config = appConfigService.getThirdConfigByThirdType(tenantId, MessageTypeEnum.FS.getType());
+ if (null != config) {
+ SyncInfoVo syncInfo = feishuService.syncFeishuDeptAndUserToLocal(tenantId);
+ if (syncInfo.getFailInfo().isEmpty()) {
+ return Result.OK("同步成功", syncInfo);
+ } else {
+ return Result.error("同步完成(含失败项,请查看详情)", syncInfo);
+ }
+ }
+ return Result.error("飞书尚未配置,请配置飞书应用");
+ }
+ //update-end---author:liusq ---date:2026-05-13 for:【QQYUN-12767】飞书集成-同步飞书部门和用户到本地-----------
+
//========================end 应用低代码钉钉/企业微信同步用户部门专用 ========================
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
index aa16fa0f4..01b194d95 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
@@ -12,6 +12,8 @@ import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.request.AuthRequest;
import me.zhyd.oauth.utils.AuthStateUtils;
import me.zhyd.oauth.utils.StringUtils;
+import me.zhyd.oauth.config.AuthConfig;
+import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.MessageTypeEnum;
@@ -30,6 +32,7 @@ import org.jeecg.modules.system.service.ISysThirdAppConfigService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.system.service.ISysDepartService;
import org.jeecg.modules.system.service.impl.ThirdAppDingtalkServiceImpl;
+import org.jeecg.modules.system.service.impl.ThirdAppFeishuServiceImpl;
import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -75,12 +78,51 @@ public class ThirdLoginController {
@Autowired
private ISysThirdAppConfigService appConfigService;
+ @Autowired
+ private ThirdAppFeishuServiceImpl thirdAppFeishuService;
+
+ @Autowired
+ private JustAuthProperties justAuthProperties;
+
@Autowired
public ISysBaseAPI sysBaseAPI;
@RequestMapping("/render/{source}")
- public void render(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
+ public void render(@PathVariable("source") String source, HttpServletRequest request, HttpServletResponse response) throws IOException {
log.info("第三方登录进入render:" + source);
+ //update-begin---author:liusq ---date:2026-05-13 for:【QQYUN-12767】飞书集成,手动调用飞书新版 OAuth2 API(绕过 JustAuth 废弃接口)-----------
+ if (CommonConstant.FEISHU.equalsIgnoreCase(source) || ThirdAppFeishuServiceImpl.THIRD_TYPE.equalsIgnoreCase(source)) {
+ SysThirdAppConfig feishuConfig = buildFeishuConfigFromYaml();
+ if (feishuConfig == null) {
+ feishuConfig = appConfigService.getThirdConfigByThirdType(CommonConstant.TENANT_ID_DEFAULT_VALUE, ThirdAppFeishuServiceImpl.THIRD_TYPE);
+ }
+ if (feishuConfig == null) {
+ response.setContentType("text/html;charset=UTF-8");
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write("飞书应用尚未配置,请联系管理员");
+ return;
+ }
+ // 将租户ID编码进state,格式:{tenantId}_{uuid},callback时解析租户ID实现多租户精确查询
+ //update-begin---author:liusq ---date:2026-05-15 for:【QQYUN-12767】飞书扫码登录改用yml配置,兼容tenantId为null的情况-----------
+ Integer renderTenantId = feishuConfig.getTenantId() != null ? feishuConfig.getTenantId() : CommonConstant.TENANT_ID_DEFAULT_VALUE;
+ String state = renderTenantId + "_" + AuthStateUtils.createState();
+ //update-end---author:liusq ---date:2026-05-15 for:【QQYUN-12767】飞书扫码登录改用yml配置,兼容tenantId为null的情况-----------
+ String redirectUri = CommonUtils.getBaseUrl(request) + "/sys/thirdLogin/feishu/callback";
+ String authorizeUrl = thirdAppFeishuService.buildAuthorizeUrl(feishuConfig, redirectUri, state);
+ log.info("飞书登录认证地址:{}", authorizeUrl);
+ response.sendRedirect(authorizeUrl);
+ return;
+ }
+ //update-end---author:liusq ---date:2026-05-13 for:【QQYUN-12767】飞书集成,手动调用飞书新版 OAuth2 API(绕过 JustAuth 废弃接口)-----------
+ //update-begin---author:scott ---date:2026-06-04 for:【第三方登录NPE加固】source未在justauth.type中配置时直接拦截,避免JustAuth-starter1.4.0的get()未判空getExtend()抛出空指针-----------
+ if (justAuthProperties.getType() == null || !justAuthProperties.getType().containsKey(source.toUpperCase())) {
+ log.warn("第三方登录方式[{}]未配置(justauth.type 中不存在),已拦截 render 请求", source);
+ response.setContentType("text/html;charset=UTF-8");
+ response.setCharacterEncoding("UTF-8");
+ response.getWriter().write("第三方登录方式[" + source + "]尚未配置,请联系管理员");
+ return;
+ }
+ //update-end---author:scott ---date:2026-06-04 for:【第三方登录NPE加固】source未在justauth.type中配置时直接拦截,避免JustAuth-starter1.4.0的get()未判空getExtend()抛出空指针-----------
AuthRequest authRequest = factory.get(source);
String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
log.info("第三方登录认证地址:" + authorizeUrl);
@@ -88,8 +130,42 @@ public class ThirdLoginController {
}
@RequestMapping("/{source}/callback")
- public String loginThird(@PathVariable("source") String source, AuthCallback callback,ModelMap modelMap) {
+ public String loginThird(@PathVariable("source") String source, AuthCallback callback,ModelMap modelMap, HttpServletRequest request) {
log.info("第三方登录进入callback:" + source + " params:" + JSONObject.toJSONString(callback));
+ //update-begin---author:jeecg ---date:2026-05-13 for:【QQYUN-12767】飞书集成,手动调用飞书新版 OAuth2 API(绕过 JustAuth 废弃接口)-----------
+ if (CommonConstant.FEISHU.equalsIgnoreCase(source) || ThirdAppFeishuServiceImpl.THIRD_TYPE.equalsIgnoreCase(source)) {
+ String code = request.getParameter("code");
+ log.info("【飞书】扫码登录回调 code={}", code);
+ try {
+ // 从state中解析租户ID(render时编码为 {tenantId}_{uuid} 格式)
+ Integer feishuTenantId = CommonConstant.TENANT_ID_DEFAULT_VALUE;
+ String stateParam = request.getParameter("state");
+ if (stateParam != null && stateParam.contains("_")) {
+ try {
+ feishuTenantId = Integer.parseInt(stateParam.split("_", 2)[0]);
+ } catch (NumberFormatException ex) {
+ log.warn("【飞书】state中租户ID解析失败,使用默认租户,state={}", stateParam);
+ }
+ }
+ log.info("【飞书】扫码登录回调 tenantId={}", feishuTenantId);
+ // 直接调用飞书新版 API 完成 code → token → 用户信息 全流程
+ String redirectUri = CommonUtils.getBaseUrl(request) + "/sys/thirdLogin/feishu/callback";
+ SysThirdAppConfig feishuYamlConfig = buildFeishuConfigFromYaml();
+ SysUser loginUser = thirdAppFeishuService.oauth2Login(code, feishuTenantId, redirectUri, feishuYamlConfig);
+ String token = saveToken(loginUser);
+ modelMap.addAttribute("token", token);
+ } catch (Exception e) {
+ log.error("飞书登录回调异常", e);
+ if (e.getMessage() != null && e.getMessage().contains("openId=")) {
+ String openId = e.getMessage().substring(e.getMessage().indexOf("openId=") + 7);
+ modelMap.addAttribute("token", "绑定手机号," + openId);
+ } else {
+ modelMap.addAttribute("token", "登录失败");
+ }
+ }
+ return "thirdLogin";
+ }
+ //update-end---author:liusq ---date:2026-05-13 for:【QQYUN-12767】飞书集成,手动调用飞书新版 OAuth2 API(绕过 JustAuth 废弃接口)-----------
AuthRequest authRequest = factory.get(source);
AuthResponse response = authRequest.login(callback);
log.info(JSONObject.toJSONString(response));
@@ -205,6 +281,25 @@ public class ThirdLoginController {
return result;
}
+ /**
+ * 从 justauth yml 配置中读取飞书 app_id/app_secret,构建临时 SysThirdAppConfig。
+ * client-id 为空或为占位符 "??" 时返回 null,由调用方回退到数据库配置。
+ */
+ private SysThirdAppConfig buildFeishuConfigFromYaml() {
+ if (justAuthProperties == null || justAuthProperties.getType() == null) {
+ return null;
+ }
+ AuthConfig authConfig = justAuthProperties.getType().get(CommonConstant.FEISHU);
+ if (authConfig == null || authConfig.getClientId() == null || "??".equals(authConfig.getClientId().trim())) {
+ return null;
+ }
+ SysThirdAppConfig config = new SysThirdAppConfig();
+ config.setClientId(authConfig.getClientId());
+ config.setClientSecret(authConfig.getClientSecret());
+ config.setTenantId(CommonConstant.TENANT_ID_DEFAULT_VALUE);
+ return config;
+ }
+
private String saveToken(SysUser user) {
// 生成token
String token = JwtUtil.sign(user.getUsername(), user.getPassword(), CommonConstant.CLIENT_TYPE_PC);
@@ -226,6 +321,11 @@ public class ThirdLoginController {
@ResponseBody
public Result getThirdLoginUser(@PathVariable("token") String token,@PathVariable("thirdType") String thirdType,@PathVariable("tenantId") String tenantId) throws Exception {
Result result = new Result();
+ // 代码逻辑说明: 快速拦截非 JWT 格式的 token(如飞书 SDK 发出的 [tea-sdk]ready),避免 JWTDecodeException 触发 ERROR 日志
+ if (token == null || token.split("\\.").length != 3) {
+ log.debug("【第三方登录】收到非 JWT 格式 token,忽略: {}", token);
+ return Result.noauth("token格式无效");
+ }
String username = JwtUtil.getUsername(token);
// 代码逻辑说明: [QQYUN-11021]三方登录接口通过token获取用户信息漏洞修复------------
if (!TokenUtils.verifyToken(token, sysBaseAPI, redisUtil)) {
@@ -374,7 +474,16 @@ public class ThirdLoginController {
// 代码逻辑说明: [issues/I5BOUF]oauth2 钉钉无法登录------------
builder.append("&prompt=").append("consent");
url = builder.toString();
- } else {
+ }
+ else if (CommonConstant.FEISHU.equalsIgnoreCase(source) || "feishu".equalsIgnoreCase(source)) {
+ SysThirdAppConfig feishuConfig = appConfigService.getThirdConfigByThirdType(Integer.valueOf(tenantId), MessageTypeEnum.FS.getType());
+ if (null == feishuConfig) {
+ return "还未配置飞书应用,请配置飞书应用";
+ }
+ String redirectUri = CommonUtils.getBaseUrl(request) + "/sys/thirdLogin/oauth2/feishu/callback?tenantId=" + tenantId;
+ url = thirdAppFeishuService.buildAuthorizeUrl(feishuConfig, redirectUri, state);
+ }
+ else {
return "不支持的source";
}
log.info("oauth2 login url:" + url);
@@ -400,6 +509,7 @@ public class ThirdLoginController {
@RequestParam(value = "authCode", required = false) String authCode,
@RequestParam("state") String state,
@RequestParam(name = "tenantId",defaultValue = "0") String tenantId,
+ HttpServletRequest request,
HttpServletResponse response) {
SysUser loginUser;
if (CommonConstant.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
@@ -414,7 +524,16 @@ public class ThirdLoginController {
if (loginUser == null) {
return "登录失败";
}
- } else {
+ }
+ else if (CommonConstant.FEISHU.equalsIgnoreCase(source) || "feishu".equalsIgnoreCase(source)) {
+ log.info("【飞书】OAuth2登录进入callback:code={}, state={}", code, state);
+ String redirectUri = CommonUtils.getBaseUrl(request) + "/sys/thirdLogin/oauth2/feishu/callback?tenantId=" + tenantId;
+ loginUser = thirdAppFeishuService.oauth2Login(code, Integer.valueOf(tenantId), redirectUri);
+ if (loginUser == null) {
+ return "登录失败";
+ }
+ }
+ else {
return "不支持的source";
}
try {
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java
index 6de3e08a4..7b8b9e2e3 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java
@@ -60,7 +60,7 @@ public class SysCheckRule {
/**
* 更新人
*/
- @Excel(name = "更新人", width = 15)
+ @Excel(name = "更新人", width = 15,dictTable = "sys_user",dicCode = "username",dicText = "realname")
@Schema(description = "更新人")
private String updateBy;
/**
@@ -74,7 +74,7 @@ public class SysCheckRule {
/**
* 创建人
*/
- @Excel(name = "创建人", width = 15)
+ @Excel(name = "创建人", width = 15,dictTable = "sys_user",dicCode = "username",dicText = "realname")
@Schema(description = "创建人")
private String createBy;
/**
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java
index be5b0b6ff..f66c9a789 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -86,6 +87,7 @@ public class SysDataSource {
*/
@Excel(name = "密码", width = 15)
@Schema(description = "密码")
+ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private java.lang.String dbPassword;
/**
* 创建人
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java
index 075533eb4..760ef4e05 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysDepart.java
@@ -79,6 +79,8 @@ public class SysDepart implements Serializable {
private String qywxIdentifier;
/**对接钉钉的部门ID*/
private String dingIdentifier;
+ /**对接飞书的部门ID*/
+ private String feishuIdentifier;
/**创建人*/
private String createBy;
/**创建日期*/
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java
index a8a0c24e0..f60547014 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java
@@ -58,7 +58,7 @@ public class SysFillRule {
/**
* 修改人
*/
- @Excel(name = "修改人", width = 15)
+ @Excel(name = "修改人", width = 15,dictTable = "sys_user",dicCode = "username",dicText = "realname")
@Schema(description = "修改人")
private java.lang.String updateBy;
/**
@@ -72,7 +72,7 @@ public class SysFillRule {
/**
* 创建人
*/
- @Excel(name = "创建人", width = 15)
+ @Excel(name = "创建人", width = 15,dictTable = "sys_user",dicCode = "username",dicText = "realname")
@Schema(description = "创建人")
private java.lang.String createBy;
/**
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysRole.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysRole.java
index 616312342..0b2c16ffc 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysRole.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysRole.java
@@ -1,7 +1,6 @@
package org.jeecg.modules.system.entity;
import java.io.Serializable;
-import java.time.LocalDateTime;
import java.util.Date;
import org.jeecgframework.poi.excel.annotation.Excel;
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysTenantPack.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysTenantPack.java
index d79a71fa6..1873517a9 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysTenantPack.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysTenantPack.java
@@ -51,16 +51,16 @@ public class SysTenantPack implements Serializable {
@Schema(description = "创建人")
private String createBy;
/**创建时间*/
- @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
- @DateTimeFormat(pattern="yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间")
private Date createTime;
/**更新人*/
@Schema(description = "更新人")
private String updateBy;
/**更新时间*/
- @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
- @DateTimeFormat(pattern="yyyy-MM-dd")
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "更新时间")
private Date updateTime;
/**产品包类型(default 默认产品包 custom 自定义产品包)*/
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
index 29ceba0c8..bb4900a35 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.common.system.query.QueryConditionIgnore;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
@@ -56,12 +57,14 @@ public class SysUser implements Serializable {
* 密码
*/
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @QueryConditionIgnore
private String password;
/**
* md5密码盐
*/
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
+ @QueryConditionIgnore
private String salt;
/**
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java
index fc06ea35a..93652b81e 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java
@@ -10,6 +10,7 @@ import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.model.SysUserSysDepPostModel;
import org.jeecg.modules.system.vo.SysDepartExportVo;
import org.jeecg.modules.system.vo.SysDepartPositionVo;
+import org.jeecg.modules.system.vo.SysUserDepartIdVo;
import org.jeecg.modules.system.vo.SysUserDepVo;
import org.jeecg.modules.system.vo.lowapp.ExportDepartVo;
import org.apache.ibatis.annotations.Param;
@@ -59,6 +60,15 @@ public interface SysDepartMapper extends BaseMapper {
*/
List> queryDepartIdsByUserIds(@Param("userIds") Collection userIds);
+ /**
+ * 批量查询用户所属部门IDs(VO版,跨数据库兼容,消除N+1查询)
+ * @author scott
+ * @since 2026-07-01 listAll接口N+1查询改造
+ * @param userIds 用户ID列表
+ * @return 每条含 userId 和 departId
+ */
+ List queryDepartIdVosByUserIds(@Param("userIds") Collection userIds);
+
/**
* 通过部门编码获取部门id
* @param orgCode 部门编码
@@ -251,9 +261,10 @@ public interface SysDepartMapper extends BaseMapper {
*
* @param parentId
* @param postName
+ * @param tenantId
* @return
*/
- String getDepIdByDepIdAndPostName(@Param("parentId") String parentId, @Param("postName") String postName);
+ String getDepIdByDepIdAndPostName(@Param("parentId") String parentId, @Param("postName") String postName, @Param("tenantId") Integer tenantId);
/**
* 根据部门id 获取职级名称
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java
index 646efe5f6..f076bcfc8 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java
@@ -43,6 +43,14 @@ public interface SysDictMapper extends BaseMapper {
@Deprecated
public Long duplicateCheckCountSqlNoDataId(DuplicateCheckVo duplicateCheckVo);
+ /**
+ * 【QQYUN-15337 多数据源】按表名查 online 表单(onl_cgform_head)上配置的 db_source,
+ * 仅返回 db_source 非空的记录;找不到 / 该表不是online表 / 未配数据源 时返回空列表。
+ * 失败由调用方 try/catch(如果运行环境没装 online 模块、onl_cgform_head 不存在)。
+ */
+ @Select("SELECT db_source FROM onl_cgform_head WHERE table_name = #{tableName} AND db_source IS NOT NULL AND db_source != ''")
+ public List findOnlineFormDbSourceByTableName(@Param("tableName") String tableName);
+
/**
* 通过字典code获取字典数据
* @param code 字典code
@@ -185,6 +193,28 @@ public interface SysDictMapper extends BaseMapper {
List queryTableDictByKeysAndFilterSql(@Param("table") String table, @Param("text") String text, @Param("code") String code, @Param("filterSql") String filterSql,
@Param("codeValues") List codeValues);
+ /**
+ * 关联记录专用:多字段分页查询任意表数据
+ * 由 SysDictService.queryTableData() 调用,调用前已做 SQL 注入校验
+ *
+ * @param page 分页参数
+ * @param table 表名(已转义)
+ * @param fields SELECT 字段列表(已转义,逗号分隔)
+ * @param filterSql WHERE 子句内容(不含 WHERE 关键字,已注入校验)
+ */
+ IPage> queryPageTableWithFields(Page> page,
+ @Param("table") String table,
+ @Param("fields") String fields,
+ @Param("filterSql") String filterSql);
+
+ /**
+ * 关联记录专用:统计满足条件的记录总数
+ *
+ * @param table 表名(已转义)
+ * @param filterSql WHERE 子句内容(不含 WHERE 关键字,已注入校验)
+ */
+ Long countTableWithFields(@Param("table") String table, @Param("filterSql") String filterSql);
+
/**
* 根据应用id获取字典列表和详情
* @param lowAppId
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepPostMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepPostMapper.java
index 43b0282b1..47943c33e 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepPostMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepPostMapper.java
@@ -7,6 +7,8 @@ import org.jeecg.modules.system.entity.SysUserDepPost;
import java.util.List;
+import org.jeecg.modules.system.vo.SysUserDepPostVo;
+
/**
* @Description: 部门岗位用户关联表 Mapper
* @author: wangshuai
@@ -22,4 +24,13 @@ public interface SysUserDepPostMapper extends BaseMapper {
*/
@Select("select dep_id from sys_user_dep_post where user_id = #{userId}")
List getDepPostByUserId(@Param("userId") String userId);
+
+ /**
+ * 批量查询多个用户的兼职部门ID(含用户ID映射,跨数据库兼容,消除N+1查询)
+ * @author scott
+ * @since 2026-07-01 listAll接口N+1查询改造
+ * @param userIds 用户ID列表
+ * @return 每条含 userId 和 depId
+ */
+ List getDepPostByUserIds(@Param("userIds") List userIds);
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java
index 1f0a390d0..a42d72f73 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java
@@ -29,7 +29,7 @@ public interface SysUserDepartMapper extends BaseMapper{
* @param realname
* @return
*/
- List queryDepartUserList(@Param("orgCode") String orgCode, @Param("realname") String realname);
+ List queryDepartUserList(@Param("orgCode") String orgCode, @Param("realname") String realname, @Param("status") Integer status);
/**
* 根据部门查询部门用户
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
index 18056da98..6c4be23c0 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java
@@ -290,5 +290,5 @@ public interface SysUserMapper extends BaseMapper {
* @param realname
* @return
*/
- IPage getUserByUgroupId(Page page, @Param("groupId") String groupId, @Param("username") String username, @Param("realname") String realname);
+ IPage getUserByUgroupId(Page page, @Param("groupId") String groupId, @Param("username") String username, @Param("realname") String realname, @Param("status") Integer status);
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserPositionMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserPositionMapper.java
index bc00e1b18..0b2275740 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserPositionMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserPositionMapper.java
@@ -83,4 +83,15 @@ public interface SysUserPositionMapper extends BaseMapper {
* @param userId
*/
void deleteUserPosByNameAndTenantId(@Param("positionNames") List positionNames, @Param("tenantId") Integer tenantId, @Param("userId") String userId);
+
+ /**
+ * 批量查询多个用户的职位IDs(含用户ID映射,用于消除N+1查询)
+ * @author scott
+ * @since 2026-07-01 listAll接口N+1查询改造
+ * @param userIds 用户ID列表
+ * @param tenantId 租户ID,为null时不按租户过滤
+ * @return 每条含 id(职位ID)和 userId
+ */
+ @InterceptorIgnore(tenantLine = "true")
+ List getPositionIdsByUserIds(@Param("userIds") List userIds, @Param("tenantId") Integer tenantId);
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserTenantMapper.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserTenantMapper.java
index f31c6401e..f7e05cb50 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserTenantMapper.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/SysUserTenantMapper.java
@@ -1,6 +1,9 @@
package org.jeecg.modules.system.mapper;
import java.util.List;
+import java.util.Map;
+
+import org.jeecg.modules.system.vo.SysUserTenantIdVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Delete;
@@ -174,4 +177,13 @@ public interface SysUserTenantMapper extends BaseMapper {
* @return
*/
List getTenantIdsByUserIds(@Param("userIds") List userIds);
+
+ /**
+ * 批量查询多个用户的租户IDs(含用户ID映射,跨数据库兼容,消除N+1查询)
+ * @author scott
+ * @since 2026-07-01 listAll接口N+1查询改造
+ * @param userIds 用户ID列表
+ * @return 每条含 userId 和 tenantId
+ */
+ List getTenantIdVosByUserIds(@Param("userIds") List userIds);
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml
index e16ebe871..3fbbb94e6 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml
@@ -44,6 +44,18 @@
+
+
+
@@ -183,9 +195,15 @@
where
depart_name = #{departName}
and tenant_id = #{tenantId}
-
- and parent_id = #{parentId}
-
+
+
+ and parent_id = #{parentId}
+
+
+ and (parent_id is null or parent_id = '')
+
+
+ and del_flag = 0
ORDER BY create_time DESC
@@ -223,7 +241,9 @@
@@ -287,7 +307,11 @@
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml
index 555c4924a..e68cfedca 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml
@@ -6,7 +6,7 @@
@@ -14,7 +14,7 @@
select s.item_value as "value",s.item_text as "text", s.item_color as "color" from sys_dict_item s
where dict_id = (select id from sys_dict where dict_code = #{code})
and s.status = 1
- order by s.sort_order asc, s.create_time DESC;
+ order by s.sort_order asc, s.create_time DESC
@@ -209,6 +209,22 @@
+
+
+
+
+
+
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepPostMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepPostMapper.xml
new file mode 100644
index 000000000..029fb2850
--- /dev/null
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepPostMapper.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml
index 237d2e6af..50064352b 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml
@@ -9,42 +9,49 @@
@@ -142,4 +152,4 @@
#{userId}
-
\ No newline at end of file
+
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
index 91915b0c8..1440ebfbb 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml
@@ -63,7 +63,7 @@
+
+
+ SELECT sp.id, sup.user_id FROM sys_user_position sup
+ LEFT JOIN sys_position sp ON sup.position_id = sp.id
+ WHERE sup.user_id IN
+
+ #{userId}
+
+
+ AND sp.tenant_id = #{tenantId}
+
+ ORDER BY sup.create_time DESC
+
+
DELETE FROM sys_user_position
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserTenantMapper.xml b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserTenantMapper.xml
index 6e71adb55..6cbd17cab 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserTenantMapper.xml
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserTenantMapper.xml
@@ -155,6 +155,16 @@
order by st.create_time desc
+
+
+ SELECT user_id, tenant_id FROM sys_user_tenant
+ WHERE status = '1'
+ AND user_id IN
+
+ #{userId}
+
+
+
DELETE FROM sys_user_tenant
@@ -174,12 +184,21 @@
- SELECT su.id userId,su.realname,su.avatar
- FROM sys_user_tenant sut
- JOIN sys_tenant st ON sut.tenant_id = st.id and st.status = 1 and st.del_flag = 0
- JOIN sys_user su ON sut.user_id = su.id and su.status = 1 and su.del_flag = 0
- WHERE
- sut.status = 1
- AND sut.tenant_id = #{tenantId}
+
+
+ SELECT su.id userId,su.realname,su.avatar
+ FROM sys_user su
+ WHERE su.status = 1 and su.del_flag = 0
+
+
+ SELECT su.id userId,su.realname,su.avatar
+ FROM sys_user_tenant sut
+ JOIN sys_tenant st ON sut.tenant_id = st.id and st.status = 1 and st.del_flag = 0
+ JOIN sys_user su ON sut.user_id = su.id and su.status = 1 and su.del_flag = 0
+ WHERE
+ sut.status = 1
+ AND sut.tenant_id = #{tenantId}
+
+
\ No newline at end of file
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java
index 7e5586246..249406d89 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java
@@ -121,7 +121,7 @@ public class SysDepartTreeModel implements Serializable{
this.directorUserIds = sysDepart.getDirectorUserIds();
this.positionId = sysDepart.getPositionId();
this.depPostParentId = sysDepart.getDepPostParentId();
- if(0 == sysDepart.getIzLeaf()){
+ if(null != sysDepart.getIzLeaf() && 0 == sysDepart.getIzLeaf()){
this.isLeaf = false;
}else{
this.isLeaf = true;
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java
index 607d2c5d4..a7e3d79ff 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java
@@ -1,10 +1,12 @@
package org.jeecg.modules.system.service;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.system.entity.SysCategory;
import org.jeecg.modules.system.model.TreeSelectModel;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -28,7 +30,7 @@ public interface ISysCategoryService extends IService {
* 添加分类字典
* @param sysCategory
*/
- void addSysCategory(SysCategory sysCategory);
+ JSONObject addSysCategory(SysCategory sysCategory);
/**
* 修改分类字典
@@ -72,6 +74,23 @@ public interface ISysCategoryService extends IService {
*/
void deleteSysCategory(String ids);
+ /**
+ * 从分类列表中筛选选中节点及其全部子节点
+ *
+ * @param categoryList 分类列表
+ * @param selectedIds 选中节点ID
+ * @return 选中节点及其全部子节点
+ */
+ List filterSelectionWithChildren(List categoryList, Collection selectedIds);
+
+ /**
+ * 按父子层级排列分类列表
+ *
+ * @param categoryList 分类列表
+ * @return 父节点在前、子节点紧随其后的分类列表
+ */
+ List sortByHierarchy(List categoryList);
+
/**
* 分类字典控件数据回显[表单页面]
*
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java
index c0871de2b..b203f66eb 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java
@@ -2,7 +2,10 @@ package org.jeecg.modules.system.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.system.entity.SysCheckRule;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.springframework.web.multipart.MultipartFile;
/**
* @Description: 编码校验规则
@@ -30,4 +33,9 @@ public interface ISysCheckRuleService extends IService {
*/
JSONObject checkValue(SysCheckRule checkRule, String value);
+ /**
+ * 导入系统校验规则。
+ */
+ Result> importExcel(MultipartFile file, ImportParams params) throws Exception;
+
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java
index eab243c76..c31bb63b8 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.system.entity.SysDataSource;
+import java.io.IOException;
+import java.util.List;
+
/**
* @Description: 多数据源管理
* @Author: jeecg-boot
@@ -33,4 +36,21 @@ public interface ISysDataSourceService extends IService {
* @return
*/
Result deleteDataSource(String id);
+
+ /**
+ * 【QQYUN-15337 多数据源】确保指定编码的数据源已注册到 baomidou 动态数据源池(已注册则跳过)。
+ * 用于在 push 数据源上下文前确保该数据源可用,主要给唯一性校验、复制等"未走 /online/cgform/api/** 请求"
+ * 但又需要操作 online 表单物理表的入口使用。
+ *
+ * @param code sys_data_source.code
+ */
+ void ensureRegistered(String code);
+
+ /**
+ * 导入数据源,单行失败不影响其他数据。
+ *
+ * @param dataSources 待导入数据源
+ * @return 导入统计结果
+ */
+ Result> importDataSources(List dataSources) throws IOException;
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java
index 5c3fb6428..02ecf64e6 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java
@@ -87,6 +87,15 @@ public interface ISysDepartService extends IService{
* @return
*/
List searchByKeyWord(String keyWord, String myDeptSearch, String departIds, String orgCategory, String depIds);
+
+ /**
+ * 部门管理页面根据关键字搜索组织机构,搜索结果支持继续展开下级。
+ *
+ * @param keyWord 关键字
+ * @param orgCategory 组织机构类型
+ * @return 部门树节点
+ */
+ List searchByKeyWordForDepartManage(String keyWord, String orgCategory);
/**
* 根据部门id删除并删除其可能存在的子级部门
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java
index 53e6e1729..0980ee0aa 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysDictService.java
@@ -298,4 +298,21 @@ public interface ISysDictService extends IService {
* @param ids
*/
boolean removeLogicDeleted(List ids);
+
+ /**
+ * 关联记录专用:多字段分页查询任意数据库表数据(一次请求返回所有指定字段)
+ *
+ * @param tableName 表名
+ * @param showFields 展示字段,逗号分隔,如 realname,username,avater
+ * @param valueField 值字段,如 id
+ * @param keyword 关键词搜索(可为 null)
+ * @param keyValues 按 valueField 精确查找的值,逗号分隔(用于回显,可为 null)
+ * @param pageNo 页码
+ * @param pageSize 每页大小
+ * @return 包含 records(List)和 total、size、current 的 Map
+ */
+ //update-begin---author:liusq ---date:2026-05-27 for:【优化】去掉无用参数searchFields、condition-----------
+ Map queryTableDataForLinkRecord(String tableName, String showFields, String valueField,
+ String keyword, String keyValues, Integer pageNo, Integer pageSize);
+ //update-end---author:liusq ---date:2026-05-27 for:【优化】去掉无用参数searchFields、condition-----------
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java
index 5afcd1a1e..69579fac4 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java
@@ -1,7 +1,10 @@
package org.jeecg.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.system.entity.SysFillRule;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.springframework.web.multipart.MultipartFile;
/**
* @Description: 填值规则
@@ -11,4 +14,15 @@ import org.jeecg.modules.system.entity.SysFillRule;
*/
public interface ISysFillRuleService extends IService {
+ /**
+ * 导入填值规则,并校验规则编码是否重复。
+ *
+ * @param file 导入文件
+ * @param params 导入参数
+ * @return 导入结果
+ * @throws Exception 导入异常
+ * @author wangshuai
+ * @since 2026-08-03 LHZP-1265
+ */
+ Result> importExcelCheckRuleCode(MultipartFile file, ImportParams params) throws Exception;
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java
index 8b156ce81..784907ddd 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java
@@ -41,7 +41,7 @@ public interface ISysUserDepartService extends IService {
* @param realname 真实姓名
* @return List
*/
- List queryUserByDepCode(String depCode,String realname);
+ List queryUserByDepCode(String depCode,String realname,Integer status);
/**
* 用户组件数据查询
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
index ecb8e62a2..9432bf203 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java
@@ -547,5 +547,5 @@ public interface ISysUserService extends IService {
* @param realname
* @return
*/
- IPage getUserByUgroupId(Page page, String groupId, String username, String realname);
+ IPage getUserByUgroupId(Page page, String groupId, String username, String realname, Integer status);
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
index 066391a6d..350cfdbf8 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java
@@ -190,7 +190,14 @@ public class SysAnnouncementServiceImpl extends ServiceImpl delQw = new LambdaQueryWrapper<>();
+ delQw.eq(SysAnnouncementSend::getAnntId, commentId);
+ sysAnnouncementSendService.remove(delQw);
+ //update-end---author:Claude ---date:2026-08-05---for: 【公告】全员发布撤销重发后sys_announcement_send产生重复记录,按anntId先清后插---
+
List userIdList = sysUserMapper.getTenantUserIdList(tenantId);
List sysAnnouncementSendList = new ArrayList<>();
if (!CollectionUtils.isEmpty(userIdList)) {
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
index b23553ba6..762d06723 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java
@@ -45,7 +45,9 @@ import org.jeecg.modules.airag.flow.service.IAiragFlowService;
import org.jeecg.modules.message.entity.SysMessageTemplate;
import org.jeecg.modules.message.handle.impl.DdSendMsgHandle;
import org.jeecg.modules.message.handle.impl.EmailSendMsgHandle;
+import org.jeecg.modules.message.handle.impl.FsSendMsgHandle;
import org.jeecg.modules.message.handle.impl.QywxSendMsgHandle;
+import org.jeecg.modules.message.handle.impl.SmsSendMsgHandle;
import org.jeecg.modules.message.handle.impl.SystemSendMsgHandle;
import org.jeecg.modules.message.service.ISysMessageTemplateService;
import org.jeecg.modules.message.websocket.WebSocket;
@@ -81,6 +83,10 @@ import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -95,6 +101,10 @@ public class SysBaseApiImpl implements ISysBaseAPI {
/** 当前系统数据库类型 */
private static String DB_TYPE = "";
+ /** 钉钉/企业微信/飞书/短信 异步发送线程池 */
+ private static final ExecutorService MSG_THREAD_POOL = new ThreadPoolExecutor(
+ 0, 1024, 60L, TimeUnit.SECONDS, new SynchronousQueue<>());
+
// uniapp 推送调用api地址
@Value("${jeecg.unicloud.pushUrl:}")
private String jeecgPushUrl;
@@ -139,6 +149,8 @@ public class SysBaseApiImpl implements ISysBaseAPI {
@Autowired
private ThirdAppDingtalkServiceImpl dingtalkService;
@Autowired
+ private ThirdAppFeishuServiceImpl feishuService;
+ @Autowired
ISysCategoryService sysCategoryService;
@Autowired
private ISysUserService sysUserService;
@@ -477,6 +489,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
// 同步发送第三方APP消息
wechatEnterpriseService.sendMessage(message, true);
dingtalkService.sendMessage(message, true);
+ feishuService.sendMessage(message, true);
} catch (Exception e) {
log.error("同步发送第三方APP消息失败!", e);
}
@@ -496,6 +509,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
// 同步发送第三方APP消息
wechatEnterpriseService.sendMessage(message, true);
dingtalkService.sendMessage(message, true);
+ feishuService.sendMessage(message, true);
} catch (Exception e) {
log.error("同步发送第三方APP消息失败!", e);
}
@@ -571,6 +585,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
// 同步企业微信、钉钉的消息通知
dingtalkService.sendActionCardMessage(announcement, mobileOpenUrl, true);
wechatEnterpriseService.sendTextCardMessage(announcement, mobileOpenUrl, true);
+ feishuService.sendAnnouncementMessage(announcement, mobileOpenUrl, true);
} catch (Exception e) {
log.error("同步发送第三方APP消息失败!", e);
}
@@ -668,6 +683,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
dingtalkService.sendActionCardMessage(announcement, mobileOpenUrl, true);
// 企业微信通知
wechatEnterpriseService.sendTextCardMessage(announcement, mobileOpenUrl, true);
+ feishuService.sendAnnouncementMessage(announcement, mobileOpenUrl, true);
// Uniapp手机端消息推送
PushMessageDTO pushMessageDTO = new PushMessageDTO();
pushMessageDTO.setTitle(announcement.getTitile());
@@ -835,6 +851,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
ComboModel model = new ComboModel();
model.setTitle(role.getRoleName());
model.setId(role.getId());
+ model.setRoleCode(role.getRoleCode());
list.add(model);
}
return list;
@@ -1705,6 +1722,10 @@ public class SysBaseApiImpl implements ISysBaseAPI {
@Autowired
private DdSendMsgHandle ddSendMsgHandle;
+ @Autowired
+ private FsSendMsgHandle fsSendMsgHandle;
+ @Autowired
+ private SmsSendMsgHandle smsSendMsgHandle;
@Override
public void sendTemplateMessage(MessageDTO message) {
@@ -1745,9 +1766,13 @@ public class SysBaseApiImpl implements ISysBaseAPI {
emailSendMsgHandle.sendMessage(message);
}
}else if(MessageTypeEnum.DD.getType().equals(messageType)){
- ddSendMsgHandle.sendMessage(message);
+ MSG_THREAD_POOL.execute(() -> ddSendMsgHandle.sendMessage(message));
}else if(MessageTypeEnum.QYWX.getType().equals(messageType)){
- qywxSendMsgHandle.sendMessage(message);
+ MSG_THREAD_POOL.execute(() -> qywxSendMsgHandle.sendMessage(message));
+ }else if(MessageTypeEnum.FS.getType().equals(messageType)){
+ MSG_THREAD_POOL.execute(() -> fsSendMsgHandle.sendMessage(message));
+ }else if(MessageTypeEnum.DX.getType().equals(messageType)){
+ MSG_THREAD_POOL.execute(() -> smsSendMsgHandle.sendMessage(message));
}
}
@@ -1785,8 +1810,11 @@ public class SysBaseApiImpl implements ISysBaseAPI {
entity.setDataContent(dataLogDto.getContent());
entity.setType(dataLogDto.getType());
entity.setDataVersion("1");
+ if (oConvertUtils.isNotEmpty(dataLogDto.getCreateBy())) {
+ entity.setCreateBy(dataLogDto.getCreateBy());
+ }
if (oConvertUtils.isNotEmpty(dataLogDto.getCreateName())) {
- entity.setCreateBy(dataLogDto.getCreateName());
+ entity.setCreateName(dataLogDto.getCreateName());
} else {
entity.autoSetCreateName();
}
@@ -1846,7 +1874,16 @@ public class SysBaseApiImpl implements ISysBaseAPI {
public List queryUserIdsByDeptIds(List deptIds) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().select(SysUserDepart::getUserId).in(true,SysUserDepart::getDepId,deptIds);
- return sysUserDepartService.listObjs(queryWrapper,e->e.toString());
+ List userIds = sysUserDepartService.listObjs(queryWrapper,e->e.toString());
+ //update-begin---author:zhangdaiscott ---date:2026-07-16 for:【LHZP-789】过滤sys_user_depart关系表中用户已被删除/禁用的垃圾数据-----------
+ if (userIds == null || userIds.isEmpty()) {
+ return userIds;
+ }
+ QueryWrapper userQueryWrapper = new QueryWrapper<>();
+ userQueryWrapper.lambda().select(SysUser::getId).eq(SysUser::getStatus,Integer.parseInt(CommonConstant.STATUS_1))
+ .eq(SysUser::getDelFlag,CommonConstant.DEL_FLAG_0).in(SysUser::getId,userIds);
+ return sysUserService.listObjs(userQueryWrapper,e->e.toString());
+ //update-end---author:zhangdaiscott ---date:2026-07-16 for:【LHZP-789】过滤sys_user_depart关系表中用户已被删除/禁用的垃圾数据-----------
}
@Override
@@ -1861,7 +1898,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
.select(SysDepart::getOrgCode)
.in(SysDepart::getId, deptIds));
departs.forEach(depart -> {
- List sysUsers = sysUserDepartService.queryUserByDepCode(depart.getOrgCode(), null);
+ List sysUsers = sysUserDepartService.queryUserByDepCode(depart.getOrgCode(), null, null);
if(oConvertUtils.isObjectNotEmpty(sysUsers)){
userIds.addAll(sysUsers.stream().map(SysUser::getId).collect(Collectors.toSet()));
}
@@ -1883,7 +1920,16 @@ public class SysBaseApiImpl implements ISysBaseAPI {
List idList = roleList.stream().map(role->role.getId()).collect(Collectors.toList());
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().select(SysUserRole::getUserId).in(true,SysUserRole::getRoleId, idList);
- return sysUserRoleService.listObjs(queryWrapper,e->e.toString());
+ List userIds = sysUserRoleService.listObjs(queryWrapper,e->e.toString());
+ //update-begin---author:zhangdaiscott ---date:2026-07-16 for:【LHZP-789】过滤sys_user_role关系表中用户已被删除/禁用的垃圾数据-----------
+ if (userIds == null || userIds.isEmpty()) {
+ return userIds;
+ }
+ QueryWrapper userQueryWrapper = new QueryWrapper<>();
+ userQueryWrapper.lambda().select(SysUser::getId).eq(SysUser::getStatus,Integer.parseInt(CommonConstant.STATUS_1))
+ .eq(SysUser::getDelFlag,CommonConstant.DEL_FLAG_0).in(SysUser::getId,userIds);
+ return sysUserService.listObjs(userQueryWrapper,e->e.toString());
+ //update-end---author:zhangdaiscott ---date:2026-07-16 for:【LHZP-789】过滤sys_user_role关系表中用户已被删除/禁用的垃圾数据-----------
}
return null;
}
@@ -2071,6 +2117,7 @@ public class SysBaseApiImpl implements ISysBaseAPI {
// 同步企业微信、钉钉的消息通知
Response dtResponse = dingtalkService.sendActionCardMessage(sysAnnouncement, null, true);
wechatEnterpriseService.sendTextCardMessage(sysAnnouncement, null,true);
+ feishuService.sendAnnouncementMessage(sysAnnouncement, null, true);
if (dtResponse != null && dtResponse.isSuccess()) {
String taskId = dtResponse.getResult();
@@ -2162,12 +2209,13 @@ public class SysBaseApiImpl implements ISysBaseAPI {
*/
@Override
public void uniPushMsgToUser(PushMessageDTO pushMessageDTO) {
+ //jeecg.unicloud.pushUrl 未配置时视为推送功能未启用,直接跳过(避免定时消息等场景反复刷警告日志)
+ if(oConvertUtils.isEmpty(jeecgPushUrl) || "''".equals(jeecgPushUrl) || "??".equals(jeecgPushUrl) ){
+ log.warn("yml配置项: jeecg.unicloud.pushUrl 未设置,APP消息UniPush推送功能未启用!");
+ return;
+ }
log.info("UniappPush推送URL:{}", jeecgPushUrl);
try {
- if(oConvertUtils.isEmpty(jeecgPushUrl) || "''".equals(jeecgPushUrl) || "??".equals(jeecgPushUrl) ){
- log.warn("yml配置项: jeecg.unicloud.pushUrl 未设置,APP消息UniPush推送功能未启用!");
- return;
- }
// 获取推送的用户信息
List usernames = pushMessageDTO.getUsernames();
List userIds = pushMessageDTO.getUserIds();
@@ -2288,4 +2336,4 @@ public class SysBaseApiImpl implements ISysBaseAPI {
public String getDepartPathNameByOrgCode(String orgCode, String depId) {
return sysDepartService.getDepartPathNameByOrgCode(orgCode, depId);
}
-}
\ No newline at end of file
+}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java
index f96bd57fe..90520fb3b 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.constant.FillRuleConstant;
import org.jeecg.common.constant.SymbolConstant;
+import org.jeecg.common.exception.JeecgBootBizTipException;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.common.util.oConvertUtils;
@@ -30,7 +31,7 @@ import java.util.stream.Collectors;
public class SysCategoryServiceImpl extends ServiceImpl implements ISysCategoryService {
@Override
- public void addSysCategory(SysCategory sysCategory) {
+ public JSONObject addSysCategory(SysCategory sysCategory) {
String categoryCode = "";
String categoryPid = ISysCategoryService.ROOT_PID_VALUE;
String parentCode = null;
@@ -40,7 +41,9 @@ public class SysCategoryServiceImpl extends ServiceImpl 0) {
+ JSONObject json = new JSONObject();
+ json.put("id", sysCategory.getId());
+ json.put("code", categoryCode);
+ json.put("parentCode", parentCode);
+ return json;
+ } else {
+ throw new JeecgBootBizTipException("添加失败");
+ }
}
@Override
@@ -125,6 +137,64 @@ public class SysCategoryServiceImpl extends ServiceImpl filterSelectionWithChildren(List categoryList, Collection selectedIds) {
+ if (categoryList == null || categoryList.isEmpty() || selectedIds == null || selectedIds.isEmpty()) {
+ return Collections.emptyList();
+ }
+ Map> childIdsByPid = new HashMap<>();
+ for (SysCategory category : categoryList) {
+ childIdsByPid.computeIfAbsent(category.getPid(), key -> new ArrayList<>()).add(category.getId());
+ }
+ Set exportIds = new HashSet<>(selectedIds);
+ Deque pendingIds = new ArrayDeque<>(selectedIds);
+ while (!pendingIds.isEmpty()) {
+ for (String childId : childIdsByPid.getOrDefault(pendingIds.removeFirst(), Collections.emptyList())) {
+ if (exportIds.add(childId)) {
+ pendingIds.addLast(childId);
+ }
+ }
+ }
+ List exportList = categoryList.stream().filter(category -> exportIds.contains(category.getId())).collect(Collectors.toList());
+ return this.sortByHierarchy(exportList);
+ }
+
+ @Override
+ public List sortByHierarchy(List categoryList) {
+ if (categoryList == null || categoryList.isEmpty()) {
+ return Collections.emptyList();
+ }
+ Set categoryIds = categoryList.stream().map(SysCategory::getId).collect(Collectors.toSet());
+ Map> childrenByPid = new HashMap<>();
+ for (SysCategory category : categoryList) {
+ childrenByPid.computeIfAbsent(category.getPid(), key -> new ArrayList<>()).add(category);
+ }
+ List result = new ArrayList<>(categoryList.size());
+ Set visitedIds = new HashSet<>();
+ for (SysCategory category : categoryList) {
+ if (!categoryIds.contains(category.getPid())) {
+ this.appendWithChildren(category, childrenByPid, visitedIds, result);
+ }
+ }
+ for (SysCategory category : categoryList) {
+ this.appendWithChildren(category, childrenByPid, visitedIds, result);
+ }
+ return result;
+ }
+
+ /**
+ * 递归追加当前分类及其子节点
+ */
+ private void appendWithChildren(SysCategory category, Map> childrenByPid, Set visitedIds, List result) {
+ if (!visitedIds.add(category.getId())) {
+ return;
+ }
+ result.add(category);
+ for (SysCategory child : childrenByPid.getOrDefault(category.getId(), Collections.emptyList())) {
+ this.appendWithChildren(child, childrenByPid, visitedIds, result);
+ }
+ }
+
/**
* 查询节点下所有子节点
* @param ids
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java
index 300a57f09..e288ecb1c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java
@@ -5,12 +5,22 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.ImportExcelUtil;
import org.jeecg.modules.system.entity.SysCheckRule;
import org.jeecg.modules.system.mapper.SysCheckRuleMapper;
import org.jeecg.modules.system.service.ISysCheckRuleService;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
import java.util.regex.Pattern;
/**
@@ -20,6 +30,7 @@ import java.util.regex.Pattern;
* @Version: V1.0
*/
@Service
+@Slf4j
public class SysCheckRuleServiceImpl extends ServiceImpl implements ISysCheckRuleService {
/**
@@ -34,6 +45,56 @@ public class SysCheckRuleServiceImpl extends ServiceImpl importExcel(MultipartFile file, ImportParams params) throws Exception {
+ List checkRules;
+ try (InputStream inputStream = file.getInputStream()) {
+ checkRules = ExcelImportUtil.importExcel(inputStream, SysCheckRule.class, params);
+ }
+ //update-begin---wangshuai---date:20260810 for:【LHZP-1278】【系统校验规则】导入 有重复 报错------------
+ List errorMessages = new ArrayList<>();
+ int successLines = 0;
+ for (int i = 0; i < checkRules.size(); i++) {
+ SysCheckRule checkRule = checkRules.get(i);
+ try {
+ resetImportAuditFields(checkRule);
+ if (isRuleCodeExists(checkRule.getRuleCode())) {
+ errorMessages.add("第" + (i + 1) + "行:规则Code[" + checkRule.getRuleCode() + "]已存在,忽略导入。");
+ continue;
+ }
+ if (!save(checkRule)) {
+ throw new JeecgBootException("数据保存失败");
+ }
+ successLines++;
+ } catch (Exception e) {
+ errorMessages.add("第" + (i + 1) + "行:" + e.getMessage());
+ log.error("导入系统校验规则失败,行号:{}", i + 1, e);
+ }
+ }
+ return ImportExcelUtil.imporReturnRes(errorMessages.size(), successLines, errorMessages);
+ //update-end---author:wangshuai ---date:20260810 for:【LHZP-1278】【系统校验规则】导入 有重复 报错------------
+ }
+
+ /**
+ * 判断规则Code是否已经存在。
+ *
+ * @param ruleCode 规则Code
+ * @return 是否存在
+ */
+ private boolean isRuleCodeExists(String ruleCode) {
+ return count(new LambdaQueryWrapper().eq(SysCheckRule::getRuleCode, ruleCode)) > 0;
+ }
+
+ /**
+ * 清空 Excel 中的审计字段,由 MyBatis 插入拦截器按当前用户重新填充。
+ */
+ private void resetImportAuditFields(SysCheckRule checkRule) {
+ checkRule.setCreateBy(null);
+ checkRule.setCreateTime(null);
+ checkRule.setUpdateBy(null);
+ checkRule.setUpdateTime(null);
+ }
+
/**
* 通过用户设定的自定义校验规则校验传入的值
*
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java
index d0853c5b9..e9544c925 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java
@@ -5,8 +5,11 @@ import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import com.baomidou.dynamic.datasource.creator.druid.DruidDataSourceCreator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.util.ImportExcelUtil;
import org.jeecg.common.util.dynamic.db.DataSourceCachePool;
import org.jeecg.modules.system.entity.SysDataSource;
import org.jeecg.modules.system.mapper.SysDataSourceMapper;
@@ -16,6 +19,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
/**
* @Description: 多数据源管理
@@ -23,6 +29,7 @@ import javax.sql.DataSource;
* @Date: 2019-12-25
* @Version: V1.0
*/
+@Slf4j
@Service
public class SysDataSourceServiceImpl extends ServiceImpl implements ISysDataSourceService {
@@ -60,10 +67,16 @@ public class SysDataSourceServiceImpl extends ServiceImpl importDataSources(List dataSources) throws IOException {
+ List errorMessages = new ArrayList<>();
+ int successLines = 0;
+ for (int i = 0; i < dataSources.size(); i++) {
+ SysDataSource dataSource = dataSources.get(i);
+ try {
+ if (checkDbCode(dataSource.getCode()) > 0) {
+ errorMessages.add("第" + (i + 1) + "行:数据源编码[" + dataSource.getCode() + "]已存在,忽略导入。");
+ continue;
+ }
+ if (!save(dataSource)) {
+ throw new JeecgBootException("数据保存失败");
+ }
+ successLines++;
+ } catch (Exception e) {
+ errorMessages.add("第" + (i + 1) + "行:" + e.getMessage());
+ log.error("导入数据源失败,行号:{}", i + 1, e);
+ }
+ }
+ return ImportExcelUtil.imporReturnRes(errorMessages.size(), successLines, errorMessages);
+ }
+
/**
* 动态添加数据源 【注册mybatis动态数据源】
*
@@ -112,8 +154,19 @@ public class SysDataSourceServiceImpl extends ServiceImpl()
+ .eq(SysDataSource::getCode, code));
+ if (d == null) {
+ log.warn("ensureRegistered 失败:sys_data_source 不存在 code=[{}]", code);
+ return;
+ }
+ // 解密密码后注册
+ String dbPassword = d.getDbPassword();
+ if (StringUtils.isNotBlank(dbPassword)) {
+ dbPassword = SecurityUtil.jiemi(dbPassword);
+ }
+ addDynamicDataSource(d, dbPassword);
+ } catch (Exception e) {
+ log.warn("ensureRegistered 注册动态数据源[{}]失败:{}", code, e.getMessage());
+ }
+ }
+ //update-end---author:jeecg ---date:20260513 for:【QQYUN-15337】online表单多数据源:唯一性校验等场景需要按 code 把 sys_data_source 数据源懒注册到 baomidou 动态数据源池-----------
+
}
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
index 05b3e053b..19255de5c 100644
--- a/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java
@@ -432,6 +432,21 @@ public class SysDepartServiceImpl extends ServiceImpl searchByKeyWord(String keyWord, String myDeptSearch, String departIds, String orgCategory, String depIds) {
+ return searchByKeyWord(keyWord, myDeptSearch, departIds, orgCategory, depIds, false);
+ }
+
+ @Override
+ public List searchByKeyWordForDepartManage(String keyWord, String orgCategory) {
+ return searchByKeyWord(keyWord, null, null, orgCategory, null, true);
+ }
+
+ /**
+ * 根据关键字搜索组织机构。
+ *
+ * @param departManageSearch 是否为部门管理页面搜索
+ */
+ private List searchByKeyWord(String keyWord, String myDeptSearch, String departIds,
+ String orgCategory, String depIds, boolean departManageSearch) {
LambdaQueryWrapper query = new LambdaQueryWrapper();
List