208 changed files with 4619 additions and 1369 deletions
			
			
		@ -0,0 +1,128 @@ | 
				
			|||||
 | 
					-- platform.xxl_job_group definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_group` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName', | 
				
			||||
 | 
					  `title` varchar(12) NOT NULL COMMENT '执行器名称', | 
				
			||||
 | 
					  `address_type` tinyint NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入', | 
				
			||||
 | 
					  `address_list` text COMMENT '执行器地址列表,多地址逗号分隔', | 
				
			||||
 | 
					  `update_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  PRIMARY KEY (`id`) | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_info definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_info` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `job_group` int NOT NULL COMMENT '执行器主键ID', | 
				
			||||
 | 
					  `job_desc` varchar(255) NOT NULL, | 
				
			||||
 | 
					  `add_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  `update_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  `author` varchar(64) DEFAULT NULL COMMENT '作者', | 
				
			||||
 | 
					  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件', | 
				
			||||
 | 
					  `schedule_type` varchar(50) NOT NULL DEFAULT 'NONE' COMMENT '调度类型', | 
				
			||||
 | 
					  `schedule_conf` varchar(128) DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型', | 
				
			||||
 | 
					  `misfire_strategy` varchar(50) NOT NULL DEFAULT 'DO_NOTHING' COMMENT '调度过期策略', | 
				
			||||
 | 
					  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略', | 
				
			||||
 | 
					  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', | 
				
			||||
 | 
					  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数', | 
				
			||||
 | 
					  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略', | 
				
			||||
 | 
					  `executor_timeout` int NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒', | 
				
			||||
 | 
					  `executor_fail_retry_count` int NOT NULL DEFAULT '0' COMMENT '失败重试次数', | 
				
			||||
 | 
					  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型', | 
				
			||||
 | 
					  `glue_source` mediumtext COMMENT 'GLUE源代码', | 
				
			||||
 | 
					  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注', | 
				
			||||
 | 
					  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间', | 
				
			||||
 | 
					  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔', | 
				
			||||
 | 
					  `trigger_status` tinyint NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行', | 
				
			||||
 | 
					  `trigger_last_time` bigint NOT NULL DEFAULT '0' COMMENT '上次调度时间', | 
				
			||||
 | 
					  `trigger_next_time` bigint NOT NULL DEFAULT '0' COMMENT '下次调度时间', | 
				
			||||
 | 
					  PRIMARY KEY (`id`) | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_lock definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_lock` ( | 
				
			||||
 | 
					  `lock_name` varchar(50) NOT NULL COMMENT '锁名称', | 
				
			||||
 | 
					  PRIMARY KEY (`lock_name`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_log definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_log` ( | 
				
			||||
 | 
					  `id` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `job_group` int NOT NULL COMMENT '执行器主键ID', | 
				
			||||
 | 
					  `job_id` int NOT NULL COMMENT '任务,主键ID', | 
				
			||||
 | 
					  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址', | 
				
			||||
 | 
					  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler', | 
				
			||||
 | 
					  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数', | 
				
			||||
 | 
					  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2', | 
				
			||||
 | 
					  `executor_fail_retry_count` int NOT NULL DEFAULT '0' COMMENT '失败重试次数', | 
				
			||||
 | 
					  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间', | 
				
			||||
 | 
					  `trigger_code` int NOT NULL COMMENT '调度-结果', | 
				
			||||
 | 
					  `trigger_msg` text COMMENT '调度-日志', | 
				
			||||
 | 
					  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间', | 
				
			||||
 | 
					  `handle_code` int NOT NULL COMMENT '执行-状态', | 
				
			||||
 | 
					  `handle_msg` text COMMENT '执行-日志', | 
				
			||||
 | 
					  `alarm_status` tinyint NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败', | 
				
			||||
 | 
					  PRIMARY KEY (`id`), | 
				
			||||
 | 
					  KEY `I_trigger_time` (`trigger_time`), | 
				
			||||
 | 
					  KEY `I_handle_code` (`handle_code`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_log_report definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_log_report` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间', | 
				
			||||
 | 
					  `running_count` int NOT NULL DEFAULT '0' COMMENT '运行中-日志数量', | 
				
			||||
 | 
					  `suc_count` int NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量', | 
				
			||||
 | 
					  `fail_count` int NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量', | 
				
			||||
 | 
					  `update_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  PRIMARY KEY (`id`), | 
				
			||||
 | 
					  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_logglue definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_logglue` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `job_id` int NOT NULL COMMENT '任务,主键ID', | 
				
			||||
 | 
					  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型', | 
				
			||||
 | 
					  `glue_source` mediumtext COMMENT 'GLUE源代码', | 
				
			||||
 | 
					  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注', | 
				
			||||
 | 
					  `add_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  `update_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  PRIMARY KEY (`id`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_registry definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_registry` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `registry_group` varchar(50) NOT NULL, | 
				
			||||
 | 
					  `registry_key` varchar(255) NOT NULL, | 
				
			||||
 | 
					  `registry_value` varchar(255) NOT NULL, | 
				
			||||
 | 
					  `update_time` datetime DEFAULT NULL, | 
				
			||||
 | 
					  PRIMARY KEY (`id`), | 
				
			||||
 | 
					  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`) | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform.xxl_job_user definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_user` ( | 
				
			||||
 | 
					  `id` int NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `username` varchar(50) NOT NULL COMMENT '账号', | 
				
			||||
 | 
					  `password` varchar(50) NOT NULL COMMENT '密码', | 
				
			||||
 | 
					  `role` tinyint NOT NULL COMMENT '角色:0-普通用户、1-管理员', | 
				
			||||
 | 
					  `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割', | 
				
			||||
 | 
					  PRIMARY KEY (`id`), | 
				
			||||
 | 
					  UNIQUE KEY `i_username` (`username`) USING BTREE | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; | 
				
			||||
@ -0,0 +1,127 @@ | 
				
			|||||
 | 
					-- platform2.xxl_job_group definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_group` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `APP_NAME` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `TITLE` varchar(12) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `ADDRESS_TYPE` tinyint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `ADDRESS_LIST` longtext COLLATE utf8mb4_general_ci COMMENT '执行器地址列表,多地址逗号分隔', | 
				
			||||
 | 
					  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新日期', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB 组表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_info definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_info` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `JOB_GROUP` int NOT NULL, | 
				
			||||
 | 
					  `JOB_DESC` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `ADD_TIME` datetime DEFAULT NULL COMMENT '创建日期', | 
				
			||||
 | 
					  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新日期', | 
				
			||||
 | 
					  `AUTHOR` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '作者', | 
				
			||||
 | 
					  `ALARM_EMAIL` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '报警邮件', | 
				
			||||
 | 
					  `SCHEDULE_TYPE` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'NONE', | 
				
			||||
 | 
					  `SCHEDULE_CONF` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '调度配置,值含义取决于调度类型', | 
				
			||||
 | 
					  `MISFIRE_STRATEGY` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT 'DO_NOTHING', | 
				
			||||
 | 
					  `EXECUTOR_ROUTE_STRATEGY` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器路由策略', | 
				
			||||
 | 
					  `EXECUTOR_HANDLER` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器任务handler', | 
				
			||||
 | 
					  `EXECUTOR_PARAM` varchar(512) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器任务参数', | 
				
			||||
 | 
					  `EXECUTOR_BLOCK_STRATEGY` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '阻塞处理策略', | 
				
			||||
 | 
					  `EXECUTOR_TIMEOUT` int NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `EXECUTOR_FAIL_RETRY_COUNT` int NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `GLUE_TYPE` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'GLUE类型', | 
				
			||||
 | 
					  `GLUE_SOURCE` longtext COLLATE utf8mb4_general_ci COMMENT 'GLUE源代码', | 
				
			||||
 | 
					  `GLUE_REMARK` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'GLUE备注', | 
				
			||||
 | 
					  `GLUE_UPDATETIME` datetime DEFAULT NULL COMMENT 'GLUE更新时间', | 
				
			||||
 | 
					  `CHILD_JOBID` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '子任务ID,多个逗号分隔', | 
				
			||||
 | 
					  `TRIGGER_STATUS` tinyint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `TRIGGER_LAST_TIME` bigint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `TRIGGER_NEXT_TIME` bigint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB信息表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_lock definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_lock` ( | 
				
			||||
 | 
					  `LOCK_NAME` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '锁名称', | 
				
			||||
 | 
					  PRIMARY KEY (`LOCK_NAME`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB 锁表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_log definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_log` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `JOB_GROUP` int NOT NULL, | 
				
			||||
 | 
					  `JOB_ID` int NOT NULL, | 
				
			||||
 | 
					  `EXECUTOR_ADDRESS` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器地址,本次执行的地址', | 
				
			||||
 | 
					  `EXECUTOR_HANDLER` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器任务handler', | 
				
			||||
 | 
					  `EXECUTOR_PARAM` varchar(512) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器任务参数', | 
				
			||||
 | 
					  `EXECUTOR_SHARDING_PARAM` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2', | 
				
			||||
 | 
					  `EXECUTOR_FAIL_RETRY_COUNT` bigint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `TRIGGER_TIME` datetime DEFAULT NULL COMMENT '调度-时间', | 
				
			||||
 | 
					  `TRIGGER_CODE` int NOT NULL, | 
				
			||||
 | 
					  `TRIGGER_MSG` longtext COLLATE utf8mb4_general_ci COMMENT '调度-日志', | 
				
			||||
 | 
					  `HANDLE_TIME` datetime DEFAULT NULL COMMENT '执行-时间', | 
				
			||||
 | 
					  `HANDLE_CODE` int NOT NULL, | 
				
			||||
 | 
					  `HANDLE_MSG` longtext COLLATE utf8mb4_general_ci COMMENT '执行-日志', | 
				
			||||
 | 
					  `ALARM_STATUS` tinyint NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`), | 
				
			||||
 | 
					  KEY `IDX_XXL_JOB_LOG_TRIGGER_TIME` (`TRIGGER_TIME`), | 
				
			||||
 | 
					  KEY `IDX_XXL_JOB_LOG_HANDLE_CODE` (`HANDLE_CODE`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB日志表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_log_report definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_log_report` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `TRIGGER_DAY` datetime DEFAULT NULL COMMENT '调度-时间', | 
				
			||||
 | 
					  `RUNNING_COUNT` int NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `SUC_COUNT` int NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `FAIL_COUNT` int NOT NULL DEFAULT '0', | 
				
			||||
 | 
					  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新日期', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`), | 
				
			||||
 | 
					  UNIQUE KEY `IDX_XXL_JOB_LOG_REPORT_TRIGGER_DAY` (`TRIGGER_DAY`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB日志报告表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_logglue definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_logglue` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `JOB_ID` int NOT NULL, | 
				
			||||
 | 
					  `GLUE_TYPE` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'GLUE类型', | 
				
			||||
 | 
					  `GLUE_SOURCE` longtext COLLATE utf8mb4_general_ci COMMENT 'GLUE源代码', | 
				
			||||
 | 
					  `GLUE_REMARK` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT 'GLUE备注', | 
				
			||||
 | 
					  `ADD_TIME` datetime DEFAULT NULL COMMENT '创建日期', | 
				
			||||
 | 
					  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新日期', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB GLUE 表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_registry definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_registry` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `REGISTRY_GROUP` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `REGISTRY_KEY` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `REGISTRY_VALUE` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '更新日期', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`), | 
				
			||||
 | 
					  UNIQUE KEY `REGISTRY_GROUP` (`REGISTRY_GROUP`,`REGISTRY_KEY`,`REGISTRY_VALUE`) | 
				
			||||
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB 注册表'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					-- platform2.xxl_job_user definition | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CREATE TABLE `xxl_job_user` ( | 
				
			||||
 | 
					  `ID` bigint NOT NULL AUTO_INCREMENT, | 
				
			||||
 | 
					  `USERNAME` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `PASSWORD` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, | 
				
			||||
 | 
					  `ROLE` tinyint NOT NULL, | 
				
			||||
 | 
					  `PERMISSION` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割', | 
				
			||||
 | 
					  PRIMARY KEY (`ID`) | 
				
			||||
 | 
					) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='JOB 用户表'; | 
				
			||||
@ -0,0 +1,322 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <div> | 
				
			||||
 | 
					    <div class="row q-gutter-x-md q-gutter-y-sm"> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense :options="['ksdjlfsd', 'sdkjfklsd']" /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					      <q-input label="loginName" outlined dense /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <TableAction title="User List" :no-action-icon="props.noActionIcon" :actions="tableActions"></TableAction> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <q-table flat bordered separator="cell" :rows="data" :columns="columns" row-key="name"> | 
				
			||||
 | 
					      <template #header="headerProps"> | 
				
			||||
 | 
					        <q-tr :props="headerProps"> | 
				
			||||
 | 
					          <q-th auto-width /> | 
				
			||||
 | 
					          <q-th v-for="col in headerProps.cols" :key="col.name" :props="headerProps"> | 
				
			||||
 | 
					            {{ col.label }} | 
				
			||||
 | 
					          </q-th> | 
				
			||||
 | 
					        </q-tr> | 
				
			||||
 | 
					      </template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      <template #body="bodyProps"> | 
				
			||||
 | 
					        <q-tr :props="bodyProps"> | 
				
			||||
 | 
					          <q-td auto-width> | 
				
			||||
 | 
					            <q-checkbox v-model="bodyProps.row.selected" flat /> | 
				
			||||
 | 
					            <q-btn size="sm" dense flat :icon="bodyProps.expand ? 'bi-dash-lg' : 'bi-plus-lg'" @click="bodyProps.expand = !bodyProps.expand" /> | 
				
			||||
 | 
					            <q-icon name="sym_o_folder_open" size="sm"></q-icon> | 
				
			||||
 | 
					          </q-td> | 
				
			||||
 | 
					          <q-td v-for="col in bodyProps.cols" :key="col.name" :props="bodyProps"> | 
				
			||||
 | 
					            <div v-dompurify-html="col.value"></div> | 
				
			||||
 | 
					          </q-td> | 
				
			||||
 | 
					        </q-tr> | 
				
			||||
 | 
					        <q-tr v-for="child in bodyProps.row.children" v-show="bodyProps.expand" :key="child.name" :props="bodyProps"> | 
				
			||||
 | 
					          <q-td auto-width></q-td> | 
				
			||||
 | 
					          <q-td v-for="col in bodyProps.cols" :key="col.name" :props="bodyProps"> | 
				
			||||
 | 
					            {{ child[col.name] }} | 
				
			||||
 | 
					          </q-td> | 
				
			||||
 | 
					        </q-tr> | 
				
			||||
 | 
					      </template> | 
				
			||||
 | 
					    </q-table> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script setup lang="ts"> | 
				
			||||
 | 
					import { ref, computed, onMounted } from 'vue'; | 
				
			||||
 | 
					import { useI18n } from 'vue-i18n'; | 
				
			||||
 | 
					import { axios, Tools, TreeBuilder } from '@/platform'; | 
				
			||||
 | 
					import TableAction from './TableAction.vue'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const props = defineProps({ | 
				
			||||
 | 
					  tree: { type: Boolean, default: false }, | 
				
			||||
 | 
					  title: { type: String, default: '' }, | 
				
			||||
 | 
					  noActionIcon: { type: Boolean, default: false }, | 
				
			||||
 | 
					  targetObjectName: { type: String, default: '' }, | 
				
			||||
 | 
					  actions: { | 
				
			||||
 | 
					    type: Array, | 
				
			||||
 | 
					    default: () => { | 
				
			||||
 | 
					      return []; | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  columns: { | 
				
			||||
 | 
					    type: Array, | 
				
			||||
 | 
					    default: () => { | 
				
			||||
 | 
					      return []; | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  autoFetchData: { type: Boolean, default: false }, | 
				
			||||
 | 
					  dataUrl: { type: String, default: undefined }, | 
				
			||||
 | 
					  fetchDataUrl: { type: String, default: undefined }, | 
				
			||||
 | 
					  addDataUrl: { type: String, default: undefined }, | 
				
			||||
 | 
					  removeDataUrl: { type: String, default: undefined }, | 
				
			||||
 | 
					  updateDataUrl: { type: String, default: undefined }, | 
				
			||||
 | 
					}); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const { t } = useI18n(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const defaultTableActions = { | 
				
			||||
 | 
					  separator: { | 
				
			||||
 | 
					    separator: true, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  query: { | 
				
			||||
 | 
					    name: 'query', | 
				
			||||
 | 
					    label: t('query'), | 
				
			||||
 | 
					    icon: 'bi-search', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('query'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  refresh: { | 
				
			||||
 | 
					    name: 'refresh', | 
				
			||||
 | 
					    label: t('refresh'), | 
				
			||||
 | 
					    icon: 'bi-arrow-clockwise', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('refresh'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  add: { | 
				
			||||
 | 
					    name: 'add', | 
				
			||||
 | 
					    label: t('addNew'), | 
				
			||||
 | 
					    icon: 'bi-plus-lg', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('add'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  clone: { | 
				
			||||
 | 
					    name: 'clone', | 
				
			||||
 | 
					    label: t('clone'), | 
				
			||||
 | 
					    icon: 'content_copy', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('clone'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  edit: { | 
				
			||||
 | 
					    name: 'edit', | 
				
			||||
 | 
					    label: t('edit'), | 
				
			||||
 | 
					    icon: 'bi-pencil-square', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('edit'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  remove: { | 
				
			||||
 | 
					    name: 'remove', | 
				
			||||
 | 
					    label: t('delete'), | 
				
			||||
 | 
					    icon: 'bi-x-lg', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('remove'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  removeAll: { | 
				
			||||
 | 
					    name: 'removeAll', | 
				
			||||
 | 
					    label: t('deleteAll'), | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('removeAll'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  detail: { | 
				
			||||
 | 
					    name: 'detail', | 
				
			||||
 | 
					    label: t('detail'), | 
				
			||||
 | 
					    icon: 'bi-info-circle', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('detail'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  expandAll: { | 
				
			||||
 | 
					    name: 'expandAll', | 
				
			||||
 | 
					    label: t('expandAll'), | 
				
			||||
 | 
					    icon: 'bi-plus-square', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('expandAll'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  selectAll: { | 
				
			||||
 | 
					    name: 'selectAll', | 
				
			||||
 | 
					    label: t('selectAll'), | 
				
			||||
 | 
					    icon: 'bi-check-square', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('selectAll'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  addTop: { | 
				
			||||
 | 
					    name: 'addTop', | 
				
			||||
 | 
					    label: t('addTop', { object: props.targetObjectName }), | 
				
			||||
 | 
					    icon: 'addTop', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('addTop'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  addChild: { | 
				
			||||
 | 
					    name: 'addChild', | 
				
			||||
 | 
					    label: t('addChild', { object: props.targetObjectName }), | 
				
			||||
 | 
					    icon: 'addChild', | 
				
			||||
 | 
					    click: () => { | 
				
			||||
 | 
					      console.log('addChild'); | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const tableActions = []; | 
				
			||||
 | 
					if (props.actions && props.actions.length > 0) { | 
				
			||||
 | 
					  for (const action of props.actions) { | 
				
			||||
 | 
					    if (Tools.isString(action)) { | 
				
			||||
 | 
					      tableActions.push(defaultTableActions[action]); | 
				
			||||
 | 
					    } else if (Tools.isObject(action)) { | 
				
			||||
 | 
					      tableActions.push(action); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const data = ref([]); | 
				
			||||
 | 
					if (props.autoFetchData) { | 
				
			||||
 | 
					  axios.get(props.fetchDataUrl ? props.fetchDataUrl : props.dataUrl).then((response) => { | 
				
			||||
 | 
					    if (props.tree) { | 
				
			||||
 | 
					      TreeBuilder.build(response.data); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					    data.value = response.data; | 
				
			||||
 | 
					  }); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const selected = ref([]); | 
				
			||||
 | 
					const val2 = ref(true); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const rows = ref([ | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Frozen Yogurt', | 
				
			||||
 | 
					    calories: 159, | 
				
			||||
 | 
					    fat: 6.0, | 
				
			||||
 | 
					    carbs: 24, | 
				
			||||
 | 
					    protein: 4.0, | 
				
			||||
 | 
					    sodium: 87, | 
				
			||||
 | 
					    calcium: '14%', | 
				
			||||
 | 
					    iron: '1%', | 
				
			||||
 | 
					    selected: true, | 
				
			||||
 | 
					    children: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Ice cream sandwich3', | 
				
			||||
 | 
					        calories: 237, | 
				
			||||
 | 
					        fat: 9.0, | 
				
			||||
 | 
					        carbs: 37, | 
				
			||||
 | 
					        protein: 4.3, | 
				
			||||
 | 
					        sodium: 129, | 
				
			||||
 | 
					        calcium: '8%', | 
				
			||||
 | 
					        iron: '1%', | 
				
			||||
 | 
					      }, | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Ice cream sandwich', | 
				
			||||
 | 
					    calories: 237, | 
				
			||||
 | 
					    fat: 9.0, | 
				
			||||
 | 
					    carbs: 37, | 
				
			||||
 | 
					    protein: 4.3, | 
				
			||||
 | 
					    sodium: 129, | 
				
			||||
 | 
					    calcium: '8%', | 
				
			||||
 | 
					    iron: '1%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Eclair', | 
				
			||||
 | 
					    calories: 262, | 
				
			||||
 | 
					    fat: 16.0, | 
				
			||||
 | 
					    carbs: 23, | 
				
			||||
 | 
					    protein: 6.0, | 
				
			||||
 | 
					    sodium: 337, | 
				
			||||
 | 
					    calcium: '6%', | 
				
			||||
 | 
					    iron: '7%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Cupcake', | 
				
			||||
 | 
					    calories: 305, | 
				
			||||
 | 
					    fat: 3.7, | 
				
			||||
 | 
					    carbs: 67, | 
				
			||||
 | 
					    protein: 4.3, | 
				
			||||
 | 
					    sodium: 413, | 
				
			||||
 | 
					    calcium: '3%', | 
				
			||||
 | 
					    iron: '8%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Gingerbread', | 
				
			||||
 | 
					    calories: 356, | 
				
			||||
 | 
					    fat: 16.0, | 
				
			||||
 | 
					    carbs: 49, | 
				
			||||
 | 
					    protein: 3.9, | 
				
			||||
 | 
					    sodium: 327, | 
				
			||||
 | 
					    calcium: '7%', | 
				
			||||
 | 
					    iron: '16%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Jelly bean', | 
				
			||||
 | 
					    calories: 375, | 
				
			||||
 | 
					    fat: 0.0, | 
				
			||||
 | 
					    carbs: 94, | 
				
			||||
 | 
					    protein: 0.0, | 
				
			||||
 | 
					    sodium: 50, | 
				
			||||
 | 
					    calcium: '0%', | 
				
			||||
 | 
					    iron: '0%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: '<span style="color: red">This should be red.</span>', | 
				
			||||
 | 
					    calories: 392, | 
				
			||||
 | 
					    fat: 0.2, | 
				
			||||
 | 
					    carbs: 98, | 
				
			||||
 | 
					    protein: 0, | 
				
			||||
 | 
					    sodium: 38, | 
				
			||||
 | 
					    calcium: '0%', | 
				
			||||
 | 
					    iron: '2%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Honeycomb', | 
				
			||||
 | 
					    calories: 408, | 
				
			||||
 | 
					    fat: 3.2, | 
				
			||||
 | 
					    carbs: 87, | 
				
			||||
 | 
					    protein: 6.5, | 
				
			||||
 | 
					    sodium: 562, | 
				
			||||
 | 
					    calcium: '0%', | 
				
			||||
 | 
					    iron: '45%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'Donut', | 
				
			||||
 | 
					    calories: 452, | 
				
			||||
 | 
					    fat: 25.0, | 
				
			||||
 | 
					    carbs: 51, | 
				
			||||
 | 
					    protein: 4.9, | 
				
			||||
 | 
					    sodium: 326, | 
				
			||||
 | 
					    calcium: '2%', | 
				
			||||
 | 
					    iron: '22%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'KitKat', | 
				
			||||
 | 
					    calories: 518, | 
				
			||||
 | 
					    fat: 26.0, | 
				
			||||
 | 
					    carbs: 65, | 
				
			||||
 | 
					    protein: 7, | 
				
			||||
 | 
					    sodium: 54, | 
				
			||||
 | 
					    calcium: '12%', | 
				
			||||
 | 
					    iron: '6%', | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					]); | 
				
			||||
 | 
					</script> | 
				
			||||
@ -0,0 +1,39 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <q-table :binary-state-sort="true" column-sort-order="ad" :v-bind="attrs"> | 
				
			||||
 | 
					    <template #top> | 
				
			||||
 | 
					      <div class="row"> | 
				
			||||
 | 
					        <div class="col">{{ attrs.title }}</div> | 
				
			||||
 | 
					        <div class="col items-end"> | 
				
			||||
 | 
					          <q-btn label="dksfj"></q-btn> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					  </q-table> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script setup lang="ts"> | 
				
			||||
 | 
					import { useAttrs } from 'vue'; | 
				
			||||
 | 
					import { useI18n } from 'vue-i18n'; | 
				
			||||
 | 
					import { Tools } from '@/platform/utils/Tools'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const attrs = useAttrs(); | 
				
			||||
 | 
					const { t } = useI18n(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					for (const column of attrs.columns) { | 
				
			||||
 | 
					  if (Tools.isUndefinedOrNull(column.label)) { | 
				
			||||
 | 
					    column.label = t(column.name); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  if (Tools.isUndefinedOrNull(column.field)) { | 
				
			||||
 | 
					    column.field = column.name; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  if (Tools.isUndefinedOrNull(column.align)) { | 
				
			||||
 | 
					    column.align = 'left'; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  if (Tools.isUndefinedOrNull(column.sortable)) { | 
				
			||||
 | 
					    column.sortable = true; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					  if (Tools.isUndefinedOrNull(column.sortOrder)) { | 
				
			||||
 | 
					    column.sortOrder = 'da'; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					</script> | 
				
			||||
@ -0,0 +1,54 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <w-list-grid | 
				
			||||
 | 
					    :tree="true" | 
				
			||||
 | 
					    title="User List" | 
				
			||||
 | 
					    :no-action-icon="true" | 
				
			||||
 | 
					    :target-object-name="$t('菜单')" | 
				
			||||
 | 
					    :actions="[ | 
				
			||||
 | 
					      'query', | 
				
			||||
 | 
					      'refresh', | 
				
			||||
 | 
					      'expandAll', | 
				
			||||
 | 
					      'selectAll', | 
				
			||||
 | 
					      'separator', | 
				
			||||
 | 
					      'add', | 
				
			||||
 | 
					      'clone', | 
				
			||||
 | 
					      'edit', | 
				
			||||
 | 
					      'remove', | 
				
			||||
 | 
					      'removeAll', | 
				
			||||
 | 
					      'separator', | 
				
			||||
 | 
					      'detail', | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      'addTop', | 
				
			||||
 | 
					      'addChild', | 
				
			||||
 | 
					    ]" | 
				
			||||
 | 
					    :columns="columns" | 
				
			||||
 | 
					    :auto-fetch-data="true" | 
				
			||||
 | 
					    :data-url="Environment.apiContextPath('/api/system/menu/allMenus')" | 
				
			||||
 | 
					  ></w-list-grid> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<script setup lang="ts"> | 
				
			||||
 | 
					import { ref } from 'vue'; | 
				
			||||
 | 
					import { useI18n } from 'vue-i18n'; | 
				
			||||
 | 
					import { Environment } from '@/platform'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const { t } = useI18n(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const columns = [ | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    name: 'name', | 
				
			||||
 | 
					    required: true, | 
				
			||||
 | 
					    label: 'Dessert (100g serving)', | 
				
			||||
 | 
					    align: 'left', | 
				
			||||
 | 
					    field: 'name', | 
				
			||||
 | 
					    sortable: true, | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { name: 'calories', align: 'center', label: 'Calories', field: 'calories', sortable: true }, | 
				
			||||
 | 
					  { name: 'fat', label: 'Fat (g)', field: 'fat', sortable: true }, | 
				
			||||
 | 
					  { name: 'carbs', label: 'Carbs (g)', field: 'carbs' }, | 
				
			||||
 | 
					  { name: 'protein', label: 'Protein (g)', field: 'protein' }, | 
				
			||||
 | 
					  { name: 'sodium', label: 'Sodium (mg)', field: 'sodium' }, | 
				
			||||
 | 
					  { name: 'calcium', label: 'Calcium (%)', field: 'calcium', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) }, | 
				
			||||
 | 
					  { name: 'iron', label: 'Iron (%)', field: 'iron', sortable: true, sort: (a, b) => parseInt(a, 10) - parseInt(b, 10) }, | 
				
			||||
 | 
					]; | 
				
			||||
 | 
					</script> | 
				
			||||
@ -0,0 +1,53 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <div> | 
				
			||||
 | 
					    <w-tree-grid ref="corporationTreeGridRef" title="法人树" label-key="name" :actions="corporationConfigure.actions" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					<script setup lang="ts"> | 
				
			||||
 | 
					import { ref, onMounted, toRaw } from 'vue'; | 
				
			||||
 | 
					import { useRoute } from 'vue-router'; | 
				
			||||
 | 
					import { useI18n } from 'vue-i18n'; | 
				
			||||
 | 
					import { Environment, axios } from '@/platform'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const route = useRoute(); | 
				
			||||
 | 
					const { t } = useI18n(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const corporationTreeGridRef = ref(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const corporationConfigure = { | 
				
			||||
 | 
					  actions: [ | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					      name: 'refresh', | 
				
			||||
 | 
					      label: t('refresh'), | 
				
			||||
 | 
					      click: () => {}, | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					      name: 'addRoot', | 
				
			||||
 | 
					      label: t('system.corporation.action.addTop'), | 
				
			||||
 | 
					      click: () => {}, | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					      name: 'addChild', | 
				
			||||
 | 
					      label: t('system.corporation.action.addChild'), | 
				
			||||
 | 
					      click: () => {}, | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					      name: 'edit', | 
				
			||||
 | 
					      label: t('edit'), | 
				
			||||
 | 
					      click: () => {}, | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					      name: 'delete', | 
				
			||||
 | 
					      label: t('delete'), | 
				
			||||
 | 
					      click: () => {}, | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					  ], | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					onMounted(() => { | 
				
			||||
 | 
					  axios.get(Environment.apiContextPath('/api/system/corporation?pageable=false&sortBy=name')).then((response) => { | 
				
			||||
 | 
					    corporationTreeGridRef.value.setNodes(response.data.content); | 
				
			||||
 | 
					  }); | 
				
			||||
 | 
					}); | 
				
			||||
 | 
					</script> | 
				
			||||
@ -0,0 +1,47 @@ | 
				
			|||||
 | 
					package io.sc.platform.core.util; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import javax.servlet.http.HttpServletRequest; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import inet.ipaddr.IPAddressString; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/** | 
				
			||||
 | 
					 * IP 地址工具类 | 
				
			||||
 | 
					 * @author wangshaoping | 
				
			||||
 | 
					 * | 
				
			||||
 | 
					 */ | 
				
			||||
 | 
					public class IpUtil { | 
				
			||||
 | 
						public static final String UNKNOW_IP ="0.0.0.0"; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						/** | 
				
			||||
 | 
						 * 获取客户端 IP 地址 | 
				
			||||
 | 
						 * @param request Http 请求 | 
				
			||||
 | 
						 * @return 客户端 IP 地址 | 
				
			||||
 | 
						 */ | 
				
			||||
 | 
						public static String getRemoteAddress(HttpServletRequest request){ | 
				
			||||
 | 
							IPAddressString ipAdress =getRemoteIPAddressString(request); | 
				
			||||
 | 
							if(ipAdress!=null){ | 
				
			||||
 | 
								return ipAdress.getAddress().toFullString(); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							return null; | 
				
			||||
 | 
						} | 
				
			||||
 | 
						 | 
				
			||||
 | 
						private static IPAddressString getRemoteIPAddressString(HttpServletRequest request){ | 
				
			||||
 | 
							String ip =request.getHeader("x-forwarded-for"); | 
				
			||||
 | 
							if(ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip)){ | 
				
			||||
 | 
								ip =request.getHeader("Proxy-Client-IP"); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							if(ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip)){ | 
				
			||||
 | 
								ip =request.getHeader("WL-Proxy-Client-IP"); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							if(ip==null || ip.length()==0 || "unknown".equalsIgnoreCase(ip)){ | 
				
			||||
 | 
								ip =request.getRemoteAddr(); | 
				
			||||
 | 
							} | 
				
			||||
 | 
							IPAddressString ipAdress =new IPAddressString(ip); | 
				
			||||
 | 
							if(ipAdress!=null && ipAdress.isIPAddress()){ | 
				
			||||
 | 
								return ipAdress; | 
				
			||||
 | 
							} | 
				
			||||
 | 
							//当无法正确获取IP时,系统采用特殊IP地址作为IP地址
 | 
				
			||||
 | 
							//这样可以避免因为无法获取IP而出现无法认证登录的问题
 | 
				
			||||
 | 
							return new IPAddressString(UNKNOW_IP); | 
				
			||||
 | 
						} | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,124 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<!-- 自动扫描本文件,如果发生变化,则重新初始化日志系统,并设置每隔5秒钟扫描一次 --> | 
				
			||||
 | 
					<configuration debug="false" scan="true" scanPeriod="5 seconds"> | 
				
			||||
 | 
						<!--  | 
				
			||||
 | 
							以下为 logback 的 spring 扩展支持的功能,即支持从 application.properties 文件中获取属性,并在此文件中采用 ${} 方式使用。 | 
				
			||||
 | 
							要使用此功能,必须使用 logback-ext-spring 扩展 jar 包,以 gradle 构建系统,则需要加入以下依赖 | 
				
			||||
 | 
							dependencies { | 
				
			||||
 | 
								compile( | 
				
			||||
 | 
									"org.logback-extensions:logback-ext-spring:0.1.2" | 
				
			||||
 | 
								) | 
				
			||||
 | 
							} | 
				
			||||
 | 
						--> | 
				
			||||
 | 
						<property name="homedir" value="${application.home.dir}"/> | 
				
			||||
 | 
						<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/> | 
				
			||||
 | 
						 | 
				
			||||
 | 
						<!-- 在控制台中输出日志 --> | 
				
			||||
 | 
					    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | 
				
			||||
 | 
					        <encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>INFO</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
						<!-- 在磁盘文件中输出日志(error) --> | 
				
			||||
 | 
					    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					    	<encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/log-error.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/log-error.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>ERROR</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					    <!-- 在磁盘文件中输出日志(warning) --> | 
				
			||||
 | 
					    <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					        <encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/log-warn.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/log-warn.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>WARN</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					    <!-- 在磁盘文件中输出日志(info) --> | 
				
			||||
 | 
					    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					        <encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/log-info.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/log-info.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>INFO</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					    <!-- 在磁盘文件中输出日志(debug) --> | 
				
			||||
 | 
					    <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					        <encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/log-debug.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/log-debug.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>DEBUG</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					    <!-- 在磁盘文件中输出日志(trace) --> | 
				
			||||
 | 
					    <appender name="FILE_TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					        <encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/log-trace.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/log-trace.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					        <filter class="ch.qos.logback.classic.filter.LevelFilter"> | 
				
			||||
 | 
					            <level>TRACE</level> | 
				
			||||
 | 
					            <onMatch>ACCEPT</onMatch> | 
				
			||||
 | 
					            <onMismatch>DENY</onMismatch> | 
				
			||||
 | 
					        </filter> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					     | 
				
			||||
 | 
					    <root level="trace"> | 
				
			||||
 | 
					        <appender-ref ref="STDOUT" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE_ERROR" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE_WARN" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE_INFO" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE_DEBUG" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE_TRACE" /> | 
				
			||||
 | 
					    </root> | 
				
			||||
 | 
					     | 
				
			||||
 | 
					     | 
				
			||||
 | 
					    <!-- 可对不同的日志写入不同的文件示例 --> | 
				
			||||
 | 
					    <!--  | 
				
			||||
 | 
					    <appender name="RULE_ENGINE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | 
				
			||||
 | 
					    	<encoder><pattern>${pattern}</pattern></encoder> | 
				
			||||
 | 
					        <file>${homedir}/logs/rule-engine.log</file> | 
				
			||||
 | 
					        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | 
				
			||||
 | 
					            <fileNamePattern>${homedir}/logs/rule-engine.%d.log</fileNamePattern> | 
				
			||||
 | 
					            <maxHistory>30</maxHistory> | 
				
			||||
 | 
					        </rollingPolicy> | 
				
			||||
 | 
					    </appender> | 
				
			||||
 | 
					     | 
				
			||||
 | 
					    <logger name="org.wsp.engine.rule.core.code" level="debug" additivity="false"> | 
				
			||||
 | 
					        <appender-ref ref="STDOUT" /> | 
				
			||||
 | 
					        <appender-ref ref="FILE" /> | 
				
			||||
 | 
					        <appender-ref ref="RULE_ENGINE_FILE" /> | 
				
			||||
 | 
					    </logger> | 
				
			||||
 | 
					    --> | 
				
			||||
 | 
					</configuration> | 
				
			||||
| 
		 Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 699 KiB  | 
@ -1,102 +1,104 @@ | 
				
			|||||
{ | 
					{ | 
				
			||||
  "name": "io.sc.platform.developer.frontend", | 
					    "name": "io.sc.platform.developer.frontend", | 
				
			||||
  "version": "8.1.13", | 
					    "version": "8.1.19", | 
				
			||||
  "description": "", | 
					    "description": "", | 
				
			||||
  "private": false, | 
					    "private": false, | 
				
			||||
  "keywords": [], | 
					    "keywords": [ | 
				
			||||
  "author": "", | 
					         | 
				
			||||
  "license": "ISC", | 
					    ], | 
				
			||||
  "scripts": { | 
					    "author": "", | 
				
			||||
    "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml", | 
					    "license": "ISC", | 
				
			||||
    "dev": "nodemon", | 
					    "scripts": { | 
				
			||||
    "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack serve --config webpack.env.serve.cjs", | 
					        "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml", | 
				
			||||
    "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack       --config webpack.env.build.cjs", | 
					        "dev": "nodemon", | 
				
			||||
    "prod": "node ./util-components-generator.cjs && cross-env  NODE_ENV=production   webpack       --config webpack.env.prod.cjs", | 
					        "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack serve --config webpack.env.serve.cjs", | 
				
			||||
    "sync": "platform sync" | 
					        "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack       --config webpack.env.build.cjs", | 
				
			||||
  }, | 
					        "prod": "node ./util-components-generator.cjs && cross-env  NODE_ENV=production   webpack       --config webpack.env.prod.cjs", | 
				
			||||
  "engines": { | 
					        "sync": "platform sync" | 
				
			||||
    "node": ">=18", | 
					    }, | 
				
			||||
    "pnpm": ">=7" | 
					    "engines": { | 
				
			||||
  }, | 
					        "node": ">=18", | 
				
			||||
  "publishConfig": { | 
					        "pnpm": ">=7" | 
				
			||||
    "registry": "http://nexus.sc.io:8000/repository/npm-releases/", | 
					    }, | 
				
			||||
    "access": "public" | 
					    "publishConfig": { | 
				
			||||
  }, | 
					        "registry": "http://nexus.sc.io:8000/repository/npm-releases/", | 
				
			||||
  "devDependencies": { | 
					        "access": "public" | 
				
			||||
    "@babel/core": "7.23.2", | 
					    }, | 
				
			||||
    "@babel/preset-env": "7.23.2", | 
					    "devDependencies": { | 
				
			||||
    "@babel/preset-typescript": "7.23.2", | 
					        "@babel/core": "7.23.2", | 
				
			||||
    "@babel/plugin-transform-class-properties": "7.22.5", | 
					        "@babel/preset-env": "7.23.2", | 
				
			||||
    "@babel/plugin-transform-object-rest-spread": "7.22.15", | 
					        "@babel/preset-typescript": "7.23.2", | 
				
			||||
    "@quasar/app-webpack": "3.11.2", | 
					        "@babel/plugin-transform-class-properties": "7.22.5", | 
				
			||||
    "@quasar/cli": "2.3.0", | 
					        "@babel/plugin-transform-object-rest-spread": "7.22.15", | 
				
			||||
    "@types/mockjs": "1.0.9", | 
					        "@quasar/app-webpack": "3.11.2", | 
				
			||||
    "@types/node": "20.8.9", | 
					        "@quasar/cli": "2.3.0", | 
				
			||||
    "@typescript-eslint/eslint-plugin": "6.9.0", | 
					        "@types/mockjs": "1.0.9", | 
				
			||||
    "@typescript-eslint/parser": "6.9.0", | 
					        "@types/node": "20.8.9", | 
				
			||||
    "@vue/compiler-sfc": "3.3.7", | 
					        "@typescript-eslint/eslint-plugin": "6.9.0", | 
				
			||||
    "@webpack-cli/serve": "2.0.5", | 
					        "@typescript-eslint/parser": "6.9.0", | 
				
			||||
    "autoprefixer": "10.4.16", | 
					        "@vue/compiler-sfc": "3.3.7", | 
				
			||||
    "babel-loader": "9.1.3", | 
					        "@webpack-cli/serve": "2.0.5", | 
				
			||||
    "clean-webpack-plugin": "4.0.0", | 
					        "autoprefixer": "10.4.16", | 
				
			||||
    "copy-webpack-plugin": "11.0.0", | 
					        "babel-loader": "9.1.3", | 
				
			||||
    "cross-env": "7.0.3", | 
					        "clean-webpack-plugin": "4.0.0", | 
				
			||||
    "css-loader": "6.8.1", | 
					        "copy-webpack-plugin": "11.0.0", | 
				
			||||
    "eslint": "8.52.0", | 
					        "cross-env": "7.0.3", | 
				
			||||
    "eslint-config-prettier": "9.0.0", | 
					        "css-loader": "6.8.1", | 
				
			||||
    "eslint-plugin-prettier": "5.0.1", | 
					        "eslint": "8.52.0", | 
				
			||||
    "eslint-plugin-vue": "9.18.0", | 
					        "eslint-config-prettier": "9.0.0", | 
				
			||||
    "eslint-webpack-plugin": "4.0.1", | 
					        "eslint-plugin-prettier": "5.0.1", | 
				
			||||
    "html-webpack-plugin": "5.5.3", | 
					        "eslint-plugin-vue": "9.18.0", | 
				
			||||
    "json5": "2.2.3", | 
					        "eslint-webpack-plugin": "4.0.1", | 
				
			||||
    "mini-css-extract-plugin": "2.7.6", | 
					        "html-webpack-plugin": "5.5.3", | 
				
			||||
    "nodemon": "3.0.1", | 
					        "json5": "2.2.3", | 
				
			||||
    "postcss": "8.4.31", | 
					        "mini-css-extract-plugin": "2.7.6", | 
				
			||||
    "postcss-import": "15.1.0", | 
					        "nodemon": "3.0.1", | 
				
			||||
    "postcss-loader": "7.3.3", | 
					        "postcss": "8.4.31", | 
				
			||||
    "postcss-preset-env": "9.2.0", | 
					        "postcss-import": "15.1.0", | 
				
			||||
    "prettier": "3.0.3", | 
					        "postcss-loader": "7.3.3", | 
				
			||||
    "sass": "1.69.5", | 
					        "postcss-preset-env": "9.2.0", | 
				
			||||
    "sass-loader": "13.3.2", | 
					        "prettier": "3.0.3", | 
				
			||||
    "typescript": "5.2.2", | 
					        "sass": "1.69.5", | 
				
			||||
    "vue-loader": "17.3.0", | 
					        "sass-loader": "13.3.2", | 
				
			||||
    "webpack": "5.89.0", | 
					        "typescript": "5.2.2", | 
				
			||||
    "webpack-bundle-analyzer": "4.9.1", | 
					        "vue-loader": "17.3.0", | 
				
			||||
    "webpack-cli": "5.1.4", | 
					        "webpack": "5.89.0", | 
				
			||||
    "webpack-dev-server": "4.15.1", | 
					        "webpack-bundle-analyzer": "4.9.1", | 
				
			||||
    "webpack-merge": "5.10.0" | 
					        "webpack-cli": "5.1.4", | 
				
			||||
  }, | 
					        "webpack-dev-server": "4.15.1", | 
				
			||||
  "dependencies": { | 
					        "webpack-merge": "5.10.0" | 
				
			||||
    "@quasar/extras": "1.16.7", | 
					    }, | 
				
			||||
    "@vueuse/core": "10.3.0", | 
					    "dependencies": { | 
				
			||||
    "axios": "1.5.1", | 
					        "@quasar/extras": "1.16.7", | 
				
			||||
    "dayjs": "1.11.10", | 
					        "@vueuse/core": "10.3.0", | 
				
			||||
    "echarts": "5.4.1", | 
					        "axios": "1.5.1", | 
				
			||||
    "exceljs": "4.3.0", | 
					        "dayjs": "1.11.10", | 
				
			||||
    "file-saver": "2.0.5", | 
					        "echarts": "5.4.1", | 
				
			||||
    "luckyexcel": "1.0.1", | 
					        "exceljs": "4.3.0", | 
				
			||||
    "mockjs": "1.1.0", | 
					        "file-saver": "2.0.5", | 
				
			||||
    "pinia": "2.1.7", | 
					        "luckyexcel": "1.0.1", | 
				
			||||
    "platform-core": "8.1.42", | 
					        "mockjs": "1.1.0", | 
				
			||||
    "quasar": "2.13.0", | 
					        "pinia": "2.1.7", | 
				
			||||
    "tailwindcss": "3.3.5", | 
					        "platform-core": "8.1.45", | 
				
			||||
    "vue": "3.3.7", | 
					        "quasar": "2.13.0", | 
				
			||||
    "vue-dompurify-html": "4.1.4", | 
					        "tailwindcss": "3.3.5", | 
				
			||||
    "vue-i18n": "9.6.0", | 
					        "vue": "3.3.7", | 
				
			||||
    "vue-router": "4.2.5", | 
					        "vue-dompurify-html": "4.1.4", | 
				
			||||
    "@codemirror/autocomplete": "6.11.1", | 
					        "vue-i18n": "9.6.0", | 
				
			||||
    "@codemirror/commands": "6.3.2", | 
					        "vue-router": "4.2.5", | 
				
			||||
    "@codemirror/lang-html": "6.4.7", | 
					        "@codemirror/autocomplete": "6.11.1", | 
				
			||||
    "@codemirror/lang-java": "6.0.1", | 
					        "@codemirror/commands": "6.3.2", | 
				
			||||
    "@codemirror/lang-javascript": "6.2.1", | 
					        "@codemirror/lang-html": "6.4.7", | 
				
			||||
    "@codemirror/lang-json": "6.0.1", | 
					        "@codemirror/lang-java": "6.0.1", | 
				
			||||
    "@codemirror/lang-sql": "6.5.4", | 
					        "@codemirror/lang-javascript": "6.2.1", | 
				
			||||
    "@codemirror/lang-xml": "6.0.2", | 
					        "@codemirror/lang-json": "6.0.1", | 
				
			||||
    "@codemirror/language": "6.9.3", | 
					        "@codemirror/lang-sql": "6.5.4", | 
				
			||||
    "@codemirror/search": "6.5.5", | 
					        "@codemirror/lang-xml": "6.0.2", | 
				
			||||
    "@codemirror/state": "6.3.3", | 
					        "@codemirror/language": "6.9.3", | 
				
			||||
    "@codemirror/view": "6.22.1", | 
					        "@codemirror/search": "6.5.5", | 
				
			||||
    "codemirror": "6.0.1", | 
					        "@codemirror/state": "6.3.3", | 
				
			||||
    "vue-codemirror6": "1.1.31" | 
					        "@codemirror/view": "6.22.1", | 
				
			||||
  } | 
					        "codemirror": "6.0.1", | 
				
			||||
 | 
					        "vue-codemirror6": "1.1.31" | 
				
			||||
 | 
					    } | 
				
			||||
} | 
					} | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					<template> | 
				
			||||
 | 
					  <div class="row q-px-md q-py-md"> | 
				
			||||
 | 
					    {{ $t('menu.developer.plugin.initializer') }} | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <q-table :rows="rows" :columns="columns" row-key="id" :pagination="{ rowsPerPage: 1000 }" /> | 
				
			||||
 | 
					</template> | 
				
			||||
 | 
					<script setup lang="ts"> | 
				
			||||
 | 
					import { ref } from 'vue'; | 
				
			||||
 | 
					import { useI18n } from 'vue-i18n'; | 
				
			||||
 | 
					import { Environment, axios } from 'platform-core'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const { t } = useI18n(); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const columns = [ | 
				
			||||
 | 
					  { width: '20%', field: 'order', label: t('order'), align: 'right' }, | 
				
			||||
 | 
					  { width: '40%', field: 'name', label: t('name'), format: (value) => t(value), align: 'left' }, | 
				
			||||
 | 
					  { width: '40%', field: 'description', label: t('description'), format: (value) => t(value), align: 'left' }, | 
				
			||||
 | 
					  { width: '40%', field: 'id', label: t('className'), align: 'left' }, | 
				
			||||
 | 
					]; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const rows = ref([]); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					axios.get(Environment.apiContextPath('/api/developer/plugins/initializer')).then((response) => { | 
				
			||||
 | 
					  rows.value = response.data; | 
				
			||||
 | 
					}); | 
				
			||||
 | 
					</script> | 
				
			||||
@ -0,0 +1,31 @@ | 
				
			|||||
 | 
					package io.sc.platform.developer.plugins.controller; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.core.annotation.IgnoreResponseBodyAdvice; | 
				
			||||
 | 
					import io.sc.platform.core.initializer.ApplicationInitializer; | 
				
			||||
 | 
					import io.sc.platform.core.util.Sorter; | 
				
			||||
 | 
					import io.sc.platform.developer.plugins.wrapper.InitializerWrapper; | 
				
			||||
 | 
					import org.springframework.stereotype.Controller; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.GetMapping; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.RequestMapping; | 
				
			||||
 | 
					import org.springframework.web.bind.annotation.ResponseBody; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.ArrayList; | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					import java.util.ServiceLoader; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@Controller | 
				
			||||
 | 
					@RequestMapping("/api/developer/plugins/initializer") | 
				
			||||
 | 
					public class InitializerWebController { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @GetMapping("") | 
				
			||||
 | 
					    @ResponseBody | 
				
			||||
 | 
					    public List<InitializerWrapper> initializer(){ | 
				
			||||
 | 
					        List<ApplicationInitializer> initializers =new ArrayList<>(); | 
				
			||||
 | 
					        ServiceLoader<ApplicationInitializer> loader = ServiceLoader.load(ApplicationInitializer.class,Thread.currentThread().getContextClassLoader()); | 
				
			||||
 | 
					        loader.iterator().forEachRemaining(item -> { | 
				
			||||
 | 
					            initializers.add(item); | 
				
			||||
 | 
					        }); | 
				
			||||
 | 
					        Sorter.sort(initializers); | 
				
			||||
 | 
					        return InitializerWrapper.from(initializers); | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,67 @@ | 
				
			|||||
 | 
					package io.sc.platform.developer.plugins.wrapper; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.core.initializer.ApplicationInitializer; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.ArrayList; | 
				
			||||
 | 
					import java.util.Collections; | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class InitializerWrapper { | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					    private String description; | 
				
			||||
 | 
					    private int order; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public static List<InitializerWrapper> from(List<ApplicationInitializer> initializers){ | 
				
			||||
 | 
					        if(initializers==null || initializers.isEmpty()){ | 
				
			||||
 | 
					            return Collections.emptyList(); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        List<InitializerWrapper> wrappers =new ArrayList<>(); | 
				
			||||
 | 
					        for(ApplicationInitializer initializer : initializers){ | 
				
			||||
 | 
					            wrappers.add(from(initializer)); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        return wrappers; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public static InitializerWrapper from(ApplicationInitializer initializer){ | 
				
			||||
 | 
					        InitializerWrapper wrapper =new InitializerWrapper(); | 
				
			||||
 | 
					        wrapper.setId(initializer.getId()); | 
				
			||||
 | 
					        wrapper.setName(initializer.getName()); | 
				
			||||
 | 
					        wrapper.setDescription(initializer.getDescription()); | 
				
			||||
 | 
					        wrapper.setOrder(initializer.getOrder()); | 
				
			||||
 | 
					        return wrapper; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getName() { | 
				
			||||
 | 
					        return name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setName(String name) { | 
				
			||||
 | 
					        this.name = name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDescription() { | 
				
			||||
 | 
					        return description; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDescription(String description) { | 
				
			||||
 | 
					        this.description = description; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public int getOrder() { | 
				
			||||
 | 
					        return order; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setOrder(int order) { | 
				
			||||
 | 
					        this.order = order; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					{ | 
				
			||||
 | 
					    "includes":[ | 
				
			||||
 | 
					        "io.sc.platform.developer.plugins.controller" | 
				
			||||
 | 
					    ] | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,98 @@ | 
				
			|||||
 | 
					package io.sc.platform.flowable.api; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.orm.api.vo.CorporationAuditorVo; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.Date; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class AgentVo extends CorporationAuditorVo { | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					    private String loginName; | 
				
			||||
 | 
					    private String userName; | 
				
			||||
 | 
					    private String agentLoginName; | 
				
			||||
 | 
					    private String agentUserName; | 
				
			||||
 | 
					    private Date startDate; | 
				
			||||
 | 
					    private Date endDate; | 
				
			||||
 | 
					    private String reasons; | 
				
			||||
 | 
					    private Boolean effective; | 
				
			||||
 | 
					    private String comments; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getLoginName() { | 
				
			||||
 | 
					        return loginName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setLoginName(String loginName) { | 
				
			||||
 | 
					        this.loginName = loginName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getUserName() { | 
				
			||||
 | 
					        return userName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setUserName(String userName) { | 
				
			||||
 | 
					        this.userName = userName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getAgentLoginName() { | 
				
			||||
 | 
					        return agentLoginName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setAgentLoginName(String agentLoginName) { | 
				
			||||
 | 
					        this.agentLoginName = agentLoginName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getAgentUserName() { | 
				
			||||
 | 
					        return agentUserName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setAgentUserName(String agentUserName) { | 
				
			||||
 | 
					        this.agentUserName = agentUserName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Date getStartDate() { | 
				
			||||
 | 
					        return startDate; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setStartDate(Date startDate) { | 
				
			||||
 | 
					        this.startDate = startDate; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Date getEndDate() { | 
				
			||||
 | 
					        return endDate; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setEndDate(Date endDate) { | 
				
			||||
 | 
					        this.endDate = endDate; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getReasons() { | 
				
			||||
 | 
					        return reasons; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setReasons(String reasons) { | 
				
			||||
 | 
					        this.reasons = reasons; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Boolean getEffective() { | 
				
			||||
 | 
					        return effective; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setEffective(Boolean effective) { | 
				
			||||
 | 
					        this.effective = effective; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getComments() { | 
				
			||||
 | 
					        return comments; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setComments(String comments) { | 
				
			||||
 | 
					        this.comments = comments; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,97 @@ | 
				
			|||||
 | 
					package io.sc.platform.flowable.api; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.flowable.enums.ProcessStatus; | 
				
			||||
 | 
					import io.sc.platform.orm.api.vo.CorporationAuditorVo; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class ProcessVo extends CorporationAuditorVo { | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					    private String category; | 
				
			||||
 | 
					    private String key; | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					    private String description; | 
				
			||||
 | 
					    private String deployedId; | 
				
			||||
 | 
					    private Integer version; | 
				
			||||
 | 
					    private String xml; | 
				
			||||
 | 
					    private ProcessStatus status; | 
				
			||||
 | 
					    private Boolean canClaimTask; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getCategory() { | 
				
			||||
 | 
					        return category; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setCategory(String category) { | 
				
			||||
 | 
					        this.category = category; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getKey() { | 
				
			||||
 | 
					        return key; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setKey(String key) { | 
				
			||||
 | 
					        this.key = key; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getName() { | 
				
			||||
 | 
					        return name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setName(String name) { | 
				
			||||
 | 
					        this.name = name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDescription() { | 
				
			||||
 | 
					        return description; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDescription(String description) { | 
				
			||||
 | 
					        this.description = description; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getDeployedId() { | 
				
			||||
 | 
					        return deployedId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setDeployedId(String deployedId) { | 
				
			||||
 | 
					        this.deployedId = deployedId; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Integer getVersion() { | 
				
			||||
 | 
					        return version; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setVersion(Integer version) { | 
				
			||||
 | 
					        this.version = version; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getXml() { | 
				
			||||
 | 
					        return xml; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setXml(String xml) { | 
				
			||||
 | 
					        this.xml = xml; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public ProcessStatus getStatus() { | 
				
			||||
 | 
					        return status; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setStatus(ProcessStatus status) { | 
				
			||||
 | 
					        this.status = status; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Boolean getCanClaimTask() { | 
				
			||||
 | 
					        return canClaimTask; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setCanClaimTask(Boolean canClaimTask) { | 
				
			||||
 | 
					        this.canClaimTask = canClaimTask; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -1,11 +1,11 @@ | 
				
			|||||
package io.sc.platform.flowable.jpa.repository; | 
					package io.sc.platform.flowable.jpa.repository; | 
				
			||||
 | 
					
 | 
				
			||||
import io.sc.platform.flowable.jpa.entity.Agent; | 
					import io.sc.platform.flowable.jpa.entity.AgentEntity; | 
				
			||||
import io.sc.platform.orm.repository.DaoRepository; | 
					import io.sc.platform.orm.repository.DaoRepository; | 
				
			||||
 | 
					
 | 
				
			||||
import java.util.List; | 
					import java.util.List; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
public interface AgentRepository extends DaoRepository<Agent,String> { | 
					public interface AgentRepository extends DaoRepository<AgentEntity,String> { | 
				
			||||
	public List<Agent> findByLoginNameAndEffective(String loginName,Boolean effective); | 
						public List<AgentEntity> findByLoginNameAndEffective(String loginName, Boolean effective); | 
				
			||||
} | 
					} | 
				
			||||
 | 
				
			|||||
@ -1,5 +1,6 @@ | 
				
			|||||
{ | 
					{ | 
				
			||||
    "includes":[ | 
					    "includes":[ | 
				
			||||
 | 
					        "io/sc/platform/flowable/i18n/initializer", | 
				
			||||
        "io/sc/platform/flowable/i18n/enums" | 
					        "io/sc/platform/flowable/i18n/enums" | 
				
			||||
    ] | 
					    ] | 
				
			||||
} | 
					} | 
				
			||||
@ -0,0 +1,2 @@ | 
				
			|||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.name=Sample Process Dictionary Initializer | 
				
			||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.description=initialize sample process dictionary if not exists | 
				
			||||
@ -0,0 +1,2 @@ | 
				
			|||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.name=\u793A\u4F8B\u6D41\u7A0B\u6578\u64DA\u5B57\u5178\u59CB\u5316\u5668 | 
				
			||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.description=\u7576\u7CFB\u7D71\u7F3A\u5931\u793A\u4F8B\u6D41\u7A0B\u6578\u64DA\u5B57\u5178\u6642, \u81EA\u52D5\u5275\u5EFA\u9ED8\u8A8D\u793A\u4F8B\u6D41\u7A0B\u6578\u64DA\u5B57\u5178 | 
				
			||||
@ -0,0 +1,2 @@ | 
				
			|||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.name=\u793A\u4F8B\u6D41\u7A0B\u6570\u636E\u5B57\u5178\u521D\u59CB\u5316\u5668 | 
				
			||||
 | 
					io.sc.platform.flowable.initializer.SampleWorkFlowSystemDictionaryInitializer.description=\u5F53\u7CFB\u7EDF\u7F3A\u5931\u793A\u4F8B\u6D41\u7A0B\u6570\u636E\u5B57\u5178\u65F6, \u81EA\u52A8\u521B\u5EFA\u9ED8\u8BA4\u793A\u4F8B\u6D41\u7A0B\u6570\u636E\u5B57\u5178 | 
				
			||||
@ -1,7 +1,11 @@ | 
				
			|||||
window.APP = {};                                    // 在浏览器 window 对象中新建名为 APP 的变量, 用于存放应用对象的容器
 | 
					// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量
 | 
				
			||||
window.APP.configure ={                             // 全局配置存储容器
 | 
					window.APP = {}; | 
				
			||||
    webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', // 应用上下文路径
 | 
					// 全局配置
 | 
				
			||||
 | 
					window.APP.configure ={ | 
				
			||||
 | 
					    // 应用上下文路径
 | 
				
			||||
 | 
					    webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', | 
				
			||||
 | 
					    // 默认后端 API 请求的服务地址前缀
 | 
				
			||||
    apiContextPaths: { | 
					    apiContextPaths: { | 
				
			||||
      DEFAULT: '[(@{/})]'.startsWith('[')     ? 'http://localhost:8080/' : '[(@{/})]', // 后端 API 请求的服务地址前缀
 | 
					      DEFAULT: '[(@{/})]'.startsWith('[')     ? 'http://localhost:8080/' : '[(@{/})]' | 
				
			||||
    } | 
					    } | 
				
			||||
} | 
					}; | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					package io.sc.platform.job.core.enums; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public enum ExecutorAddressType { | 
				
			||||
 | 
					    AUTO,       // 自动注册
 | 
				
			||||
 | 
					    MANUAL;     // 手工录入
 | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					dependencies { | 
				
			||||
 | 
					    api( | 
				
			||||
 | 
					        project(":io.sc.platform.job.core"), | 
				
			||||
 | 
					        project(":io.sc.platform.mvc"), | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,88 @@ | 
				
			|||||
 | 
					package io.sc.platform.job.manager.jpa.entity; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.job.core.enums.ExecutorAddressType; | 
				
			||||
 | 
					import io.sc.platform.orm.converter.SetStringConverter; | 
				
			||||
 | 
					import org.hibernate.annotations.GenericGenerator; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import javax.persistence.*; | 
				
			||||
 | 
					import javax.validation.constraints.Size; | 
				
			||||
 | 
					import java.util.Date; | 
				
			||||
 | 
					import java.util.Set; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class JobGroupEntity { | 
				
			||||
 | 
					    //主键
 | 
				
			||||
 | 
					    @Id | 
				
			||||
 | 
					    @GeneratedValue(generator = "system-uuid") | 
				
			||||
 | 
					    @GenericGenerator(name = "system-uuid", strategy = "uuid2") | 
				
			||||
 | 
					    @Column(name="ID_", length=36) | 
				
			||||
 | 
					    @Size(max=36) | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Column(name="APP_NAME", length=255) | 
				
			||||
 | 
					    @Size(min=1,max=255) | 
				
			||||
 | 
					    private String appName; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Column(name="TITLE", length=255) | 
				
			||||
 | 
					    @Size(min=1,max=255) | 
				
			||||
 | 
					    private String title; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Column(name="ADDRESS_TYPE") | 
				
			||||
 | 
					    @Enumerated(EnumType.STRING) | 
				
			||||
 | 
					    private ExecutorAddressType addressType; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Column(name="ADDRESS_LIST") | 
				
			||||
 | 
					    @Convert(converter = SetStringConverter.class) | 
				
			||||
 | 
					    private Set<String> addresses; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @Column(name="UPDATE_TIME") | 
				
			||||
 | 
					    @Temporal(TemporalType.TIMESTAMP) | 
				
			||||
 | 
					    private Date updateTime; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getAppName() { | 
				
			||||
 | 
					        return appName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setAppName(String appName) { | 
				
			||||
 | 
					        this.appName = appName; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getTitle() { | 
				
			||||
 | 
					        return title; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setTitle(String title) { | 
				
			||||
 | 
					        this.title = title; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public ExecutorAddressType getAddressType() { | 
				
			||||
 | 
					        return addressType; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setAddressType(ExecutorAddressType addressType) { | 
				
			||||
 | 
					        this.addressType = addressType; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Set<String> getAddresses() { | 
				
			||||
 | 
					        return addresses; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setAddresses(Set<String> addresses) { | 
				
			||||
 | 
					        this.addresses = addresses; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Date getUpdateTime() { | 
				
			||||
 | 
					        return updateTime; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setUpdateTime(Date updateTime) { | 
				
			||||
 | 
					        this.updateTime = updateTime; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,12 @@ | 
				
			|||||
 | 
					package io.sc.platform.job.manager.jpa.repository; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.job.core.enums.ExecutorAddressType; | 
				
			||||
 | 
					import io.sc.platform.job.manager.jpa.entity.JobGroupEntity; | 
				
			||||
 | 
					import io.sc.platform.orm.repository.DaoRepository; | 
				
			||||
 | 
					import org.springframework.data.repository.query.Param; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import java.util.List; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public interface JobGroupRepository extends DaoRepository<JobGroupEntity,String> { | 
				
			||||
 | 
					    public List<JobGroupEntity> findByAddressType(@Param("addressType") ExecutorAddressType addressType); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,10 @@ | 
				
			|||||
 | 
					[ | 
				
			||||
 | 
					    { | 
				
			||||
 | 
					        "category" : "install", | 
				
			||||
 | 
					        "order"    : 1000, | 
				
			||||
 | 
					        "description":"XXL JOB 相关表", | 
				
			||||
 | 
					        "locations":[ | 
				
			||||
 | 
					            "liquibase/PF_8.0.0_20220606__Job_DDL.xml" | 
				
			||||
 | 
					        ] | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					] | 
				
			||||
@ -0,0 +1,233 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
 | 
					<databaseChangeLog | 
				
			||||
 | 
					    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" | 
				
			||||
 | 
					    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 
				
			||||
 | 
					    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" | 
				
			||||
 | 
					    xsi:schemaLocation=" | 
				
			||||
 | 
					        http://www.liquibase.org/xml/ns/dbchangelog | 
				
			||||
 | 
					        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd | 
				
			||||
 | 
					        http://www.liquibase.org/xml/ns/dbchangelog-ext | 
				
			||||
 | 
					        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd | 
				
			||||
 | 
					    " | 
				
			||||
 | 
					> | 
				
			||||
 | 
					    <property name="now" value="CURRENT TIMESTAMP"      dbms="db2"/> | 
				
			||||
 | 
					    <property name="now" value="CURRENT_TIMESTAMP"      dbms="h2"/> | 
				
			||||
 | 
					    <property name="now" value="sysdate"                dbms="oracle"/> | 
				
			||||
 | 
					    <property name="now" value="now()"                  dbms="mysql"/> | 
				
			||||
 | 
					    <property name="now" value="now()"                  dbms="postgresql"/> | 
				
			||||
 | 
					    <property name="now" value="GETDATE()"              dbms="mssql"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    <changeSet id="PF_8.0.0_20220606__Job_DDL" author="platform"> | 
				
			||||
 | 
					        <!-- JOB信息表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_INFO" remarks="JOB信息表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"               remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="JOB_GROUP"                    type="INTEGER"               remarks="执行器主键ID" /> | 
				
			||||
 | 
					            <column name="JOB_DESC"                     type="NVARCHAR(255)"         remarks="描述"/> | 
				
			||||
 | 
					            <column name="ADD_TIME"                     type="DATETIME"              remarks="创建日期"/> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"                  type="DATETIME"              remarks="更新日期"/> | 
				
			||||
 | 
					            <column name="AUTHOR"                       type="NVARCHAR(255)"         remarks="作者"/> | 
				
			||||
 | 
					            <column name="ALARM_EMAIL"                  type="NVARCHAR(255)"         remarks="报警邮件"/> | 
				
			||||
 | 
					            <column name="SCHEDULE_TYPE"                type="NVARCHAR(50)"          remarks="调度类型"/> | 
				
			||||
 | 
					            <column name="SCHEDULE_CONF"                type="NVARCHAR(128)"         remarks="调度配置,值含义取决于调度类型"/> | 
				
			||||
 | 
					            <column name="MISFIRE_STRATEGY"             type="NVARCHAR(50)"          remarks="调度过期策略"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_ROUTE_STRATEGY"      type="NVARCHAR(50)"          remarks="执行器路由策略"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_HANDLER"             type="NVARCHAR(255)"         remarks="执行器任务handler"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_PARAM"               type="NVARCHAR(512)"         remarks="执行器任务参数"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_BLOCK_STRATEGY"      type="NVARCHAR(50)"          remarks="阻塞处理策略"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_TIMEOUT"             type="INTEGER"               remarks="任务执行超时时间,单位秒"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_FAIL_RETRY_COUNT"    type="INTEGER"               remarks="失败重试次数"/> | 
				
			||||
 | 
					            <column name="GLUE_TYPE"                    type="NVARCHAR(50)"          remarks="GLUE类型"/> | 
				
			||||
 | 
					            <column name="GLUE_SOURCE"                  type="CLOB"                  remarks="GLUE源代码"/> | 
				
			||||
 | 
					            <column name="GLUE_REMARK"                  type="NVARCHAR(128)"         remarks="GLUE备注"/> | 
				
			||||
 | 
					            <column name="GLUE_UPDATETIME"              type="DATETIME"              remarks="GLUE更新时间"/> | 
				
			||||
 | 
					            <column name="CHILD_JOBID"                  type="NVARCHAR(255)"         remarks="子任务ID,多个逗号分隔"/> | 
				
			||||
 | 
					            <column name="TRIGGER_STATUS"               type="TINYINT"               remarks="调度状态:0-停止,1-运行"/> | 
				
			||||
 | 
					            <column name="TRIGGER_LAST_TIME"            type="BIGINT"                remarks="上次调度时间"/> | 
				
			||||
 | 
					            <column name="TRIGGER_NEXT_TIME"            type="BIGINT"                remarks="下次调度时间"/> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey tableName="XXL_JOB_INFO" columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                         columnDataType="INTEGER"         tableName="XXL_JOB_INFO"     startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="JOB_GROUP"                  columnDataType="INTEGER"         tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_JOB_GROUP"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="JOB_DESC"                   columnDataType="NVARCHAR(255)"   tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_JOB_DESC"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="SCHEDULE_TYPE"              columnDataType="NVARCHAR(50)"    tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_SCHEDULE_TYPE"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="SCHEDULE_TYPE"              columnDataType="NVARCHAR(50)"    tableName="XXL_JOB_INFO"    defaultValue="NONE"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="MISFIRE_STRATEGY"           columnDataType="NVARCHAR(50)"    tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_MISFIRE_STRATEGY"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="MISFIRE_STRATEGY"           columnDataType="NVARCHAR(50)"    tableName="XXL_JOB_INFO"    defaultValue="DO_NOTHING"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="EXECUTOR_TIMEOUT"           columnDataType="INTEGER"         tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_EXECUTOR_TIMEOUT"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="EXECUTOR_TIMEOUT"           columnDataType="INTEGER"         tableName="XXL_JOB_INFO"    defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="EXECUTOR_FAIL_RETRY_COUNT"  columnDataType="INTEGER"         tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_EXECUTOR_FRC"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="EXECUTOR_FAIL_RETRY_COUNT"  columnDataType="INTEGER"         tableName="XXL_JOB_INFO"    defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="TRIGGER_STATUS"             columnDataType="TINYINT"         tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_TRIGGER_STATUS"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="TRIGGER_STATUS"             columnDataType="TINYINT"         tableName="XXL_JOB_INFO"    defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="TRIGGER_LAST_TIME"          columnDataType="BIGINT"          tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_TRIGGER_LAST_TIME"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="TRIGGER_LAST_TIME"          columnDataType="BIGINT"          tableName="XXL_JOB_INFO"    defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="TRIGGER_NEXT_TIME"          columnDataType="BIGINT"          tableName="XXL_JOB_INFO"    constraintName="CONST_XXL_JOB_INFO_TRIGGER_NEXT_TIME"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="TRIGGER_NEXT_TIME"          columnDataType="BIGINT"          tableName="XXL_JOB_INFO"    defaultValueNumeric="0"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB日志表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_LOG" remarks="JOB日志表"> | 
				
			||||
 | 
					            <column name="ID"                           type="BIGINT"               remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="JOB_GROUP"                    type="INTEGER"              remarks="执行器主键ID" /> | 
				
			||||
 | 
					            <column name="JOB_ID"                       type="INTEGER"              remarks="任务主键ID"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_ADDRESS"             type="NVARCHAR(255)"        remarks="执行器地址,本次执行的地址"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_HANDLER"             type="NVARCHAR(255)"        remarks="执行器任务handler"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_PARAM"               type="NVARCHAR(512)"        remarks="执行器任务参数"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_SHARDING_PARAM"      type="NVARCHAR(20)"         remarks="执行器任务分片参数,格式如 1/2"/> | 
				
			||||
 | 
					            <column name="EXECUTOR_FAIL_RETRY_COUNT"    type="INTEGER"              remarks="失败重试次数"/> | 
				
			||||
 | 
					            <column name="TRIGGER_TIME"                 type="DATETIME"             remarks="调度-时间"/> | 
				
			||||
 | 
					            <column name="TRIGGER_CODE"                 type="INTEGER"              remarks="调度-结果"/> | 
				
			||||
 | 
					            <column name="TRIGGER_MSG"                  type="CLOB"                 remarks="调度-日志"/> | 
				
			||||
 | 
					            <column name="HANDLE_TIME"                  type="DATETIME"             remarks="执行-时间"/> | 
				
			||||
 | 
					            <column name="HANDLE_CODE"                  type="INTEGER"              remarks="执行-状态"/> | 
				
			||||
 | 
					            <column name="HANDLE_MSG"                   type="CLOB"                 remarks="执行-日志"/> | 
				
			||||
 | 
					            <column name="ALARM_STATUS"                 type="TINYINT"              remarks="告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败" defaultValueNumeric="0"/> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey tableName="XXL_JOB_LOG" columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                         columnDataType="BIGINT"         tableName="XXL_JOB_LOG"     startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="JOB_GROUP"                  columnDataType="INTEGER"        tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_JOB_GROUP"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="JOB_ID"                     columnDataType="INTEGER"        tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_JOB_ID"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="EXECUTOR_FAIL_RETRY_COUNT"  columnDataType="BIGINT"         tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_EXECUTOR_FRC"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="EXECUTOR_FAIL_RETRY_COUNT"  columnDataType="BIGINT"         tableName="XXL_JOB_LOG"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="TRIGGER_CODE"               columnDataType="INTEGER"        tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_TRIGGER_CODE"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="HANDLE_CODE"                columnDataType="INTEGER"        tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_HANDLE_CODE"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="ALARM_STATUS"               columnDataType="TINYINT"        tableName="XXL_JOB_LOG"     constraintName="CONST_XXL_JOB_LOG_ALARM_STATUS"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="ALARM_STATUS"               columnDataType="TINYINT"        tableName="XXL_JOB_LOG"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <createIndex tableName="XXL_JOB_LOG" indexName="IDX_XXL_JOB_LOG_TRIGGER_TIME"> | 
				
			||||
 | 
					            <column name="TRIGGER_TIME"></column> | 
				
			||||
 | 
					        </createIndex> | 
				
			||||
 | 
					        <createIndex tableName="XXL_JOB_LOG" indexName="IDX_XXL_JOB_LOG_HANDLE_CODE"> | 
				
			||||
 | 
					            <column name="HANDLE_CODE"></column> | 
				
			||||
 | 
					        </createIndex> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB日志报告表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_LOG_REPORT" remarks="JOB日志报告表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"              remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="TRIGGER_DAY"                  type="DATETIME"             remarks="调度-时间"/> | 
				
			||||
 | 
					            <column name="RUNNING_COUNT"                type="INTEGER"              remarks="运行中-日志数量" defaultValueNumeric="0"/> | 
				
			||||
 | 
					            <column name="SUC_COUNT"                    type="INTEGER"              remarks="执行成功-日志数量" defaultValueNumeric="0"/> | 
				
			||||
 | 
					            <column name="FAIL_COUNT"                   type="INTEGER"              remarks="执行失败-日志数量" defaultValueNumeric="0"/> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"                  type="DATETIME"             remarks="更新日期"></column> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey tableName="XXL_JOB_LOG_REPORT" columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                         columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="RUNNING_COUNT"              columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     constraintName="CONST_XXL_JOB_LOG_REPORT_RUNNING_COUNT"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="RUNNING_COUNT"              columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="SUC_COUNT"                  columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     constraintName="CONST_XXL_JOB_LOG_REPORT_SUC_COUNT"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="SUC_COUNT"                  columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="FAIL_COUNT"                 columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     constraintName="CONST_XXL_JOB_LOG_REPORT_FAIL_COUNT"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="FAIL_COUNT"                 columnDataType="INTEGER"        tableName="XXL_JOB_LOG_REPORT"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					        <createIndex tableName="XXL_JOB_LOG_REPORT" indexName="IDX_XXL_JOB_LOG_REPORT_TRIGGER_DAY" unique="true"> | 
				
			||||
 | 
					            <column name="TRIGGER_DAY"></column> | 
				
			||||
 | 
					        </createIndex> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB GLUE 表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_LOGGLUE" remarks="JOB GLUE 表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"              remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="JOB_ID"                       type="INTEGER"              remarks="任务主键ID"/> | 
				
			||||
 | 
					            <column name="GLUE_TYPE"                    type="NVARCHAR(50)"         remarks="GLUE类型"/> | 
				
			||||
 | 
					            <column name="GLUE_SOURCE"                  type="CLOB"                 remarks="GLUE源代码"/> | 
				
			||||
 | 
					            <column name="GLUE_REMARK"                  type="NVARCHAR(128)"        remarks="GLUE备注"/> | 
				
			||||
 | 
					            <column name="ADD_TIME"                     type="DATETIME"             remarks="创建日期"/> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"                  type="DATETIME"             remarks="更新日期"/> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey tableName="XXL_JOB_LOGGLUE" columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                         columnDataType="INTEGER"        tableName="XXL_JOB_LOGGLUE"     startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="JOB_ID"                     columnDataType="INTEGER"        tableName="XXL_JOB_LOGGLUE"     constraintName="CONST_XXL_JOB_LOGGLUE_JOB_ID"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB 注册表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_REGISTRY" remarks="JOB 注册表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"              remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="REGISTRY_GROUP"               type="NVARCHAR(50)"         remarks=""/> | 
				
			||||
 | 
					            <column name="REGISTRY_KEY"                 type="NVARCHAR(255)"        remarks=""/> | 
				
			||||
 | 
					            <column name="REGISTRY_VALUE"               type="NVARCHAR(255)"        remarks=""/> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"                  type="DATETIME"             remarks="更新日期"/> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey          tableName="XXL_JOB_REGISTRY"                    columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                                 columnDataType="INTEGER"             tableName="XXL_JOB_REGISTRY"    startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addUniqueConstraint    tableName="XXL_JOB_REGISTRY"                    columnNames="REGISTRY_GROUP,REGISTRY_KEY,REGISTRY_VALUE"></addUniqueConstraint> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="REGISTRY_GROUP"                     columnDataType="NVARCHAR(50)"        tableName="XXL_JOB_REGISTRY"     constraintName="CONST_XXL_JOB_REGISTRY_REGISTRY_GROUP"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="REGISTRY_KEY"                       columnDataType="NVARCHAR(255)"       tableName="XXL_JOB_REGISTRY"     constraintName="CONST_XXL_JOB_REGISTRY_REGISTRY_KEY"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="REGISTRY_VALUE"                     columnDataType="NVARCHAR(255)"       tableName="XXL_JOB_REGISTRY"     constraintName="CONST_XXL_JOB_REGISTRY_REGISTRY_VALUE"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB 组表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_GROUP" remarks="JOB 组表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"               remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="APP_NAME"                     type="NVARCHAR(255)"         remarks="执行器AppName"/> | 
				
			||||
 | 
					            <column name="TITLE"                        type="NVARCHAR(255)"         remarks="执行器名称"/> | 
				
			||||
 | 
					            <column name="ADDRESS_TYPE"                 type="TINYINT"               remarks="执行器地址类型:0=自动注册、1=手动录入" defaultValueNumeric="0"/> | 
				
			||||
 | 
					            <column name="ADDRESS_LIST"                 type="CLOB"                  remarks="执行器地址列表,多地址逗号分隔"/> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"                  type="DATETIME"              remarks="更新日期"/> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey          tableName="XXL_JOB_GROUP"    columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"                           columnDataType="INTEGER"             tableName="XXL_JOB_GROUP"    startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="APP_NAME"                     columnDataType="NVARCHAR(64)"        tableName="XXL_JOB_GROUP"     constraintName="CONST_XXL_JOB_GROUP_APP_NAME"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="TITLE"                        columnDataType="NVARCHAR(12)"        tableName="XXL_JOB_GROUP"     constraintName="CONST_XXL_JOB_GROUP_TITLE"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="ADDRESS_TYPE"                 columnDataType="TINYINT"             tableName="XXL_JOB_GROUP"     constraintName="CONST_XXL_JOB_GROUP_ADDRESS_TYPE"/> | 
				
			||||
 | 
					        <addDefaultValue        columnName="ADDRESS_TYPE"                 columnDataType="TINYINT"             tableName="XXL_JOB_GROUP"     defaultValueNumeric="0"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB 用户表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_USER" remarks="JOB 用户表"> | 
				
			||||
 | 
					            <column name="ID"                           type="INTEGER"               remarks="主键ID"/> | 
				
			||||
 | 
					            <column name="USERNAME"                     type="NVARCHAR(50)"          remarks="账号"/> | 
				
			||||
 | 
					            <column name="PASSWORD"                     type="NVARCHAR(50)"          remarks="密码"/> | 
				
			||||
 | 
					            <column name="ROLE"                         type="TINYINT"               remarks="角色:0-普通用户、1-管理员"/> | 
				
			||||
 | 
					            <column name="PERMISSION"                   type="NVARCHAR(255)"         remarks="权限:执行器ID列表,多个逗号分割"></column> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					        <addPrimaryKey          tableName="XXL_JOB_USER"     columnNames="ID"/> | 
				
			||||
 | 
					        <addAutoIncrement       columnName="ID"              columnDataType="INTEGER"             tableName="XXL_JOB_USER"     startWith="1"   incrementBy="1"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="USERNAME"        columnDataType="NVARCHAR(50)"        tableName="XXL_JOB_USER"     constraintName="CONST_XXL_JOB_USER_USERNAME"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="PASSWORD"        columnDataType="NVARCHAR(50)"        tableName="XXL_JOB_USER"     constraintName="CONST_XXL_JOB_USER_PASSWORD"/> | 
				
			||||
 | 
					        <addNotNullConstraint   columnName="ROLE"            columnDataType="TINYINT"             tableName="XXL_JOB_USER"     constraintName="CONST_XXL_JOB_USER_ROLE"/> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <!-- JOB 锁表 --> | 
				
			||||
 | 
					        <createTable tableName="XXL_JOB_LOCK" remarks="JOB 锁表"> | 
				
			||||
 | 
					            <column name="LOCK_NAME"                type="NVARCHAR(50)"          remarks="锁名称"> | 
				
			||||
 | 
					                <constraints primaryKey="true"/> | 
				
			||||
 | 
					            </column> | 
				
			||||
 | 
					        </createTable> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <insert tableName="XXL_JOB_GROUP"> | 
				
			||||
 | 
					            <column name="ID" valueNumeric="1"></column> | 
				
			||||
 | 
					            <column name="APP_NAME" value="xxl-job-executor-sample"></column> | 
				
			||||
 | 
					            <column name="TITLE" value="示例执行器"></column> | 
				
			||||
 | 
					            <column name="ADDRESS_TYPE" valueNumeric="0"></column> | 
				
			||||
 | 
					            <column name="UPDATE_TIME"  valueDate="${now}"></column> | 
				
			||||
 | 
					        </insert> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <insert tableName="XXL_JOB_INFO"> | 
				
			||||
 | 
					            <column name="ID" valueNumeric="1"></column> | 
				
			||||
 | 
					            <column name="JOB_GROUP" valueNumeric="1"></column> | 
				
			||||
 | 
					            <column name="JOB_DESC" value="测试任务1"></column> | 
				
			||||
 | 
					            <column name="add_time" valueDate="${now}"></column> | 
				
			||||
 | 
					            <column name="update_time"  valueDate="${now}"></column> | 
				
			||||
 | 
					            <column name="author"  value="XXL"></column> | 
				
			||||
 | 
					            <column name="alarm_email"  value=""></column> | 
				
			||||
 | 
					            <column name="schedule_type"  value="CRON"></column> | 
				
			||||
 | 
					            <column name="schedule_conf"  value="0 0 0 * * ? *"></column> | 
				
			||||
 | 
					            <column name="misfire_strategy"  value="DO_NOTHING"></column> | 
				
			||||
 | 
					            <column name="executor_route_strategy"  value="FIRST"></column> | 
				
			||||
 | 
					            <column name="executor_handler"  value="demoJobHandler"></column> | 
				
			||||
 | 
					            <column name="executor_param"  value=""></column> | 
				
			||||
 | 
					            <column name="executor_block_strategy"  value="SERIAL_EXECUTION"></column> | 
				
			||||
 | 
					            <column name="executor_timeout"  valueNumeric="0"></column> | 
				
			||||
 | 
					            <column name="executor_fail_retry_count"  valueNumeric="0"></column> | 
				
			||||
 | 
					            <column name="glue_type"  value="BEAN"></column> | 
				
			||||
 | 
					            <column name="glue_source"  value=""></column> | 
				
			||||
 | 
					            <column name="glue_remark"  value="GLUE代码初始化"></column> | 
				
			||||
 | 
					            <column name="glue_updatetime"  valueDate="${now}"></column> | 
				
			||||
 | 
					            <column name="child_jobid"  value=""></column> | 
				
			||||
 | 
					        </insert> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        <insert tableName="XXL_JOB_USER"> | 
				
			||||
 | 
					            <column name="id" valueNumeric="1"></column> | 
				
			||||
 | 
					            <column name="username" value="admin"></column> | 
				
			||||
 | 
					            <column name="password" value="e10adc3949ba59abbe56e057f20f883e"></column> | 
				
			||||
 | 
					            <column name="role" valueNumeric="1"></column> | 
				
			||||
 | 
					        </insert> | 
				
			||||
 | 
					        <insert tableName="XXL_JOB_LOCK"> | 
				
			||||
 | 
					            <column name="lock_name" value="schedule_lock"></column> | 
				
			||||
 | 
					        </insert> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    </changeSet> | 
				
			||||
 | 
					</databaseChangeLog> | 
				
			||||
@ -1,102 +1,104 @@ | 
				
			|||||
{ | 
					{ | 
				
			||||
  "name": "io.sc.platform.lcdp.frontend", | 
					    "name": "io.sc.platform.lcdp.frontend", | 
				
			||||
  "version": "8.1.13", | 
					    "version": "8.1.19", | 
				
			||||
  "description": "", | 
					    "description": "", | 
				
			||||
  "private": false, | 
					    "private": false, | 
				
			||||
  "keywords": [], | 
					    "keywords": [ | 
				
			||||
  "author": "", | 
					         | 
				
			||||
  "license": "ISC", | 
					    ], | 
				
			||||
  "scripts": { | 
					    "author": "", | 
				
			||||
    "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml", | 
					    "license": "ISC", | 
				
			||||
    "dev": "nodemon", | 
					    "scripts": { | 
				
			||||
    "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack serve --config webpack.env.serve.cjs", | 
					        "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml", | 
				
			||||
    "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack       --config webpack.env.build.cjs", | 
					        "dev": "nodemon", | 
				
			||||
    "prod": "node ./util-components-generator.cjs && cross-env  NODE_ENV=production   webpack       --config webpack.env.prod.cjs", | 
					        "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack serve --config webpack.env.serve.cjs", | 
				
			||||
    "sync": "platform sync" | 
					        "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development  webpack       --config webpack.env.build.cjs", | 
				
			||||
  }, | 
					        "prod": "node ./util-components-generator.cjs && cross-env  NODE_ENV=production   webpack       --config webpack.env.prod.cjs", | 
				
			||||
  "engines": { | 
					        "sync": "platform sync" | 
				
			||||
    "node": ">=18", | 
					    }, | 
				
			||||
    "pnpm": ">=7" | 
					    "engines": { | 
				
			||||
  }, | 
					        "node": ">=18", | 
				
			||||
  "publishConfig": { | 
					        "pnpm": ">=7" | 
				
			||||
    "registry": "http://nexus.sc.io:8000/repository/npm-releases/", | 
					    }, | 
				
			||||
    "access": "public" | 
					    "publishConfig": { | 
				
			||||
  }, | 
					        "registry": "http://nexus.sc.io:8000/repository/npm-releases/", | 
				
			||||
  "devDependencies": { | 
					        "access": "public" | 
				
			||||
    "@babel/core": "7.23.2", | 
					    }, | 
				
			||||
    "@babel/preset-env": "7.23.2", | 
					    "devDependencies": { | 
				
			||||
    "@babel/preset-typescript": "7.23.2", | 
					        "@babel/core": "7.23.2", | 
				
			||||
    "@babel/plugin-transform-class-properties": "7.22.5", | 
					        "@babel/preset-env": "7.23.2", | 
				
			||||
    "@babel/plugin-transform-object-rest-spread": "7.22.15", | 
					        "@babel/preset-typescript": "7.23.2", | 
				
			||||
    "@quasar/app-webpack": "3.11.2", | 
					        "@babel/plugin-transform-class-properties": "7.22.5", | 
				
			||||
    "@quasar/cli": "2.3.0", | 
					        "@babel/plugin-transform-object-rest-spread": "7.22.15", | 
				
			||||
    "@types/mockjs": "1.0.9", | 
					        "@quasar/app-webpack": "3.11.2", | 
				
			||||
    "@types/node": "20.8.9", | 
					        "@quasar/cli": "2.3.0", | 
				
			||||
    "@typescript-eslint/eslint-plugin": "6.9.0", | 
					        "@types/mockjs": "1.0.9", | 
				
			||||
    "@typescript-eslint/parser": "6.9.0", | 
					        "@types/node": "20.8.9", | 
				
			||||
    "@vue/compiler-sfc": "3.3.7", | 
					        "@typescript-eslint/eslint-plugin": "6.9.0", | 
				
			||||
    "@webpack-cli/serve": "2.0.5", | 
					        "@typescript-eslint/parser": "6.9.0", | 
				
			||||
    "autoprefixer": "10.4.16", | 
					        "@vue/compiler-sfc": "3.3.7", | 
				
			||||
    "babel-loader": "9.1.3", | 
					        "@webpack-cli/serve": "2.0.5", | 
				
			||||
    "clean-webpack-plugin": "4.0.0", | 
					        "autoprefixer": "10.4.16", | 
				
			||||
    "copy-webpack-plugin": "11.0.0", | 
					        "babel-loader": "9.1.3", | 
				
			||||
    "cross-env": "7.0.3", | 
					        "clean-webpack-plugin": "4.0.0", | 
				
			||||
    "css-loader": "6.8.1", | 
					        "copy-webpack-plugin": "11.0.0", | 
				
			||||
    "eslint": "8.52.0", | 
					        "cross-env": "7.0.3", | 
				
			||||
    "eslint-config-prettier": "9.0.0", | 
					        "css-loader": "6.8.1", | 
				
			||||
    "eslint-plugin-prettier": "5.0.1", | 
					        "eslint": "8.52.0", | 
				
			||||
    "eslint-plugin-vue": "9.18.0", | 
					        "eslint-config-prettier": "9.0.0", | 
				
			||||
    "eslint-webpack-plugin": "4.0.1", | 
					        "eslint-plugin-prettier": "5.0.1", | 
				
			||||
    "html-webpack-plugin": "5.5.3", | 
					        "eslint-plugin-vue": "9.18.0", | 
				
			||||
    "json5": "2.2.3", | 
					        "eslint-webpack-plugin": "4.0.1", | 
				
			||||
    "mini-css-extract-plugin": "2.7.6", | 
					        "html-webpack-plugin": "5.5.3", | 
				
			||||
    "nodemon": "3.0.1", | 
					        "json5": "2.2.3", | 
				
			||||
    "postcss": "8.4.31", | 
					        "mini-css-extract-plugin": "2.7.6", | 
				
			||||
    "postcss-import": "15.1.0", | 
					        "nodemon": "3.0.1", | 
				
			||||
    "postcss-loader": "7.3.3", | 
					        "postcss": "8.4.31", | 
				
			||||
    "postcss-preset-env": "9.2.0", | 
					        "postcss-import": "15.1.0", | 
				
			||||
    "prettier": "3.0.3", | 
					        "postcss-loader": "7.3.3", | 
				
			||||
    "sass": "1.69.5", | 
					        "postcss-preset-env": "9.2.0", | 
				
			||||
    "sass-loader": "13.3.2", | 
					        "prettier": "3.0.3", | 
				
			||||
    "typescript": "5.2.2", | 
					        "sass": "1.69.5", | 
				
			||||
    "vue-loader": "17.3.0", | 
					        "sass-loader": "13.3.2", | 
				
			||||
    "webpack": "5.89.0", | 
					        "typescript": "5.2.2", | 
				
			||||
    "webpack-bundle-analyzer": "4.9.1", | 
					        "vue-loader": "17.3.0", | 
				
			||||
    "webpack-cli": "5.1.4", | 
					        "webpack": "5.89.0", | 
				
			||||
    "webpack-dev-server": "4.15.1", | 
					        "webpack-bundle-analyzer": "4.9.1", | 
				
			||||
    "webpack-merge": "5.10.0" | 
					        "webpack-cli": "5.1.4", | 
				
			||||
  }, | 
					        "webpack-dev-server": "4.15.1", | 
				
			||||
  "dependencies": { | 
					        "webpack-merge": "5.10.0" | 
				
			||||
    "@codemirror/autocomplete": "6.11.1", | 
					    }, | 
				
			||||
    "@codemirror/commands": "6.3.2", | 
					    "dependencies": { | 
				
			||||
    "@codemirror/lang-html": "6.4.7", | 
					        "@codemirror/autocomplete": "6.11.1", | 
				
			||||
    "@codemirror/lang-java": "6.0.1", | 
					        "@codemirror/commands": "6.3.2", | 
				
			||||
    "@codemirror/lang-javascript": "6.2.1", | 
					        "@codemirror/lang-html": "6.4.7", | 
				
			||||
    "@codemirror/lang-json": "6.0.1", | 
					        "@codemirror/lang-java": "6.0.1", | 
				
			||||
    "@codemirror/lang-sql": "6.5.4", | 
					        "@codemirror/lang-javascript": "6.2.1", | 
				
			||||
    "@codemirror/lang-xml": "6.0.2", | 
					        "@codemirror/lang-json": "6.0.1", | 
				
			||||
    "@codemirror/language": "6.9.3", | 
					        "@codemirror/lang-sql": "6.5.4", | 
				
			||||
    "@codemirror/search": "6.5.5", | 
					        "@codemirror/lang-xml": "6.0.2", | 
				
			||||
    "@codemirror/state": "6.3.3", | 
					        "@codemirror/language": "6.9.3", | 
				
			||||
    "@codemirror/view": "6.22.1", | 
					        "@codemirror/search": "6.5.5", | 
				
			||||
    "@quasar/extras": "1.16.7", | 
					        "@codemirror/state": "6.3.3", | 
				
			||||
    "@vueuse/core": "10.3.0", | 
					        "@codemirror/view": "6.22.1", | 
				
			||||
    "axios": "1.5.1", | 
					        "@quasar/extras": "1.16.7", | 
				
			||||
    "codemirror": "6.0.1", | 
					        "@vueuse/core": "10.3.0", | 
				
			||||
    "dayjs": "1.11.10", | 
					        "axios": "1.5.1", | 
				
			||||
    "echarts": "5.4.1", | 
					        "codemirror": "6.0.1", | 
				
			||||
    "exceljs": "4.3.0", | 
					        "dayjs": "1.11.10", | 
				
			||||
    "file-saver": "2.0.5", | 
					        "echarts": "5.4.1", | 
				
			||||
    "luckyexcel": "1.0.1", | 
					        "exceljs": "4.3.0", | 
				
			||||
    "mockjs": "1.1.0", | 
					        "file-saver": "2.0.5", | 
				
			||||
    "pinia": "2.1.7", | 
					        "luckyexcel": "1.0.1", | 
				
			||||
    "platform-core": "8.1.42", | 
					        "mockjs": "1.1.0", | 
				
			||||
    "quasar": "2.13.0", | 
					        "pinia": "2.1.7", | 
				
			||||
    "tailwindcss": "3.3.5", | 
					        "platform-core": "8.1.45", | 
				
			||||
    "vue": "3.3.7", | 
					        "quasar": "2.13.0", | 
				
			||||
    "vue-dompurify-html": "4.1.4", | 
					        "tailwindcss": "3.3.5", | 
				
			||||
    "vue-i18n": "9.6.0", | 
					        "vue": "3.3.7", | 
				
			||||
    "vue-router": "4.2.5", | 
					        "vue-dompurify-html": "4.1.4", | 
				
			||||
    "vue-codemirror6": "1.1.31" | 
					        "vue-i18n": "9.6.0", | 
				
			||||
  } | 
					        "vue-router": "4.2.5", | 
				
			||||
 | 
					        "vue-codemirror6": "1.1.31" | 
				
			||||
 | 
					    } | 
				
			||||
} | 
					} | 
				
			||||
@ -0,0 +1,51 @@ | 
				
			|||||
 | 
					package io.sc.platform.lcdp.configure.api; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import io.sc.platform.orm.api.vo.CorporationAuditorVo; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					public class ConfigureVo extends CorporationAuditorVo { | 
				
			||||
 | 
					    private String id; | 
				
			||||
 | 
					    private String name; | 
				
			||||
 | 
					    private Boolean active; | 
				
			||||
 | 
					    private Setting setting; | 
				
			||||
 | 
					    private Theme theme; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getId() { | 
				
			||||
 | 
					        return id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setId(String id) { | 
				
			||||
 | 
					        this.id = id; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public String getName() { | 
				
			||||
 | 
					        return name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setName(String name) { | 
				
			||||
 | 
					        this.name = name; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Boolean getActive() { | 
				
			||||
 | 
					        return active; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setActive(Boolean active) { | 
				
			||||
 | 
					        this.active = active; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Setting getSetting() { | 
				
			||||
 | 
					        return setting; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setSetting(Setting setting) { | 
				
			||||
 | 
					        this.setting = setting; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public Theme getTheme() { | 
				
			||||
 | 
					        return theme; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    public void setTheme(Theme theme) { | 
				
			||||
 | 
					        this.theme = theme; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					{ | 
				
			||||
 | 
					    includes:[ | 
				
			||||
 | 
					        "io/sc/platform/lcdp/configure/i18n/initializer" | 
				
			||||
 | 
					    ] | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,2 @@ | 
				
			|||||
 | 
					io.sc.platform.lcdp.configure.initializer.ConfigureInitializer.name=Configure Initializer | 
				
			||||
 | 
					io.sc.platform.lcdp.configure.initializer.ConfigureInitializer.description=initialize default theme if not exists | 
				
			||||
Some files were not shown because too many files changed in this diff
					Loading…
					
					
				
		Reference in new issue