提交 837c4cd3 authored 作者: wangjiahao's avatar wangjiahao

Merge remote-tracking branch 'origin/main' into main

...@@ -23,9 +23,9 @@ public class LicenseController { ...@@ -23,9 +23,9 @@ public class LicenseController {
@GetMapping(value = "anonymous/license/validate") @GetMapping(value = "anonymous/license/validate")
public ResultHolder validateLicense() throws Exception { public ResultHolder validateLicense() throws Exception {
// if (!need_validate_lic) { if (!need_validate_lic) {
// return ResultHolder.success(null); return ResultHolder.success(null);
// } }
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense(); F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
System.out.println(new Gson().toJson(f2CLicenseResponse)); System.out.println(new Gson().toJson(f2CLicenseResponse));
switch (f2CLicenseResponse.getStatus()) { switch (f2CLicenseResponse.getStatus()) {
......
...@@ -38,4 +38,8 @@ public class ChartViewFieldDTO implements Serializable { ...@@ -38,4 +38,8 @@ public class ChartViewFieldDTO implements Serializable {
private List<ChartViewFieldFilterDTO> filter; private List<ChartViewFieldFilterDTO> filter;
private Integer deExtractType; private Integer deExtractType;
private String dateStyle;
private String datePattern;
} }
...@@ -8,20 +8,16 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; ...@@ -8,20 +8,16 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@Component @Component
public class MyScanner implements BeanDefinitionRegistryPostProcessor { public class MyScanner implements BeanDefinitionRegistryPostProcessor {
@Resource
private MapperScannerConfigurer mapperScannerConfigurer;
private BeanDefinitionRegistry beanDefinitionRegistry; private BeanDefinitionRegistry beanDefinitionRegistry;
@Override @Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException { public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {
this.beanDefinitionRegistry = beanDefinitionRegistry; this.beanDefinitionRegistry = beanDefinitionRegistry;
System.out.println("-----");
} }
@Override @Override
...@@ -30,9 +26,7 @@ public class MyScanner implements BeanDefinitionRegistryPostProcessor { ...@@ -30,9 +26,7 @@ public class MyScanner implements BeanDefinitionRegistryPostProcessor {
} }
public void scanner() { public void scanner() {
if (null == mapperScannerConfigurer){ MapperScannerConfigurer mapperScannerConfigurer = SpringContextUtil.getBean(MapperScannerConfigurer.class);
mapperScannerConfigurer = SpringContextUtil.getBean(MapperScannerConfigurer.class);
}
mapperScannerConfigurer.postProcessBeanDefinitionRegistry(this.beanDefinitionRegistry); mapperScannerConfigurer.postProcessBeanDefinitionRegistry(this.beanDefinitionRegistry);
} }
......
package io.dataease.plugins.util; package io.dataease.plugins.util;
import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
import io.dataease.plugins.common.dto.PluginSysMenu; import io.dataease.plugins.common.dto.PluginSysMenu;
import io.dataease.plugins.common.service.PluginMenuService; import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.config.SpringContextUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component
public class PluginUtils { public class PluginUtils {
private static DefaultLicenseService defaultLicenseService;
@Autowired
public void setDefaultLicenseService(DefaultLicenseService defaultLicenseService) {
PluginUtils.defaultLicenseService = defaultLicenseService;
}
public static List<PluginSysMenu> pluginMenus() { public static List<PluginSysMenu> pluginMenus() {
F2CLicenseResponse f2CLicenseResponse = currentLic();
if (f2CLicenseResponse.getStatus() != F2CLicenseResponse.Status.valid)
return new ArrayList<>();
Map<String, PluginMenuService> pluginMenuServiceMap = SpringContextUtil.getApplicationContext().getBeansOfType(PluginMenuService.class); Map<String, PluginMenuService> pluginMenuServiceMap = SpringContextUtil.getApplicationContext().getBeansOfType(PluginMenuService.class);
List<PluginSysMenu> menus = pluginMenuServiceMap.values().stream().flatMap(item -> item.menus().stream()).collect(Collectors.toList()); List<PluginSysMenu> menus = pluginMenuServiceMap.values().stream().flatMap(item -> item.menus().stream()).collect(Collectors.toList());
return menus; return menus;
} }
public static F2CLicenseResponse currentLic() {
Environment environment = SpringContextUtil.getBean(Environment.class);
Boolean need_validate_lic = environment.getProperty("dataease.need_validate_lic", Boolean.class, true);
if (!need_validate_lic) {
F2CLicenseResponse f2CLicenseResponse = new F2CLicenseResponse();
f2CLicenseResponse.setStatus(F2CLicenseResponse.Status.valid);
return f2CLicenseResponse;
}
F2CLicenseResponse f2CLicenseResponse = defaultLicenseService.validateLicense();
return f2CLicenseResponse;
}
......
...@@ -131,22 +131,26 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -131,22 +131,26 @@ public class DorisQueryProvider extends QueryProvider {
// 如果原始类型为时间 // 如果原始类型为时间
if (x.getDeExtractType() == 1) { if (x.getDeExtractType() == 1) {
if (x.getDeType() == 2 || x.getDeType() == 3) { if (x.getDeType() == 2 || x.getDeType() == 3) {
stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as ").append(x.getDataeaseName()); stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as _").append(x.getDataeaseName());
} else if (x.getDeType() == 1) {
String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
stringBuilder.append("DATE_FORMAT(").append(x.getDataeaseName()).append(",'").append(format).append("') as _").append(x.getDataeaseName());
} else { } else {
stringBuilder.append(x.getDataeaseName()); stringBuilder.append(x.getDataeaseName()).append(" as _").append(x.getDataeaseName());
} }
} else { } else {
if (x.getDeType() == 1) { if (x.getDeType() == 1) {
stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as _").append(x.getDataeaseName());
} else { } else {
stringBuilder.append(x.getDataeaseName()); stringBuilder.append(x.getDataeaseName()).append(" as _").append(x.getDataeaseName());
} }
} }
return stringBuilder.toString(); return stringBuilder.toString();
}).toArray(String[]::new); }).toArray(String[]::new);
String[] group = xAxis.stream().map(ChartViewFieldDTO::getDataeaseName).toArray(String[]::new); String[] group = xAxis.stream().map(x -> "_" + x.getDataeaseName()).toArray(String[]::new);
String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> f.getDataeaseName() + " " + f.getSort()).toArray(String[]::new); .map(f -> "_" + f.getDataeaseName() + " " + f.getSort()).toArray(String[]::new);
String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getDataeaseName(), "*") ? "" : f.getDataeaseName()) + " " + f.getSort()).toArray(String[]::new); .map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getDataeaseName(), "*") ? "" : f.getDataeaseName()) + " " + f.getSort()).toArray(String[]::new);
String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length); String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length);
...@@ -330,4 +334,30 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -330,4 +334,30 @@ public class DorisQueryProvider extends QueryProvider {
} }
return filter.toString(); return filter.toString();
} }
private String transDateFormat(String dateStyle, String datePattern) {
String split = "-";
if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) {
split = "-";
} else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) {
split = "/";
}
switch (dateStyle) {
case "y":
return "%Y";
case "y_M":
return "%Y" + split + "%m";
case "y_M_d":
return "%Y" + split + "%m" + split + "%d";
case "H_m_s":
return "%H:%i:%S";
case "y_M_d_H_m":
return "%Y" + split + "%m" + split + "%d" + " %H:%i";
case "y_M_d_H_m_s":
return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S";
default:
return "%Y-%m-%d %H:%i:%S";
}
}
} }
...@@ -137,22 +137,26 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -137,22 +137,26 @@ public class MysqlQueryProvider extends QueryProvider {
// 如果原始类型为时间 // 如果原始类型为时间
if (x.getDeExtractType() == 1) { if (x.getDeExtractType() == 1) {
if (x.getDeType() == 2 || x.getDeType() == 3) { if (x.getDeType() == 2 || x.getDeType() == 3) {
stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as ").append(x.getDataeaseName()); stringBuilder.append("unix_timestamp(").append(x.getDataeaseName()).append(")*1000 as _").append(x.getDataeaseName());
} else if (x.getDeType() == 1) {
String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
stringBuilder.append("DATE_FORMAT(").append(x.getDataeaseName()).append(",'").append(format).append("') as _").append(x.getDataeaseName());
} else { } else {
stringBuilder.append(x.getDataeaseName()); stringBuilder.append(x.getDataeaseName()).append(" as _").append(x.getDataeaseName());
} }
} else { } else {
if (x.getDeType() == 1) { if (x.getDeType() == 1) {
stringBuilder.append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S') as ").append(x.getDataeaseName()); String format = transDateFormat(x.getDateStyle(), x.getDatePattern());
stringBuilder.append("DATE_FORMAT(").append("FROM_UNIXTIME(cast(").append(x.getDataeaseName()).append(" as decimal(20,0))/1000,'%Y-%m-%d %H:%i:%S')").append(",'").append(format).append("') as _").append(x.getDataeaseName());
} else { } else {
stringBuilder.append(x.getDataeaseName()); stringBuilder.append(x.getDataeaseName()).append(" as _").append(x.getDataeaseName());
} }
} }
return stringBuilder.toString(); return stringBuilder.toString();
}).toArray(String[]::new); }).toArray(String[]::new);
String[] group = xAxis.stream().map(ChartViewFieldDTO::getDataeaseName).toArray(String[]::new); String[] group = xAxis.stream().map(x -> "_" + x.getDataeaseName()).toArray(String[]::new);
String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) String[] xOrder = xAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> f.getDataeaseName() + " " + f.getSort()).toArray(String[]::new); .map(f -> "_" + f.getDataeaseName() + " " + f.getSort()).toArray(String[]::new);
String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none")) String[] yOrder = yAxis.stream().filter(f -> StringUtils.isNotEmpty(f.getSort()) && !StringUtils.equalsIgnoreCase(f.getSort(), "none"))
.map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getDataeaseName(), "*") ? "" : f.getDataeaseName()) + " " + f.getSort()).toArray(String[]::new); .map(f -> "_" + f.getSummary() + "_" + (StringUtils.equalsIgnoreCase(f.getDataeaseName(), "*") ? "" : f.getDataeaseName()) + " " + f.getSort()).toArray(String[]::new);
String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length); String[] order = Arrays.copyOf(xOrder, xOrder.length + yOrder.length);
...@@ -344,4 +348,30 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -344,4 +348,30 @@ public class MysqlQueryProvider extends QueryProvider {
} }
return sql; return sql;
} }
private String transDateFormat(String dateStyle, String datePattern) {
String split = "-";
if (StringUtils.equalsIgnoreCase(datePattern, "date_sub")) {
split = "-";
} else if (StringUtils.equalsIgnoreCase(datePattern, "date_split")) {
split = "/";
}
switch (dateStyle) {
case "y":
return "%Y";
case "y_M":
return "%Y" + split + "%m";
case "y_M_d":
return "%Y" + split + "%m" + split + "%d";
case "H_m_s":
return "%H:%i:%S";
case "y_M_d_H_m":
return "%Y" + split + "%m" + split + "%d" + " %H:%i";
case "y_M_d_H_m_s":
return "%Y" + split + "%m" + split + "%d" + " %H:%i:%S";
default:
return "%Y-%m-%d %H:%i:%S";
}
}
} }
...@@ -155,6 +155,7 @@ public class ExtractDataService { ...@@ -155,6 +155,7 @@ public class ExtractDataService {
break; break;
} }
} }
Column_Fields = Column_Fields.substring(0, Column_Fields.length() - 2); Column_Fields = Column_Fields.substring(0, Column_Fields.length() - 2);
Column_Fields = "(" + Column_Fields + ")\n"; Column_Fields = "(" + Column_Fields + ")\n";
return Column_Fields; return Column_Fields;
...@@ -637,7 +638,12 @@ public class ExtractDataService { ...@@ -637,7 +638,12 @@ public class ExtractDataService {
for (int i = 0; i < datasetTableFields.size(); i++) { for (int i = 0; i < datasetTableFields.size(); i++) {
ExcelInputField field = new ExcelInputField(); ExcelInputField field = new ExcelInputField();
field.setName(datasetTableFields.get(i).getOriginName()); field.setName(datasetTableFields.get(i).getOriginName());
field.setType("String"); if(datasetTableFields.get(i).getDeExtractType() == 1){
field.setType("Date");
field.setFormat("yyyy-MM-dd HH:mm:ss");
}else {
field.setType("String");
}
fields[i] = field; fields[i] = field;
} }
......
...@@ -66,100 +66,100 @@ CREATE TABLE IF NOT EXISTS `dataset_group` ( ...@@ -66,100 +66,100 @@ CREATE TABLE IF NOT EXISTS `dataset_group` (
DROP TABLE IF EXISTS `sys_dept`; DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` ( CREATE TABLE `sys_dept` (
`dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`pid` bigint(20) DEFAULT NULL COMMENT '上级部门', `pid` bigint(20) DEFAULT NULL COMMENT '上级部门',
`sub_count` int(5) DEFAULT '0' COMMENT '子部门数目', `sub_count` int(5) DEFAULT '0' COMMENT '子部门数目',
`name` varchar(255) NOT NULL COMMENT '名称', `name` varchar(255) NOT NULL COMMENT '名称',
`dept_sort` int(5) DEFAULT '999' COMMENT '排序', `dept_sort` int(5) DEFAULT '999' COMMENT '排序',
`create_by` varchar(255) DEFAULT NULL COMMENT '创建者', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
`update_by` varchar(255) DEFAULT NULL COMMENT '更新者', `update_by` varchar(255) DEFAULT NULL COMMENT '更新者',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期', `create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
`update_time` bigint(13) DEFAULT NULL COMMENT '更新时间', `update_time` bigint(13) DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`dept_id`) USING BTREE, PRIMARY KEY (`dept_id`) USING BTREE,
KEY `inx_pid` (`pid`) KEY `inx_pid` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='部门'; ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='组织机构';
DROP TABLE IF EXISTS `sys_menu`; DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` ( CREATE TABLE `sys_menu` (
`menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`pid` bigint(20) DEFAULT NULL COMMENT '上级菜单ID', `pid` bigint(20) DEFAULT NULL COMMENT '上级菜单ID',
`sub_count` int(5) DEFAULT '0' COMMENT '子菜单数目', `sub_count` int(5) DEFAULT '0' COMMENT '子菜单数目',
`type` int(11) DEFAULT NULL COMMENT '菜单类型', `type` int(11) DEFAULT NULL COMMENT '菜单类型',
`title` varchar(255) DEFAULT NULL COMMENT '菜单标题', `title` varchar(255) DEFAULT NULL COMMENT '菜单标题',
`name` varchar(255) DEFAULT NULL COMMENT '组件名称', `name` varchar(255) DEFAULT NULL COMMENT '组件名称',
`component` varchar(255) DEFAULT NULL COMMENT '组件', `component` varchar(255) DEFAULT NULL COMMENT '组件',
`menu_sort` int(5) DEFAULT NULL COMMENT '排序', `menu_sort` int(5) DEFAULT NULL COMMENT '排序',
`icon` varchar(255) DEFAULT NULL COMMENT '图标', `icon` varchar(255) DEFAULT NULL COMMENT '图标',
`path` varchar(255) DEFAULT NULL COMMENT '链接地址', `path` varchar(255) DEFAULT NULL COMMENT '链接地址',
`i_frame` bit(1) DEFAULT NULL COMMENT '是否外链', `i_frame` bit(1) DEFAULT NULL COMMENT '是否外链',
`cache` bit(1) DEFAULT b'0' COMMENT '缓存', `cache` bit(1) DEFAULT b'0' COMMENT '缓存',
`hidden` bit(1) DEFAULT b'0' COMMENT '隐藏', `hidden` bit(1) DEFAULT b'0' COMMENT '隐藏',
`permission` varchar(255) DEFAULT NULL COMMENT '权限', `permission` varchar(255) DEFAULT NULL COMMENT '权限',
`create_by` varchar(255) DEFAULT NULL COMMENT '创建者', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
`update_by` varchar(255) DEFAULT NULL COMMENT '更新者', `update_by` varchar(255) DEFAULT NULL COMMENT '更新者',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期', `create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
`update_time` bigint(13) DEFAULT NULL COMMENT '更新时间', `update_time` bigint(13) DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`menu_id`) USING BTREE, PRIMARY KEY (`menu_id`) USING BTREE,
UNIQUE KEY `uniq_title` (`title`), UNIQUE KEY `uniq_title` (`title`),
UNIQUE KEY `uniq_name` (`name`), UNIQUE KEY `uniq_name` (`name`),
KEY `inx_pid` (`pid`) KEY `inx_pid` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系统菜单'; ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系统菜单';
DROP TABLE IF EXISTS `sys_user`; DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` ( CREATE TABLE `sys_user` (
`user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`dept_id` bigint(20) DEFAULT NULL COMMENT '部门名称', `dept_id` bigint(20) DEFAULT NULL COMMENT '部门名称',
`username` varchar(255) DEFAULT NULL COMMENT '用户名', `username` varchar(255) DEFAULT NULL COMMENT '用户名',
`nick_name` varchar(255) DEFAULT NULL COMMENT '昵称', `nick_name` varchar(255) DEFAULT NULL COMMENT '昵称',
`gender` varchar(2) DEFAULT NULL COMMENT '性别', `gender` varchar(2) DEFAULT NULL COMMENT '性别',
`phone` varchar(255) DEFAULT NULL COMMENT '手机号码', `phone` varchar(255) DEFAULT NULL COMMENT '手机号码',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱', `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
`password` varchar(255) DEFAULT NULL COMMENT '密码', `password` varchar(255) DEFAULT NULL COMMENT '密码',
`is_admin` bit(1) DEFAULT b'0' COMMENT '是否为admin账号', `is_admin` bit(1) DEFAULT b'0' COMMENT '是否为admin账号',
`enabled` bigint(20) DEFAULT NULL COMMENT '状态:1启用、0禁用', `enabled` bigint(20) DEFAULT NULL COMMENT '状态:1启用、0禁用',
`create_by` varchar(255) DEFAULT NULL COMMENT '创建者', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
`update_by` varchar(255) DEFAULT NULL COMMENT '更新着', `update_by` varchar(255) DEFAULT NULL COMMENT '更新着',
`pwd_reset_time` bigint(13) DEFAULT NULL COMMENT '修改密码的时间', `pwd_reset_time` bigint(13) DEFAULT NULL COMMENT '修改密码的时间',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期', `create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
`update_time` bigint(13) DEFAULT NULL COMMENT '更新时间', `update_time` bigint(13) DEFAULT NULL COMMENT '更新时间',
`language` varchar(20) DEFAULT NULL COMMENT '语言', `language` varchar(20) DEFAULT NULL COMMENT '语言',
PRIMARY KEY (`user_id`) USING BTREE, PRIMARY KEY (`user_id`) USING BTREE,
UNIQUE KEY `UK_kpubos9gc2cvtkb0thktkbkes` (`email`) USING BTREE, UNIQUE KEY `UK_kpubos9gc2cvtkb0thktkbkes` (`email`) USING BTREE,
UNIQUE KEY `username` (`username`) USING BTREE, UNIQUE KEY `username` (`username`) USING BTREE,
UNIQUE KEY `uniq_username` (`username`), UNIQUE KEY `uniq_username` (`username`),
UNIQUE KEY `uniq_email` (`email`), UNIQUE KEY `uniq_email` (`email`),
KEY `FK5rwmryny6jthaaxkogownknqp` (`dept_id`) USING BTREE, KEY `FK5rwmryny6jthaaxkogownknqp` (`dept_id`) USING BTREE,
KEY `inx_enabled` (`enabled`) KEY `inx_enabled` (`enabled`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系统用户'; ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='系统用户';
DROP TABLE IF EXISTS `sys_role`; DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` ( CREATE TABLE `sys_role` (
`role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(255) NOT NULL COMMENT '名称', `name` varchar(255) NOT NULL COMMENT '名称',
`description` varchar(255) DEFAULT NULL COMMENT '描述', `description` varchar(255) DEFAULT NULL COMMENT '描述',
`create_by` varchar(255) DEFAULT NULL COMMENT '创建者', `create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
`update_by` varchar(255) DEFAULT NULL COMMENT '更新者', `update_by` varchar(255) DEFAULT NULL COMMENT '更新者',
`create_time` bigint(13) DEFAULT NULL COMMENT '创建日期', `create_time` bigint(13) DEFAULT NULL COMMENT '创建日期',
`update_time` bigint(13) DEFAULT NULL COMMENT '更新时间', `update_time` bigint(13) DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`role_id`) USING BTREE, PRIMARY KEY (`role_id`) USING BTREE,
UNIQUE KEY `uniq_name` (`name`), UNIQUE KEY `uniq_name` (`name`),
KEY `role_name_index` (`name`) KEY `role_name_index` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='角色表'; ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='角色表';
DROP TABLE IF EXISTS `sys_roles_menus`; DROP TABLE IF EXISTS `sys_roles_menus`;
CREATE TABLE `sys_roles_menus` ( CREATE TABLE `sys_roles_menus` (
`menu_id` bigint(20) NOT NULL COMMENT '菜单ID', `menu_id` bigint(20) NOT NULL COMMENT '菜单ID',
`role_id` bigint(20) NOT NULL COMMENT '角色ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID',
PRIMARY KEY (`menu_id`,`role_id`) USING BTREE, PRIMARY KEY (`menu_id`,`role_id`) USING BTREE,
KEY `FKcngg2qadojhi3a651a5adkvbq` (`role_id`) USING BTREE KEY `FKcngg2qadojhi3a651a5adkvbq` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='角色菜单关联'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='角色菜单关联';
DROP TABLE IF EXISTS `sys_users_roles`; DROP TABLE IF EXISTS `sys_users_roles`;
CREATE TABLE `sys_users_roles` ( CREATE TABLE `sys_users_roles` (
`user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID',
`role_id` bigint(20) NOT NULL COMMENT '角色ID', `role_id` bigint(20) NOT NULL COMMENT '角色ID',
PRIMARY KEY (`user_id`,`role_id`) USING BTREE, PRIMARY KEY (`user_id`,`role_id`) USING BTREE,
KEY `FKq4eq273l04bpu4efj0jd0jb98` (`role_id`) USING BTREE KEY `FKq4eq273l04bpu4efj0jd0jb98` (`role_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户角色关联'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户角色关联';
DROP TABLE IF EXISTS `my_plugin`; DROP TABLE IF EXISTS `my_plugin`;
......
...@@ -692,7 +692,18 @@ export default { ...@@ -692,7 +692,18 @@ export default {
chart_pie_rose: 'Rose Pie', chart_pie_rose: 'Rose Pie',
chart_funnel: 'Funnel', chart_funnel: 'Funnel',
chart_radar: 'Radar', chart_radar: 'Radar',
chart_gauge: 'Gauge' chart_gauge: 'Gauge',
dateStyle: '日期顯示',
datePattern: '日期格式',
y: 'Year',
y_M: 'Year Month',
y_M_d: 'Year Month Day',
H_m_s: 'Hour Minute Second',
y_M_d_H_m: 'Year Month Day Hour Minute',
y_M_d_H_m_s: 'Year Month Day Hour Minute Second',
date_sub: 'yyyy-MM-dd',
date_split: 'yyyy/MM/dd',
chartName: 'New Chart'
}, },
dataset: { dataset: {
sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default', sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default',
......
...@@ -692,7 +692,18 @@ export default { ...@@ -692,7 +692,18 @@ export default {
chart_pie_rose: '南丁格爾玫瑰圖', chart_pie_rose: '南丁格爾玫瑰圖',
chart_funnel: '漏鬥圖', chart_funnel: '漏鬥圖',
chart_radar: '雷達圖', chart_radar: '雷達圖',
chart_gauge: '儀表盤' chart_gauge: '儀表盤',
dateStyle: '日期顯示',
datePattern: '日期格式',
y: '年',
y_M: '年月',
y_M_d: '年月日',
H_m_s: '時分秒',
y_M_d_H_m: '年月日時分',
y_M_d_H_m_s: '年月日時分秒',
date_sub: 'yyyy-MM-dd',
date_split: 'yyyy/MM/dd',
chartName: '新建視圖'
}, },
dataset: { dataset: {
sheet_warn: '有多個sheet頁面,默認抽取第一個', sheet_warn: '有多個sheet頁面,默認抽取第一個',
......
...@@ -692,7 +692,18 @@ export default { ...@@ -692,7 +692,18 @@ export default {
chart_pie_rose: '南丁格尔玫瑰图', chart_pie_rose: '南丁格尔玫瑰图',
chart_funnel: '漏斗图', chart_funnel: '漏斗图',
chart_radar: '雷达图', chart_radar: '雷达图',
chart_gauge: '仪表盘' chart_gauge: '仪表盘',
dateStyle: '日期显示',
datePattern: '日期格式',
y: '年',
y_M: '年月',
y_M_d: '年月日',
H_m_s: '时分秒',
y_M_d_H_m: '年月日时分',
y_M_d_H_m_s: '年月日时分秒',
date_sub: 'yyyy-MM-dd',
date_split: 'yyyy/MM/dd',
chartName: '新建视图'
}, },
dataset: { dataset: {
sheet_warn: '有多个Sheet页,默认抽取第一个', sheet_warn: '有多个Sheet页,默认抽取第一个',
......
<template> <template>
<div v-if="!licstatus" class="lic"> <div v-if="!licValidate && licStatus !== 'no_record'" class="lic">
<strong>{{ $t(licMsg) }}</strong> <strong>{{ $t(licMsg) }}</strong>
</div> </div>
</template> </template>
...@@ -20,9 +20,12 @@ export default { ...@@ -20,9 +20,12 @@ export default {
theme() { theme() {
return this.$store.state.settings.theme return this.$store.state.settings.theme
}, },
licstatus() { licValidate() {
return this.$store.state.lic.validate return this.$store.state.lic.validate
}, },
licStatus() {
return this.$store.state.lic.licStatus || ''
},
licMsg() { licMsg() {
return this.$store.state.lic.licMsg ? ('license.' + this.$store.state.lic.licMsg) : null return this.$store.state.lic.licMsg ? ('license.' + this.$store.state.lic.licMsg) : null
} }
......
...@@ -152,12 +152,8 @@ const hasPermission = (router, user_permissions) => { ...@@ -152,12 +152,8 @@ const hasPermission = (router, user_permissions) => {
} }
return true return true
} }
const xpackMenuNames = ['system-param', 'system-plugin']
const filterLic = (router) => { const filterLic = (router) => {
if (xpackMenuNames.some(name => name === router.name) && !store.getters.validate) { return !router.isPlugin || store.getters.validate
return false
}
return true
} }
router.afterEach(() => { router.afterEach(() => {
// finish progress bar // finish progress bar
......
import { validateLic } from '@/api/system/lic' import { validateLic } from '@/api/system/lic'
const state = { const state = {
validate: true, validate: true,
licStatus: null,
licMsg: null licMsg: null
} }
...@@ -10,6 +11,9 @@ const mutations = { ...@@ -10,6 +11,9 @@ const mutations = {
}, },
SET_LIC_MSG: (state, msg) => { SET_LIC_MSG: (state, msg) => {
state.licMsg = msg state.licMsg = msg
},
SET_LIC_STATUS: (state, data) => {
state.licStatus = data
} }
} }
...@@ -22,8 +26,15 @@ const actions = { ...@@ -22,8 +26,15 @@ const actions = {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
validateLic().then(response => { validateLic().then(response => {
const { data } = response const { data } = response
commit('SET_VALIDATE', true) if (data && data.status && data.status === 'no_record') {
commit('SET_LIC_MSG', null) commit('SET_VALIDATE', false)
commit('SET_LIC_MSG', data.message)
commit('SET_LIC_STATUS', data.status)
} else {
commit('SET_VALIDATE', true)
commit('SET_LIC_MSG', null)
}
resolve(data) resolve(data)
}).catch(error => { }).catch(error => {
commit('SET_VALIDATE', false) commit('SET_VALIDATE', false)
......
...@@ -26,6 +26,44 @@ ...@@ -26,6 +26,44 @@
<el-dropdown-item icon="el-icon-files" :command="beforeClickItem('filter')"> <el-dropdown-item icon="el-icon-files" :command="beforeClickItem('filter')">
<span>{{ $t('chart.filter') }}...</span> <span>{{ $t('chart.filter') }}...</span>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-show="item.deType === 1" divided>
<el-dropdown placement="right-start" size="mini" style="width: 100%" @command="dateStyle">
<span class="el-dropdown-link inner-dropdown-menu">
<span>
<i class="el-icon-c-scale-to-original" />
<span>{{ $t('chart.dateStyle') }}</span>
<span class="summary-span">({{ $t('chart.'+item.dateStyle) }})</span>
</span>
<i class="el-icon-arrow-right el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="beforeDateStyle('y')">{{ $t('chart.y') }}</el-dropdown-item>
<el-dropdown-item :command="beforeDateStyle('y_M')">{{ $t('chart.y_M') }}</el-dropdown-item>
<el-dropdown-item :command="beforeDateStyle('y_M_d')">{{ $t('chart.y_M_d') }}</el-dropdown-item>
<el-dropdown-item :command="beforeDateStyle('H_m_s')">{{ $t('chart.H_m_s') }}</el-dropdown-item>
<el-dropdown-item :command="beforeDateStyle('y_M_d_H_m')">{{ $t('chart.y_M_d_H_m') }}</el-dropdown-item>
<el-dropdown-item :command="beforeDateStyle('y_M_d_H_m_s')">{{ $t('chart.y_M_d_H_m_s') }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown-item>
<el-dropdown-item v-show="item.deType === 1">
<el-dropdown placement="right-start" size="mini" style="width: 100%" @command="datePattern">
<span class="el-dropdown-link inner-dropdown-menu">
<span>
<i class="el-icon-timer" />
<span>{{ $t('chart.datePattern') }}</span>
<span class="summary-span">({{ $t('chart.'+item.datePattern) }})</span>
</span>
<i class="el-icon-arrow-right el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="beforeDatePattern('date_sub')">{{ $t('chart.date_sub') }}(1990-01-01)</el-dropdown-item>
<el-dropdown-item :command="beforeDatePattern('date_split')">{{ $t('chart.date_split') }}(1990/01/01)</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown-item>
<el-dropdown-item icon="el-icon-edit-outline" divided :command="beforeClickItem('rename')"> <el-dropdown-item icon="el-icon-edit-outline" divided :command="beforeClickItem('rename')">
<span>{{ $t('chart.show_name_set') }}</span> <span>{{ $t('chart.show_name_set') }}</span>
</el-dropdown-item> </el-dropdown-item>
...@@ -91,6 +129,26 @@ export default { ...@@ -91,6 +129,26 @@ export default {
type: type type: type
} }
}, },
dateStyle(param) {
// console.log(param)
this.item.dateStyle = param.type
this.$emit('onDimensionItemChange', this.item)
},
beforeDateStyle(type) {
return {
type: type
}
},
datePattern(param) {
// console.log(param)
this.item.datePattern = param.type
this.$emit('onDimensionItemChange', this.item)
},
beforeDatePattern(type) {
return {
type: type
}
},
editFilter() { editFilter() {
this.item.index = this.index this.item.index = this.index
this.$emit('editItemFilter', this.item) this.$emit('editItemFilter', this.item)
...@@ -129,4 +187,16 @@ export default { ...@@ -129,4 +187,16 @@ export default {
span { span {
font-size: 12px; font-size: 12px;
} }
.summary-span{
margin-left: 4px;
color: #878d9f;;
}
.inner-dropdown-menu{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%
}
</style> </style>
...@@ -275,7 +275,7 @@ export default { ...@@ -275,7 +275,7 @@ export default {
selectTableFlag: false, selectTableFlag: false,
table: {}, table: {},
tables: [], tables: [],
chartName: '' chartName: this.$t('chart.chartName')
} }
}, },
computed: { computed: {
......
...@@ -469,6 +469,12 @@ export default { ...@@ -469,6 +469,12 @@ export default {
// if (!ele.summary || ele.summary === '') { // if (!ele.summary || ele.summary === '') {
// ele.summary = 'sum' // ele.summary = 'sum'
// } // }
if (!ele.dateStyle || ele.dateStyle === '') {
ele.dateStyle = 'y_M_d'
}
if (!ele.datePattern || ele.datePattern === '') {
ele.datePattern = 'date_sub'
}
if (!ele.sort || ele.sort === '') { if (!ele.sort || ele.sort === '') {
ele.sort = 'none' ele.sort = 'none'
} }
......
<template> <template>
<el-col> <el-col>
<!-- group --> <!-- group -->
<el-col v-if="!sceneMode"> <el-col v-if="!sceneMode" v-loading="dsLoading">
<el-row class="title-css"> <el-row class="title-css">
<span class="title-text"> <span class="title-text">
{{ $t('dataset.datalist') }} {{ $t('dataset.datalist') }}
...@@ -212,8 +212,10 @@ export default { ...@@ -212,8 +212,10 @@ export default {
}, },
tree(group) { tree(group) {
this.dsLoading = true
post('/dataset/group/tree', group).then(response => { post('/dataset/group/tree', group).then(response => {
this.data = response.data this.data = response.data
this.dsLoading = false
}) })
}, },
......
...@@ -379,6 +379,12 @@ export default { ...@@ -379,6 +379,12 @@ export default {
mounted() { mounted() {
this.calHeight() this.calHeight()
}, },
created() {
this.timer = setInterval(this.listTaskLog, 5000)
},
beforeDestroy() {
clearInterval(this.timer)
},
methods: { methods: {
calHeight() { calHeight() {
const that = this const that = this
......
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
:move="onMove" :move="onMove"
style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;background-color: white;" style="width:100%;height: 100%;margin:0 10px;border-radius: 4px;overflow-x: auto;display: flex;align-items: center;background-color: white;"
@end="end2" @end="end2"
> >
<transition-group class="list-group" :data-value="$t('panel.drag_here')"> <transition-group class="list-group" :data-value="$t('panel.drag_here')">
<drag-item v-for="(item,index) in selectField" :key="item.id" :item="item" :index="index" @closeItem="closeItem" /> <drag-item v-for="(item,index) in selectField" :key="item.id" :item="item" :index="index" @closeItem="closeItem" />
</transition-group> </transition-group>
...@@ -308,7 +308,7 @@ export default { ...@@ -308,7 +308,7 @@ export default {
}, },
methods: { methods: {
attr(){ attr() {
return 'aaa' return 'aaa'
}, },
loadViews() { loadViews() {
...@@ -370,9 +370,17 @@ export default { ...@@ -370,9 +370,17 @@ export default {
this.componentSetBreads.push(tail) this.componentSetBreads.push(tail)
}, },
removeTail() { removeTail(bread) {
this.dataSetBreads = this.dataSetBreads.slice(0, this.dataSetBreads.length - 1) for (let index = 0; index < this.dataSetBreads.length; index++) {
this.dataSetBreads[this.dataSetBreads.length - 1]['link'] = false const element = this.dataSetBreads[index]
if (element.type === bread.type) {
this.dataSetBreads = this.dataSetBreads.slice(0, index + 1)
this.dataSetBreads[this.dataSetBreads.length - 1]['link'] = false
return
}
}
// this.dataSetBreads = this.dataSetBreads.slice(0, this.dataSetBreads.length - 1)
// this.dataSetBreads[this.dataSetBreads.length - 1]['link'] = false
}, },
comRemoveTail() { comRemoveTail() {
this.componentSetBreads = this.componentSetBreads.slice(0, this.componentSetBreads.length - 1) this.componentSetBreads = this.componentSetBreads.slice(0, this.componentSetBreads.length - 1)
...@@ -385,7 +393,7 @@ export default { ...@@ -385,7 +393,7 @@ export default {
this.showDomType = 'tree' this.showDomType = 'tree'
} }
this.removeTail() this.removeTail(bread)
}, },
comBackLink(bread) { comBackLink(bread) {
this.comShowDomType = 'view' this.comShowDomType = 'view'
......
...@@ -150,7 +150,7 @@ export default { ...@@ -150,7 +150,7 @@ export default {
roleIds: [{ required: true, message: this.$t('user.input_roles'), trigger: 'change' }] roleIds: [{ required: true, message: this.$t('user.input_roles'), trigger: 'change' }]
}, },
defaultForm: { id: null, username: null, nickName: null, gender: '男', email: null, enabled: 1, deptId: null, phone: null, roleIds: [] }, defaultForm: { id: null, username: null, nickName: null, gender: '男', email: null, enabled: 1, deptId: null, phone: null, roleIds: [2] },
depts: null, depts: null,
roles: [], roles: [],
roleDatas: [], roleDatas: [],
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论