Merge branch 'dev' into pr@dev_st_fix

This commit is contained in:
dataeaseShu 2023-08-01 16:12:11 +08:00
commit b2407049a0
36 changed files with 650 additions and 181 deletions

View File

@ -3,7 +3,7 @@ name: 需求建议
about: 提出针对本项目的想法和建议
title: "[Feature]"
labels: 类型:需求
assignees: xuwei-fit2cloud, yayanpei
assignees: xuwei-fit2cloud
---

View File

@ -2,7 +2,7 @@
name: Bug 提交
about: 提交产品缺陷帮助我们更好的改进
title: "[Bug]"
labels: 类型:bug
labels: 状态:待处理
assignees: BBchicken-9527, zrfit
---

View File

@ -1,16 +0,0 @@
name: Issue Check Inactive
on:
schedule:
- cron: "0 0 */15 * *"
jobs:
issue-check-inactive:
runs-on: ubuntu-latest
steps:
- name: check-inactive
uses: actions-cool/issues-helper@v2
with:
actions: 'check-inactive'
inactive-label: 'Inactive'
inactive-day: 30

View File

@ -1,19 +0,0 @@
name: Issue Close Require
on:
schedule:
- cron: "0 0 * * *"
jobs:
issue-close-require:
runs-on: ubuntu-latest
steps:
- name: need reproduce
uses: actions-cool/issues-helper@v2
with:
actions: 'close-issues'
labels: '状态:待反馈'
inactive-day: 30
body: |
您超过 30 天未反馈信息,我们将关闭该 issue如有需求您可以重新打开或者提交新的 issue。

View File

@ -1,38 +0,0 @@
on:
issue_comment:
types: [created]
name: Add issues workflow labels
jobs:
add-label-if-is-author:
runs-on: ubuntu-latest
if: (github.event.issue.user.id == github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open')
steps:
- name: Add require handle label
uses: actions-cool/issues-helper@v2
with:
actions: 'add-labels'
labels: '状态:待处理'
- name: Remove require reply label
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: '状态:待反馈'
add-label-if-not-author:
runs-on: ubuntu-latest
if: (github.event.issue.user.id != github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open')
steps:
- name: Add require replay label
uses: actions-cool/issues-helper@v2
with:
actions: 'add-labels'
labels: '状态:待反馈'
- name: Remove require handle label
uses: actions-cool/issues-helper@v2
with:
actions: 'remove-labels'
labels: '状态:待处理'

View File

@ -1,17 +0,0 @@
on:
schedule:
- cron: "0 9 * * 1-5"
name: Check untimely handle issues
jobs:
check-untimely-handle-issues:
runs-on: ubuntu-latest
steps:
- name: Check untimely issues and send msg
uses: jumpserver/action-issues-alert@master
with:
hook: ${{ secrets.WECHAT_GROUP_WEB_HOOK }}
type: untimely
env:
GITHUB_TOKEN: ${{ secrets.GITHUBTOKEN }}

View File

@ -53,6 +53,13 @@ public class ChartViewFieldController {
return chartViewFieldService.save(chartViewField);
}
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANEL_LEVEL_MANAGE)
@ApiOperation("保存不校验表达式")
@PostMapping("/saveNotCheck/{panelId}")
public ChartViewField saveNotCheck(@PathVariable String panelId, @RequestBody ChartViewField chartViewField) {
return chartViewFieldService.save(chartViewField);
}
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANEL_LEVEL_MANAGE, paramIndex = 1)
@ApiOperation("删除")
@PostMapping("/delete/{id}/{panelId}")

View File

@ -172,6 +172,21 @@ public class DataSetTableFieldController {
return dataSetTableFieldsService.save(datasetTableField);
}
@DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
@ApiOperation("保存不校验表达式")
@PostMapping("saveNotCheck")
public DatasetTableField saveNotCheck(@RequestBody DatasetTableField datasetTableField) throws Exception {
dataSetTableFieldsService.checkFieldName(datasetTableField);
// 非直连数据集需先完成数据同步
DatasetTable datasetTable = dataSetTableService.get(datasetTableField.getTableId());
if (datasetTable.getMode() == 1) {
if (!dataSetTableService.checkEngineTableIsExists(datasetTableField.getTableId())) {
throw new RuntimeException(Translator.get("i18n_data_not_sync"));
}
}
return dataSetTableFieldsService.save(datasetTableField);
}
@DePermissions(value = {
@DePermission(type = DePermissionType.DATASET, level = ResourceAuthLevel.DATASET_LEVEL_MANAGE, paramIndex = 1)
})

View File

@ -5,6 +5,10 @@ package io.dataease.provider.query;
*/
public class SQLUtils {
public static String transKeyword(String value) {
return value.replaceAll("'", "\\\\'");
if(value == null){
return null;
}else{
return value.replaceAll("'", "\\\\'");
}
}
}

View File

@ -1065,10 +1065,15 @@ public class MysqlQueryProvider extends QueryProvider {
if (field.getDeType() == 1) {
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
String date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
if(request.getOperator().equals("between")){
whereName = date;
}else {
String date;
if (field.getType().equalsIgnoreCase("YEAR")) {
date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originName + ",'-01-01')", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
} else {
date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
}
if (request.getOperator().equals("between")) {
whereName = String.format(MySQLConstants.UNIX_TIMESTAMP, date) + "*1000";
} else {
if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) {
whereName = String.format(format,
String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"),
@ -1080,11 +1085,11 @@ public class MysqlQueryProvider extends QueryProvider {
}
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
if(request.getOperator().equals("between")){
if (request.getOperator().equals("between")) {
whereName = originName;
}else {
} else {
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
if (StringUtils.equalsIgnoreCase(request.getDateStyle(),"y_Q")){
if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) {
whereName = String.format(format,
String.format(MysqlConstants.DATE_FORMAT, cast, "%Y"),
String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, field, MysqlConstants.DEFAULT_DATE_FORMAT)));
@ -1126,15 +1131,13 @@ public class MysqlQueryProvider extends QueryProvider {
whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) {
if (request.getDatasetTableField().getDeExtractType() == 2
|| request.getDatasetTableField().getDeExtractType() == 3
|| request.getDatasetTableField().getDeExtractType() == 4) {
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
} else {
if (request.getDatasetTableField().getDeExtractType() == 1) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0)) - 1000));
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
whereValue = String.format(MySQLConstants.WHERE_BETWEEN, startTime, endTime);
} else {
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
}
} else {
whereValue = String.format(MySQLConstants.WHERE_BETWEEN, value.get(0), value.get(1));

View File

@ -3122,9 +3122,15 @@ public class NoModelDataListener extends AnalysisEventListener<Map<Integer, Stri
for (Integer key : dataMap.keySet()) {
String value = dataMap.get(key);
if (StringUtils.isEmpty(value)) {
value = "none";
value = "";
}
line.add(value);
};
int size = line.size();
if(size < header.size()){
for (int i = 0; i < header.size() - size; i++) {
line.add("");
}
}
data.add(line);
}

View File

@ -239,7 +239,7 @@ public class PermissionService {
request.setDatasetId(datasetId);
request.setAuthTargetType("dept");
List<Item> items = (List<Item>)columnPermissionService.authObjs(request);
if(items.stream().map(Item::getId).collect(Collectors.toList()).contains(deptId)){
if(CollectionUtils.isNotEmpty(items) && items.stream().filter(item -> item != null).map(Item::getId).collect(Collectors.toList()).contains(deptId)){
dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId));
dataSetColumnPermissionsDTO.setAuthTargetType("dept");
List<DataSetColumnPermissionsDTO> deptColumnPermissionsDTOS = new ArrayList<>();

View File

@ -647,8 +647,11 @@ public class DatasourceService {
}
mysqlConfiguration.setHost(matcher.group(1));
mysqlConfiguration.setPort(Integer.valueOf(matcher.group(2)));
mysqlConfiguration.setDataBase(matcher.group(3).split("\\?")[0]);
mysqlConfiguration.setExtraParams(matcher.group(3).split("\\?")[1]);
String databaseParams = matcher.group(3);
mysqlConfiguration.setDataBase(databaseParams.split("\\?")[0]);
if (databaseParams.split("\\?").length > 1) {
mysqlConfiguration.setExtraParams(databaseParams.split("\\?")[1]);
}
mysqlConfiguration.setUsername(env.getProperty("spring.datasource.username"));
mysqlConfiguration.setPassword(env.getProperty("spring.datasource.password"));
datasource.setConfiguration(new Gson().toJson(mysqlConfiguration));

View File

@ -355,6 +355,8 @@ public class PanelAppTemplateService {
});
chartView.setId(null);
chartView.setSceneId(sceneId);
chartView.setCreateBy(AuthUtils.getUser().getUsername());
chartView.setCreateTime(System.currentTimeMillis());
ChartViewWithBLOBs newOne = chartViewService.newOne(chartView);
chartViewsRealMap.put(oldViewId, newOne.getId());
}

View File

@ -531,6 +531,8 @@ public class PanelGroupService {
chartView.setId(newViewId);
chartView.setSceneId(newPanelId);
chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE);
chartView.setCreateBy(AuthUtils.getUser().getUsername());
chartView.setCreateTime(System.currentTimeMillis());
// 数据处理 1.替换viewId 2.加入panelView 数据(数据来源为template) 3.加入模板view data数据
templateData = templateData.replaceAll(originViewId, newViewId);
panelViews.add(new PanelViewInsertDTO(newViewId, newPanelId, position));

View File

@ -0,0 +1,340 @@
ALTER TABLE `area_mapping` COMMENT = '国内省市区映射表';
ALTER TABLE `area_mapping_global` COMMENT = '全球省市区映射表';
ALTER TABLE `chart_group` COMMENT = '图表分组表';
ALTER TABLE `chart_view` COMMENT = '视图表';
ALTER TABLE `chart_view_cache` COMMENT = '视图缓存表';
ALTER TABLE `chart_view_field` COMMENT = '视图计算字段表';
ALTER TABLE `dataease_code_version` COMMENT = '数据初始化记录表';
ALTER TABLE `dataease_version` COMMENT = '数据库版本变更记录表';
ALTER TABLE `dataset_column_permissions` COMMENT = '数据集列权限配置表';
ALTER TABLE `dataset_group` COMMENT = '数据集分组表';
ALTER TABLE `dataset_row_permissions` COMMENT = '数据集行权限候选值配置表包含系统变量的候选值';
ALTER TABLE `dataset_row_permissions_tree` COMMENT = '数据集行权限配置表';
ALTER TABLE `dataset_sql_log` COMMENT = 'SQL数据集预览执行日志记录表';
ALTER TABLE `dataset_table` COMMENT = '数据集信息表';
ALTER TABLE `dataset_table_field` COMMENT = '数据集字段表';
ALTER TABLE `dataset_table_function` COMMENT = '数据集常用函数提示表';
ALTER TABLE `dataset_table_incremental_config` COMMENT = '定时同步数据集增量更新配置表';
ALTER TABLE `dataset_table_task` COMMENT = '定时同步数据集更新任务表';
ALTER TABLE `dataset_table_task_log` COMMENT = '定时同步数据集同步任务执行日志表';
ALTER TABLE `dataset_table_union` COMMENT = '关联数据集关联关系表';
ALTER TABLE `datasource` COMMENT = '数据源配置信息表';
ALTER TABLE `demo_alt_4a` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_4a_5a` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_5a` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_region` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_region` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_tourists_total` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_tourists_type` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_alt_tourist_attractions` COMMENT = '官方示例模板数据阿勒泰地区旅游数据';
ALTER TABLE `demo_domestic_epidemic` COMMENT = '官方示例模板数据疫情数据';
ALTER TABLE `demo_gdp_2021` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_gdp_by_city` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_gdp_by_city_top10` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_gdp_by_industry` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_gdp_district_top100` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_gdp_history` COMMENT = '官方示例模板数据全国GDP';
ALTER TABLE `demo_hntv_age` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_keywords` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_labels` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_media` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_messages` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_region` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_shows` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_hntv_topics` COMMENT = '官方示例模板数据某节目相关数据分析';
ALTER TABLE `demo_stny_carbon dioxide_emissions` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `demo_stny_carbon_emission_trend` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `demo_stny_disposable_energy` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `demo_stny_energy_consumption_proportion` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `demo_stny_energy_consumption_total` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `demo_stny_province_city_index` COMMENT = '官方示例模板数据双碳及能源情况概览';
ALTER TABLE `de_engine` COMMENT = '引擎设置表';
ALTER TABLE `file_content` COMMENT = '文件内容表';
ALTER TABLE `file_metadata` COMMENT = '文件基础信息表';
ALTER TABLE `license` COMMENT = '企业版许可证信息表';
ALTER TABLE `panel_app_template` COMMENT = '应用管理-应用表';
ALTER TABLE `panel_app_template_log` COMMENT = '应用管理-应用记录表';
ALTER TABLE `panel_group` COMMENT = '仪表板信息表';
ALTER TABLE `panel_group_extend` COMMENT = '仪表板和模板渲染的临时数据';
ALTER TABLE `panel_group_extend_data` COMMENT = '仪表板模板的结构数据';
ALTER TABLE `panel_link` COMMENT = '仪表板链接表';
ALTER TABLE `panel_link_jump` COMMENT = '仪表板视图跳转记录表';
ALTER TABLE `panel_link_jump_info` COMMENT = '仪表板视图跳转配置表';
ALTER TABLE `panel_link_jump_target_view_info` COMMENT = '仪表板视图跳转目标仪表板视图字段配置表';
ALTER TABLE `panel_link_mapping` COMMENT = '仪表板跳转映射表';
ALTER TABLE `panel_outer_params` COMMENT = '仪表板与外部参数关联关系表';
ALTER TABLE `panel_outer_params_info` COMMENT = '仪表板外部参数配置表';
ALTER TABLE `panel_outer_params_target_view_info` COMMENT = '仪表板外部参数联动视图字段信息表';
ALTER TABLE `panel_pdf_template` COMMENT = '仪表板 PDF 模板表';
ALTER TABLE `panel_subject` COMMENT = '仪表板主题表';
ALTER TABLE `panel_template` COMMENT = '仪表板模板表';
ALTER TABLE `panel_view` COMMENT = '仪表板视图表';
ALTER TABLE `panel_view_linkage` COMMENT = '仪表板视图联动关联关系表';
ALTER TABLE `panel_view_linkage_field` COMMENT = '仪表板视图联动关联字段关系表';
ALTER TABLE `panel_watermark` COMMENT = '仪表板水印设置表';
ALTER TABLE `plugin_sys_menu` COMMENT = '系统菜单表';
ALTER TABLE `qrtz_blob_triggers` COMMENT = '自定义触发器存储开源作业调度框架Quartz';
ALTER TABLE `qrtz_calendars` COMMENT = 'Quartz日历开源作业调度框架Quartz';
ALTER TABLE `qrtz_cron_triggers` COMMENT = 'CronTrigger存储开源作业调度框架Quartz';
ALTER TABLE `qrtz_fired_triggers` COMMENT = '存储已经触发的trigger相关信息开源作业调度框架Quartz';
ALTER TABLE `qrtz_job_details` COMMENT = '存储jobDetails信息开源作业调度框架Quartz';
ALTER TABLE `qrtz_locks` COMMENT = 'Quartz锁表为多个节点调度提供分布式锁开源作业调度框架Quartz';
ALTER TABLE `qrtz_paused_trigger_grps` COMMENT = '存放暂停掉的触发器开源作业调度框架Quartz';
ALTER TABLE `qrtz_scheduler_state` COMMENT = '存储所有节点的scheduler开源作业调度框架Quartz';
ALTER TABLE `qrtz_simple_triggers` COMMENT = 'SimpleTrigger存储开源作业调度框架Quartz';
ALTER TABLE `qrtz_simprop_triggers` COMMENT = '存储CalendarIntervalTrigger和DailyTimeIntervalTrigger两种类型的触发器开源作业调度框架Quartz';
ALTER TABLE `qrtz_triggers` COMMENT = '存储定义的trigger开源作业调度框架Quartz';
ALTER TABLE `schedule` COMMENT = '定时任务表';
ALTER TABLE `system_parameter` COMMENT = '系统内置参数表';
ALTER TABLE `sys_auth` COMMENT = '权限授权表';
ALTER TABLE `sys_auth_detail` COMMENT = '权限授权明细表';
ALTER TABLE `sys_background_image` COMMENT = '视图内置背景图记录表';
ALTER TABLE `sys_external_token` COMMENT = '外部认证 tocken 记录表';
ALTER TABLE `sys_log` COMMENT = '系统操作日志表';
ALTER TABLE `sys_login_limit` COMMENT = '用户登陆失败记录表用于做登陆限制';
ALTER TABLE `sys_param_assist` COMMENT = '页脚内容配置表';
ALTER TABLE `sys_startup_job` COMMENT = '系统启动任务';
ALTER TABLE `sys_task` COMMENT = '定时报告任务表';
ALTER TABLE `sys_task_email` COMMENT = '定时报告任务配置表';
ALTER TABLE `sys_task_instance` COMMENT = '定时报告执行记录表';
ALTER TABLE `sys_theme` COMMENT = '系统外观主题配置表';
ALTER TABLE `sys_theme_item` COMMENT = '系统外观主题内置颜色配置表';
ALTER TABLE `sys_user_assist` COMMENT = '用户关联信息表';
ALTER TABLE `task_instance` COMMENT = '系统内置定时任务实例状态信息表数据源定时状态检查等';
ALTER TABLE `chart_view_field`
MODIFY COLUMN `origin_name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '字段表达式' AFTER `chart_id`,
MODIFY COLUMN `size` int(11) NULL DEFAULT NULL COMMENT '字段长度允许为空默认0' AFTER `type`,
MODIFY COLUMN `de_extract_type` int(10) NOT NULL COMMENT '字段类型' AFTER `de_type_format`;
ALTER TABLE `dataease_code_version`
MODIFY COLUMN `installed_rank` int(11) NOT NULL COMMENT '执行顺序主键' FIRST,
MODIFY COLUMN `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述' AFTER `installed_rank`,
MODIFY COLUMN `installed_on` timestamp(0) NULL DEFAULT NULL COMMENT '执行时间' AFTER `description`,
MODIFY COLUMN `success` tinyint(1) NOT NULL COMMENT '状态1-成功0-失败' AFTER `installed_on`;
ALTER TABLE `dataease_version`
MODIFY COLUMN `installed_rank` int(11) NOT NULL COMMENT '执行顺序主键' FIRST,
MODIFY COLUMN `version` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '版本' AFTER `installed_rank`,
MODIFY COLUMN `description` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '描述' AFTER `version`,
MODIFY COLUMN `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型' AFTER `description`,
MODIFY COLUMN `script` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '脚本名称' AFTER `type`,
MODIFY COLUMN `checksum` int(11) NULL DEFAULT NULL COMMENT '脚本内容一致性校验码' AFTER `script`,
MODIFY COLUMN `installed_by` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行用户' AFTER `checksum`,
MODIFY COLUMN `installed_on` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '执行时间' AFTER `installed_by`,
MODIFY COLUMN `execution_time` int(11) NOT NULL COMMENT '执行时长' AFTER `installed_on`,
MODIFY COLUMN `success` tinyint(1) NOT NULL COMMENT '状态1-成功0-失败' AFTER `execution_time`;
ALTER TABLE `dataset_column_permissions`
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '更新时间' AFTER `white_list_user`;
ALTER TABLE `dataset_row_permissions`
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '更新时间' AFTER `enum_check_field`;
ALTER TABLE `dataset_row_permissions_tree`
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '更新时间' AFTER `white_list_dept`;
ALTER TABLE `dataset_table`
MODIFY COLUMN `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称' AFTER `id`,
MODIFY COLUMN `qrtz_instance` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Quartz 实例 ID' AFTER `create_time`,
MODIFY COLUMN `sync_status` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '同步状态定时同步数据集' AFTER `qrtz_instance`,
MODIFY COLUMN `last_update_time` bigint(13) NULL DEFAULT 0 COMMENT '最后一次更新时间' AFTER `sync_status`,
MODIFY COLUMN `sql_variable_details` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'SQL变量' AFTER `last_update_time`;
ALTER TABLE `dataset_table_field`
MODIFY COLUMN `size` int(11) NULL DEFAULT NULL COMMENT '字段长度允许为空默认0' AFTER `type`,
MODIFY COLUMN `de_extract_type` int(10) NOT NULL COMMENT '原字段类型0-STRING1-TIME2-INT3-FLOAT4-BOOL5-LOCATION6-BINARY' AFTER `de_type_format`,
MODIFY COLUMN `date_format` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '日期格式' AFTER `accuracy`;
ALTER TABLE `dataset_table_task`
MODIFY COLUMN `extra_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '简单重复时的执行频率' AFTER `last_exec_status`;
ALTER TABLE `dataset_table_task_log`
MODIFY COLUMN `trigger_type` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '执行频率的类型Cron-表达式设定Custom-自定义' AFTER `create_time`;
ALTER TABLE `de_driver_details`
MODIFY COLUMN `trans_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '替换后的 jar 包名称' AFTER `driver_class`,
MODIFY COLUMN `is_trans_name` tinyint(1) NULL DEFAULT NULL COMMENT '是否将上传 jar 包替换了名称1-0-' AFTER `trans_name`;
ALTER TABLE `license`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `panel_app_template`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `level` int(8) NULL DEFAULT NULL COMMENT '层级0-应用分类1-应用' AFTER `node_type`,
MODIFY COLUMN `icon` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '应用分类的封面图标' AFTER `version`,
MODIFY COLUMN `link_jumps` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '设置了跳转的仪表板视图信息' AFTER `datasource_info`,
MODIFY COLUMN `link_jump_infos` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '仪表板视图跳转配置信息' AFTER `link_jumps`,
MODIFY COLUMN `linkages` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '仪表板视图联动关联关系表' AFTER `link_jump_infos`,
MODIFY COLUMN `linkage_fields` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '仪表板视图联动关联字段关系表' AFTER `linkages`,
MODIFY COLUMN `snapshot` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '缩略图' AFTER `linkage_fields`,
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '修改时间' AFTER `snapshot`,
MODIFY COLUMN `update_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人' AFTER `update_time`,
MODIFY COLUMN `create_time` bigint(13) NULL DEFAULT NULL COMMENT '创建时间' AFTER `update_user`,
MODIFY COLUMN `create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人' AFTER `create_time`;
ALTER TABLE `panel_app_template_log`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `is_success`;
ALTER TABLE `panel_design`
MODIFY COLUMN `id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `panel_group`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `extend1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '扩展字段1' AFTER `source`,
MODIFY COLUMN `extend2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '扩展字段2' AFTER `extend1`,
MODIFY COLUMN `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `extend2`;
ALTER TABLE `panel_group_extend`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `panel_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表板ID' AFTER `id`;
ALTER TABLE `panel_group_extend_data`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `panel_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表板ID' AFTER `id`,
MODIFY COLUMN `view_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '视图ID' AFTER `panel_id`,
MODIFY COLUMN `view_details` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '视图详情' AFTER `view_id`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `view_details`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_link`
MODIFY COLUMN `user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建用户ID' AFTER `over_time`;
ALTER TABLE `panel_link_jump`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `checked`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_link_jump_info`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `link_jump_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'panel_link_jump 表的 ID' AFTER `id`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `attach_params`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_link_jump_target_view_info`
MODIFY COLUMN `target_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `link_jump_info_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'panel_link_jump_info 表的 ID' AFTER `target_id`,
MODIFY COLUMN `target_view_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目标视图ID' AFTER `link_jump_info_id`,
MODIFY COLUMN `target_field_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目标字段ID' AFTER `target_view_id`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `target_field_id`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_link_mapping`
MODIFY COLUMN `user_id` bigint(20) NULL DEFAULT NULL COMMENT '创建用户ID' AFTER `resource_id`;
ALTER TABLE `panel_outer_params`
MODIFY COLUMN `params_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `panel_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表板ID' AFTER `params_id`,
MODIFY COLUMN `checked` tinyint(1) NULL DEFAULT NULL COMMENT '是否启用外部参数标识1-0-' AFTER `panel_id`,
MODIFY COLUMN `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `checked`,
MODIFY COLUMN `copy_from` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `remark`,
MODIFY COLUMN `copy_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_outer_params_info`
MODIFY COLUMN `params_info_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `params_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'panel_outer_params 表的 ID' AFTER `params_info_id`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `checked`,
MODIFY COLUMN `copy_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_outer_params_target_view_info`
MODIFY COLUMN `target_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `params_info_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'panel_outer_params_info 表的 ID' AFTER `target_id`,
MODIFY COLUMN `target_view_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联动视图ID' AFTER `params_info_id`,
MODIFY COLUMN `target_field_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '联动字段ID' AFTER `target_view_id`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `target_field_id`,
MODIFY COLUMN `copy_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_subject`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `panel_template`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `panel_view`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `copy_from_panel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源仪表板' AFTER `position`,
MODIFY COLUMN `copy_from_view` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源视图' AFTER `copy_from_panel`;
ALTER TABLE `panel_view_linkage`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `panel_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '仪表板ID' AFTER `id`,
MODIFY COLUMN `ext1` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '扩展字段1' AFTER `linkage_active`,
MODIFY COLUMN `ext2` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '扩展字段2' AFTER `ext1`,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `ext2`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_view_linkage_field`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `copy_from` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源' AFTER `update_time`,
MODIFY COLUMN `copy_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '复制来源ID' AFTER `copy_from`;
ALTER TABLE `panel_watermark`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人' AFTER `setting_content`,
MODIFY COLUMN `create_time` bigint(13) NULL DEFAULT NULL COMMENT '创建时间' AFTER `create_by`;
ALTER TABLE `plugin_sys_menu`
MODIFY COLUMN `menu_id` bigint(8) NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `pid` bigint(8) NULL DEFAULT NULL COMMENT '父级ID' AFTER `menu_id`,
MODIFY COLUMN `sub_count` int(8) NULL DEFAULT NULL COMMENT '下级数量' AFTER `pid`,
MODIFY COLUMN `type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型' AFTER `sub_count`,
MODIFY COLUMN `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单标题' AFTER `type`,
MODIFY COLUMN `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称' AFTER `title`,
MODIFY COLUMN `component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件' AFTER `name`,
MODIFY COLUMN `menu_sort` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '排序' AFTER `component`,
MODIFY COLUMN `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标' AFTER `menu_sort`,
MODIFY COLUMN `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径' AFTER `icon`,
MODIFY COLUMN `i_frame` tinyint(1) NULL DEFAULT NULL COMMENT '是否参与授权0-参与 1-不参与' AFTER `path`,
MODIFY COLUMN `cache` tinyint(1) NULL DEFAULT NULL COMMENT '缓存' AFTER `i_frame`,
MODIFY COLUMN `hidden` tinyint(1) NULL DEFAULT NULL COMMENT '是否隐藏1-0-' AFTER `cache`,
MODIFY COLUMN `permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限标识' AFTER `hidden`,
MODIFY COLUMN `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人' AFTER `permission`,
MODIFY COLUMN `update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人' AFTER `create_by`,
MODIFY COLUMN `create_time` bigint(13) NULL DEFAULT NULL COMMENT '创建时间' AFTER `update_by`,
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '更新时间' AFTER `create_time`,
MODIFY COLUMN `no_layout` tinyint(1) NULL DEFAULT NULL COMMENT '是否独立窗口页面' AFTER `update_time`;
ALTER TABLE `sys_auth`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `sys_auth_detail`
MODIFY COLUMN `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `auth_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'sys_auth 表的 ID' AFTER `id`,
MODIFY COLUMN `create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人' AFTER `remark`,
MODIFY COLUMN `create_time` bigint(13) NULL DEFAULT NULL COMMENT '创建时间' AFTER `create_user`,
MODIFY COLUMN `update_time` bigint(13) NULL DEFAULT NULL COMMENT '更新时间' AFTER `create_time`;
ALTER TABLE `sys_background_image`
MODIFY COLUMN `id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST,
MODIFY COLUMN `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称' AFTER `id`,
MODIFY COLUMN `classification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类名' AFTER `name`,
MODIFY COLUMN `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容' AFTER `classification`,
MODIFY COLUMN `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `content`,
MODIFY COLUMN `sort` int(8) NULL DEFAULT NULL COMMENT '排序' AFTER `remark`,
MODIFY COLUMN `upload_time` bigint(13) NULL DEFAULT NULL COMMENT '上传时间' AFTER `sort`,
MODIFY COLUMN `base_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所在目录地址' AFTER `upload_time`,
MODIFY COLUMN `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片url' AFTER `base_url`;
ALTER TABLE `sys_login_limit`
MODIFY COLUMN `login_type` int(8) NOT NULL COMMENT '登陆类型0-失败' FIRST,
MODIFY COLUMN `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名' AFTER `login_type`,
MODIFY COLUMN `record_time` bigint(13) NOT NULL COMMENT '记录时间' AFTER `username`;
ALTER TABLE `sys_menu`
MODIFY COLUMN `i_frame` bit(1) NULL DEFAULT NULL COMMENT '是否参与授权0-参与 1-不参与' AFTER `path`;
ALTER TABLE `sys_param_assist`
MODIFY COLUMN `id` bigint(21) NOT NULL AUTO_INCREMENT COMMENT '主键' FIRST;
ALTER TABLE `sys_task_email`
MODIFY COLUMN `view_data_range` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'view' COMMENT '视图数据范围view-展示数据data-全部数据' AFTER `reci_users`;
ALTER TABLE `sys_theme`
MODIFY COLUMN `status` tinyint(1) NULL DEFAULT NULL COMMENT '状态1-正在使用0-未使用' AFTER `name`,
MODIFY COLUMN `senior` tinyint(1) NULL DEFAULT NULL COMMENT '高级标识' AFTER `status`;
ALTER TABLE `sys_user_assist`
MODIFY COLUMN `larksuite_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国际飞书账号' AFTER `lark_id`;

View File

@ -541,6 +541,8 @@ export default {
clearCanvas() {
this.$store.commit('setComponentData', [])
this.$store.commit('recordSnapshot', 'clearCanvas')
bus.$emit('change_panel_right_draw', false)
this.$store.commit('setCurComponent', { component: null, index: null })
},
handlePreviewChange() {

View File

@ -176,6 +176,7 @@ import _ from 'lodash'
import _jq from 'jquery'
import Background from '@/views/background/index'
import PointShadow from '@/components/deDrag/PointShadow'
import {hexColorToRGBA} from "@/views/chart/chart/util";
// let positionBox = []
// let coordinates = [] //
@ -984,8 +985,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -164,6 +164,7 @@ import { queryAll } from '@/api/panel/pdfTemplate'
import PDFPreExport from '@/views/panel/export/PDFPreExport'
import { listenGlobalKeyDownPreview } from '@/components/canvas/utils/shortcutKey'
import UserViewDialog from '@/components/canvas/customComponent/UserViewDialog'
import {hexColorToRGBA} from "@/views/chart/chart/util";
const erd = elementResizeDetectorMaker()
export default {
@ -343,8 +344,9 @@ export default {
background: `url(${imgUrlTrans(styleInfo.imageUrl)}) no-repeat`
}
} else if (styleInfo.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(styleInfo.color, styleInfo.alpha||100)
style = {
background: styleInfo.color
background: colorRGBA
}
} else {
style = {

View File

@ -144,8 +144,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -102,8 +102,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -123,7 +123,7 @@ export default {
if (data.type === 'view') {
chartCopy(data.propValue.viewId, state.panel.panelInfo.id).then(res => {
const newView = deepCopy(data)
Vue.set(newView, 'needAdaptor', needAdaptor)
Vue.set(newView, 'needAdaptor', store.state.multiplexingStyleAdapt?needAdaptor:false)
newView.id = uuid.v1()
newView.propValue.viewId = res.data
newView['canvasId'] = data.canvasId
@ -131,7 +131,9 @@ export default {
if (newView.filters && newView.filters.length) {
newView.filters = []
}
needAdaptor && adaptCurThemeCommonStyle(newView)
if(needAdaptor && store.state.multiplexingStyleAdapt){
adaptCurThemeCommonStyle(newView)
}
store.commit('addComponent', { component: newView })
})
} else if (data.type === 'de-tabs') {
@ -143,20 +145,24 @@ export default {
const newViewId = uuid.v1()
sourceAndTargetIds[item.content.propValue.viewId] = newViewId
item.content.propValue.viewId = newViewId
Vue.set(item.content, 'needAdaptor', needAdaptor)
Vue.set(item.content, 'needAdaptor', store.state.multiplexingStyleAdapt?needAdaptor:false)
if (item.content.filters && item.content.filters.length) {
item.content.filters = []
}
}
})
chartBatchCopy({ 'sourceAndTargetIds': sourceAndTargetIds }, state.panel.panelInfo.id).then((rsp) => {
needAdaptor && adaptCurThemeCommonStyle(newCop,'copy')
if(needAdaptor && store.state.multiplexingStyleAdapt){
adaptCurThemeCommonStyle(newCop,'copy')
}
store.commit('addComponent', { component: newCop })
})
} else {
const newCop = deepCopy(data)
newCop.id = uuid.v1()
needAdaptor && adaptCurThemeCommonStyle(newCop,'copy')
if(needAdaptor && store.state.multiplexingStyleAdapt) {
adaptCurThemeCommonStyle(newCop,'copy')
}
store.commit('addComponent', { component: newCop })
}
if (state.isCut) {

View File

@ -97,6 +97,8 @@ export function panelDataPrepare(componentData, componentStyle, callback) {
componentStyle.themeId = (componentStyle.themeId || 'NO_THEME')
componentStyle.panel.themeColor = (componentStyle.panel.themeColor || 'light')
componentStyle.panel.mobileSetting = (componentStyle.panel.mobileSetting || deepCopy(MOBILE_SETTING))
componentStyle.panel.mobileSetting.alpha = (componentStyle.panel.mobileSetting.alpha === undefined ? 100 : componentStyle.panel.mobileSetting.alpha)
componentStyle.panel.alpha = (componentStyle.panel.alpha === undefined ? 100 : componentStyle.panel.alpha)
// 主题增加组件背景设置
if (componentStyle.chartCommonStyle) {

View File

@ -153,7 +153,8 @@ const data = {
previewVisible: false,
previewComponentData: [],
currentCanvasNewId: [],
lastViewRequestInfo: {}
lastViewRequestInfo: {},
multiplexingStyleAdapt: true //复用样式跟随主题
},
mutations: {
...animation.mutations,
@ -848,6 +849,9 @@ const data = {
})
bus.$emit('clear_panel_linkage', { viewId: viewId })
},
setMultiplexingStyleAdapt(state, value) {
state.multiplexingStyleAdapt = value
}
},
modules: {

View File

@ -228,8 +228,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -263,6 +263,7 @@ import { deepCopy, imgUrlTrans } from '@/components/canvas/utils/utils'
import { COLOR_PANEL } from '@/views/chart/chart/chart'
import { uploadFileResult } from '@/api/staticResource/staticResource'
import { COMMON_BACKGROUND_NONE } from '@/components/canvas/customComponent/component-list'
import {hexColorToRGBA} from "@/views/chart/chart/util";
export default {
name: 'Background',
@ -290,8 +291,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -3710,7 +3710,7 @@ export function handleTableEmptyStrategy(tableData, chart) {
}
if (intersection.length) {
newData = _.clone(tableData)
for (let i = 0; i < newData.length; i++) {
for (let i = newData.length - 1; i >= 0; i--) {
for (let j = 0, tmp = intersection.length; j < tmp; j++) {
const deName = intersection[j]
if (newData[i][deName] === null) {
@ -3719,6 +3719,7 @@ export function handleTableEmptyStrategy(tableData, chart) {
}
if (emptyDataStrategy === 'ignoreData') {
newData = _.filter(newData, (_, index) => index !== i)
break
}
}
}

View File

@ -32,6 +32,7 @@ import 'tinymce/plugins/nonbreaking'
import 'tinymce/plugins/pagebreak'
import { imgUrlTrans } from '@/components/canvas/utils/utils'
import { mapState } from 'vuex'
import {hexColorToRGBA} from "@/views/chart/chart/util";
//
export default {
name: 'RemarkEditor',
@ -98,8 +99,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}

View File

@ -11,12 +11,12 @@ export function getItemType(dimensionData, quotaData, item) {
for (let i = 0; i < dimensionData.length; i++) {
const ele = dimensionData[i]
if (item.chartId) {
if (ele.dataeaseName === item.dataeaseName && ele.deType === item.deType && ele.groupType === item.groupType) {
if (ele.dataeaseName === item.dataeaseName && ele.deType === item.deType && ele.groupType === item.groupType && ele.originName === item.originName) {
checked = true
break
}
} else {
if (ele.id === item.id && ele.deType === item.deType && ele.groupType === item.groupType) {
if (ele.id === item.id && ele.deType === item.deType && ele.groupType === item.groupType && ele.originName === item.originName) {
checked = true
break
}
@ -27,12 +27,12 @@ export function getItemType(dimensionData, quotaData, item) {
for (let i = 0; i < quotaData.length; i++) {
const ele = quotaData[i]
if (item.chartId) {
if (ele.dataeaseName === item.dataeaseName && ele.deType === item.deType && ele.groupType === item.groupType) {
if (ele.dataeaseName === item.dataeaseName && ele.deType === item.deType && ele.groupType === item.groupType && ele.originName === item.originName) {
checked = true
break
}
} else {
if (ele.id === item.id && ele.deType === item.deType && ele.groupType === item.groupType) {
if (ele.id === item.id && ele.deType === item.deType && ele.groupType === item.groupType && ele.originName === item.originName) {
checked = true
break
}

View File

@ -48,8 +48,8 @@
<el-input
v-model="scope.row.name"
size="mini"
@blur="saveEdit(scope.row)"
@keyup.enter.native="saveEdit(scope.row)"
@blur="saveEdit(scope.row,false)"
@keyup.enter.native="saveEdit(scope.row,false)"
/>
</template>
</el-table-column>
@ -284,8 +284,8 @@
<el-input
v-model="scope.row.name"
size="mini"
@blur="saveEdit(scope.row)"
@keyup.enter.native="saveEdit(scope.row)"
@blur="saveEdit(scope.row,false)"
@keyup.enter.native="saveEdit(scope.row,false)"
/>
</template>
</el-table-column>
@ -604,13 +604,18 @@ export default {
this.filterField(this.searchField)
})
},
saveEdit(item) {
saveEdit(item, checkExp = true) {
if (item.name && item.name.length > 50) {
this.$message.error(this.$t('dataset.field_name_less_50'))
return
}
post('/chart/field/save/' + this.panelInfo.id, item).then(response => {
let url
if (checkExp) {
url = '/chart/field/save/'
} else {
url = '/chart/field/saveNotCheck/'
}
post(url + this.panelInfo.id, item).then(response => {
this.initField()
}).catch(res => {
this.initField()
@ -623,7 +628,7 @@ export default {
} else if (val === 'q') {
item.groupType = 'd'
}
this.saveEdit(item)
this.saveEdit(item, false)
},
addCalcField() {

View File

@ -88,8 +88,8 @@
v-model="scope.row.name"
size="mini"
:disabled="!hasDataPermission('manage', param.privileges)"
@blur="saveEdit(scope.row)"
@keyup.enter.native="saveEdit(scope.row)"
@blur="saveEdit(scope.row,false)"
@keyup.enter.native="saveEdit(scope.row,false)"
/>
</template>
</el-table-column>
@ -427,8 +427,8 @@
v-model="scope.row.name"
size="mini"
:disabled="!hasDataPermission('manage', param.privileges)"
@blur="saveEdit(scope.row)"
@keyup.enter.native="saveEdit(scope.row)"
@blur="saveEdit(scope.row,false)"
@keyup.enter.native="saveEdit(scope.row,false)"
/>
</template>
</el-table-column>
@ -850,7 +850,7 @@ export default {
]
}
},
saveEdit(item) {
saveEdit(item, checkExp = true) {
if (item.name && item.name.length > 50) {
this.$message.error(this.$t('dataset.field_name_less_50'))
return
@ -868,7 +868,13 @@ export default {
if (item.dateFormatType === 'custom' && !item.dateFormat) {
return
}
post('/dataset/field/save', item)
let url
if (checkExp) {
url = '/dataset/field/save'
} else {
url = '/dataset/field/saveNotCheck'
}
post(url, item)
.then((response) => {
this.initField()
localStorage.setItem('reloadDsData', 'true')
@ -885,7 +891,7 @@ export default {
} else if (val === 'q') {
item.groupType = 'd'
}
this.saveEdit(item)
this.saveEdit(item, false)
},
addCalcField() {

View File

@ -47,6 +47,7 @@ import { mapState } from 'vuex'
import ComponentWaitItem from '@/views/panel/edit/ComponentWaitItem'
import MobileBackgroundSelector from '@/views/panel/subjectSetting/panelStyle/MobileBackgroundSelector'
import { imgUrlTrans } from '@/components/canvas/utils/utils'
import {hexColorToRGBA} from "@/views/chart/chart/util";
export default {
name: 'ComponentWait',
@ -81,8 +82,9 @@ export default {
background: `url(${imgUrlTrans(styleInfo.imageUrl)}) no-repeat`
}
} else if (styleInfo.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(styleInfo.color, styleInfo.alpha||100)
style = {
background: styleInfo.color
background: colorRGBA
}
} else {
style = {

View File

@ -200,21 +200,23 @@
<el-row class="this_mobile_canvas_inner_top">
{{ panelInfo.name }}
</el-row>
<el-row
id="canvasInfoMobile"
class="this_mobile_canvas_main"
:style="mobileCanvasStyle"
>
<canvas-opt-bar v-if="!previewVisible&&mobileLayoutStatus"/>
<de-canvas
v-if="!previewVisible&&mobileLayoutStatus"
ref="canvasMainRef"
:canvas-style-data="canvasStyleData"
:component-data="mainCanvasComponentData"
:canvas-id="canvasId"
:canvas-pid="'0'"
:mobile-layout-status="true"
/>
<el-row class="this_mobile_canvas_main_outer">
<el-row
id="canvasInfoMobile"
class="this_mobile_canvas_main"
:style="mobileCanvasStyle"
>
<canvas-opt-bar v-if="!previewVisible&&mobileLayoutStatus"/>
<de-canvas
v-if="!previewVisible&&mobileLayoutStatus"
ref="canvasMainRef"
:canvas-style-data="canvasStyleData"
:component-data="mainCanvasComponentData"
:canvas-id="canvasId"
:canvas-pid="'0'"
:mobile-layout-status="true"
/>
</el-row>
</el-row>
<el-row class="this_mobile_canvas_inner_bottom">
<el-col :span="12">
@ -426,6 +428,22 @@
{{ $t('panel.multiplexing') }}
</span>
<span style="float: right;">
<span class="adapt-text"> 样式适配 </span>
<el-select
style="width: 120px;margin-right: 16px"
v-model="multiplexingStyleAdaptSelf"
placeholder="Select"
placement="top-start"
size="mini"
@change="multiplexingStyleAdaptChange"
>
<el-option
v-for="item in copyOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button
type="primary"
size="mini"
@ -536,6 +554,7 @@ import TextAttr from '@/components/canvas/components/TextAttr'
import { userLoginInfo } from '@/api/systemInfo/userLogin'
import { activeWatermark } from '@/components/canvas/tools/watermark'
import PositionAdjust from '@/views/chart/view/PositionAdjust'
import {hexColorToRGBA} from "@/views/chart/chart/util";
export default {
name: 'PanelEdit',
components: {
@ -627,7 +646,12 @@ export default {
activeToolsName: 'view',
rightDrawOpen: false,
editType: null,
buttonVisible: false
buttonVisible: false,
copyOptions: [
{ label: '适应新主题', value: true },
{ label: '保持源样式', value: false }
],
multiplexingStyleAdaptSelf : true
}
},
@ -699,8 +723,9 @@ export default {
background: `url(${imgUrlTrans(styleInfo.imageUrl)}) no-repeat`
}
} else if (styleInfo.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(styleInfo.color, styleInfo.alpha||100)
style = {
background: styleInfo.color
background: colorRGBA
}
} else {
style = {
@ -722,8 +747,9 @@ export default {
...style
}
} else if (this.canvasStyleData.panel.backgroundType === 'color') {
const colorRGBA = hexColorToRGBA(this.canvasStyleData.panel.color, this.canvasStyleData.panel.alpha||100)
style = {
background: this.canvasStyleData.panel.color,
background: colorRGBA,
...style
}
}
@ -749,6 +775,9 @@ export default {
curCanvasScaleSelf() {
return this.curCanvasScaleMap[this.canvasId]
},
selectComponentCount(){
return Object.keys(this.curMultiplexingComponents).length
},
...mapState([
'curComponent',
'curCanvasScaleMap',
@ -765,7 +794,8 @@ export default {
'mobileLayoutStyle',
'scrollAutoMove',
'batchOptStatus',
'curMultiplexingComponents'
'curMultiplexingComponents',
'multiplexingStyleAdapt'
])
},
@ -830,6 +860,7 @@ export default {
})
this.loadMultiplexingViewTree()
this.init(this.$store.state.panel.panelInfo.id)
this.multiplexingStyleAdaptSelf = this.multiplexingStyleAdapt
},
beforeDestroy() {
bus.$off('component-on-drag', this.componentOnDrag)
@ -1443,6 +1474,9 @@ export default {
this.$store.commit('copyMultiplexingComponents')
this.$store.commit('recordSnapshot')
this.$store.commit('canvasChange')
},
multiplexingStyleAdaptChange(value){
this.$store.commit('setMultiplexingStyleAdapt',value)
}
}
}
@ -1567,11 +1601,16 @@ export default {
width: 100%;
}
.this_mobile_canvas_main_outer {
height: calc(100% - 120px);;
width: 100%;
background-color: #d7d9e3;
}
.this_mobile_canvas_main {
overflow-x: hidden;
overflow-y: auto;
height: calc(100% - 120px);;
background-color: #d7d9e3;
height: 100%;
background-size: 100% 100% !important;
}
@ -1717,4 +1756,31 @@ export default {
.dialog-css ::v-deep .el-dialog__body {
padding: 10px 20px 20px;
}
.multiplexing-footer {
position: relative;
}
.adapt-count {
position: absolute;
top: 18px;
left: 20px;
color: #646a73;
font-size: 14px;
font-weight: 400;
line-height: 22px;
text-align: left;
}
.adapt-select {
position: absolute;
top: 18px;
right: 220px;
}
.adapt-text {
font-size: 14px;
font-weight: 400;
color: #1f2329;
line-height: 22px;
}
</style>

View File

@ -32,6 +32,7 @@ export const FILTER_COMMON_STYLE_DARK = {
export const MOBILE_SETTING = {
customSetting: false,
color: '#ffffff',
alpha: 100, // 新增透明度设置
imageUrl: null,
backgroundType: 'image'
}
@ -40,6 +41,7 @@ export const DEFAULT_PANEL_STYLE = {
mobileSetting: MOBILE_SETTING,
themeColor: 'light',
color: '#ffffff',
alpha: 100, // 新增透明度设置
imageUrl: null,
backgroundType: 'image',
gap: 'yes',

View File

@ -20,15 +20,29 @@
</el-col>
<el-col
v-show="panel.backgroundType==='color'"
:span="10"
:span="24"
>
<el-color-picker
v-model="panel.color"
:predefine="predefineColors"
size="mini"
class="color-picker-custom"
@change="onChangeType"
/>
<el-col :span="4">
<el-color-picker
v-model="panel.color"
:predefine="predefineColors"
size="mini"
class="color-picker-custom"
@change="onChangeType"
/>
</el-col>
<el-col :span="5">
<span class="params-title-small">{{ $t('chart.not_alpha') }}</span>
</el-col>
<el-col :span="15">
<el-slider
v-model="panel.alpha"
show-input
:show-input-controls="false"
input-size="mini"
@change="onChangeType"
/>
</el-col>
</el-col>
<el-col
v-show="panel.backgroundType==='image'"
@ -262,4 +276,25 @@ span {
color: var(--TextPrimary, #1F2329) !important;
line-height: 22px;
}
::v-deep .el-slider__input {
width: 40px;
padding-left: 0px;
padding-right: 0px;
}
::v-deep .el-input__inner {
padding: 0px !important;
}
::v-deep .el-slider__runway {
margin-right: 60px !important;
}
.params-title-small {
font-size: 12px !important;
color: var(--TextPrimary, #1F2329) !important;
line-height: 40px;
}
</style>

View File

@ -22,14 +22,28 @@
v-show="mobileSetting.backgroundType==='color'"
:span="10"
>
<el-color-picker
v-model="mobileSetting.color"
:predefine="predefineColors"
size="mini"
class="color-picker-custom"
:disabled="!mobileSetting.customSetting"
@change="onChangeType"
/>
<el-col :span="4">
<el-color-picker
v-model="mobileSetting.color"
:predefine="predefineColors"
size="mini"
class="color-picker-custom"
:disabled="!mobileSetting.customSetting"
@change="onChangeType"
/>
</el-col>
<el-col :span="5">
<span class="params-title-small">{{ $t('chart.not_alpha') }}</span>
</el-col>
<el-col :span="15">
<el-slider
v-model="mobileSetting.alpha"
show-input
:show-input-controls="false"
input-size="mini"
@change="onChangeType"
/>
</el-col>
</el-col>
<el-col
v-show="mobileSetting.backgroundType==='image'"
@ -265,4 +279,25 @@ span {
color: var(--TextPrimary, #1F2329) !important;
line-height: 22px;
}
::v-deep .el-slider__input {
width: 40px;
padding-left: 0px;
padding-right: 0px;
}
::v-deep .el-input__inner {
padding: 0px !important;
}
::v-deep .el-slider__runway {
margin-right: 60px !important;
}
.params-title-small {
font-size: 12px !important;
color: var(--TextPrimary, #1F2329) !important;
line-height: 40px;
}
</style>