forked from github/dataease
refactor: 解决冲突
This commit is contained in:
commit
7fdbe4082a
@ -1,13 +1,9 @@
|
|||||||
FROM registry.cn-qingdao.aliyuncs.com/dataease/fabric8-java-alpine-openjdk8-jre:edge
|
FROM registry.cn-qingdao.aliyuncs.com/dataease/fabric8-java-alpine-openjdk8-jre:edge
|
||||||
|
|
||||||
RUN echo -e 'http://mirrors.aliyun.com/alpine/edge/main/\nhttp://mirrors.aliyun.com/alpine/edge/community/' > /etc/apk/repositories
|
RUN echo -e 'https://dl-cdn.alpinelinux.org/alpine/edge/main/\nhttps://dl-cdn.alpinelinux.org/alpine/edge/community/' > /etc/apk/repositories
|
||||||
|
|
||||||
RUN apk add chromium chromium-chromedriver fontconfig --no-cache --allow-untrusted
|
RUN apk add chromium chromium-chromedriver fontconfig --no-cache --allow-untrusted
|
||||||
|
|
||||||
RUN mkdir -p /usr/local/sbin/ \
|
|
||||||
&& cp /usr/bin/chromedriver /usr/local/sbin/ \
|
|
||||||
&& chmod a+x /usr/local/sbin/chromedriver
|
|
||||||
|
|
||||||
ADD simsun.ttc /usr/share/fonts/
|
ADD simsun.ttc /usr/share/fonts/
|
||||||
|
|
||||||
RUN cd /usr/share/fonts/ \
|
RUN cd /usr/share/fonts/ \
|
||||||
|
113
backend/pom.xml
113
backend/pom.xml
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>dataease-server</artifactId>
|
<artifactId>dataease-server</artifactId>
|
||||||
<groupId>io.dataease</groupId>
|
<groupId>io.dataease</groupId>
|
||||||
<version>1.7.0</version>
|
<version>1.8.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
@ -214,7 +214,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.dataease</groupId>
|
<groupId>io.dataease</groupId>
|
||||||
<artifactId>dataease-plugin-interface</artifactId>
|
<artifactId>dataease-plugin-interface</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.dataease</groupId>
|
||||||
|
<artifactId>dataease-plugin-view</artifactId>
|
||||||
|
<version>1.8.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.hutool</groupId>
|
<groupId>cn.hutool</groupId>
|
||||||
@ -408,48 +413,74 @@
|
|||||||
</dependencies>
|
</dependencies>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<?m2e execute onConfiguration?>
|
|
||||||
<id>main-class-placement</id>
|
|
||||||
<phase>generate-resources</phase>
|
|
||||||
<configuration>
|
|
||||||
<target>
|
|
||||||
<move todir="src/main/resources/static">
|
|
||||||
<fileset dir="../frontend/dist">
|
|
||||||
<exclude name="*.html"/>
|
|
||||||
</fileset>
|
|
||||||
</move>
|
|
||||||
<move todir="src/main/resources/templates">
|
|
||||||
<fileset dir="../frontend/dist">
|
|
||||||
<include name="*.html"/>
|
|
||||||
</fileset>
|
|
||||||
</move>
|
|
||||||
|
|
||||||
<copy todir="src/main/resources/static/de-app">
|
|
||||||
<fileset dir="../mobile/dist">
|
|
||||||
<exclude name="*.html"/>
|
|
||||||
</fileset>
|
|
||||||
</copy>
|
|
||||||
|
|
||||||
|
|
||||||
<copy file="../mobile/dist/index.html" tofile="src/main/resources/templates/app.html" />
|
|
||||||
|
|
||||||
|
|
||||||
</target>
|
|
||||||
</configuration>
|
|
||||||
<goals>
|
|
||||||
<goal>run</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>whole</id>
|
||||||
|
<properties>
|
||||||
|
<profiles.active>whole</profiles.active>
|
||||||
|
</properties>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<?m2e execute onConfiguration?>
|
||||||
|
<id>main-class-placement</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<move todir="src/main/resources/static">
|
||||||
|
<fileset dir="../frontend/dist">
|
||||||
|
<exclude name="*.html"/>
|
||||||
|
</fileset>
|
||||||
|
</move>
|
||||||
|
<move todir="src/main/resources/templates">
|
||||||
|
<fileset dir="../frontend/dist">
|
||||||
|
<include name="*.html"/>
|
||||||
|
</fileset>
|
||||||
|
</move>
|
||||||
|
|
||||||
|
<copy todir="src/main/resources/static/de-app">
|
||||||
|
<fileset dir="../mobile/dist">
|
||||||
|
<exclude name="*.html"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
|
||||||
|
|
||||||
|
<copy file="../mobile/dist/index.html" tofile="src/main/resources/templates/app.html" />
|
||||||
|
|
||||||
|
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
|
||||||
|
<profile>
|
||||||
|
<id>stage</id>
|
||||||
|
<properties>
|
||||||
|
<profiles.active>stage</profiles.active>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<id>pentaho-public</id>
|
<id>pentaho-public</id>
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
package io.dataease.auth.annotation;
|
||||||
|
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface DeCleaner {
|
||||||
|
DePermissionType value();
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package io.dataease.auth.aop;
|
||||||
|
|
||||||
|
|
||||||
|
import io.dataease.auth.annotation.DeCleaner;
|
||||||
|
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||||
|
import io.dataease.commons.constants.AuthConstants;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
|
import io.dataease.commons.utils.LogUtil;
|
||||||
|
import io.dataease.listener.util.CacheUtils;
|
||||||
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
|
import org.aspectj.lang.annotation.Around;
|
||||||
|
import org.aspectj.lang.annotation.Aspect;
|
||||||
|
import org.aspectj.lang.reflect.MethodSignature;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
@Aspect
|
||||||
|
@Component
|
||||||
|
public class DeCleanerAnnotationHandler {
|
||||||
|
|
||||||
|
@Around(value = "@annotation(io.dataease.auth.annotation.DeCleaner)")
|
||||||
|
public Object CleanerAround(ProceedingJoinPoint point) {
|
||||||
|
try {
|
||||||
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
|
MethodSignature ms = (MethodSignature) point.getSignature();
|
||||||
|
Method method = ms.getMethod();
|
||||||
|
DeCleaner deCleaner = method.getAnnotation(DeCleaner.class);
|
||||||
|
DePermissionType type = deCleaner.value();
|
||||||
|
switch (type.name()) {
|
||||||
|
case "DATASOURCE":
|
||||||
|
cleanDataSource();
|
||||||
|
break;
|
||||||
|
case "DATASET":
|
||||||
|
cleanDataSet();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cleanPanel();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return point.proceed(point.getArgs());
|
||||||
|
|
||||||
|
}catch (Throwable e) {
|
||||||
|
LogUtil.error(e.getMessage(), e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cleanPanel() {
|
||||||
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
|
CacheUtils.remove(AuthConstants.USER_PANEL_NAME, "user" + user.getUserId());
|
||||||
|
CacheUtils.remove(AuthConstants.DEPT_PANEL_NAME, "dept" + user.getDeptId());
|
||||||
|
user.getRoles().forEach(role -> {
|
||||||
|
CacheUtils.remove(AuthConstants.ROLE_PANEL_NAME, "role" + role.getId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
public void cleanDataSet() {
|
||||||
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
|
CacheUtils.remove(AuthConstants.USER_DATASET_NAME, "user" + user.getUserId());
|
||||||
|
CacheUtils.remove(AuthConstants.DEPT_DATASET_NAME, "dept" + user.getDeptId());
|
||||||
|
user.getRoles().forEach(role -> {
|
||||||
|
CacheUtils.remove(AuthConstants.ROLE_DATASET_NAME, "role" + role.getId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
public void cleanDataSource() {
|
||||||
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
|
CacheUtils.remove(AuthConstants.USER_LINK_NAME, "user" + user.getUserId());
|
||||||
|
CacheUtils.remove(AuthConstants.DEPT_LINK_NAME, "dept" + user.getDeptId());
|
||||||
|
user.getRoles().forEach(role -> {
|
||||||
|
CacheUtils.remove(AuthConstants.ROLE_LINK_NAME, "role" + role.getId());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -27,7 +27,11 @@ public class DePermissionAnnotationHandler {
|
|||||||
|
|
||||||
@Around(value = "@annotation(io.dataease.auth.annotation.DePermissions)")
|
@Around(value = "@annotation(io.dataease.auth.annotation.DePermissions)")
|
||||||
public Object PermissionsAround(ProceedingJoinPoint point) {
|
public Object PermissionsAround(ProceedingJoinPoint point) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (AuthUtils.getUser().getIsAdmin()) {
|
||||||
|
return point.proceed(point.getArgs());
|
||||||
|
}
|
||||||
MethodSignature ms = (MethodSignature) point.getSignature();
|
MethodSignature ms = (MethodSignature) point.getSignature();
|
||||||
Method method = ms.getMethod();
|
Method method = ms.getMethod();
|
||||||
DePermissions annotation = method.getAnnotation(DePermissions.class);
|
DePermissions annotation = method.getAnnotation(DePermissions.class);
|
||||||
@ -47,13 +51,13 @@ public class DePermissionAnnotationHandler {
|
|||||||
Boolean someAccess = false;
|
Boolean someAccess = false;
|
||||||
for (int i = 0; i < dePermissions.length; i++) {
|
for (int i = 0; i < dePermissions.length; i++) {
|
||||||
DePermission permission = dePermissions[i];
|
DePermission permission = dePermissions[i];
|
||||||
try{
|
try {
|
||||||
boolean currentAccess = access(args[permission.paramIndex()], permission, 0);
|
boolean currentAccess = access(args[permission.paramIndex()], permission, 0);
|
||||||
if (currentAccess) {
|
if (currentAccess) {
|
||||||
someAccess = true;
|
someAccess = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
} catch (Exception e) {
|
||||||
exceptions.add(e);
|
exceptions.add(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,6 +75,9 @@ public class DePermissionAnnotationHandler {
|
|||||||
@Around(value = "@annotation(io.dataease.auth.annotation.DePermission)")
|
@Around(value = "@annotation(io.dataease.auth.annotation.DePermission)")
|
||||||
public Object PermissionAround(ProceedingJoinPoint point) {
|
public Object PermissionAround(ProceedingJoinPoint point) {
|
||||||
try {
|
try {
|
||||||
|
if (AuthUtils.getUser().getIsAdmin()) {
|
||||||
|
return point.proceed(point.getArgs());
|
||||||
|
}
|
||||||
MethodSignature ms = (MethodSignature) point.getSignature();
|
MethodSignature ms = (MethodSignature) point.getSignature();
|
||||||
Method method = ms.getMethod();
|
Method method = ms.getMethod();
|
||||||
|
|
||||||
@ -88,20 +95,22 @@ public class DePermissionAnnotationHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Boolean access(Object arg, DePermission annotation, int layer) throws Exception {
|
private Boolean access(Object arg, DePermission annotation, int layer) throws Exception {
|
||||||
if (ObjectUtils.isEmpty(arg)) return true;
|
if (ObjectUtils.isEmpty(arg))
|
||||||
|
return true;
|
||||||
String type = annotation.type().name().toLowerCase();
|
String type = annotation.type().name().toLowerCase();
|
||||||
String value = annotation.value();
|
String value = annotation.value();
|
||||||
Integer requireLevel = annotation.level().getLevel();
|
Integer requireLevel = annotation.level().getLevel();
|
||||||
|
|
||||||
Set<String> resourceIds = AuthUtils.permissionByType(type).stream().filter(
|
Set<String> resourceIds = AuthUtils.permissionByType(type).stream().filter(
|
||||||
item -> item.getLevel() >= requireLevel
|
item -> item.getLevel() >= requireLevel).map(AuthItem::getAuthSource).collect(Collectors.toSet());
|
||||||
).map(AuthItem::getAuthSource).collect(Collectors.toSet());
|
|
||||||
|
|
||||||
Class<?> parameterType = arg.getClass();
|
Class<?> parameterType = arg.getClass();
|
||||||
if (parameterType.isPrimitive() || isWrapClass(parameterType) || isString(parameterType)) {
|
if (parameterType.isPrimitive() || isWrapClass(parameterType) || isString(parameterType)) {
|
||||||
boolean permissionValid = resourceIds.contains(arg);
|
boolean permissionValid = resourceIds.contains(arg);
|
||||||
if (permissionValid) return true;
|
if (permissionValid)
|
||||||
throw new UnauthorizedException("Subject does not have permission[" + annotation.level().name() +":"+ annotation.type() + ":" + arg + "]");
|
return true;
|
||||||
|
throw new UnauthorizedException("Subject does not have permission[" + annotation.level().name() + ":"
|
||||||
|
+ annotation.type() + ":" + arg + "]");
|
||||||
} else if (isArray(parameterType)) {
|
} else if (isArray(parameterType)) {
|
||||||
for (int i = 0; i < Array.getLength(arg); i++) {
|
for (int i = 0; i < Array.getLength(arg); i++) {
|
||||||
Object o = Array.get(arg, i);
|
Object o = Array.get(arg, i);
|
||||||
@ -124,7 +133,7 @@ public class DePermissionAnnotationHandler {
|
|||||||
Object o = argMap.get(values[layer]);
|
Object o = argMap.get(values[layer]);
|
||||||
return access(o, annotation, ++layer);
|
return access(o, annotation, ++layer);
|
||||||
} else {
|
} else {
|
||||||
//当作自定义类处理
|
// 当作自定义类处理
|
||||||
String[] values = value.split("u002E");
|
String[] values = value.split("u002E");
|
||||||
String fieldName = values[layer];
|
String fieldName = values[layer];
|
||||||
|
|
||||||
@ -135,7 +144,7 @@ public class DePermissionAnnotationHandler {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getFieldValue(Object o, String fieldName) throws Exception{
|
private Object getFieldValue(Object o, String fieldName) throws Exception {
|
||||||
Class<?> aClass = o.getClass();
|
Class<?> aClass = o.getClass();
|
||||||
while (null != aClass.getSuperclass()) {
|
while (null != aClass.getSuperclass()) {
|
||||||
Field[] declaredFields = aClass.getDeclaredFields();
|
Field[] declaredFields = aClass.getDeclaredFields();
|
||||||
@ -183,5 +192,4 @@ public class DePermissionAnnotationHandler {
|
|||||||
return Arrays.stream(wrapClasies).anyMatch(item -> StringUtils.equals(item, clz.getName()));
|
return Arrays.stream(wrapClasies).anyMatch(item -> StringUtils.equals(item, clz.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package io.dataease.auth.service.impl;
|
package io.dataease.auth.service.impl;
|
||||||
|
|
||||||
|
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||||
import io.dataease.auth.entity.AuthItem;
|
import io.dataease.auth.entity.AuthItem;
|
||||||
import io.dataease.auth.service.ExtAuthService;
|
import io.dataease.auth.service.ExtAuthService;
|
||||||
import io.dataease.base.domain.SysAuth;
|
import io.dataease.base.domain.SysAuth;
|
||||||
import io.dataease.base.mapper.ext.ExtAuthMapper;
|
import io.dataease.base.mapper.ext.ExtAuthMapper;
|
||||||
import io.dataease.commons.constants.AuthConstants;
|
import io.dataease.commons.constants.AuthConstants;
|
||||||
import io.dataease.commons.model.AuthURD;
|
import io.dataease.commons.model.AuthURD;
|
||||||
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.LogUtil;
|
import io.dataease.commons.utils.LogUtil;
|
||||||
|
import io.dataease.listener.util.CacheUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
@ -146,4 +149,7 @@ public class ExtAuthServiceImpl implements ExtAuthService {
|
|||||||
public void clearRoleResource(Long roleId) {
|
public void clearRoleResource(Long roleId) {
|
||||||
LogUtil.info("all permission resource of role {} is cleanning...", roleId);
|
LogUtil.info("all permission resource of role {} is cleanning...", roleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ public class ShiroServiceImpl implements ShiroService {
|
|||||||
// 获取主题信息
|
// 获取主题信息
|
||||||
filterChainDefinitionMap.put("/plugin/theme/themes", ANON);
|
filterChainDefinitionMap.put("/plugin/theme/themes", ANON);
|
||||||
filterChainDefinitionMap.put("/plugin/theme/items/**", ANON);
|
filterChainDefinitionMap.put("/plugin/theme/items/**", ANON);
|
||||||
|
filterChainDefinitionMap.put("/plugin/view/types", ANON);
|
||||||
|
|
||||||
// 验证链接
|
// 验证链接
|
||||||
filterChainDefinitionMap.put("/api/link/validate**", ANON);
|
filterChainDefinitionMap.put("/api/link/validate**", ANON);
|
||||||
|
@ -1,38 +1,39 @@
|
|||||||
package io.dataease.base.domain;
|
package io.dataease.base.domain;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ChartView implements Serializable {
|
public class ChartView implements Serializable {
|
||||||
@ApiModelProperty("ID")
|
|
||||||
private String id;
|
private String id;
|
||||||
@ApiModelProperty("名称")
|
|
||||||
private String name;
|
private String name;
|
||||||
@ApiModelProperty("分组ID")
|
|
||||||
private String sceneId;
|
|
||||||
@ApiModelProperty("数据集ID")
|
|
||||||
private String tableId;
|
|
||||||
@ApiModelProperty("图表类型")
|
|
||||||
private String type;
|
|
||||||
@ApiModelProperty("chart渲染方式")
|
|
||||||
private String render;
|
|
||||||
@ApiModelProperty("展示结果")
|
|
||||||
private Integer resultCount;
|
|
||||||
@ApiModelProperty("展示模式")
|
|
||||||
private String resultMode;
|
|
||||||
@ApiModelProperty("标题")
|
|
||||||
private String title;
|
private String title;
|
||||||
@ApiModelProperty("创建人")
|
|
||||||
|
private String sceneId;
|
||||||
|
|
||||||
|
private String tableId;
|
||||||
|
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
private String render;
|
||||||
|
|
||||||
|
private Integer resultCount;
|
||||||
|
|
||||||
|
private String resultMode;
|
||||||
|
|
||||||
private String createBy;
|
private String createBy;
|
||||||
@ApiModelProperty("创建时间")
|
|
||||||
private Long createTime;
|
private Long createTime;
|
||||||
@ApiModelProperty("更新时间")
|
|
||||||
private Long updateTime;
|
private Long updateTime;
|
||||||
@ApiModelProperty("样式优先级")
|
|
||||||
private String stylePriority;
|
private String stylePriority;
|
||||||
|
|
||||||
|
private String chartType;
|
||||||
|
|
||||||
|
private Boolean isPlugin;
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
}
|
}
|
@ -244,6 +244,76 @@ public class ChartViewExample {
|
|||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleIsNull() {
|
||||||
|
addCriterion("title is null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleIsNotNull() {
|
||||||
|
addCriterion("title is not null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleEqualTo(String value) {
|
||||||
|
addCriterion("title =", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleNotEqualTo(String value) {
|
||||||
|
addCriterion("title <>", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleGreaterThan(String value) {
|
||||||
|
addCriterion("title >", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleGreaterThanOrEqualTo(String value) {
|
||||||
|
addCriterion("title >=", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleLessThan(String value) {
|
||||||
|
addCriterion("title <", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleLessThanOrEqualTo(String value) {
|
||||||
|
addCriterion("title <=", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleLike(String value) {
|
||||||
|
addCriterion("title like", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleNotLike(String value) {
|
||||||
|
addCriterion("title not like", value, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleIn(List<String> values) {
|
||||||
|
addCriterion("title in", values, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleNotIn(List<String> values) {
|
||||||
|
addCriterion("title not in", values, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleBetween(String value1, String value2) {
|
||||||
|
addCriterion("title between", value1, value2, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andTitleNotBetween(String value1, String value2) {
|
||||||
|
addCriterion("title not between", value1, value2, "title");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
public Criteria andSceneIdIsNull() {
|
public Criteria andSceneIdIsNull() {
|
||||||
addCriterion("scene_id is null");
|
addCriterion("scene_id is null");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
@ -654,76 +724,6 @@ public class ChartViewExample {
|
|||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Criteria andTitleIsNull() {
|
|
||||||
addCriterion("title is null");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleIsNotNull() {
|
|
||||||
addCriterion("title is not null");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleEqualTo(String value) {
|
|
||||||
addCriterion("title =", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleNotEqualTo(String value) {
|
|
||||||
addCriterion("title <>", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleGreaterThan(String value) {
|
|
||||||
addCriterion("title >", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleGreaterThanOrEqualTo(String value) {
|
|
||||||
addCriterion("title >=", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleLessThan(String value) {
|
|
||||||
addCriterion("title <", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleLessThanOrEqualTo(String value) {
|
|
||||||
addCriterion("title <=", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleLike(String value) {
|
|
||||||
addCriterion("title like", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleNotLike(String value) {
|
|
||||||
addCriterion("title not like", value, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleIn(List<String> values) {
|
|
||||||
addCriterion("title in", values, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleNotIn(List<String> values) {
|
|
||||||
addCriterion("title not in", values, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleBetween(String value1, String value2) {
|
|
||||||
addCriterion("title between", value1, value2, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andTitleNotBetween(String value1, String value2) {
|
|
||||||
addCriterion("title not between", value1, value2, "title");
|
|
||||||
return (Criteria) this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Criteria andCreateByIsNull() {
|
public Criteria andCreateByIsNull() {
|
||||||
addCriterion("create_by is null");
|
addCriterion("create_by is null");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
@ -983,6 +983,136 @@ public class ChartViewExample {
|
|||||||
addCriterion("style_priority not between", value1, value2, "stylePriority");
|
addCriterion("style_priority not between", value1, value2, "stylePriority");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeIsNull() {
|
||||||
|
addCriterion("chart_type is null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeIsNotNull() {
|
||||||
|
addCriterion("chart_type is not null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeEqualTo(String value) {
|
||||||
|
addCriterion("chart_type =", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeNotEqualTo(String value) {
|
||||||
|
addCriterion("chart_type <>", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeGreaterThan(String value) {
|
||||||
|
addCriterion("chart_type >", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeGreaterThanOrEqualTo(String value) {
|
||||||
|
addCriterion("chart_type >=", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeLessThan(String value) {
|
||||||
|
addCriterion("chart_type <", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeLessThanOrEqualTo(String value) {
|
||||||
|
addCriterion("chart_type <=", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeLike(String value) {
|
||||||
|
addCriterion("chart_type like", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeNotLike(String value) {
|
||||||
|
addCriterion("chart_type not like", value, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeIn(List<String> values) {
|
||||||
|
addCriterion("chart_type in", values, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeNotIn(List<String> values) {
|
||||||
|
addCriterion("chart_type not in", values, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeBetween(String value1, String value2) {
|
||||||
|
addCriterion("chart_type between", value1, value2, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andChartTypeNotBetween(String value1, String value2) {
|
||||||
|
addCriterion("chart_type not between", value1, value2, "chartType");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginIsNull() {
|
||||||
|
addCriterion("is_plugin is null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginIsNotNull() {
|
||||||
|
addCriterion("is_plugin is not null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginEqualTo(Boolean value) {
|
||||||
|
addCriterion("is_plugin =", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginNotEqualTo(Boolean value) {
|
||||||
|
addCriterion("is_plugin <>", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginGreaterThan(Boolean value) {
|
||||||
|
addCriterion("is_plugin >", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginGreaterThanOrEqualTo(Boolean value) {
|
||||||
|
addCriterion("is_plugin >=", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginLessThan(Boolean value) {
|
||||||
|
addCriterion("is_plugin <", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginLessThanOrEqualTo(Boolean value) {
|
||||||
|
addCriterion("is_plugin <=", value, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginIn(List<Boolean> values) {
|
||||||
|
addCriterion("is_plugin in", values, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginNotIn(List<Boolean> values) {
|
||||||
|
addCriterion("is_plugin not in", values, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginBetween(Boolean value1, Boolean value2) {
|
||||||
|
addCriterion("is_plugin between", value1, value2, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andIsPluginNotBetween(Boolean value1, Boolean value2) {
|
||||||
|
addCriterion("is_plugin not between", value1, value2, "isPlugin");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Criteria extends GeneratedCriteria {
|
public static class Criteria extends GeneratedCriteria {
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package io.dataease.base.domain;
|
package io.dataease.base.domain;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
@ -11,25 +9,26 @@ import lombok.ToString;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class ChartViewWithBLOBs extends ChartView implements Serializable {
|
public class ChartViewWithBLOBs extends ChartView implements Serializable {
|
||||||
@ApiModelProperty("x轴")
|
|
||||||
private String xAxis;
|
private String xAxis;
|
||||||
@ApiModelProperty("y轴")
|
|
||||||
|
private String xAxisExt;
|
||||||
|
|
||||||
private String yAxis;
|
private String yAxis;
|
||||||
@ApiModelProperty("副y轴")
|
|
||||||
private String yAxisExt;
|
private String yAxisExt;
|
||||||
@ApiModelProperty("堆叠")
|
|
||||||
private String extStack;
|
private String extStack;
|
||||||
@ApiModelProperty("气泡")
|
|
||||||
private String extBubble;
|
private String extBubble;
|
||||||
@ApiModelProperty("图形属性")
|
|
||||||
private String customAttr;
|
private String customAttr;
|
||||||
@ApiModelProperty("组件样式")
|
|
||||||
private String customStyle;
|
private String customStyle;
|
||||||
@ApiModelProperty("过滤条件")
|
|
||||||
private String customFilter;
|
private String customFilter;
|
||||||
@ApiModelProperty("下钻字段")
|
|
||||||
private String drillFields;
|
private String drillFields;
|
||||||
@ApiModelProperty("快照")
|
|
||||||
private String snapshot;
|
private String snapshot;
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
@ -11,5 +11,7 @@ public class PanelLinkMapping implements Serializable {
|
|||||||
|
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
}
|
}
|
@ -293,6 +293,76 @@ public class PanelLinkMappingExample {
|
|||||||
addCriterion("user_id not between", value1, value2, "userId");
|
addCriterion("user_id not between", value1, value2, "userId");
|
||||||
return (Criteria) this;
|
return (Criteria) this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidIsNull() {
|
||||||
|
addCriterion("uuid is null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidIsNotNull() {
|
||||||
|
addCriterion("uuid is not null");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidEqualTo(String value) {
|
||||||
|
addCriterion("uuid =", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidNotEqualTo(String value) {
|
||||||
|
addCriterion("uuid <>", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidGreaterThan(String value) {
|
||||||
|
addCriterion("uuid >", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidGreaterThanOrEqualTo(String value) {
|
||||||
|
addCriterion("uuid >=", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidLessThan(String value) {
|
||||||
|
addCriterion("uuid <", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidLessThanOrEqualTo(String value) {
|
||||||
|
addCriterion("uuid <=", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidLike(String value) {
|
||||||
|
addCriterion("uuid like", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidNotLike(String value) {
|
||||||
|
addCriterion("uuid not like", value, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidIn(List<String> values) {
|
||||||
|
addCriterion("uuid in", values, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidNotIn(List<String> values) {
|
||||||
|
addCriterion("uuid not in", values, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidBetween(String value1, String value2) {
|
||||||
|
addCriterion("uuid between", value1, value2, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Criteria andUuidNotBetween(String value1, String value2) {
|
||||||
|
addCriterion("uuid not between", value1, value2, "uuid");
|
||||||
|
return (Criteria) this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Criteria extends GeneratedCriteria {
|
public static class Criteria extends GeneratedCriteria {
|
||||||
|
@ -4,20 +4,23 @@
|
|||||||
<resultMap id="BaseResultMap" type="io.dataease.base.domain.ChartView">
|
<resultMap id="BaseResultMap" type="io.dataease.base.domain.ChartView">
|
||||||
<id column="id" jdbcType="VARCHAR" property="id" />
|
<id column="id" jdbcType="VARCHAR" property="id" />
|
||||||
<result column="name" jdbcType="VARCHAR" property="name" />
|
<result column="name" jdbcType="VARCHAR" property="name" />
|
||||||
|
<result column="title" jdbcType="VARCHAR" property="title" />
|
||||||
<result column="scene_id" jdbcType="VARCHAR" property="sceneId" />
|
<result column="scene_id" jdbcType="VARCHAR" property="sceneId" />
|
||||||
<result column="table_id" jdbcType="VARCHAR" property="tableId" />
|
<result column="table_id" jdbcType="VARCHAR" property="tableId" />
|
||||||
<result column="type" jdbcType="VARCHAR" property="type" />
|
<result column="type" jdbcType="VARCHAR" property="type" />
|
||||||
<result column="render" jdbcType="VARCHAR" property="render" />
|
<result column="render" jdbcType="VARCHAR" property="render" />
|
||||||
<result column="result_count" jdbcType="INTEGER" property="resultCount" />
|
<result column="result_count" jdbcType="INTEGER" property="resultCount" />
|
||||||
<result column="result_mode" jdbcType="VARCHAR" property="resultMode" />
|
<result column="result_mode" jdbcType="VARCHAR" property="resultMode" />
|
||||||
<result column="title" jdbcType="VARCHAR" property="title" />
|
|
||||||
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
|
||||||
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
||||||
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
|
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
|
||||||
<result column="style_priority" jdbcType="VARCHAR" property="stylePriority" />
|
<result column="style_priority" jdbcType="VARCHAR" property="stylePriority" />
|
||||||
|
<result column="chart_type" jdbcType="VARCHAR" property="chartType" />
|
||||||
|
<result column="is_plugin" jdbcType="BIT" property="isPlugin" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.dataease.base.domain.ChartViewWithBLOBs">
|
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.dataease.base.domain.ChartViewWithBLOBs">
|
||||||
<result column="x_axis" jdbcType="LONGVARCHAR" property="xAxis" />
|
<result column="x_axis" jdbcType="LONGVARCHAR" property="xAxis" />
|
||||||
|
<result column="x_axis_ext" jdbcType="LONGVARCHAR" property="xAxisExt" />
|
||||||
<result column="y_axis" jdbcType="LONGVARCHAR" property="yAxis" />
|
<result column="y_axis" jdbcType="LONGVARCHAR" property="yAxis" />
|
||||||
<result column="y_axis_ext" jdbcType="LONGVARCHAR" property="yAxisExt" />
|
<result column="y_axis_ext" jdbcType="LONGVARCHAR" property="yAxisExt" />
|
||||||
<result column="ext_stack" jdbcType="LONGVARCHAR" property="extStack" />
|
<result column="ext_stack" jdbcType="LONGVARCHAR" property="extStack" />
|
||||||
@ -87,12 +90,12 @@
|
|||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id, `name`, scene_id, table_id, `type`, render, result_count, result_mode, title,
|
id, `name`, title, scene_id, table_id, `type`, render, result_count, result_mode,
|
||||||
create_by, create_time, update_time, style_priority
|
create_by, create_time, update_time, style_priority, chart_type, is_plugin
|
||||||
</sql>
|
</sql>
|
||||||
<sql id="Blob_Column_List">
|
<sql id="Blob_Column_List">
|
||||||
x_axis, y_axis, y_axis_ext, ext_stack, ext_bubble, custom_attr, custom_style, custom_filter,
|
x_axis, x_axis_ext, y_axis, y_axis_ext, ext_stack, ext_bubble, custom_attr, custom_style,
|
||||||
drill_fields, snapshot
|
custom_filter, drill_fields, snapshot
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.ChartViewExample" resultMap="ResultMapWithBLOBs">
|
<select id="selectByExampleWithBLOBs" parameterType="io.dataease.base.domain.ChartViewExample" resultMap="ResultMapWithBLOBs">
|
||||||
select
|
select
|
||||||
@ -143,19 +146,21 @@
|
|||||||
</if>
|
</if>
|
||||||
</delete>
|
</delete>
|
||||||
<insert id="insert" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
|
<insert id="insert" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
|
||||||
insert into chart_view (id, `name`, scene_id,
|
insert into chart_view (id, `name`, title,
|
||||||
table_id, `type`, render,
|
scene_id, table_id, `type`,
|
||||||
result_count, result_mode, title,
|
render, result_count, result_mode,
|
||||||
create_by, create_time, update_time,
|
create_by, create_time, update_time,
|
||||||
style_priority, x_axis, y_axis,
|
style_priority, chart_type, is_plugin,
|
||||||
|
x_axis, x_axis_ext, y_axis,
|
||||||
y_axis_ext, ext_stack, ext_bubble,
|
y_axis_ext, ext_stack, ext_bubble,
|
||||||
custom_attr, custom_style, custom_filter,
|
custom_attr, custom_style, custom_filter,
|
||||||
drill_fields, snapshot)
|
drill_fields, snapshot)
|
||||||
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sceneId,jdbcType=VARCHAR},
|
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
|
||||||
#{tableId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{render,jdbcType=VARCHAR},
|
#{sceneId,jdbcType=VARCHAR}, #{tableId,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR},
|
||||||
#{resultCount,jdbcType=INTEGER}, #{resultMode,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
|
#{render,jdbcType=VARCHAR}, #{resultCount,jdbcType=INTEGER}, #{resultMode,jdbcType=VARCHAR},
|
||||||
#{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
#{createBy,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
||||||
#{stylePriority,jdbcType=VARCHAR}, #{xAxis,jdbcType=LONGVARCHAR}, #{yAxis,jdbcType=LONGVARCHAR},
|
#{stylePriority,jdbcType=VARCHAR}, #{chartType,jdbcType=VARCHAR}, #{isPlugin,jdbcType=BIT},
|
||||||
|
#{xAxis,jdbcType=LONGVARCHAR}, #{xAxisExt,jdbcType=LONGVARCHAR}, #{yAxis,jdbcType=LONGVARCHAR},
|
||||||
#{yAxisExt,jdbcType=LONGVARCHAR}, #{extStack,jdbcType=LONGVARCHAR}, #{extBubble,jdbcType=LONGVARCHAR},
|
#{yAxisExt,jdbcType=LONGVARCHAR}, #{extStack,jdbcType=LONGVARCHAR}, #{extBubble,jdbcType=LONGVARCHAR},
|
||||||
#{customAttr,jdbcType=LONGVARCHAR}, #{customStyle,jdbcType=LONGVARCHAR}, #{customFilter,jdbcType=LONGVARCHAR},
|
#{customAttr,jdbcType=LONGVARCHAR}, #{customStyle,jdbcType=LONGVARCHAR}, #{customFilter,jdbcType=LONGVARCHAR},
|
||||||
#{drillFields,jdbcType=LONGVARCHAR}, #{snapshot,jdbcType=LONGVARCHAR})
|
#{drillFields,jdbcType=LONGVARCHAR}, #{snapshot,jdbcType=LONGVARCHAR})
|
||||||
@ -169,6 +174,9 @@
|
|||||||
<if test="name != null">
|
<if test="name != null">
|
||||||
`name`,
|
`name`,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="title != null">
|
||||||
|
title,
|
||||||
|
</if>
|
||||||
<if test="sceneId != null">
|
<if test="sceneId != null">
|
||||||
scene_id,
|
scene_id,
|
||||||
</if>
|
</if>
|
||||||
@ -187,9 +195,6 @@
|
|||||||
<if test="resultMode != null">
|
<if test="resultMode != null">
|
||||||
result_mode,
|
result_mode,
|
||||||
</if>
|
</if>
|
||||||
<if test="title != null">
|
|
||||||
title,
|
|
||||||
</if>
|
|
||||||
<if test="createBy != null">
|
<if test="createBy != null">
|
||||||
create_by,
|
create_by,
|
||||||
</if>
|
</if>
|
||||||
@ -202,9 +207,18 @@
|
|||||||
<if test="stylePriority != null">
|
<if test="stylePriority != null">
|
||||||
style_priority,
|
style_priority,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="chartType != null">
|
||||||
|
chart_type,
|
||||||
|
</if>
|
||||||
|
<if test="isPlugin != null">
|
||||||
|
is_plugin,
|
||||||
|
</if>
|
||||||
<if test="xAxis != null">
|
<if test="xAxis != null">
|
||||||
x_axis,
|
x_axis,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="xAxisExt != null">
|
||||||
|
x_axis_ext,
|
||||||
|
</if>
|
||||||
<if test="yAxis != null">
|
<if test="yAxis != null">
|
||||||
y_axis,
|
y_axis,
|
||||||
</if>
|
</if>
|
||||||
@ -240,6 +254,9 @@
|
|||||||
<if test="name != null">
|
<if test="name != null">
|
||||||
#{name,jdbcType=VARCHAR},
|
#{name,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="title != null">
|
||||||
|
#{title,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
<if test="sceneId != null">
|
<if test="sceneId != null">
|
||||||
#{sceneId,jdbcType=VARCHAR},
|
#{sceneId,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -258,9 +275,6 @@
|
|||||||
<if test="resultMode != null">
|
<if test="resultMode != null">
|
||||||
#{resultMode,jdbcType=VARCHAR},
|
#{resultMode,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="title != null">
|
|
||||||
#{title,jdbcType=VARCHAR},
|
|
||||||
</if>
|
|
||||||
<if test="createBy != null">
|
<if test="createBy != null">
|
||||||
#{createBy,jdbcType=VARCHAR},
|
#{createBy,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -273,9 +287,18 @@
|
|||||||
<if test="stylePriority != null">
|
<if test="stylePriority != null">
|
||||||
#{stylePriority,jdbcType=VARCHAR},
|
#{stylePriority,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="chartType != null">
|
||||||
|
#{chartType,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="isPlugin != null">
|
||||||
|
#{isPlugin,jdbcType=BIT},
|
||||||
|
</if>
|
||||||
<if test="xAxis != null">
|
<if test="xAxis != null">
|
||||||
#{xAxis,jdbcType=LONGVARCHAR},
|
#{xAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="xAxisExt != null">
|
||||||
|
#{xAxisExt,jdbcType=LONGVARCHAR},
|
||||||
|
</if>
|
||||||
<if test="yAxis != null">
|
<if test="yAxis != null">
|
||||||
#{yAxis,jdbcType=LONGVARCHAR},
|
#{yAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -320,6 +343,9 @@
|
|||||||
<if test="record.name != null">
|
<if test="record.name != null">
|
||||||
`name` = #{record.name,jdbcType=VARCHAR},
|
`name` = #{record.name,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.title != null">
|
||||||
|
title = #{record.title,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
<if test="record.sceneId != null">
|
<if test="record.sceneId != null">
|
||||||
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -338,9 +364,6 @@
|
|||||||
<if test="record.resultMode != null">
|
<if test="record.resultMode != null">
|
||||||
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="record.title != null">
|
|
||||||
title = #{record.title,jdbcType=VARCHAR},
|
|
||||||
</if>
|
|
||||||
<if test="record.createBy != null">
|
<if test="record.createBy != null">
|
||||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -353,9 +376,18 @@
|
|||||||
<if test="record.stylePriority != null">
|
<if test="record.stylePriority != null">
|
||||||
style_priority = #{record.stylePriority,jdbcType=VARCHAR},
|
style_priority = #{record.stylePriority,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.chartType != null">
|
||||||
|
chart_type = #{record.chartType,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="record.isPlugin != null">
|
||||||
|
is_plugin = #{record.isPlugin,jdbcType=BIT},
|
||||||
|
</if>
|
||||||
<if test="record.xAxis != null">
|
<if test="record.xAxis != null">
|
||||||
x_axis = #{record.xAxis,jdbcType=LONGVARCHAR},
|
x_axis = #{record.xAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.xAxisExt != null">
|
||||||
|
x_axis_ext = #{record.xAxisExt,jdbcType=LONGVARCHAR},
|
||||||
|
</if>
|
||||||
<if test="record.yAxis != null">
|
<if test="record.yAxis != null">
|
||||||
y_axis = #{record.yAxis,jdbcType=LONGVARCHAR},
|
y_axis = #{record.yAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -392,18 +424,21 @@
|
|||||||
update chart_view
|
update chart_view
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=VARCHAR},
|
||||||
`name` = #{record.name,jdbcType=VARCHAR},
|
`name` = #{record.name,jdbcType=VARCHAR},
|
||||||
|
title = #{record.title,jdbcType=VARCHAR},
|
||||||
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
||||||
table_id = #{record.tableId,jdbcType=VARCHAR},
|
table_id = #{record.tableId,jdbcType=VARCHAR},
|
||||||
`type` = #{record.type,jdbcType=VARCHAR},
|
`type` = #{record.type,jdbcType=VARCHAR},
|
||||||
render = #{record.render,jdbcType=VARCHAR},
|
render = #{record.render,jdbcType=VARCHAR},
|
||||||
result_count = #{record.resultCount,jdbcType=INTEGER},
|
result_count = #{record.resultCount,jdbcType=INTEGER},
|
||||||
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
||||||
title = #{record.title,jdbcType=VARCHAR},
|
|
||||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||||
style_priority = #{record.stylePriority,jdbcType=VARCHAR},
|
style_priority = #{record.stylePriority,jdbcType=VARCHAR},
|
||||||
|
chart_type = #{record.chartType,jdbcType=VARCHAR},
|
||||||
|
is_plugin = #{record.isPlugin,jdbcType=BIT},
|
||||||
x_axis = #{record.xAxis,jdbcType=LONGVARCHAR},
|
x_axis = #{record.xAxis,jdbcType=LONGVARCHAR},
|
||||||
|
x_axis_ext = #{record.xAxisExt,jdbcType=LONGVARCHAR},
|
||||||
y_axis = #{record.yAxis,jdbcType=LONGVARCHAR},
|
y_axis = #{record.yAxis,jdbcType=LONGVARCHAR},
|
||||||
y_axis_ext = #{record.yAxisExt,jdbcType=LONGVARCHAR},
|
y_axis_ext = #{record.yAxisExt,jdbcType=LONGVARCHAR},
|
||||||
ext_stack = #{record.extStack,jdbcType=LONGVARCHAR},
|
ext_stack = #{record.extStack,jdbcType=LONGVARCHAR},
|
||||||
@ -421,17 +456,19 @@
|
|||||||
update chart_view
|
update chart_view
|
||||||
set id = #{record.id,jdbcType=VARCHAR},
|
set id = #{record.id,jdbcType=VARCHAR},
|
||||||
`name` = #{record.name,jdbcType=VARCHAR},
|
`name` = #{record.name,jdbcType=VARCHAR},
|
||||||
|
title = #{record.title,jdbcType=VARCHAR},
|
||||||
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
scene_id = #{record.sceneId,jdbcType=VARCHAR},
|
||||||
table_id = #{record.tableId,jdbcType=VARCHAR},
|
table_id = #{record.tableId,jdbcType=VARCHAR},
|
||||||
`type` = #{record.type,jdbcType=VARCHAR},
|
`type` = #{record.type,jdbcType=VARCHAR},
|
||||||
render = #{record.render,jdbcType=VARCHAR},
|
render = #{record.render,jdbcType=VARCHAR},
|
||||||
result_count = #{record.resultCount,jdbcType=INTEGER},
|
result_count = #{record.resultCount,jdbcType=INTEGER},
|
||||||
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
result_mode = #{record.resultMode,jdbcType=VARCHAR},
|
||||||
title = #{record.title,jdbcType=VARCHAR},
|
|
||||||
create_by = #{record.createBy,jdbcType=VARCHAR},
|
create_by = #{record.createBy,jdbcType=VARCHAR},
|
||||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||||
style_priority = #{record.stylePriority,jdbcType=VARCHAR}
|
style_priority = #{record.stylePriority,jdbcType=VARCHAR},
|
||||||
|
chart_type = #{record.chartType,jdbcType=VARCHAR},
|
||||||
|
is_plugin = #{record.isPlugin,jdbcType=BIT}
|
||||||
<if test="_parameter != null">
|
<if test="_parameter != null">
|
||||||
<include refid="Update_By_Example_Where_Clause" />
|
<include refid="Update_By_Example_Where_Clause" />
|
||||||
</if>
|
</if>
|
||||||
@ -442,6 +479,9 @@
|
|||||||
<if test="name != null">
|
<if test="name != null">
|
||||||
`name` = #{name,jdbcType=VARCHAR},
|
`name` = #{name,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="title != null">
|
||||||
|
title = #{title,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
<if test="sceneId != null">
|
<if test="sceneId != null">
|
||||||
scene_id = #{sceneId,jdbcType=VARCHAR},
|
scene_id = #{sceneId,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -460,9 +500,6 @@
|
|||||||
<if test="resultMode != null">
|
<if test="resultMode != null">
|
||||||
result_mode = #{resultMode,jdbcType=VARCHAR},
|
result_mode = #{resultMode,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
<if test="title != null">
|
|
||||||
title = #{title,jdbcType=VARCHAR},
|
|
||||||
</if>
|
|
||||||
<if test="createBy != null">
|
<if test="createBy != null">
|
||||||
create_by = #{createBy,jdbcType=VARCHAR},
|
create_by = #{createBy,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -475,9 +512,18 @@
|
|||||||
<if test="stylePriority != null">
|
<if test="stylePriority != null">
|
||||||
style_priority = #{stylePriority,jdbcType=VARCHAR},
|
style_priority = #{stylePriority,jdbcType=VARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="chartType != null">
|
||||||
|
chart_type = #{chartType,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
|
<if test="isPlugin != null">
|
||||||
|
is_plugin = #{isPlugin,jdbcType=BIT},
|
||||||
|
</if>
|
||||||
<if test="xAxis != null">
|
<if test="xAxis != null">
|
||||||
x_axis = #{xAxis,jdbcType=LONGVARCHAR},
|
x_axis = #{xAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="xAxisExt != null">
|
||||||
|
x_axis_ext = #{xAxisExt,jdbcType=LONGVARCHAR},
|
||||||
|
</if>
|
||||||
<if test="yAxis != null">
|
<if test="yAxis != null">
|
||||||
y_axis = #{yAxis,jdbcType=LONGVARCHAR},
|
y_axis = #{yAxis,jdbcType=LONGVARCHAR},
|
||||||
</if>
|
</if>
|
||||||
@ -511,18 +557,21 @@
|
|||||||
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
|
<update id="updateByPrimaryKeyWithBLOBs" parameterType="io.dataease.base.domain.ChartViewWithBLOBs">
|
||||||
update chart_view
|
update chart_view
|
||||||
set `name` = #{name,jdbcType=VARCHAR},
|
set `name` = #{name,jdbcType=VARCHAR},
|
||||||
|
title = #{title,jdbcType=VARCHAR},
|
||||||
scene_id = #{sceneId,jdbcType=VARCHAR},
|
scene_id = #{sceneId,jdbcType=VARCHAR},
|
||||||
table_id = #{tableId,jdbcType=VARCHAR},
|
table_id = #{tableId,jdbcType=VARCHAR},
|
||||||
`type` = #{type,jdbcType=VARCHAR},
|
`type` = #{type,jdbcType=VARCHAR},
|
||||||
render = #{render,jdbcType=VARCHAR},
|
render = #{render,jdbcType=VARCHAR},
|
||||||
result_count = #{resultCount,jdbcType=INTEGER},
|
result_count = #{resultCount,jdbcType=INTEGER},
|
||||||
result_mode = #{resultMode,jdbcType=VARCHAR},
|
result_mode = #{resultMode,jdbcType=VARCHAR},
|
||||||
title = #{title,jdbcType=VARCHAR},
|
|
||||||
create_by = #{createBy,jdbcType=VARCHAR},
|
create_by = #{createBy,jdbcType=VARCHAR},
|
||||||
create_time = #{createTime,jdbcType=BIGINT},
|
create_time = #{createTime,jdbcType=BIGINT},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT},
|
update_time = #{updateTime,jdbcType=BIGINT},
|
||||||
style_priority = #{stylePriority,jdbcType=VARCHAR},
|
style_priority = #{stylePriority,jdbcType=VARCHAR},
|
||||||
|
chart_type = #{chartType,jdbcType=VARCHAR},
|
||||||
|
is_plugin = #{isPlugin,jdbcType=BIT},
|
||||||
x_axis = #{xAxis,jdbcType=LONGVARCHAR},
|
x_axis = #{xAxis,jdbcType=LONGVARCHAR},
|
||||||
|
x_axis_ext = #{xAxisExt,jdbcType=LONGVARCHAR},
|
||||||
y_axis = #{yAxis,jdbcType=LONGVARCHAR},
|
y_axis = #{yAxis,jdbcType=LONGVARCHAR},
|
||||||
y_axis_ext = #{yAxisExt,jdbcType=LONGVARCHAR},
|
y_axis_ext = #{yAxisExt,jdbcType=LONGVARCHAR},
|
||||||
ext_stack = #{extStack,jdbcType=LONGVARCHAR},
|
ext_stack = #{extStack,jdbcType=LONGVARCHAR},
|
||||||
@ -537,17 +586,19 @@
|
|||||||
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.ChartView">
|
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.ChartView">
|
||||||
update chart_view
|
update chart_view
|
||||||
set `name` = #{name,jdbcType=VARCHAR},
|
set `name` = #{name,jdbcType=VARCHAR},
|
||||||
|
title = #{title,jdbcType=VARCHAR},
|
||||||
scene_id = #{sceneId,jdbcType=VARCHAR},
|
scene_id = #{sceneId,jdbcType=VARCHAR},
|
||||||
table_id = #{tableId,jdbcType=VARCHAR},
|
table_id = #{tableId,jdbcType=VARCHAR},
|
||||||
`type` = #{type,jdbcType=VARCHAR},
|
`type` = #{type,jdbcType=VARCHAR},
|
||||||
render = #{render,jdbcType=VARCHAR},
|
render = #{render,jdbcType=VARCHAR},
|
||||||
result_count = #{resultCount,jdbcType=INTEGER},
|
result_count = #{resultCount,jdbcType=INTEGER},
|
||||||
result_mode = #{resultMode,jdbcType=VARCHAR},
|
result_mode = #{resultMode,jdbcType=VARCHAR},
|
||||||
title = #{title,jdbcType=VARCHAR},
|
|
||||||
create_by = #{createBy,jdbcType=VARCHAR},
|
create_by = #{createBy,jdbcType=VARCHAR},
|
||||||
create_time = #{createTime,jdbcType=BIGINT},
|
create_time = #{createTime,jdbcType=BIGINT},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT},
|
update_time = #{updateTime,jdbcType=BIGINT},
|
||||||
style_priority = #{stylePriority,jdbcType=VARCHAR}
|
style_priority = #{stylePriority,jdbcType=VARCHAR},
|
||||||
|
chart_type = #{chartType,jdbcType=VARCHAR},
|
||||||
|
is_plugin = #{isPlugin,jdbcType=BIT}
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
@ -5,6 +5,7 @@
|
|||||||
<id column="id" jdbcType="BIGINT" property="id" />
|
<id column="id" jdbcType="BIGINT" property="id" />
|
||||||
<result column="resource_id" jdbcType="VARCHAR" property="resourceId" />
|
<result column="resource_id" jdbcType="VARCHAR" property="resourceId" />
|
||||||
<result column="user_id" jdbcType="BIGINT" property="userId" />
|
<result column="user_id" jdbcType="BIGINT" property="userId" />
|
||||||
|
<result column="uuid" jdbcType="VARCHAR" property="uuid" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<sql id="Example_Where_Clause">
|
<sql id="Example_Where_Clause">
|
||||||
<where>
|
<where>
|
||||||
@ -65,7 +66,7 @@
|
|||||||
</where>
|
</where>
|
||||||
</sql>
|
</sql>
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id, resource_id, user_id
|
id, resource_id, user_id, uuid
|
||||||
</sql>
|
</sql>
|
||||||
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelLinkMappingExample" resultMap="BaseResultMap">
|
<select id="selectByExample" parameterType="io.dataease.base.domain.PanelLinkMappingExample" resultMap="BaseResultMap">
|
||||||
select
|
select
|
||||||
@ -98,10 +99,10 @@
|
|||||||
</if>
|
</if>
|
||||||
</delete>
|
</delete>
|
||||||
<insert id="insert" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
<insert id="insert" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
||||||
insert into panel_link_mapping (id, resource_id, user_id
|
insert into panel_link_mapping (id, resource_id, user_id,
|
||||||
)
|
uuid)
|
||||||
values (#{id,jdbcType=BIGINT}, #{resourceId,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}
|
values (#{id,jdbcType=BIGINT}, #{resourceId,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT},
|
||||||
)
|
#{uuid,jdbcType=VARCHAR})
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
<insert id="insertSelective" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
||||||
insert into panel_link_mapping
|
insert into panel_link_mapping
|
||||||
@ -115,6 +116,9 @@
|
|||||||
<if test="userId != null">
|
<if test="userId != null">
|
||||||
user_id,
|
user_id,
|
||||||
</if>
|
</if>
|
||||||
|
<if test="uuid != null">
|
||||||
|
uuid,
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
@ -126,6 +130,9 @@
|
|||||||
<if test="userId != null">
|
<if test="userId != null">
|
||||||
#{userId,jdbcType=BIGINT},
|
#{userId,jdbcType=BIGINT},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="uuid != null">
|
||||||
|
#{uuid,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
</trim>
|
</trim>
|
||||||
</insert>
|
</insert>
|
||||||
<select id="countByExample" parameterType="io.dataease.base.domain.PanelLinkMappingExample" resultType="java.lang.Long">
|
<select id="countByExample" parameterType="io.dataease.base.domain.PanelLinkMappingExample" resultType="java.lang.Long">
|
||||||
@ -146,6 +153,9 @@
|
|||||||
<if test="record.userId != null">
|
<if test="record.userId != null">
|
||||||
user_id = #{record.userId,jdbcType=BIGINT},
|
user_id = #{record.userId,jdbcType=BIGINT},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="record.uuid != null">
|
||||||
|
uuid = #{record.uuid,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
</set>
|
</set>
|
||||||
<if test="_parameter != null">
|
<if test="_parameter != null">
|
||||||
<include refid="Update_By_Example_Where_Clause" />
|
<include refid="Update_By_Example_Where_Clause" />
|
||||||
@ -155,7 +165,8 @@
|
|||||||
update panel_link_mapping
|
update panel_link_mapping
|
||||||
set id = #{record.id,jdbcType=BIGINT},
|
set id = #{record.id,jdbcType=BIGINT},
|
||||||
resource_id = #{record.resourceId,jdbcType=VARCHAR},
|
resource_id = #{record.resourceId,jdbcType=VARCHAR},
|
||||||
user_id = #{record.userId,jdbcType=BIGINT}
|
user_id = #{record.userId,jdbcType=BIGINT},
|
||||||
|
uuid = #{record.uuid,jdbcType=VARCHAR}
|
||||||
<if test="_parameter != null">
|
<if test="_parameter != null">
|
||||||
<include refid="Update_By_Example_Where_Clause" />
|
<include refid="Update_By_Example_Where_Clause" />
|
||||||
</if>
|
</if>
|
||||||
@ -169,13 +180,17 @@
|
|||||||
<if test="userId != null">
|
<if test="userId != null">
|
||||||
user_id = #{userId,jdbcType=BIGINT},
|
user_id = #{userId,jdbcType=BIGINT},
|
||||||
</if>
|
</if>
|
||||||
|
<if test="uuid != null">
|
||||||
|
uuid = #{uuid,jdbcType=VARCHAR},
|
||||||
|
</if>
|
||||||
</set>
|
</set>
|
||||||
where id = #{id,jdbcType=BIGINT}
|
where id = #{id,jdbcType=BIGINT}
|
||||||
</update>
|
</update>
|
||||||
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
<update id="updateByPrimaryKey" parameterType="io.dataease.base.domain.PanelLinkMapping">
|
||||||
update panel_link_mapping
|
update panel_link_mapping
|
||||||
set resource_id = #{resourceId,jdbcType=VARCHAR},
|
set resource_id = #{resourceId,jdbcType=VARCHAR},
|
||||||
user_id = #{userId,jdbcType=BIGINT}
|
user_id = #{userId,jdbcType=BIGINT},
|
||||||
|
uuid = #{uuid,jdbcType=VARCHAR}
|
||||||
where id = #{id,jdbcType=BIGINT}
|
where id = #{id,jdbcType=BIGINT}
|
||||||
</update>
|
</update>
|
||||||
</mapper>
|
</mapper>
|
@ -40,7 +40,7 @@
|
|||||||
sys_auth a
|
sys_auth a
|
||||||
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
||||||
WHERE
|
WHERE
|
||||||
auth_source_type = 'datasource'
|
auth_source_type = 'link'
|
||||||
AND auth_target_type = 'user'
|
AND auth_target_type = 'user'
|
||||||
AND auth_target = #{userId}
|
AND auth_target = #{userId}
|
||||||
AND d.privilege_value = 1
|
AND d.privilege_value = 1
|
||||||
@ -80,7 +80,7 @@
|
|||||||
sys_auth a
|
sys_auth a
|
||||||
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
||||||
WHERE
|
WHERE
|
||||||
auth_source_type = 'datasource'
|
auth_source_type = 'link'
|
||||||
AND auth_target_type = 'role'
|
AND auth_target_type = 'role'
|
||||||
AND auth_target = #{roleId}
|
AND auth_target = #{roleId}
|
||||||
AND d.privilege_value = 1
|
AND d.privilege_value = 1
|
||||||
@ -119,7 +119,7 @@
|
|||||||
sys_auth a
|
sys_auth a
|
||||||
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
LEFT JOIN sys_auth_detail d on d.auth_id = a.id
|
||||||
WHERE
|
WHERE
|
||||||
auth_source_type = 'datasource'
|
auth_source_type = 'link'
|
||||||
AND auth_target_type = 'dept'
|
AND auth_target_type = 'dept'
|
||||||
AND auth_target = #{deptId}
|
AND auth_target = #{deptId}
|
||||||
AND d.privilege_value = 1
|
AND d.privilege_value = 1
|
||||||
|
@ -14,7 +14,7 @@ public interface ExtChartViewMapper {
|
|||||||
|
|
||||||
ChartViewDTO searchOne(ChartViewRequest request);
|
ChartViewDTO searchOne(ChartViewRequest request);
|
||||||
|
|
||||||
void chartCopy(@Param("newChartId")String newChartId,@Param("oldChartId")String oldChartId);
|
void chartCopy(@Param("newChartId")String newChartId,@Param("oldChartId")String oldChartId,@Param("panelId")String panelId);
|
||||||
|
|
||||||
@Select("select id from chart_view where table_id = #{tableId}")
|
@Select("select id from chart_view where table_id = #{tableId}")
|
||||||
List<String> allViewIds(@Param("tableId") String tableId);
|
List<String> allViewIds(@Param("tableId") String tableId);
|
||||||
|
@ -109,11 +109,12 @@
|
|||||||
`y_axis_ext`,
|
`y_axis_ext`,
|
||||||
`render`,
|
`render`,
|
||||||
`result_count`,
|
`result_count`,
|
||||||
`result_mode`
|
`result_mode`,
|
||||||
|
`chart_type`
|
||||||
) SELECT
|
) SELECT
|
||||||
#{newChartId},
|
#{newChartId},
|
||||||
GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ),
|
GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ),
|
||||||
`scene_id`,
|
#{panelId},
|
||||||
`table_id`,
|
`table_id`,
|
||||||
`type`,
|
`type`,
|
||||||
GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ),
|
GET_CHART_VIEW_COPY_NAME ( #{oldChartId} ),
|
||||||
@ -133,7 +134,8 @@
|
|||||||
`y_axis_ext`,
|
`y_axis_ext`,
|
||||||
`render`,
|
`render`,
|
||||||
`result_count`,
|
`result_count`,
|
||||||
`result_mode`
|
`result_mode`,
|
||||||
|
'private'
|
||||||
FROM
|
FROM
|
||||||
chart_view
|
chart_view
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -19,5 +19,7 @@ public interface ExtPanelGroupMapper {
|
|||||||
|
|
||||||
void copyPanelView(@Param("pid") String panelId);
|
void copyPanelView(@Param("pid") String panelId);
|
||||||
|
|
||||||
|
//移除未使用的视图
|
||||||
|
void removeUselessViews(@Param("panelId") String panelId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -178,4 +178,21 @@
|
|||||||
panel_id = #{panelId}
|
panel_id = #{panelId}
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<delete id="removeUselessViews">
|
||||||
|
DELETE
|
||||||
|
FROM
|
||||||
|
chart_view
|
||||||
|
WHERE
|
||||||
|
chart_view.chart_type = 'private'
|
||||||
|
AND chart_view.scene_id = #{panelId}
|
||||||
|
AND id NOT IN (
|
||||||
|
SELECT
|
||||||
|
panel_view.chart_view_id
|
||||||
|
FROM
|
||||||
|
panel_view
|
||||||
|
WHERE
|
||||||
|
panel_view.panel_id = #{panelId}
|
||||||
|
)
|
||||||
|
</delete>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -34,9 +34,10 @@
|
|||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
<select id="query" resultMap="treeNodeMap">
|
<select id="query" resultMap="treeNodeMap">
|
||||||
select distinct s.panel_group_id as id, IFNULL(s.granter,g.create_by) as creator, g.name
|
select distinct s.panel_group_id as id, u.nick_name as creator, g.name
|
||||||
from panel_share s
|
from panel_share s
|
||||||
left join panel_group g on g.id = s.panel_group_id
|
left join panel_group g on g.id = s.panel_group_id
|
||||||
|
left join sys_user u on u.username = IFNULL(s.granter,g.create_by)
|
||||||
where
|
where
|
||||||
( s.target_id = #{userId} and s.type = 0 ) or
|
( s.target_id = #{userId} and s.type = 0 ) or
|
||||||
( s.target_id = #{deptId} and s.type = 2 ) or
|
( s.target_id = #{deptId} and s.type = 2 ) or
|
||||||
|
@ -8,6 +8,9 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface ExtVAuthModelMapper {
|
public interface ExtVAuthModelMapper {
|
||||||
|
|
||||||
List<VAuthModelDTO> queryAuthModel (@Param("record") VAuthModelRequest record);
|
List<VAuthModelDTO> queryAuthModel(@Param("record") VAuthModelRequest record);
|
||||||
|
|
||||||
|
List<VAuthModelDTO> queryAuthModelViews (@Param("record") VAuthModelRequest record);
|
||||||
|
|
||||||
|
List<VAuthModelDTO> queryAuthViewsOriginal (@Param("record") VAuthModelRequest record);
|
||||||
}
|
}
|
||||||
|
@ -4,106 +4,176 @@
|
|||||||
<resultMap extends="io.dataease.base.mapper.VAuthModelMapper.ResultMapWithBLOBs" id="ExtResultMap"
|
<resultMap extends="io.dataease.base.mapper.VAuthModelMapper.ResultMapWithBLOBs" id="ExtResultMap"
|
||||||
type="io.dataease.dto.authModel.VAuthModelDTO">
|
type="io.dataease.dto.authModel.VAuthModelDTO">
|
||||||
<result column="privileges" jdbcType="VARCHAR" property="privileges"/>
|
<result column="privileges" jdbcType="VARCHAR" property="privileges"/>
|
||||||
|
<result column="inner_id" jdbcType="VARCHAR" property="innerId"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="queryAuthModel" resultMap="ExtResultMap">
|
<select id="queryAuthModel" resultMap="ExtResultMap">
|
||||||
SELECT
|
SELECT
|
||||||
v_auth_model.id,
|
v_auth_model.id,
|
||||||
v_auth_model.name,
|
v_auth_model.name,
|
||||||
v_auth_model.label,
|
v_auth_model.label,
|
||||||
v_auth_model.pid,
|
v_auth_model.pid,
|
||||||
v_auth_model.node_type,
|
v_auth_model.node_type,
|
||||||
v_auth_model.model_type,
|
v_auth_model.model_type,
|
||||||
v_auth_model.model_inner_type,
|
v_auth_model.model_inner_type,
|
||||||
v_auth_model.auth_type,
|
v_auth_model.auth_type,
|
||||||
v_auth_model.create_by,
|
v_auth_model.create_by,
|
||||||
v_auth_model.level,
|
v_auth_model.level,
|
||||||
v_auth_model.mode,
|
v_auth_model.mode,
|
||||||
v_auth_model.data_source_id,
|
v_auth_model.data_source_id,
|
||||||
authInfo.PRIVILEGES AS `privileges`
|
authInfo.PRIVILEGES AS `privileges`
|
||||||
FROM
|
FROM
|
||||||
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{record.userId}, #{record.modelType} ) cids ) t,
|
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{record.userId}, #{record.modelType} ) cids ) t,
|
||||||
v_auth_model
|
v_auth_model
|
||||||
LEFT JOIN (
|
LEFT JOIN (
|
||||||
SELECT
|
SELECT
|
||||||
auth_source,
|
auth_source,
|
||||||
group_concat( DISTINCT sys_auth_detail.privilege_extend ) AS `privileges`
|
group_concat( DISTINCT sys_auth_detail.privilege_extend ) AS `privileges`
|
||||||
FROM
|
FROM
|
||||||
(
|
(
|
||||||
`sys_auth`
|
`sys_auth`
|
||||||
LEFT JOIN `sys_auth_detail` ON ((
|
LEFT JOIN `sys_auth_detail` ON ((
|
||||||
`sys_auth`.`id` = `sys_auth_detail`.`auth_id`
|
`sys_auth`.`id` = `sys_auth_detail`.`auth_id`
|
||||||
)))
|
)))
|
||||||
WHERE
|
WHERE
|
||||||
sys_auth_detail.privilege_value = 1
|
sys_auth_detail.privilege_value = 1
|
||||||
AND sys_auth.auth_source_type = #{record.modelType}
|
AND sys_auth.auth_source_type = #{record.modelType}
|
||||||
AND (
|
AND (
|
||||||
(
|
(
|
||||||
sys_auth.auth_target_type = 'dept'
|
sys_auth.auth_target_type = 'dept'
|
||||||
AND sys_auth.auth_target IN ( SELECT dept_id FROM sys_user WHERE user_id = #{record.userId} )
|
AND sys_auth.auth_target IN ( SELECT dept_id FROM sys_user WHERE user_id = #{record.userId} )
|
||||||
)
|
)
|
||||||
OR (
|
OR (
|
||||||
sys_auth.auth_target_type = 'user'
|
sys_auth.auth_target_type = 'user'
|
||||||
AND sys_auth.auth_target = #{record.userId}
|
AND sys_auth.auth_target = #{record.userId}
|
||||||
)
|
)
|
||||||
OR (
|
OR (
|
||||||
sys_auth.auth_target_type = 'role'
|
sys_auth.auth_target_type = 'role'
|
||||||
AND sys_auth.auth_target IN ( SELECT role_id FROM sys_users_roles WHERE user_id = #{record.userId} )
|
AND sys_auth.auth_target IN ( SELECT role_id FROM sys_users_roles WHERE user_id = #{record.userId} )
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
GROUP BY
|
GROUP BY
|
||||||
`sys_auth`.`auth_source`
|
`sys_auth`.`auth_source`
|
||||||
) authInfo ON v_auth_model.id = authInfo.auth_source
|
) authInfo ON v_auth_model.id = authInfo.auth_source
|
||||||
WHERE
|
WHERE
|
||||||
FIND_IN_SET( v_auth_model.id, cids )
|
FIND_IN_SET( v_auth_model.id, cids )
|
||||||
<if test="record.id != null">
|
<if test="record.id != null">
|
||||||
and v_auth_model.id = #{record.id,jdbcType=VARCHAR}
|
and v_auth_model.id = #{record.id,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.pid != null">
|
<if test="record.pid != null">
|
||||||
and v_auth_model.pid = #{record.pid,jdbcType=VARCHAR}
|
and v_auth_model.pid = #{record.pid,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.nodeType != null">
|
<if test="record.nodeType != null">
|
||||||
and v_auth_model.node_type = #{record.nodeType,jdbcType=VARCHAR}
|
and v_auth_model.node_type = #{record.nodeType,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.modelType != null">
|
<if test="record.modelType != null">
|
||||||
and v_auth_model.model_type = #{record.modelType,jdbcType=VARCHAR}
|
and v_auth_model.model_type = #{record.modelType,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.modelInnerType != null">
|
<if test="record.modelInnerType != null">
|
||||||
and v_auth_model.model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR}
|
and v_auth_model.model_inner_type = #{record.modelInnerType,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.authType != null">
|
<if test="record.authType != null">
|
||||||
and v_auth_model.auth_type = #{record.authType,jdbcType=VARCHAR}
|
and v_auth_model.auth_type = #{record.authType,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.createBy != null">
|
<if test="record.createBy != null">
|
||||||
and v_auth_model.create_by = #{record.createBy,jdbcType=VARCHAR}
|
and v_auth_model.create_by = #{record.createBy,jdbcType=VARCHAR}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.level != null">
|
<if test="record.level != null">
|
||||||
and v_auth_model.`level` = #{record.level,jdbcType=BIGINT}
|
and v_auth_model.`level` = #{record.level,jdbcType=BIGINT}
|
||||||
</if>
|
</if>
|
||||||
<if test="record.mode != null">
|
<if test="record.mode != null">
|
||||||
<if test="record.mode == 0">
|
<if test="record.mode == 0">
|
||||||
and v_auth_model.`mode` = 0
|
and v_auth_model.`mode` = 0
|
||||||
</if>
|
</if>
|
||||||
<if test='record.mode == 1 and record.modelType != null and record.modelType == "dataset"'>
|
<if test='record.mode == 1 and record.modelType != null and record.modelType == "dataset"'>
|
||||||
and (v_auth_model.`mode` = 1 or (v_auth_model.`model_inner_type` = 'group' and v_auth_model.model_type = 'dataset'))
|
and (v_auth_model.`mode` = 1 or (v_auth_model.`model_inner_type` = 'group' and v_auth_model.model_type =
|
||||||
</if>
|
'dataset'))
|
||||||
</if>
|
</if>
|
||||||
<if test="record.dataSourceId != null">
|
</if>
|
||||||
and v_auth_model.data_source_id = #{record.dataSourceId,jdbcType=VARCHAR}
|
<if test="record.dataSourceId != null">
|
||||||
</if>
|
and v_auth_model.data_source_id = #{record.dataSourceId,jdbcType=VARCHAR}
|
||||||
<if test="record.name != null">
|
</if>
|
||||||
and v_auth_model.`name` = #{record.name,jdbcType=LONGVARCHAR}
|
<if test="record.name != null">
|
||||||
</if>
|
and v_auth_model.`name` = #{record.name,jdbcType=LONGVARCHAR}
|
||||||
<if test="record.label != null">
|
</if>
|
||||||
and v_auth_model.`label` = #{record.label,jdbcType=LONGVARCHAR}
|
<if test="record.label != null">
|
||||||
</if>
|
and v_auth_model.`label` = #{record.label,jdbcType=LONGVARCHAR}
|
||||||
<if test="record.modelInnerTypeArray != null and record.modelInnerTypeArray.size() > 0">
|
</if>
|
||||||
and v_auth_model.model_inner_type in
|
<if test="record.modelInnerTypeArray != null and record.modelInnerTypeArray.size() > 0">
|
||||||
<foreach collection="record.modelInnerTypeArray" item="item" separator="," open="(" close=")">
|
and v_auth_model.model_inner_type in
|
||||||
#{item}
|
<foreach collection="record.modelInnerTypeArray" item="item" separator="," open="(" close=")">
|
||||||
</foreach>
|
#{item}
|
||||||
</if>
|
</foreach>
|
||||||
ORDER BY v_auth_model.node_type desc, CONVERT(v_auth_model.label using gbk) asc
|
</if>
|
||||||
</select>
|
ORDER BY v_auth_model.node_type desc, CONVERT(v_auth_model.label using gbk) asc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="queryAuthModelViews" resultMap="ExtResultMap">
|
||||||
|
SELECT
|
||||||
|
panel_view.id,
|
||||||
|
chart_view.id as 'inner_id',
|
||||||
|
chart_view.NAME,
|
||||||
|
chart_view.NAME AS 'label',
|
||||||
|
panel_view.panel_id AS pid,
|
||||||
|
chart_view.type as 'model_inner_type',
|
||||||
|
'leaf' AS node_type,
|
||||||
|
'view' AS model_type
|
||||||
|
FROM
|
||||||
|
chart_view
|
||||||
|
LEFT JOIN panel_view ON panel_view.chart_view_id = chart_view.id
|
||||||
|
<where>
|
||||||
|
|
||||||
|
<if test="record.pids != null and record.pids.size() > 0">
|
||||||
|
and panel_view.panel_id in
|
||||||
|
<foreach collection="record.pids" item="item" separator="," open="(" close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY CONVERT(chart_view.name using gbk) asc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="queryAuthViewsOriginal" resultMap="ExtResultMap">
|
||||||
|
select * from (
|
||||||
|
SELECT
|
||||||
|
chart_group.id,
|
||||||
|
chart_group.id AS 'inner_id',
|
||||||
|
chart_group.NAME,
|
||||||
|
chart_group.NAME AS 'label',
|
||||||
|
chart_group.pid AS pid,
|
||||||
|
chart_group.type AS 'model_inner_type',
|
||||||
|
'spine' AS node_type,
|
||||||
|
'view' AS model_type
|
||||||
|
FROM
|
||||||
|
chart_group
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
distinct
|
||||||
|
chart_view.id,
|
||||||
|
chart_view.id AS 'inner_id',
|
||||||
|
chart_view.NAME,
|
||||||
|
chart_view.NAME AS 'label',
|
||||||
|
chart_view.scene_id AS pid,
|
||||||
|
chart_view.type AS 'model_inner_type',
|
||||||
|
'leaf' AS node_type,
|
||||||
|
'view' AS model_type
|
||||||
|
FROM
|
||||||
|
chart_view
|
||||||
|
LEFT JOIN panel_view ON panel_view.chart_view_id = chart_view.id
|
||||||
|
<where>
|
||||||
|
chart_view.chart_type ='public'
|
||||||
|
<if test="record.pids != null and record.pids.size() > 0">
|
||||||
|
and panel_view.panel_id in
|
||||||
|
<foreach collection="record.pids" item="item" separator="," open="(" close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
) viewsOriginal
|
||||||
|
ORDER BY viewsOriginal.node_type desc, CONVERT(viewsOriginal.label using gbk) asc
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -4,6 +4,7 @@ import io.dataease.auth.api.dto.CurrentRoleDto;
|
|||||||
import io.dataease.auth.api.dto.CurrentUserDto;
|
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||||
import io.dataease.auth.entity.AuthItem;
|
import io.dataease.auth.entity.AuthItem;
|
||||||
import io.dataease.auth.service.ExtAuthService;
|
import io.dataease.auth.service.ExtAuthService;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.constants.ResourceAuthLevel;
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.commons.model.AuthURD;
|
import io.dataease.commons.model.AuthURD;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -56,7 +57,7 @@ public class AuthUtils {
|
|||||||
Long deptId = user.getDeptId();
|
Long deptId = user.getDeptId();
|
||||||
List<CurrentRoleDto> roles = user.getRoles();
|
List<CurrentRoleDto> roles = user.getRoles();
|
||||||
Set<AuthItem> result = new HashSet<>();
|
Set<AuthItem> result = new HashSet<>();
|
||||||
if (StringUtils.equals("link", type)) {
|
if (StringUtils.equals(DePermissionType.DATASOURCE.name().toLowerCase(), type)) {
|
||||||
Set<AuthItem> userSet = extAuthService.dataSourceIdByUser(userId).stream().collect(Collectors.toSet());
|
Set<AuthItem> userSet = extAuthService.dataSourceIdByUser(userId).stream().collect(Collectors.toSet());
|
||||||
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.dataSourceIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.dataSourceIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
||||||
Set<AuthItem> deptSet = extAuthService.dataSourceIdByDept(deptId).stream().collect(Collectors.toSet());
|
Set<AuthItem> deptSet = extAuthService.dataSourceIdByDept(deptId).stream().collect(Collectors.toSet());
|
||||||
@ -69,7 +70,7 @@ public class AuthUtils {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (StringUtils.equals("dataset", type)) {
|
else if (StringUtils.equals(DePermissionType.DATASET.name().toLowerCase(), type)) {
|
||||||
Set<AuthItem> userSet = extAuthService.dataSetIdByUser(userId).stream().collect(Collectors.toSet());
|
Set<AuthItem> userSet = extAuthService.dataSetIdByUser(userId).stream().collect(Collectors.toSet());
|
||||||
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.dataSetIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.dataSetIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
||||||
Set<AuthItem> deptSet = extAuthService.dataSetIdByDept(deptId).stream().collect(Collectors.toSet());
|
Set<AuthItem> deptSet = extAuthService.dataSetIdByDept(deptId).stream().collect(Collectors.toSet());
|
||||||
@ -81,7 +82,7 @@ public class AuthUtils {
|
|||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
else if (StringUtils.equals("panel", type)) {
|
else if (StringUtils.equals(DePermissionType.PANEL.name().toLowerCase(), type)) {
|
||||||
Set<AuthItem> userSet = extAuthService.panelIdByUser(userId).stream().collect(Collectors.toSet());
|
Set<AuthItem> userSet = extAuthService.panelIdByUser(userId).stream().collect(Collectors.toSet());
|
||||||
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.panelIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
Set<AuthItem> roleSet = roles.stream().map(role -> extAuthService.panelIdByRole(role.getId())).flatMap(Collection::stream).collect(Collectors.toSet());
|
||||||
Set<AuthItem> deptSet = extAuthService.panelIdByDept(deptId).stream().collect(Collectors.toSet());
|
Set<AuthItem> deptSet = extAuthService.panelIdByDept(deptId).stream().collect(Collectors.toSet());
|
||||||
|
@ -7,6 +7,7 @@ import javax.crypto.*;
|
|||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加密解密工具
|
* 加密解密工具
|
||||||
@ -19,6 +20,13 @@ public class CodingUtil {
|
|||||||
|
|
||||||
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
|
private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
|
||||||
|
|
||||||
|
|
||||||
|
public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",
|
||||||
|
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
|
||||||
|
"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
|
||||||
|
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
|
||||||
|
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
|
||||||
|
"W", "X", "Y", "Z" };
|
||||||
/**
|
/**
|
||||||
* MD5加密
|
* MD5加密
|
||||||
*
|
*
|
||||||
@ -165,4 +173,26 @@ public class CodingUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isNumeric(String str){
|
||||||
|
for (int i = str.length();--i>=0;){
|
||||||
|
if (!Character.isDigit(str.charAt(i))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static String shortUuid() {
|
||||||
|
StringBuffer shortBuffer = new StringBuffer();
|
||||||
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
String str = uuid.substring(i * 4, i * 4 + 4);
|
||||||
|
int x = Integer.parseInt(str, 16);
|
||||||
|
shortBuffer.append(chars[x % 0x3E]);
|
||||||
|
}
|
||||||
|
return shortBuffer.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package io.dataease.commons.utils;
|
|||||||
|
|
||||||
import io.dataease.commons.model.ITreeBase;
|
import io.dataease.commons.model.ITreeBase;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -18,6 +19,9 @@ public class TreeUtils{
|
|||||||
*/
|
*/
|
||||||
public static<T extends ITreeBase> List<T> mergeTree(List<T> tree,String ... rootPid) {
|
public static<T extends ITreeBase> List<T> mergeTree(List<T> tree,String ... rootPid) {
|
||||||
Assert.notNull(rootPid, "Root Pid cannot be null");
|
Assert.notNull(rootPid, "Root Pid cannot be null");
|
||||||
|
if(CollectionUtils.isEmpty(tree)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
List<T> result = new ArrayList<>();
|
List<T> result = new ArrayList<>();
|
||||||
// 构建id-节点map映射
|
// 构建id-节点map映射
|
||||||
Map<String, T> treePidMap = tree.stream().collect(Collectors.toMap(T::getId, t -> t));
|
Map<String, T> treePidMap = tree.stream().collect(Collectors.toMap(T::getId, t -> t));
|
||||||
|
@ -3,6 +3,7 @@ package io.dataease.controller;
|
|||||||
import io.dataease.commons.exception.DEException;
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.commons.license.DefaultLicenseService;
|
import io.dataease.commons.license.DefaultLicenseService;
|
||||||
import io.dataease.commons.license.F2CLicenseResponse;
|
import io.dataease.commons.license.F2CLicenseResponse;
|
||||||
|
import io.dataease.commons.utils.CodingUtil;
|
||||||
import io.dataease.commons.utils.LogUtil;
|
import io.dataease.commons.utils.LogUtil;
|
||||||
import io.dataease.commons.utils.ServletUtils;
|
import io.dataease.commons.utils.ServletUtils;
|
||||||
import io.dataease.service.panel.PanelLinkService;
|
import io.dataease.service.panel.PanelLinkService;
|
||||||
@ -48,8 +49,13 @@ public class IndexController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/link/{index}")
|
@GetMapping("/link/{index}")
|
||||||
public void link(@PathVariable(value = "index", required = true) Long index) {
|
public void link(@PathVariable(value = "index", required = true) String index) {
|
||||||
String url = panelLinkService.getUrlByIndex(index);
|
String url;
|
||||||
|
if (CodingUtil.isNumeric(index)) {
|
||||||
|
url = panelLinkService.getUrlByIndex(Long.parseLong(index));
|
||||||
|
} else {
|
||||||
|
url = panelLinkService.getUrlByUuid(index);
|
||||||
|
}
|
||||||
HttpServletResponse response = ServletUtils.response();
|
HttpServletResponse response = ServletUtils.response();
|
||||||
try {
|
try {
|
||||||
response.sendRedirect(url);
|
response.sendRedirect(url);
|
||||||
|
@ -72,9 +72,9 @@ public class ChartViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("复制")
|
@ApiOperation("复制")
|
||||||
@PostMapping("chartCopy/{id}")
|
@PostMapping("chartCopy/{id}/{panelId}")
|
||||||
public String chartCopy(@PathVariable String id) {
|
public String chartCopy(@PathVariable String id, @PathVariable String panelId) {
|
||||||
return chartViewService.chartCopy(id);
|
return chartViewService.chartCopy(id,panelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
package io.dataease.controller.dataset;
|
package io.dataease.controller.dataset;
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
|
import io.dataease.auth.annotation.DePermissions;
|
||||||
import io.dataease.base.domain.DatasetGroup;
|
import io.dataease.base.domain.DatasetGroup;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.controller.request.dataset.DataSetGroupRequest;
|
import io.dataease.controller.request.dataset.DataSetGroupRequest;
|
||||||
import io.dataease.dto.dataset.DataSetGroupDTO;
|
import io.dataease.dto.dataset.DataSetGroupDTO;
|
||||||
import io.dataease.service.dataset.DataSetGroupService;
|
import io.dataease.service.dataset.DataSetGroupService;
|
||||||
import io.dataease.service.dataset.ExtractDataService;
|
import io.dataease.service.dataset.ExtractDataService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.shiro.authz.annotation.Logical;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
@ -28,12 +34,18 @@ public class DataSetGroupController {
|
|||||||
@Resource
|
@Resource
|
||||||
private ExtractDataService extractDataService;
|
private ExtractDataService extractDataService;
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
|
@DePermissions(value = {
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "id"),
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "pid", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
|
}, logical = Logical.AND)
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public DataSetGroupDTO save(@RequestBody DatasetGroup datasetGroup) {
|
public DataSetGroupDTO save(@RequestBody DatasetGroup datasetGroup) {
|
||||||
return dataSetGroupService.save(datasetGroup);
|
return dataSetGroupService.save(datasetGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
@ApiOperation("查询树")
|
@ApiOperation("查询树")
|
||||||
@PostMapping("/tree")
|
@PostMapping("/tree")
|
||||||
public List<DataSetGroupDTO> tree(@RequestBody DataSetGroupRequest datasetGroup) {
|
public List<DataSetGroupDTO> tree(@RequestBody DataSetGroupRequest datasetGroup) {
|
||||||
@ -46,6 +58,8 @@ public class DataSetGroupController {
|
|||||||
return dataSetGroupService.treeNode(datasetGroup);
|
return dataSetGroupService.treeNode(datasetGroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
|
@DePermission(type = DePermissionType.DATASET, level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@PostMapping("/delete/{id}")
|
@PostMapping("/delete/{id}")
|
||||||
public void tree(@PathVariable String id) throws Exception {
|
public void tree(@PathVariable String id) throws Exception {
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
package io.dataease.controller.dataset;
|
package io.dataease.controller.dataset;
|
||||||
|
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
|
import io.dataease.auth.annotation.DePermissions;
|
||||||
import io.dataease.base.domain.DatasetTable;
|
import io.dataease.base.domain.DatasetTable;
|
||||||
import io.dataease.base.domain.DatasetTableField;
|
import io.dataease.base.domain.DatasetTableField;
|
||||||
import io.dataease.base.domain.DatasetTableIncrementalConfig;
|
import io.dataease.base.domain.DatasetTableIncrementalConfig;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.controller.request.dataset.DataSetTableRequest;
|
import io.dataease.controller.request.dataset.DataSetTableRequest;
|
||||||
import io.dataease.controller.response.DataSetDetail;
|
import io.dataease.controller.response.DataSetDetail;
|
||||||
import io.dataease.dto.datasource.TableField;
|
import io.dataease.dto.datasource.TableField;
|
||||||
@ -11,6 +15,8 @@ import io.dataease.dto.dataset.DataSetTableDTO;
|
|||||||
import io.dataease.dto.dataset.ExcelFileData;
|
import io.dataease.dto.dataset.ExcelFileData;
|
||||||
import io.dataease.service.dataset.DataSetTableService;
|
import io.dataease.service.dataset.DataSetTableService;
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.*;
|
||||||
|
import org.apache.shiro.authz.annotation.Logical;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
@ -30,12 +36,24 @@ public class DataSetTableController {
|
|||||||
@Resource
|
@Resource
|
||||||
private DataSetTableService dataSetTableService;
|
private DataSetTableService dataSetTableService;
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
|
@DePermissions(value = {
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "id"),
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "sceneId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE),
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "dataSourceId", level = ResourceAuthLevel.DATASET_LEVEL_USE)
|
||||||
|
}, logical = Logical.AND)
|
||||||
@ApiOperation("批量保存")
|
@ApiOperation("批量保存")
|
||||||
@PostMapping("batchAdd")
|
@PostMapping("batchAdd")
|
||||||
public void batchAdd(@RequestBody List<DataSetTableRequest> datasetTable) throws Exception {
|
public void batchAdd(@RequestBody List<DataSetTableRequest> datasetTable) throws Exception {
|
||||||
dataSetTableService.batchInsert(datasetTable);
|
dataSetTableService.batchInsert(datasetTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
|
@DePermissions(value = {
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "id", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE),
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "sceneId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE),
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "dataSourceId", level = ResourceAuthLevel.DATASET_LEVEL_USE)
|
||||||
|
}, logical = Logical.AND)
|
||||||
@ApiOperation("更新")
|
@ApiOperation("更新")
|
||||||
@PostMapping("update")
|
@PostMapping("update")
|
||||||
public void save(@RequestBody DataSetTableRequest datasetTable) throws Exception {
|
public void save(@RequestBody DataSetTableRequest datasetTable) throws Exception {
|
||||||
@ -46,12 +64,19 @@ public class DataSetTableController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("data:read")
|
||||||
|
@DePermissions(value = {
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "id", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE),
|
||||||
|
@DePermission(type = DePermissionType.DATASET, value = "sceneId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE),
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "dataSourceId", level = ResourceAuthLevel.DATASET_LEVEL_USE)
|
||||||
|
}, logical = Logical.AND)
|
||||||
@ApiOperation("修改")
|
@ApiOperation("修改")
|
||||||
@PostMapping("alter")
|
@PostMapping("alter")
|
||||||
public void alter(@RequestBody DataSetTableRequest request) throws Exception {
|
public void alter(@RequestBody DataSetTableRequest request) throws Exception {
|
||||||
dataSetTableService.alter(request);
|
dataSetTableService.alter(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@PostMapping("delete/{id}")
|
@PostMapping("delete/{id}")
|
||||||
public void delete(@ApiParam(name = "id", value = "数据集ID", required = true) @PathVariable String id) throws Exception {
|
public void delete(@ApiParam(name = "id", value = "数据集ID", required = true) @PathVariable String id) throws Exception {
|
||||||
@ -70,6 +95,7 @@ public class DataSetTableController {
|
|||||||
return dataSetTableService.listAndGroup(dataSetTableRequest);
|
return dataSetTableService.listAndGroup(dataSetTableRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASET, level = ResourceAuthLevel.DATASET_LEVEL_USE)
|
||||||
@ApiOperation("详息")
|
@ApiOperation("详息")
|
||||||
@PostMapping("get/{id}")
|
@PostMapping("get/{id}")
|
||||||
public DatasetTable get(@ApiParam(name = "id", value = "数据集ID", required = true) @PathVariable String id) {
|
public DatasetTable get(@ApiParam(name = "id", value = "数据集ID", required = true) @PathVariable String id) {
|
||||||
|
@ -3,7 +3,11 @@ package io.dataease.controller.datasource;
|
|||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.auth.annotation.DePermission;
|
||||||
|
import io.dataease.auth.annotation.DePermissions;
|
||||||
import io.dataease.base.domain.Datasource;
|
import io.dataease.base.domain.Datasource;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.PageUtils;
|
import io.dataease.commons.utils.PageUtils;
|
||||||
import io.dataease.commons.utils.Pager;
|
import io.dataease.commons.utils.Pager;
|
||||||
@ -16,6 +20,8 @@ import io.dataease.service.datasource.DatasourceService;
|
|||||||
import io.dataease.dto.DatasourceDTO;
|
import io.dataease.dto.DatasourceDTO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.shiro.authz.annotation.Logical;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
|
|
||||||
@ -32,18 +38,24 @@ public class DatasourceController {
|
|||||||
@Resource
|
@Resource
|
||||||
private DatasourceService datasourceService;
|
private DatasourceService datasourceService;
|
||||||
|
|
||||||
|
@RequiresPermissions("datasource:add")
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "id")
|
||||||
@ApiOperation("新增数据源")
|
@ApiOperation("新增数据源")
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public Datasource addDatasource(@RequestBody Datasource datasource) throws Exception{
|
public Datasource addDatasource(@RequestBody Datasource datasource) throws Exception{
|
||||||
return datasourceService.addDatasource(datasource);
|
return datasourceService.addDatasource(datasource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("datasource:read")
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "id")
|
||||||
@ApiOperation("验证数据源")
|
@ApiOperation("验证数据源")
|
||||||
@PostMapping("/validate")
|
@PostMapping("/validate")
|
||||||
public ResultHolder validate(@RequestBody Datasource datasource) throws Exception {
|
public ResultHolder validate(@RequestBody Datasource datasource) throws Exception {
|
||||||
return datasourceService.validate(datasource);
|
return datasourceService.validate(datasource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("datasource:read")
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE)
|
||||||
@ApiOperation("验证数据源")
|
@ApiOperation("验证数据源")
|
||||||
@GetMapping("/validate/{datasourceId}")
|
@GetMapping("/validate/{datasourceId}")
|
||||||
public ResultHolder validate(@PathVariable String datasourceId) {
|
public ResultHolder validate(@PathVariable String datasourceId) {
|
||||||
@ -65,6 +77,7 @@ public class DatasourceController {
|
|||||||
return getDatasourceList().stream().filter(datasourceDTO -> datasourceDTO.getType().equalsIgnoreCase(type)).collect(Collectors.toList());
|
return getDatasourceList().stream().filter(datasourceDTO -> datasourceDTO.getType().equalsIgnoreCase(type)).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("datasource:read")
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
@PostMapping("/list/{goPage}/{pageSize}")
|
@PostMapping("/list/{goPage}/{pageSize}")
|
||||||
public Pager<List<DatasourceDTO>> getDatasourceList(@RequestBody BaseGridRequest request, @PathVariable int goPage, @PathVariable int pageSize) throws Exception {
|
public Pager<List<DatasourceDTO>> getDatasourceList(@RequestBody BaseGridRequest request, @PathVariable int goPage, @PathVariable int pageSize) throws Exception {
|
||||||
@ -72,12 +85,15 @@ public class DatasourceController {
|
|||||||
return PageUtils.setPageInfo(page, datasourceService.gridQuery(request));
|
return PageUtils.setPageInfo(page, datasourceService.gridQuery(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, level = ResourceAuthLevel.LINK_LEVEL_MANAGE)
|
||||||
@ApiOperation("删除数据源")
|
@ApiOperation("删除数据源")
|
||||||
@PostMapping("/delete/{datasourceID}")
|
@PostMapping("/delete/{datasourceID}")
|
||||||
public void deleteDatasource(@PathVariable(value = "datasourceID") String datasourceID) throws Exception {
|
public void deleteDatasource(@PathVariable(value = "datasourceID") String datasourceID) throws Exception {
|
||||||
datasourceService.deleteDatasource(datasourceID);
|
datasourceService.deleteDatasource(datasourceID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("datasource:add")
|
||||||
|
@DePermission(type = DePermissionType.DATASOURCE, value = "id", level = ResourceAuthLevel.LINK_LEVEL_MANAGE)
|
||||||
@ApiOperation("更新数据源")
|
@ApiOperation("更新数据源")
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
public void updateDatasource(@RequestBody Datasource Datasource) {
|
public void updateDatasource(@RequestBody Datasource Datasource) {
|
||||||
|
@ -9,6 +9,7 @@ import io.dataease.commons.constants.DePermissionType;
|
|||||||
import io.dataease.commons.constants.ResourceAuthLevel;
|
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||||
import io.dataease.controller.handler.annotation.I18n;
|
import io.dataease.controller.handler.annotation.I18n;
|
||||||
import io.dataease.controller.request.panel.PanelGroupRequest;
|
import io.dataease.controller.request.panel.PanelGroupRequest;
|
||||||
|
import io.dataease.dto.authModel.VAuthModelDTO;
|
||||||
import io.dataease.dto.panel.PanelGroupDTO;
|
import io.dataease.dto.panel.PanelGroupDTO;
|
||||||
import io.dataease.service.panel.PanelGroupService;
|
import io.dataease.service.panel.PanelGroupService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@ -70,5 +71,11 @@ public class PanelGroupController {
|
|||||||
return panelGroupService.findOne(id);
|
return panelGroupService.findOne(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("仪表板视图信息")
|
||||||
|
@PostMapping("/queryPanelViewTree")
|
||||||
|
@I18n
|
||||||
|
public List<VAuthModelDTO> queryPanelViewTree(){
|
||||||
|
return panelGroupService.queryPanelViewTree();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,15 @@ import java.util.List;
|
|||||||
public class VAuthModelRequest extends VAuthModelDTO {
|
public class VAuthModelRequest extends VAuthModelDTO {
|
||||||
|
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|
||||||
private String privileges;
|
private String privileges;
|
||||||
|
|
||||||
private Integer datasetMode;
|
private Integer datasetMode;
|
||||||
|
|
||||||
private boolean clearEmptyDir;
|
private boolean clearEmptyDir;
|
||||||
|
|
||||||
private List<String> modelInnerTypeArray;
|
private List<String> modelInnerTypeArray;
|
||||||
|
|
||||||
|
private List<String> pids;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import io.dataease.service.FileService;
|
|||||||
import io.dataease.service.system.EmailService;
|
import io.dataease.service.system.EmailService;
|
||||||
import io.dataease.service.system.SystemParameterService;
|
import io.dataease.service.system.SystemParameterService;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
@ -39,11 +40,13 @@ public class SystemParameterController {
|
|||||||
private EmailService emailService;
|
private EmailService emailService;
|
||||||
|
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@GetMapping("/mail/info")
|
@GetMapping("/mail/info")
|
||||||
public MailInfo mailInfo() {
|
public MailInfo mailInfo() {
|
||||||
return emailService.mailInfo();
|
return emailService.mailInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@GetMapping("/basic/info")
|
@GetMapping("/basic/info")
|
||||||
public BasicInfo basicInfo() {
|
public BasicInfo basicInfo() {
|
||||||
return systemParameterService.basicInfo();
|
return systemParameterService.basicInfo();
|
||||||
@ -55,11 +58,13 @@ public class SystemParameterController {
|
|||||||
return StringUtils.isNotBlank(basicInfo.getFrontTimeOut()) ? Integer.parseInt(basicInfo.getFrontTimeOut()) : 10;
|
return StringUtils.isNotBlank(basicInfo.getFrontTimeOut()) ? Integer.parseInt(basicInfo.getFrontTimeOut()) : 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/edit/email")
|
@PostMapping("/edit/email")
|
||||||
public void editMail(@RequestBody List<SystemParameter> systemParameter) {
|
public void editMail(@RequestBody List<SystemParameter> systemParameter) {
|
||||||
emailService.editMail(systemParameter);
|
emailService.editMail(systemParameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/edit/basic")
|
@PostMapping("/edit/basic")
|
||||||
public void editBasic(@RequestBody List<SystemParameter> systemParameter) {
|
public void editBasic(@RequestBody List<SystemParameter> systemParameter) {
|
||||||
systemParameterService.editBasic(systemParameter);
|
systemParameterService.editBasic(systemParameter);
|
||||||
@ -76,6 +81,7 @@ public class SystemParameterController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@GetMapping("/base/info")
|
@GetMapping("/base/info")
|
||||||
public List<SystemParameterDTO> getBaseInfo() {
|
public List<SystemParameterDTO> getBaseInfo() {
|
||||||
return systemParameterService.getSystemParameterInfo(ParamConstants.Classify.BASE.getValue());
|
return systemParameterService.getSystemParameterInfo(ParamConstants.Classify.BASE.getValue());
|
||||||
|
@ -17,5 +17,13 @@ public class VAuthModelDTO extends VAuthModelWithBLOBs implements ITreeBase<VAu
|
|||||||
private String privileges;
|
private String privileges;
|
||||||
|
|
||||||
private List<VAuthModelDTO> children;
|
private List<VAuthModelDTO> children;
|
||||||
|
|
||||||
private long allLeafs = 0l;
|
private long allLeafs = 0l;
|
||||||
|
|
||||||
|
private String innerId;
|
||||||
|
|
||||||
|
public String toString(){
|
||||||
|
return this.getName();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package io.dataease.plugins.server;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@ -36,6 +37,7 @@ public class ThemeServer {
|
|||||||
return themeXpackService.queryItems(themeId);
|
return themeXpackService.queryItems(themeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public void save(@RequestPart("request") ThemeRequest request,
|
public void save(@RequestPart("request") ThemeRequest request,
|
||||||
@RequestPart(value = "file", required = false) MultipartFile bodyFile) {
|
@RequestPart(value = "file", required = false) MultipartFile bodyFile) {
|
||||||
@ -55,6 +57,7 @@ public class ThemeServer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/delete/{themeId}")
|
@PostMapping("/delete/{themeId}")
|
||||||
public void delete(@PathVariable("themeId") int themeId) {
|
public void delete(@PathVariable("themeId") int themeId) {
|
||||||
ThemeXpackService themeXpackService = SpringContextUtil.getBean(ThemeXpackService.class);
|
ThemeXpackService themeXpackService = SpringContextUtil.getBean(ThemeXpackService.class);
|
||||||
|
@ -14,6 +14,7 @@ import io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetailDTO;
|
|||||||
import io.dataease.plugins.xpack.auth.dto.response.XpackVAuthModelDTO;
|
import io.dataease.plugins.xpack.auth.dto.response.XpackVAuthModelDTO;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import io.dataease.plugins.xpack.auth.service.AuthXpackService;
|
import io.dataease.plugins.xpack.auth.service.AuthXpackService;
|
||||||
|
|
||||||
@ -25,37 +26,41 @@ public class XAuthServer {
|
|||||||
|
|
||||||
private static final Set<String> cacheTypes = new HashSet<>();
|
private static final Set<String> cacheTypes = new HashSet<>();
|
||||||
|
|
||||||
|
@RequiresPermissions("auth:read")
|
||||||
@PostMapping("/authModels")
|
@PostMapping("/authModels")
|
||||||
@I18n
|
@I18n
|
||||||
public List<XpackVAuthModelDTO> authModels(@RequestBody XpackBaseTreeRequest request){
|
public List<XpackVAuthModelDTO> authModels(@RequestBody XpackBaseTreeRequest request) {
|
||||||
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
||||||
CurrentUserDto user = AuthUtils.getUser();
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
return sysAuthService.searchAuthModelTree(request, user.getUserId(), user.getIsAdmin());
|
return sysAuthService.searchAuthModelTree(request, user.getUserId(), user.getIsAdmin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("auth:read")
|
||||||
@PostMapping("/authDetails")
|
@PostMapping("/authDetails")
|
||||||
public Map<String,List<XpackSysAuthDetailDTO>> authDetails(@RequestBody XpackSysAuthRequest request){
|
public Map<String, List<XpackSysAuthDetailDTO>> authDetails(@RequestBody XpackSysAuthRequest request) {
|
||||||
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
||||||
return sysAuthService.searchAuthDetails(request);
|
return sysAuthService.searchAuthDetails(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/authDetailsModel/{authType}")
|
@RequiresPermissions("auth:read")
|
||||||
|
@GetMapping("/authDetailsModel/{authType}/{direction}")
|
||||||
@I18n
|
@I18n
|
||||||
public List<XpackSysAuthDetail>authDetailsModel(@PathVariable String authType){
|
public List<XpackSysAuthDetail> authDetailsModel(@PathVariable String authType, @PathVariable String direction) {
|
||||||
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
||||||
List<XpackSysAuthDetail> authDetails = sysAuthService.searchAuthDetailsModel(authType);
|
List<XpackSysAuthDetail> authDetails = sysAuthService.searchAuthDetailsModel(authType);
|
||||||
if(authType.equalsIgnoreCase("dataset")){
|
if (authType.equalsIgnoreCase("dataset")) {
|
||||||
XpackSysAuthDetail xpackSysAuthDetail = new XpackSysAuthDetail();
|
XpackSysAuthDetail xpackSysAuthDetail = new XpackSysAuthDetail();
|
||||||
xpackSysAuthDetail.setPrivilegeName("i18n_auth_row_permission");
|
xpackSysAuthDetail.setPrivilegeName("i18n_auth_row_permission");
|
||||||
xpackSysAuthDetail.setPrivilegeType(20);
|
xpackSysAuthDetail.setPrivilegeType(20);
|
||||||
xpackSysAuthDetail.setPrivilegeValue(1);
|
xpackSysAuthDetail.setPrivilegeValue(1);
|
||||||
authDetails.add(0,xpackSysAuthDetail);
|
authDetails.add(0, xpackSysAuthDetail);
|
||||||
}
|
}
|
||||||
return authDetails;
|
return authDetails;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("auth:read")
|
||||||
@PostMapping("/authChange")
|
@PostMapping("/authChange")
|
||||||
public void authChange(@RequestBody XpackSysAuthRequest request){
|
public void authChange(@RequestBody XpackSysAuthRequest request) {
|
||||||
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
AuthXpackService sysAuthService = SpringContextUtil.getBean(AuthXpackService.class);
|
||||||
CurrentUserDto user = AuthUtils.getUser();
|
CurrentUserDto user = AuthUtils.getUser();
|
||||||
sysAuthService.authChange(request, user.getUserId(), user.getUsername(), user.getIsAdmin());
|
sysAuthService.authChange(request, user.getUserId(), user.getUsername(), user.getIsAdmin());
|
||||||
|
@ -14,6 +14,7 @@ import io.dataease.plugins.xpack.dept.dto.response.XpackSysDept;
|
|||||||
import io.dataease.plugins.xpack.dept.service.DeptXpackService;
|
import io.dataease.plugins.xpack.dept.service.DeptXpackService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
@ -66,6 +67,7 @@ public class XDeptServer {
|
|||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("dept:add")
|
||||||
@ApiOperation("创建")
|
@ApiOperation("创建")
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
public int create(@RequestBody XpackCreateDept dept){
|
public int create(@RequestBody XpackCreateDept dept){
|
||||||
@ -73,6 +75,7 @@ public class XDeptServer {
|
|||||||
return deptService.add(dept);
|
return deptService.add(dept);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("dept:del")
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@PostMapping("/delete")
|
@PostMapping("/delete")
|
||||||
public void delete(@RequestBody List<XpackDeleteDept> requests){
|
public void delete(@RequestBody List<XpackDeleteDept> requests){
|
||||||
@ -83,6 +86,7 @@ public class XDeptServer {
|
|||||||
deptService.batchDelete(requests);
|
deptService.batchDelete(requests);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("dept:edit")
|
||||||
@ApiOperation("更新")
|
@ApiOperation("更新")
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
public int update(@RequestBody XpackCreateDept dept){
|
public int update(@RequestBody XpackCreateDept dept){
|
||||||
@ -91,6 +95,7 @@ public class XDeptServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequiresPermissions("dept:del")
|
||||||
@ApiIgnore
|
@ApiIgnore
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@PostMapping("/nodesByDeptId/{deptId}")
|
@PostMapping("/nodesByDeptId/{deptId}")
|
||||||
|
@ -4,6 +4,7 @@ package io.dataease.plugins.server;
|
|||||||
import io.dataease.plugins.config.SpringContextUtil;
|
import io.dataease.plugins.config.SpringContextUtil;
|
||||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||||
import io.dataease.plugins.xpack.display.service.DisplayXpackService;
|
import io.dataease.plugins.xpack.display.service.DisplayXpackService;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -22,6 +23,7 @@ public class XDisplayServer {
|
|||||||
return disPlayXpackService.systemSettings();
|
return disPlayXpackService.systemSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping(value="/save", consumes = {"multipart/form-data"})
|
@PostMapping(value="/save", consumes = {"multipart/form-data"})
|
||||||
public void saveUIInfo(@RequestPart("request") Map<String,List<SysSettingDto>> systemParameterMap, @RequestPart(value = "files", required = false) List<MultipartFile> bodyFiles) throws Exception {
|
public void saveUIInfo(@RequestPart("request") Map<String,List<SysSettingDto>> systemParameterMap, @RequestPart(value = "files", required = false) List<MultipartFile> bodyFiles) throws Exception {
|
||||||
DisplayXpackService disPlayXpackService = SpringContextUtil.getBean(DisplayXpackService.class);
|
DisplayXpackService disPlayXpackService = SpringContextUtil.getBean(DisplayXpackService.class);
|
||||||
|
@ -20,6 +20,7 @@ import io.dataease.service.ScheduleService;
|
|||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ public class XEmailTaskServer {
|
|||||||
@Resource
|
@Resource
|
||||||
private PriorityThreadPoolExecutor priorityExecutor;
|
private PriorityThreadPoolExecutor priorityExecutor;
|
||||||
|
|
||||||
|
@RequiresPermissions("task-email:read")
|
||||||
@PostMapping("/queryTasks/{goPage}/{pageSize}")
|
@PostMapping("/queryTasks/{goPage}/{pageSize}")
|
||||||
public Pager<List<XpackTaskGridDTO>> queryTask(@PathVariable int goPage, @PathVariable int pageSize,
|
public Pager<List<XpackTaskGridDTO>> queryTask(@PathVariable int goPage, @PathVariable int pageSize,
|
||||||
@RequestBody XpackGridRequest request) {
|
@RequestBody XpackGridRequest request) {
|
||||||
@ -71,6 +73,7 @@ public class XEmailTaskServer {
|
|||||||
return listPager;
|
return listPager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("task-email:add")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public void save(@RequestBody XpackEmailCreate param) throws Exception {
|
public void save(@RequestBody XpackEmailCreate param) throws Exception {
|
||||||
XpackEmailTaskRequest request = param.fillContent();
|
XpackEmailTaskRequest request = param.fillContent();
|
||||||
@ -81,6 +84,7 @@ public class XEmailTaskServer {
|
|||||||
scheduleService.addSchedule(globalTask);
|
scheduleService.addSchedule(globalTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("task-email:read")
|
||||||
@PostMapping("/queryForm/{taskId}")
|
@PostMapping("/queryForm/{taskId}")
|
||||||
public XpackEmailCreate queryForm(@PathVariable Long taskId) {
|
public XpackEmailCreate queryForm(@PathVariable Long taskId) {
|
||||||
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
|
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
|
||||||
@ -141,6 +145,7 @@ public class XEmailTaskServer {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("task-email:del")
|
||||||
@PostMapping("/delete/{taskId}")
|
@PostMapping("/delete/{taskId}")
|
||||||
public void delete(@PathVariable Long taskId) {
|
public void delete(@PathVariable Long taskId) {
|
||||||
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
|
EmailXpackService emailXpackService = SpringContextUtil.getBean(EmailXpackService.class);
|
||||||
|
@ -6,6 +6,7 @@ import io.dataease.plugins.config.SpringContextUtil;
|
|||||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||||
import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo;
|
import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo;
|
||||||
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
|
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -21,6 +22,7 @@ public class XLdapServer {
|
|||||||
return ldapXpackService.info();
|
return ldapXpackService.info();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public void save(@RequestBody List<SysSettingDto> settings) {
|
public void save(@RequestBody List<SysSettingDto> settings) {
|
||||||
LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class);
|
LdapXpackService ldapXpackService = SpringContextUtil.getBean(LdapXpackService.class);
|
||||||
|
@ -5,6 +5,7 @@ import io.dataease.plugins.config.SpringContextUtil;
|
|||||||
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
|
||||||
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
|
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -21,6 +22,7 @@ public class XOidcServer {
|
|||||||
return oidcXpackService.oidcSettings();
|
return oidcXpackService.oidcSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("sysparam:read")
|
||||||
@PostMapping("/save")
|
@PostMapping("/save")
|
||||||
public void save(@RequestBody List<SysSettingDto> settings) {
|
public void save(@RequestBody List<SysSettingDto> settings) {
|
||||||
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
|
OidcXpackService oidcXpackService = SpringContextUtil.getBean(OidcXpackService.class);
|
||||||
|
@ -13,6 +13,7 @@ import io.dataease.plugins.xpack.role.dto.response.XpackRoleItemDto;
|
|||||||
import io.dataease.plugins.xpack.role.service.RoleXpackService;
|
import io.dataease.plugins.xpack.role.service.RoleXpackService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import springfox.documentation.annotations.ApiIgnore;
|
import springfox.documentation.annotations.ApiIgnore;
|
||||||
@ -26,6 +27,7 @@ public class XRoleServer {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ExtAuthService extAuthService;
|
private ExtAuthService extAuthService;
|
||||||
|
|
||||||
|
@RequiresPermissions("role:add")
|
||||||
@ApiOperation("新增角色")
|
@ApiOperation("新增角色")
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
public void create(@RequestBody XpackRoleDto role){
|
public void create(@RequestBody XpackRoleDto role){
|
||||||
@ -34,6 +36,7 @@ public class XRoleServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequiresPermissions("role:del")
|
||||||
@ApiOperation("删除角色")
|
@ApiOperation("删除角色")
|
||||||
@PostMapping("/delete/{roleId}")
|
@PostMapping("/delete/{roleId}")
|
||||||
public void delete(@PathVariable("roleId") Long roleId){
|
public void delete(@PathVariable("roleId") Long roleId){
|
||||||
@ -43,6 +46,7 @@ public class XRoleServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequiresPermissions("role:edit")
|
||||||
@ApiOperation("更新角色")
|
@ApiOperation("更新角色")
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
public void update(@RequestBody XpackRoleDto role){
|
public void update(@RequestBody XpackRoleDto role){
|
||||||
@ -50,6 +54,7 @@ public class XRoleServer {
|
|||||||
roleXpackService.update(role);
|
roleXpackService.update(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("role:read")
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@PostMapping("/roleGrid/{goPage}/{pageSize}")
|
@PostMapping("/roleGrid/{goPage}/{pageSize}")
|
||||||
public Pager<List<XpackRoleDto>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody XpackGridRequest request) {
|
public Pager<List<XpackRoleDto>> roleGrid(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody XpackGridRequest request) {
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package io.dataease.plugins.server.view;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import io.dataease.plugins.config.SpringContextUtil;
|
||||||
|
import io.dataease.plugins.view.entity.PluginViewType;
|
||||||
|
import io.dataease.plugins.view.service.ViewPluginService;
|
||||||
|
|
||||||
|
@RequestMapping("/plugin/view")
|
||||||
|
@RestController
|
||||||
|
public class PluginViewServer {
|
||||||
|
|
||||||
|
@PostMapping("/types")
|
||||||
|
public List<PluginViewType> types() {
|
||||||
|
List<PluginViewType> result = new ArrayList<>();
|
||||||
|
Map<String, ViewPluginService> beanMap = SpringContextUtil.getApplicationContext()
|
||||||
|
.getBeansOfType(ViewPluginService.class);
|
||||||
|
if (beanMap.keySet().size() == 0) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
for (Entry<String, ViewPluginService> entry : beanMap.entrySet()) {
|
||||||
|
result.add(entry.getValue().viewType());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
@ -76,7 +76,7 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createSQLPreview(String sql, String orderBy) {
|
public String createSQLPreview(String sql, String orderBy) {
|
||||||
return "SELECT * FROM (" + sql + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
|
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp LIMIT 0,1000";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -147,14 +147,6 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
if ((fields.size() > 0)) {
|
|
||||||
xOrders.add(SQLObj.builder()
|
|
||||||
.orderDirection("asc")
|
|
||||||
.orderField(fields.get(0).getDataeaseName())
|
|
||||||
.orderAlias(String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, "0"))
|
|
||||||
.build());
|
|
||||||
st_sql.add("orders", xOrders);
|
|
||||||
}
|
|
||||||
return st_sql.render();
|
return st_sql.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,6 +219,11 @@ public class ChartViewService {
|
|||||||
}
|
}
|
||||||
List<ChartViewFieldDTO> xAxis = new Gson().fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
List<ChartViewFieldDTO> xAxis = new Gson().fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||||
}.getType());
|
}.getType());
|
||||||
|
if (StringUtils.equalsIgnoreCase(view.getType(), "table-pivot")) {
|
||||||
|
List<ChartViewFieldDTO> xAxisExt = new Gson().fromJson(view.getXAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||||
|
}.getType());
|
||||||
|
xAxis.addAll(xAxisExt);
|
||||||
|
}
|
||||||
List<ChartViewFieldDTO> yAxis = new Gson().fromJson(view.getYAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
List<ChartViewFieldDTO> yAxis = new Gson().fromJson(view.getYAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
|
||||||
}.getType());
|
}.getType());
|
||||||
if (StringUtils.equalsIgnoreCase(view.getType(), "chart-mix")) {
|
if (StringUtils.equalsIgnoreCase(view.getType(), "chart-mix")) {
|
||||||
@ -1679,9 +1684,9 @@ public class ChartViewService {
|
|||||||
return chartViewMapper.selectByPrimaryKey(id);
|
return chartViewMapper.selectByPrimaryKey(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String chartCopy(String id) {
|
public String chartCopy(String id,String panelId) {
|
||||||
String newChartId = UUID.randomUUID().toString();
|
String newChartId = UUID.randomUUID().toString();
|
||||||
extChartViewMapper.chartCopy(newChartId, id);
|
extChartViewMapper.chartCopy(newChartId, id,panelId);
|
||||||
return newChartId;
|
return newChartId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package io.dataease.service.dataset;
|
package io.dataease.service.dataset;
|
||||||
|
|
||||||
|
import io.dataease.auth.annotation.DeCleaner;
|
||||||
import io.dataease.base.domain.DatasetGroup;
|
import io.dataease.base.domain.DatasetGroup;
|
||||||
import io.dataease.base.domain.DatasetGroupExample;
|
import io.dataease.base.domain.DatasetGroupExample;
|
||||||
import io.dataease.base.mapper.DatasetGroupMapper;
|
import io.dataease.base.mapper.DatasetGroupMapper;
|
||||||
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
|
import io.dataease.base.mapper.ext.ExtDataSetGroupMapper;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.BeanUtils;
|
import io.dataease.commons.utils.BeanUtils;
|
||||||
import io.dataease.commons.utils.TreeUtils;
|
import io.dataease.commons.utils.TreeUtils;
|
||||||
@ -39,6 +41,7 @@ public class DataSetGroupService {
|
|||||||
@Resource
|
@Resource
|
||||||
private SysAuthService sysAuthService;
|
private SysAuthService sysAuthService;
|
||||||
|
|
||||||
|
@DeCleaner(DePermissionType.DATASET)
|
||||||
public DataSetGroupDTO save(DatasetGroup datasetGroup) {
|
public DataSetGroupDTO save(DatasetGroup datasetGroup) {
|
||||||
checkName(datasetGroup);
|
checkName(datasetGroup);
|
||||||
if (StringUtils.isEmpty(datasetGroup.getId())) {
|
if (StringUtils.isEmpty(datasetGroup.getId())) {
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
package io.dataease.service.datasource;
|
package io.dataease.service.datasource;
|
||||||
|
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.jayway.jsonpath.JsonPath;
|
import com.jayway.jsonpath.JsonPath;
|
||||||
|
import io.dataease.auth.annotation.DeCleaner;
|
||||||
import io.dataease.base.domain.*;
|
import io.dataease.base.domain.*;
|
||||||
import io.dataease.base.mapper.*;
|
import io.dataease.base.mapper.*;
|
||||||
import io.dataease.base.mapper.ext.ExtDataSourceMapper;
|
import io.dataease.base.mapper.ext.ExtDataSourceMapper;
|
||||||
import io.dataease.base.mapper.ext.query.GridExample;
|
import io.dataease.base.mapper.ext.query.GridExample;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.exception.DEException;
|
import io.dataease.commons.exception.DEException;
|
||||||
import io.dataease.commons.model.AuthURD;
|
import io.dataease.commons.model.AuthURD;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.CommonThreadPool;
|
import io.dataease.commons.utils.CommonThreadPool;
|
||||||
import io.dataease.commons.utils.HttpClientUtil;
|
|
||||||
import io.dataease.commons.utils.LogUtil;
|
import io.dataease.commons.utils.LogUtil;
|
||||||
import io.dataease.controller.ResultHolder;
|
import io.dataease.controller.ResultHolder;
|
||||||
import io.dataease.controller.request.DatasourceUnionRequest;
|
import io.dataease.controller.request.DatasourceUnionRequest;
|
||||||
@ -20,7 +20,6 @@ import io.dataease.controller.request.datasource.ApiDefinition;
|
|||||||
import io.dataease.controller.sys.base.BaseGridRequest;
|
import io.dataease.controller.sys.base.BaseGridRequest;
|
||||||
import io.dataease.controller.sys.base.ConditionEntity;
|
import io.dataease.controller.sys.base.ConditionEntity;
|
||||||
import io.dataease.commons.constants.DatasourceTypes;
|
import io.dataease.commons.constants.DatasourceTypes;
|
||||||
import io.dataease.exception.ExcelException;
|
|
||||||
import io.dataease.provider.datasource.ApiProvider;
|
import io.dataease.provider.datasource.ApiProvider;
|
||||||
import io.dataease.provider.datasource.DatasourceProvider;
|
import io.dataease.provider.datasource.DatasourceProvider;
|
||||||
import io.dataease.provider.ProviderFactory;
|
import io.dataease.provider.ProviderFactory;
|
||||||
@ -57,6 +56,7 @@ public class DatasourceService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CommonThreadPool commonThreadPool;
|
private CommonThreadPool commonThreadPool;
|
||||||
|
|
||||||
|
@DeCleaner(DePermissionType.DATASOURCE)
|
||||||
public Datasource addDatasource(Datasource datasource) throws Exception{
|
public Datasource addDatasource(Datasource datasource) throws Exception{
|
||||||
checkName(datasource);
|
checkName(datasource);
|
||||||
long currentTimeMillis = System.currentTimeMillis();
|
long currentTimeMillis = System.currentTimeMillis();
|
||||||
|
@ -1,14 +1,20 @@
|
|||||||
package io.dataease.service.panel;
|
package io.dataease.service.panel;
|
||||||
|
|
||||||
|
import io.dataease.auth.annotation.DeCleaner;
|
||||||
import io.dataease.base.domain.*;
|
import io.dataease.base.domain.*;
|
||||||
import io.dataease.base.mapper.ChartViewMapper;
|
import io.dataease.base.mapper.ChartViewMapper;
|
||||||
import io.dataease.base.mapper.PanelGroupMapper;
|
import io.dataease.base.mapper.PanelGroupMapper;
|
||||||
|
import io.dataease.base.mapper.VAuthModelMapper;
|
||||||
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
|
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
|
||||||
import io.dataease.base.mapper.ext.ExtPanelLinkJumpMapper;
|
import io.dataease.base.mapper.ext.ExtPanelLinkJumpMapper;
|
||||||
|
import io.dataease.base.mapper.ext.ExtVAuthModelMapper;
|
||||||
|
import io.dataease.commons.constants.DePermissionType;
|
||||||
import io.dataease.commons.constants.PanelConstants;
|
import io.dataease.commons.constants.PanelConstants;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
import io.dataease.commons.utils.TreeUtils;
|
import io.dataease.commons.utils.TreeUtils;
|
||||||
|
import io.dataease.controller.request.authModel.VAuthModelRequest;
|
||||||
import io.dataease.controller.request.panel.PanelGroupRequest;
|
import io.dataease.controller.request.panel.PanelGroupRequest;
|
||||||
|
import io.dataease.dto.authModel.VAuthModelDTO;
|
||||||
import io.dataease.dto.chart.ChartViewDTO;
|
import io.dataease.dto.chart.ChartViewDTO;
|
||||||
import io.dataease.dto.panel.PanelGroupDTO;
|
import io.dataease.dto.panel.PanelGroupDTO;
|
||||||
import io.dataease.exception.DataEaseException;
|
import io.dataease.exception.DataEaseException;
|
||||||
@ -28,6 +34,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Author: wangjiahao
|
* Author: wangjiahao
|
||||||
@ -59,7 +66,10 @@ public class PanelGroupService {
|
|||||||
private PanelViewService panelViewService;
|
private PanelViewService panelViewService;
|
||||||
@Resource
|
@Resource
|
||||||
private ExtPanelLinkJumpMapper extPanelLinkJumpMapper;
|
private ExtPanelLinkJumpMapper extPanelLinkJumpMapper;
|
||||||
|
@Resource
|
||||||
|
private ExtVAuthModelMapper extVAuthModelMapper;
|
||||||
|
@Resource
|
||||||
|
private VAuthModelMapper vAuthModelMapper;
|
||||||
|
|
||||||
public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) {
|
public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) {
|
||||||
String userId = String.valueOf(AuthUtils.getUser().getUserId());
|
String userId = String.valueOf(AuthUtils.getUser().getUserId());
|
||||||
@ -75,6 +85,7 @@ public class PanelGroupService {
|
|||||||
return TreeUtils.mergeTree(panelGroupDTOList, "default_panel");
|
return TreeUtils.mergeTree(panelGroupDTOList, "default_panel");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeCleaner(DePermissionType.PANEL)
|
||||||
@Transactional
|
@Transactional
|
||||||
public PanelGroup saveOrUpdate(PanelGroupRequest request) {
|
public PanelGroup saveOrUpdate(PanelGroupRequest request) {
|
||||||
try {
|
try {
|
||||||
@ -157,6 +168,9 @@ public class PanelGroupService {
|
|||||||
if (!CollectionUtils.isNotEmpty(panelGroupDTOList)) {
|
if (!CollectionUtils.isNotEmpty(panelGroupDTOList)) {
|
||||||
DataEaseException.throwException("未查询到用户对应的资源权限,请尝试刷新重新保存");
|
DataEaseException.throwException("未查询到用户对应的资源权限,请尝试刷新重新保存");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//移除没有用到的仪表板私有视图
|
||||||
|
extPanelGroupMapper.removeUselessViews(panelId);
|
||||||
return panelGroupDTOList.get(0);
|
return panelGroupDTOList.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,4 +228,31 @@ public class PanelGroupService {
|
|||||||
return chartViewDTOList;
|
return chartViewDTOList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<VAuthModelDTO> queryPanelViewTree(){
|
||||||
|
List<VAuthModelDTO> result = new ArrayList<>();
|
||||||
|
VAuthModelRequest panelRequest = new VAuthModelRequest();
|
||||||
|
panelRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
|
||||||
|
panelRequest.setModelType("panel");
|
||||||
|
List<VAuthModelDTO> panelResult = extVAuthModelMapper.queryAuthModel(panelRequest);
|
||||||
|
// 获取仪表板下面的视图
|
||||||
|
if(CollectionUtils.isNotEmpty(panelResult)){
|
||||||
|
result.addAll(panelResult);
|
||||||
|
List<String> panelIds = panelResult.stream().map(VAuthModelDTO::getId).collect(Collectors.toList());
|
||||||
|
VAuthModelRequest viewRequest = new VAuthModelRequest();
|
||||||
|
viewRequest.setPids(panelIds);
|
||||||
|
List<VAuthModelDTO> viewResult = extVAuthModelMapper.queryAuthModelViews(viewRequest);
|
||||||
|
if(CollectionUtils.isNotEmpty(viewResult)){
|
||||||
|
result.addAll(viewResult);
|
||||||
|
}
|
||||||
|
result = TreeUtils.mergeTree(result,"panel_list");
|
||||||
|
// 原有视图的目录结构
|
||||||
|
List<VAuthModelDTO> viewOriginal = extVAuthModelMapper.queryAuthViewsOriginal(viewRequest);
|
||||||
|
if(CollectionUtils.isNotEmpty(viewOriginal) && viewOriginal.size()>1){
|
||||||
|
result.addAll(TreeUtils.mergeTree(viewOriginal,"public_chart"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import io.dataease.base.mapper.PanelLinkMapper;
|
|||||||
import io.dataease.base.mapper.PanelLinkMappingMapper;
|
import io.dataease.base.mapper.PanelLinkMappingMapper;
|
||||||
import io.dataease.base.mapper.ext.ExtPanelLinkMapper;
|
import io.dataease.base.mapper.ext.ExtPanelLinkMapper;
|
||||||
import io.dataease.commons.utils.AuthUtils;
|
import io.dataease.commons.utils.AuthUtils;
|
||||||
|
import io.dataease.commons.utils.CodingUtil;
|
||||||
import io.dataease.commons.utils.ServletUtils;
|
import io.dataease.commons.utils.ServletUtils;
|
||||||
import io.dataease.controller.request.panel.link.EnablePwdRequest;
|
import io.dataease.controller.request.panel.link.EnablePwdRequest;
|
||||||
import io.dataease.controller.request.panel.link.LinkRequest;
|
import io.dataease.controller.request.panel.link.LinkRequest;
|
||||||
@ -18,6 +19,7 @@ import io.dataease.dto.panel.link.GenerateDto;
|
|||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -25,7 +27,6 @@ import javax.annotation.Resource;
|
|||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class PanelLinkService {
|
public class PanelLinkService {
|
||||||
@ -34,6 +35,9 @@ public class PanelLinkService {
|
|||||||
private static final String USERPARAM = "&user=";
|
private static final String USERPARAM = "&user=";
|
||||||
private static final String SHORT_URL_PREFIX = "/link/";
|
private static final String SHORT_URL_PREFIX = "/link/";
|
||||||
|
|
||||||
|
@Value("${server.servlet.context-path}")
|
||||||
|
private String contextPath;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PanelLinkMapper mapper;
|
private PanelLinkMapper mapper;
|
||||||
@Resource
|
@Resource
|
||||||
@ -43,14 +47,22 @@ public class PanelLinkService {
|
|||||||
@Resource
|
@Resource
|
||||||
private PanelLinkMappingMapper panelLinkMappingMapper;
|
private PanelLinkMappingMapper panelLinkMappingMapper;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
public void changeValid(LinkRequest request) {
|
public void changeValid(LinkRequest request) {
|
||||||
PanelLink po = new PanelLink();
|
PanelLink po = new PanelLink();
|
||||||
po.setResourceId(request.getResourceId());
|
po.setResourceId(request.getResourceId());
|
||||||
po.setValid(request.isValid());
|
po.setValid(request.isValid());
|
||||||
mapper.updateByExampleSelective(po, example(request.getResourceId(), AuthUtils.getUser().getUserId()));
|
Long userId = AuthUtils.getUser().getUserId();
|
||||||
|
mapper.updateByExampleSelective(po, example(request.getResourceId(), userId));
|
||||||
|
|
||||||
|
PanelLinkMappingExample example = new PanelLinkMappingExample();
|
||||||
|
example.createCriteria().andResourceIdEqualTo(request.getResourceId()).andUserIdEqualTo(userId);
|
||||||
|
PanelLinkMapping mapping = new PanelLinkMapping();
|
||||||
|
mapping.setUuid(CodingUtil.shortUuid());
|
||||||
|
panelLinkMappingMapper.updateByExampleSelective(mapping, example);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PanelLinkExample example(String panelLinkId, Long userId){
|
private PanelLinkExample example(String panelLinkId, Long userId) {
|
||||||
PanelLinkExample example = new PanelLinkExample();
|
PanelLinkExample example = new PanelLinkExample();
|
||||||
example.createCriteria().andResourceIdEqualTo(panelLinkId).andUserIdEqualTo(userId);
|
example.createCriteria().andResourceIdEqualTo(panelLinkId).andUserIdEqualTo(userId);
|
||||||
return example;
|
return example;
|
||||||
@ -78,18 +90,18 @@ public class PanelLinkService {
|
|||||||
private PanelLink findOne(String resourceId) {
|
private PanelLink findOne(String resourceId) {
|
||||||
PanelLinkExample example = new PanelLinkExample();
|
PanelLinkExample example = new PanelLinkExample();
|
||||||
example.createCriteria().andResourceIdEqualTo(resourceId).andUserIdIsNull();
|
example.createCriteria().andResourceIdEqualTo(resourceId).andUserIdIsNull();
|
||||||
List<PanelLink> list = mapper.selectByExample(example);
|
List<PanelLink> list = mapper.selectByExample(example);
|
||||||
return CollectionUtils.isNotEmpty(list) ? list.get(0) : null;
|
return CollectionUtils.isNotEmpty(list) ? list.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PanelLink findOne(String resourceId, Long userId) {
|
public PanelLink findOne(String resourceId, Long userId) {
|
||||||
if(userId == null){
|
if (userId == null) {
|
||||||
return findOne(resourceId);
|
return findOne(resourceId);
|
||||||
}
|
}
|
||||||
List<PanelLink> panelLinks = mapper.selectByExample(example(resourceId, userId));
|
List<PanelLink> panelLinks = mapper.selectByExample(example(resourceId, userId));
|
||||||
if(CollectionUtils.isNotEmpty(panelLinks)){
|
if (CollectionUtils.isNotEmpty(panelLinks)) {
|
||||||
return panelLinks.get(0);
|
return panelLinks.get(0);
|
||||||
}else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,6 +126,7 @@ public class PanelLinkService {
|
|||||||
PanelLinkMapping mapping = new PanelLinkMapping();
|
PanelLinkMapping mapping = new PanelLinkMapping();
|
||||||
mapping.setResourceId(resourceId);
|
mapping.setResourceId(resourceId);
|
||||||
mapping.setUserId(AuthUtils.getUser().getUserId());
|
mapping.setUserId(AuthUtils.getUser().getUserId());
|
||||||
|
mapping.setUuid(CodingUtil.shortUuid());
|
||||||
panelLinkMappingMapper.insert(mapping);
|
panelLinkMappingMapper.insert(mapping);
|
||||||
}
|
}
|
||||||
return convertDto(one);
|
return convertDto(one);
|
||||||
@ -141,8 +154,8 @@ public class PanelLinkService {
|
|||||||
|
|
||||||
private String buildLinkParam(PanelLink link) {
|
private String buildLinkParam(PanelLink link) {
|
||||||
String linkParam = encrypt(link.getResourceId());
|
String linkParam = encrypt(link.getResourceId());
|
||||||
if(link.getUserId() != null){
|
if (link.getUserId() != null) {
|
||||||
linkParam = linkParam+ USERPARAM + link.getUserId().toString();
|
linkParam = linkParam + USERPARAM + link.getUserId().toString();
|
||||||
}
|
}
|
||||||
return linkParam;
|
return linkParam;
|
||||||
}
|
}
|
||||||
@ -161,7 +174,8 @@ public class PanelLinkService {
|
|||||||
public Boolean validateHeads(PanelLink panelLink) throws Exception {
|
public Boolean validateHeads(PanelLink panelLink) throws Exception {
|
||||||
HttpServletRequest request = ServletUtils.request();
|
HttpServletRequest request = ServletUtils.request();
|
||||||
String token = request.getHeader("LINK-PWD-TOKEN");
|
String token = request.getHeader("LINK-PWD-TOKEN");
|
||||||
if (!panelLink.getEnablePwd() || StringUtils.isEmpty(token) || StringUtils.equals("undefined", token) || StringUtils.equals("null", token)) {
|
if (!panelLink.getEnablePwd() || StringUtils.isEmpty(token) || StringUtils.equals("undefined", token)
|
||||||
|
|| StringUtils.equals("null", token)) {
|
||||||
String resourceId = panelLink.getResourceId();
|
String resourceId = panelLink.getResourceId();
|
||||||
String pwd = "dataease";
|
String pwd = "dataease";
|
||||||
String tk = JWTUtils.signLink(resourceId, panelLink.getUserId(), pwd);
|
String tk = JWTUtils.signLink(resourceId, panelLink.getUserId(), pwd);
|
||||||
@ -170,7 +184,8 @@ public class PanelLinkService {
|
|||||||
httpServletResponse.setHeader("LINK-PWD-TOKEN", tk);
|
httpServletResponse.setHeader("LINK-PWD-TOKEN", tk);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (StringUtils.isEmpty(panelLink.getPwd())) return false;
|
if (StringUtils.isEmpty(panelLink.getPwd()))
|
||||||
|
return false;
|
||||||
return JWTUtils.verifyLink(token, panelLink.getResourceId(), panelLink.getUserId(), panelLink.getPwd());
|
return JWTUtils.verifyLink(token, panelLink.getResourceId(), panelLink.getUserId(), panelLink.getPwd());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,11 +221,32 @@ public class PanelLinkService {
|
|||||||
example.createCriteria().andResourceIdEqualTo(resourceId).andUserIdEqualTo(AuthUtils.getUser().getUserId());
|
example.createCriteria().andResourceIdEqualTo(resourceId).andUserIdEqualTo(AuthUtils.getUser().getUserId());
|
||||||
List<PanelLinkMapping> mappings = panelLinkMappingMapper.selectByExample(example);
|
List<PanelLinkMapping> mappings = panelLinkMappingMapper.selectByExample(example);
|
||||||
PanelLinkMapping mapping = mappings.get(0);
|
PanelLinkMapping mapping = mappings.get(0);
|
||||||
return SHORT_URL_PREFIX + mapping.getId();
|
String uuid = mapping.getUuid();
|
||||||
|
return contextPath + SHORT_URL_PREFIX + (StringUtils.isBlank(uuid) ? mapping.getId() : uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrlByIndex(Long index) {
|
public String getUrlByIndex(Long index) {
|
||||||
PanelLinkMapping mapping = panelLinkMappingMapper.selectByPrimaryKey(index);
|
PanelLinkMapping mapping = panelLinkMappingMapper.selectByPrimaryKey(index);
|
||||||
|
|
||||||
|
String resourceId = mapping.getResourceId();
|
||||||
|
Long userId = mapping.getUserId();
|
||||||
|
PanelLink one = findOne(resourceId, userId);
|
||||||
|
if (StringUtils.isNotBlank(mapping.getUuid())) {
|
||||||
|
one.setResourceId("error-resource-id");
|
||||||
|
}
|
||||||
|
return convertDto(one).getUri();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUrlByUuid(String uuid) {
|
||||||
|
PanelLinkMappingExample example = new PanelLinkMappingExample();
|
||||||
|
example.createCriteria().andUuidEqualTo(uuid);
|
||||||
|
List<PanelLinkMapping> mappings = panelLinkMappingMapper.selectByExample(example);
|
||||||
|
if (CollectionUtils.isEmpty(mappings)) {
|
||||||
|
PanelLink panelLink = new PanelLink();
|
||||||
|
panelLink.setResourceId("error-resource-id");
|
||||||
|
return BASEURL + buildLinkParam(panelLink);
|
||||||
|
}
|
||||||
|
PanelLinkMapping mapping = mappings.get(0);
|
||||||
String resourceId = mapping.getResourceId();
|
String resourceId = mapping.getResourceId();
|
||||||
Long userId = mapping.getUserId();
|
Long userId = mapping.getUserId();
|
||||||
PanelLink one = findOne(resourceId, userId);
|
PanelLink one = findOne(resourceId, userId);
|
||||||
|
1
backend/src/main/resources/application-stage.properties
Normal file
1
backend/src/main/resources/application-stage.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
server.servlet.context-path=/de-api
|
1
backend/src/main/resources/application-whole.properties
Normal file
1
backend/src/main/resources/application-whole.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
server.servlet.context-path=
|
@ -1,3 +1,4 @@
|
|||||||
|
spring.profiles.active=@profiles.active@
|
||||||
spring.application.name=dataease
|
spring.application.name=dataease
|
||||||
|
|
||||||
server.port=8081
|
server.port=8081
|
||||||
|
315
backend/src/main/resources/db/migration/V32__1.8.sql
Normal file
315
backend/src/main/resources/db/migration/V32__1.8.sql
Normal file
File diff suppressed because one or more lines are too long
@ -60,6 +60,6 @@
|
|||||||
</javaClientGenerator>
|
</javaClientGenerator>
|
||||||
|
|
||||||
<!--要生成的数据库表 -->
|
<!--要生成的数据库表 -->
|
||||||
<table tableName="dataset_column_permissions"/>
|
<table tableName="chart_view"/>
|
||||||
</context>
|
</context>
|
||||||
</generatorConfiguration>
|
</generatorConfiguration>
|
||||||
|
@ -118,4 +118,5 @@ i18n_calc_field_error=Field expression error
|
|||||||
i18n_cp_exist=Column permission of the same type already exists
|
i18n_cp_exist=Column permission of the same type already exists
|
||||||
connection_failed=Connection Failed
|
connection_failed=Connection Failed
|
||||||
theme_name_repeat=name of theme has been existed
|
theme_name_repeat=name of theme has been existed
|
||||||
theme_name_empty=name can not be empty
|
theme_name_empty=name can not be empty
|
||||||
|
i18n_public_chart=【Public Chart】
|
||||||
|
@ -118,3 +118,4 @@ i18n_cp_exist=已有同类型的列权限存在
|
|||||||
connection_failed=连接失败
|
connection_failed=连接失败
|
||||||
theme_name_repeat=名称已存在
|
theme_name_repeat=名称已存在
|
||||||
theme_name_empty=名称不能为空
|
theme_name_empty=名称不能为空
|
||||||
|
i18n_public_chart=【存量视图】
|
||||||
|
@ -119,3 +119,4 @@ i18n_cp_exist=已有同類型的列權限存在
|
|||||||
connection_failed=連接失敗
|
connection_failed=連接失敗
|
||||||
theme_name_repeat=名稱已存在
|
theme_name_repeat=名稱已存在
|
||||||
theme_name_empty=名稱不能為空
|
theme_name_empty=名稱不能為空
|
||||||
|
i18n_public_chart=【存量视图】
|
||||||
|
@ -4,5 +4,5 @@ NODE_ENV = production
|
|||||||
ENV = 'staging'
|
ENV = 'staging'
|
||||||
|
|
||||||
# base api
|
# base api
|
||||||
VUE_APP_BASE_API = '/stage-api'
|
VUE_APP_BASE_API = '/de-api/'
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>dataease-server</artifactId>
|
<artifactId>dataease-server</artifactId>
|
||||||
<groupId>io.dataease</groupId>
|
<groupId>io.dataease</groupId>
|
||||||
<version>1.7.0</version>
|
<version>1.8.0</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -28,11 +28,11 @@ export function getChartTree(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function chartCopy(id) {
|
export function chartCopy(id, panelId) {
|
||||||
return request({
|
return request({
|
||||||
url: '/chart/view/chartCopy/' + id,
|
url: '/chart/view/chartCopy/' + id + '/' + panelId,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
loading: true
|
loading: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
export function chartGroupTree(data) {
|
export function chartGroupTree(data) {
|
||||||
@ -69,3 +69,10 @@ export function ajaxGetDataOnly(id, data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function pluginTypes() {
|
||||||
|
return request({
|
||||||
|
url: '/plugin/view/types',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -154,3 +154,11 @@ export function initPanelData(panelId, callback) {
|
|||||||
callback(response)
|
callback(response)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function queryPanelViewTree() {
|
||||||
|
return request({
|
||||||
|
url: '/panel/group/queryPanelViewTree',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<component
|
<component
|
||||||
:is="mode"
|
:is="mode"
|
||||||
|
:ref="refId"
|
||||||
|
:obj="obj"
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
v-on="$listeners"
|
v-on="$listeners"
|
||||||
:obj="obj"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { uuid } from 'vue-uuid'
|
||||||
import { get } from '@/api/system/dynamic'
|
import { get } from '@/api/system/dynamic'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -28,7 +29,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
resData: '',
|
resData: '',
|
||||||
mode: ''
|
mode: '',
|
||||||
|
refId: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@ -59,8 +61,17 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.refId = uuid.v1
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/* chartResize() {
|
||||||
|
this.$refs[this.refId] && this.$refs[this.refId].chartResize && this.$refs[this.refId].chartResize()
|
||||||
|
}, */
|
||||||
|
callPluginInner(param) {
|
||||||
|
const { methodName, methodParam } = param
|
||||||
|
this.$refs[this.refId] && this.$refs[this.refId][methodName] && this.$refs[this.refId][methodName](methodParam)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -53,7 +53,7 @@ export default {
|
|||||||
}
|
}
|
||||||
// 加载视图数据
|
// 加载视图数据
|
||||||
initPanelData(this.panelId, function() {
|
initPanelData(this.panelId, function() {
|
||||||
this.dataLoading = false
|
_this.dataLoading = false
|
||||||
// 如果含有跳转参数 进行触发
|
// 如果含有跳转参数 进行触发
|
||||||
const tempParam = localStorage.getItem('jumpInfoParam')
|
const tempParam = localStorage.getItem('jumpInfoParam')
|
||||||
if (tempParam) {
|
if (tempParam) {
|
||||||
|
@ -16,8 +16,15 @@
|
|||||||
{{ $t('chart.chart_error_tips') }}
|
{{ $t('chart.chart_error_tips') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<plugin-com
|
||||||
|
v-if="chart.isPlugin"
|
||||||
|
:ref="element.propValue.id"
|
||||||
|
:component-name="chart.type + '-view'"
|
||||||
|
:obj="{chart, trackMenu, searchCount, terminalType: scaleCoefficientType}"
|
||||||
|
class="chart-class"
|
||||||
|
/>
|
||||||
<chart-component
|
<chart-component
|
||||||
v-if="charViewShowFlag"
|
v-else-if="charViewShowFlag"
|
||||||
:ref="element.propValue.id"
|
:ref="element.propValue.id"
|
||||||
class="chart-class"
|
class="chart-class"
|
||||||
:chart="chart"
|
:chart="chart"
|
||||||
@ -28,7 +35,7 @@
|
|||||||
@onJumpClick="jumpClick"
|
@onJumpClick="jumpClick"
|
||||||
/>
|
/>
|
||||||
<chart-component-g2
|
<chart-component-g2
|
||||||
v-if="charViewG2ShowFlag"
|
v-else-if="charViewG2ShowFlag"
|
||||||
:ref="element.propValue.id"
|
:ref="element.propValue.id"
|
||||||
class="chart-class"
|
class="chart-class"
|
||||||
:chart="chart"
|
:chart="chart"
|
||||||
@ -38,7 +45,7 @@
|
|||||||
@onJumpClick="jumpClick"
|
@onJumpClick="jumpClick"
|
||||||
/>
|
/>
|
||||||
<chart-component-s2
|
<chart-component-s2
|
||||||
v-if="charViewS2ShowFlag"
|
v-else-if="charViewS2ShowFlag"
|
||||||
:ref="element.propValue.id"
|
:ref="element.propValue.id"
|
||||||
class="chart-class"
|
class="chart-class"
|
||||||
:chart="chart"
|
:chart="chart"
|
||||||
@ -48,13 +55,13 @@
|
|||||||
@onJumpClick="jumpClick"
|
@onJumpClick="jumpClick"
|
||||||
/>
|
/>
|
||||||
<table-normal
|
<table-normal
|
||||||
v-if="tableShowFlag"
|
v-else-if="tableShowFlag"
|
||||||
:ref="element.propValue.id"
|
:ref="element.propValue.id"
|
||||||
:show-summary="chart.type === 'table-normal'"
|
:show-summary="chart.type === 'table-normal'"
|
||||||
:chart="chart"
|
:chart="chart"
|
||||||
class="table-class"
|
class="table-class"
|
||||||
/>
|
/>
|
||||||
<label-normal v-if="labelShowFlag" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
<label-normal v-else-if="labelShowFlag" :ref="element.propValue.id" :chart="chart" class="table-class" />
|
||||||
<div style="position: absolute;left: 8px;bottom:8px;">
|
<div style="position: absolute;left: 8px;bottom:8px;">
|
||||||
<drill-path :drill-filters="drillFilters" @onDrillJump="drillJump" />
|
<drill-path :drill-filters="drillFilters" @onDrillJump="drillJump" />
|
||||||
</div>
|
</div>
|
||||||
@ -69,7 +76,7 @@ import ChartComponent from '@/views/chart/components/ChartComponent.vue'
|
|||||||
import TableNormal from '@/views/chart/components/table/TableNormal'
|
import TableNormal from '@/views/chart/components/table/TableNormal'
|
||||||
import LabelNormal from '../../../views/chart/components/normal/LabelNormal'
|
import LabelNormal from '../../../views/chart/components/normal/LabelNormal'
|
||||||
import { uuid } from 'vue-uuid'
|
import { uuid } from 'vue-uuid'
|
||||||
|
import bus from '@/utils/bus'
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import { isChange } from '@/utils/conditionUtil'
|
import { isChange } from '@/utils/conditionUtil'
|
||||||
import { BASE_CHART_STRING } from '@/views/chart/chart/chart'
|
import { BASE_CHART_STRING } from '@/views/chart/chart/chart'
|
||||||
@ -82,10 +89,10 @@ import ChartComponentG2 from '@/views/chart/components/ChartComponentG2'
|
|||||||
import EditBarView from '@/components/canvas/components/Editor/EditBarView'
|
import EditBarView from '@/components/canvas/components/Editor/EditBarView'
|
||||||
import { customAttrTrans, customStyleTrans, recursionTransObj } from '@/components/canvas/utils/style'
|
import { customAttrTrans, customStyleTrans, recursionTransObj } from '@/components/canvas/utils/style'
|
||||||
import ChartComponentS2 from '@/views/chart/components/ChartComponentS2'
|
import ChartComponentS2 from '@/views/chart/components/ChartComponentS2'
|
||||||
|
import PluginCom from '@/views/system/plugin/PluginCom'
|
||||||
export default {
|
export default {
|
||||||
name: 'UserView',
|
name: 'UserView',
|
||||||
components: { ChartComponentS2, EditBarView, ChartComponent, TableNormal, LabelNormal, DrillPath, ChartComponentG2 },
|
components: { PluginCom, ChartComponentS2, EditBarView, ChartComponent, TableNormal, LabelNormal, DrillPath, ChartComponentG2 },
|
||||||
props: {
|
props: {
|
||||||
element: {
|
element: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -108,6 +115,7 @@ export default {
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
// eslint-disable-next-line vue/require-default-prop
|
||||||
componentIndex: {
|
componentIndex: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: false
|
required: false
|
||||||
@ -156,6 +164,9 @@ export default {
|
|||||||
sourceCustomStyleStr: null
|
sourceCustomStyleStr: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
this.bindPluginEvent()
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
scaleCoefficient() {
|
scaleCoefficient() {
|
||||||
if (this.terminal === 'pc' && !this.mobileLayoutStatus) {
|
if (this.terminal === 'pc' && !this.mobileLayoutStatus) {
|
||||||
@ -260,6 +271,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
|
||||||
'cfilters': {
|
'cfilters': {
|
||||||
handler: function(val1, val2) {
|
handler: function(val1, val2) {
|
||||||
if (isChange(val1, val2) && !this.isFirstLoad) {
|
if (isChange(val1, val2) && !this.isFirstLoad) {
|
||||||
@ -286,7 +298,9 @@ export default {
|
|||||||
}
|
}
|
||||||
// 如果gap有变化刷新
|
// 如果gap有变化刷新
|
||||||
if (this.preCanvasPanel && this.preCanvasPanel.gap !== newVal.panel.gap) {
|
if (this.preCanvasPanel && this.preCanvasPanel.gap !== newVal.panel.gap) {
|
||||||
this.$refs[this.element.propValue.id].chartResize()
|
this.chart.isPlugin
|
||||||
|
? this.$refs[this.element.propValue.id].callPluginInner({ methodName: 'chartResize' })
|
||||||
|
: this.$refs[this.element.propValue.id].chartResize()
|
||||||
}
|
}
|
||||||
this.preCanvasPanel = deepCopy(newVal.panel)
|
this.preCanvasPanel = deepCopy(newVal.panel)
|
||||||
},
|
},
|
||||||
@ -301,7 +315,9 @@ export default {
|
|||||||
this.changeIndex++
|
this.changeIndex++
|
||||||
this.chartResize(this.changeIndex)
|
this.chartResize(this.changeIndex)
|
||||||
} else {
|
} else {
|
||||||
this.$refs[this.element.propValue.id].chartResize()
|
this.chart.isPlugin
|
||||||
|
? this.$refs[this.element.propValue.id].callPluginInner({ methodName: 'chartResize' })
|
||||||
|
: this.$refs[this.element.propValue.id].chartResize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -320,7 +336,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
'chartType': function(newVal, oldVal) {
|
'chartType': function(newVal, oldVal) {
|
||||||
if (newVal === 'map' && newVal !== oldVal) {
|
// this.isPlugin = this.plugins.some(plugin => plugin.value === this.chart.type)
|
||||||
|
if ((newVal === 'map' || newVal === 'buddle-map') && newVal !== oldVal) {
|
||||||
this.initAreas()
|
this.initAreas()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -334,6 +351,7 @@ export default {
|
|||||||
deep: true
|
deep: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
this.refId = uuid.v1
|
this.refId = uuid.v1
|
||||||
if (this.element && this.element.propValue && this.element.propValue.viewId) {
|
if (this.element && this.element.propValue && this.element.propValue.viewId) {
|
||||||
@ -343,6 +361,14 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
bindPluginEvent() {
|
||||||
|
bus.$on('plugin-chart-click', this.chartClick)
|
||||||
|
bus.$on('plugin-jump-click', this.jumpClick)
|
||||||
|
bus.$on('plugin-add-view-track-filter', this.addViewTrackFilter)
|
||||||
|
},
|
||||||
|
addViewTrackFilter(linkageParam) {
|
||||||
|
this.$store.commit('addViewTrackFilter', linkageParam)
|
||||||
|
},
|
||||||
// 根据仪表板的缩放比例,修改视图内部参数
|
// 根据仪表板的缩放比例,修改视图内部参数
|
||||||
mergeScale() {
|
mergeScale() {
|
||||||
const scale = Math.min(this.previewCanvasScale.scalePointWidth, this.previewCanvasScale.scalePointHeight) * this.scaleCoefficient
|
const scale = Math.min(this.previewCanvasScale.scalePointWidth, this.previewCanvasScale.scalePointHeight) * this.scaleCoefficient
|
||||||
@ -459,7 +485,7 @@ export default {
|
|||||||
|
|
||||||
chartClick(param) {
|
chartClick(param) {
|
||||||
if (this.drillClickDimensionList.length < this.chart.drillFields.length - 1) {
|
if (this.drillClickDimensionList.length < this.chart.drillFields.length - 1) {
|
||||||
this.chart.type === 'map' && this.sendToChildren(param)
|
(this.chart.type === 'map' || this.chart.type === 'buddle-map') && this.sendToChildren(param)
|
||||||
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
this.drillClickDimensionList.push({ dimensionList: param.data.dimensionList })
|
||||||
this.getData(this.element.propValue.viewId)
|
this.getData(this.element.propValue.viewId)
|
||||||
} else if (this.chart.drillFields.length > 0) {
|
} else if (this.chart.drillFields.length > 0) {
|
||||||
@ -529,17 +555,22 @@ export default {
|
|||||||
resetDrill() {
|
resetDrill() {
|
||||||
const length = this.drillClickDimensionList.length
|
const length = this.drillClickDimensionList.length
|
||||||
this.drillClickDimensionList = []
|
this.drillClickDimensionList = []
|
||||||
if (this.chart.type === 'map') {
|
if (this.chart.type === 'map' || this.chart.type === 'buddle-map') {
|
||||||
this.backToParent(0, length)
|
this.backToParent(0, length)
|
||||||
const current = this.$refs[this.element.propValue.id]
|
const current = this.$refs[this.element.propValue.id]
|
||||||
current && current.registerDynamicMap && current.registerDynamicMap(null)
|
|
||||||
|
if (this.chart.isPlugin) {
|
||||||
|
current && current.callPluginInner({ methodName: 'registerDynamicMap', methodParam: null })
|
||||||
|
} else {
|
||||||
|
current && current.registerDynamicMap && current.registerDynamicMap(null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
drillJump(index) {
|
drillJump(index) {
|
||||||
const length = this.drillClickDimensionList.length
|
const length = this.drillClickDimensionList.length
|
||||||
this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index)
|
this.drillClickDimensionList = this.drillClickDimensionList.slice(0, index)
|
||||||
if (this.chart.type === 'map') {
|
if (this.chart.type === 'map' || this.chart.type === 'buddle-map') {
|
||||||
this.backToParent(index, length)
|
this.backToParent(index, length)
|
||||||
}
|
}
|
||||||
this.getData(this.element.propValue.viewId)
|
this.getData(this.element.propValue.viewId)
|
||||||
@ -558,7 +589,11 @@ export default {
|
|||||||
|
|
||||||
this.currentAcreaNode = tempNode
|
this.currentAcreaNode = tempNode
|
||||||
const current = this.$refs[this.element.propValue.id]
|
const current = this.$refs[this.element.propValue.id]
|
||||||
current && current.registerDynamicMap && current.registerDynamicMap(this.currentAcreaNode.code)
|
if (this.chart.isPlugin) {
|
||||||
|
current && current.callPluginInner({ methodName: 'registerDynamicMap', methodParam: this.currentAcreaNode.code })
|
||||||
|
} else {
|
||||||
|
current && current.registerDynamicMap && current.registerDynamicMap(this.currentAcreaNode.code)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 切换下一级地图
|
// 切换下一级地图
|
||||||
@ -575,7 +610,11 @@ export default {
|
|||||||
const nextNode = currentNode.children.find(item => item.name === name)
|
const nextNode = currentNode.children.find(item => item.name === name)
|
||||||
this.currentAcreaNode = nextNode
|
this.currentAcreaNode = nextNode
|
||||||
const current = this.$refs[this.element.propValue.id]
|
const current = this.$refs[this.element.propValue.id]
|
||||||
nextNode && current && current.registerDynamicMap && current.registerDynamicMap(nextNode.code)
|
if (this.chart.isPlugin) {
|
||||||
|
nextNode && current && current.callPluginInner({ methodName: 'registerDynamicMap', methodParam: nextNode.code })
|
||||||
|
} else {
|
||||||
|
nextNode && current && current.registerDynamicMap && current.registerDynamicMap(nextNode.code)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -604,7 +643,12 @@ export default {
|
|||||||
const areaNode = this.findEntityByname(name, [])
|
const areaNode = this.findEntityByname(name, [])
|
||||||
if (!areaNode) return
|
if (!areaNode) return
|
||||||
const current = this.$refs[this.element.propValue.id]
|
const current = this.$refs[this.element.propValue.id]
|
||||||
current && current.registerDynamicMap && current.registerDynamicMap(areaNode.code)
|
|
||||||
|
if (this.chart.isPlugin) {
|
||||||
|
current && current.callPluginInner({ methodName: 'registerDynamicMap', methodParam: areaNode.code })
|
||||||
|
} else {
|
||||||
|
current && current.registerDynamicMap && current.registerDynamicMap(areaNode.code)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 根据地名获取areaCode
|
// 根据地名获取areaCode
|
||||||
findEntityByname(name, array) {
|
findEntityByname(name, array) {
|
||||||
@ -632,7 +676,9 @@ export default {
|
|||||||
if (this.$refs[this.element.propValue.id]) {
|
if (this.$refs[this.element.propValue.id]) {
|
||||||
this.timeMachine = setTimeout(() => {
|
this.timeMachine = setTimeout(() => {
|
||||||
if (index === this.changeIndex) {
|
if (index === this.changeIndex) {
|
||||||
this.$refs[this.element.propValue.id].chartResize()
|
this.chart.isPlugin
|
||||||
|
? this.$refs[this.element.propValue.id].callPluginInner({ methodName: 'chartResize' })
|
||||||
|
: this.$refs[this.element.propValue.id].chartResize()
|
||||||
}
|
}
|
||||||
this.destroyTimeMachine()
|
this.destroyTimeMachine()
|
||||||
}, 50)
|
}, 50)
|
||||||
|
@ -47,7 +47,7 @@ export default {
|
|||||||
|
|
||||||
// 如果是用户视图 测先进行底层复制
|
// 如果是用户视图 测先进行底层复制
|
||||||
if (data.type === 'view') {
|
if (data.type === 'view') {
|
||||||
chartCopy(data.propValue.viewId).then(res => {
|
chartCopy(data.propValue.viewId, state.panel.panelInfo.id).then(res => {
|
||||||
const newView = deepCopy(data)
|
const newView = deepCopy(data)
|
||||||
newView.id = uuid.v1()
|
newView.id = uuid.v1()
|
||||||
newView.propValue.viewId = res.data
|
newView.propValue.viewId = res.data
|
||||||
|
@ -227,7 +227,7 @@ class TimeDateRangeServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
getParam(element) {
|
getParam(element) {
|
||||||
let timeArr = []
|
let timeArr = []
|
||||||
if (element.options.attrs.default.isDynamic) {
|
if (element.options.attrs.default && element.options.attrs.default.isDynamic) {
|
||||||
let value = this.dynamicDateFormNow(element)
|
let value = this.dynamicDateFormNow(element)
|
||||||
value = this.formatFilterValue(value)
|
value = this.formatFilterValue(value)
|
||||||
timeArr = this.formatValues(value, element)
|
timeArr = this.formatValues(value, element)
|
||||||
|
@ -157,7 +157,7 @@ class TimeDateServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
getParam(element) {
|
getParam(element) {
|
||||||
let timeArr = []
|
let timeArr = []
|
||||||
if (element.options.attrs.default.isDynamic) {
|
if (element.options.attrs.default && element.options.attrs.default.isDynamic) {
|
||||||
let value = this.dynamicDateFormNow(element)
|
let value = this.dynamicDateFormNow(element)
|
||||||
value = this.formatFilterValue(value)
|
value = this.formatFilterValue(value)
|
||||||
timeArr = this.formatValues(value, element)
|
timeArr = this.formatValues(value, element)
|
||||||
|
@ -123,7 +123,7 @@ class TimeMonthServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
getParam(element) {
|
getParam(element) {
|
||||||
let timeArr = []
|
let timeArr = []
|
||||||
if (element.options.attrs.default.isDynamic) {
|
if (element.options.attrs.default && element.options.attrs.default.isDynamic) {
|
||||||
let value = this.dynamicDateFormNow(element)
|
let value = this.dynamicDateFormNow(element)
|
||||||
value = this.formatFilterValue(value)
|
value = this.formatFilterValue(value)
|
||||||
timeArr = this.formatValues(value, element)
|
timeArr = this.formatValues(value, element)
|
||||||
|
@ -114,7 +114,7 @@ class TimeYearServiceImpl extends WidgetService {
|
|||||||
}
|
}
|
||||||
getParam(element) {
|
getParam(element) {
|
||||||
let timeArr = []
|
let timeArr = []
|
||||||
if (element.options.attrs.default.isDynamic) {
|
if (element.options.attrs.default && element.options.attrs.default.isDynamic) {
|
||||||
let value = this.dynamicDateFormNow(element)
|
let value = this.dynamicDateFormNow(element)
|
||||||
value = this.formatFilterValue(value)
|
value = this.formatFilterValue(value)
|
||||||
timeArr = this.formatValues(value, element)
|
timeArr = this.formatValues(value, element)
|
||||||
|
1
frontend/src/icons/svg/buddle-map.svg
Normal file
1
frontend/src/icons/svg/buddle-map.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 7.6 KiB |
@ -1 +1 @@
|
|||||||
<svg t="1630896178915" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1969" width="200" height="200"><path d="M85.333333 170.666667h853.333334v170.666666H85.333333zM85.333333 384h170.666667v469.333333H85.333333z" p-id="1970"></path><path d="M298.666667 384h640v128H298.666667z" opacity=".6" p-id="1971"></path><path d="M298.666667 554.666667h298.666666v128H298.666667zM640 554.666667h298.666667v128H640z" p-id="1972"></path><path d="M298.666667 725.333333h298.666666v128H298.666667zM640 725.333333h298.666667v128H640z" opacity=".6" p-id="1973"></path></svg>
|
<svg t="1644288854112" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1947" width="200" height="200"><path d="M85.333333 170.666667h853.333334v170.666666H85.333333zM85.333333 384h170.666667v469.333333H85.333333z" p-id="1948"></path><path d="M298.666667 384h640v128H298.666667z" opacity=".6" p-id="1949"></path><path d="M298.666667 554.666667h640v128H298.666667z" p-id="1950"></path><path d="M298.666667 725.333333h640v128H298.666667z" opacity=".6" p-id="1951"></path></svg>
|
||||||
|
Before Width: | Height: | Size: 603 B After Width: | Height: | Size: 519 B |
1
frontend/src/icons/svg/table-pivot.svg
Normal file
1
frontend/src/icons/svg/table-pivot.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1630896178915" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1969" width="200" height="200"><path d="M85.333333 170.666667h853.333334v170.666666H85.333333zM85.333333 384h170.666667v469.333333H85.333333z" p-id="1970"></path><path d="M298.666667 384h640v128H298.666667z" opacity=".6" p-id="1971"></path><path d="M298.666667 554.666667h298.666666v128H298.666667zM640 554.666667h298.666667v128H640z" p-id="1972"></path><path d="M298.666667 725.333333h298.666666v128H298.666667zM640 725.333333h298.666667v128H640z" opacity=".6" p-id="1973"></path></svg>
|
After Width: | Height: | Size: 603 B |
@ -1020,7 +1020,16 @@ export default {
|
|||||||
table_config: 'Table Config',
|
table_config: 'Table Config',
|
||||||
table_column_width_config: 'Column Width',
|
table_column_width_config: 'Column Width',
|
||||||
table_column_adapt: 'Adapt',
|
table_column_adapt: 'Adapt',
|
||||||
table_column_custom: 'Custom'
|
table_column_custom: 'Custom',
|
||||||
|
chart_table_pivot: 'Pivot Table',
|
||||||
|
table_pivot_row: 'Data Row',
|
||||||
|
field_error_tips: 'This field is changed(Include dimension、quota,field type,deleted),please edit again.',
|
||||||
|
table_border_color: 'Border Color',
|
||||||
|
table_header_align: 'Header Align',
|
||||||
|
table_item_align: 'Body Align',
|
||||||
|
table_align_left: 'Left',
|
||||||
|
table_align_center: 'Center',
|
||||||
|
table_align_right: 'Right'
|
||||||
},
|
},
|
||||||
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',
|
||||||
@ -1577,16 +1586,17 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
auth: {
|
auth: {
|
||||||
authConfig: 'Auth Config',
|
authConfig: 'Configure Permissions By User',
|
||||||
|
sourceConfig: 'Configure Permissions By Source',
|
||||||
authQuickConfig: 'Auth Quick Config',
|
authQuickConfig: 'Auth Quick Config',
|
||||||
dept: 'Dept',
|
dept: 'Dept',
|
||||||
role: 'Role',
|
role: 'Role',
|
||||||
user: 'User',
|
user: 'User',
|
||||||
linkAuth: 'Datasource Permissions',
|
linkAuth: 'Datasource',
|
||||||
datasetAuth: 'Dataset Permissions',
|
datasetAuth: 'Dataset',
|
||||||
chartAuth: 'Chart Permissions',
|
chartAuth: 'Chart',
|
||||||
panelAuth: 'Dashboard Permissions',
|
panelAuth: 'Panel',
|
||||||
menuAuth: 'Menu and operation permission',
|
menuAuth: 'Menu And Operation',
|
||||||
deptHead: 'All Dept',
|
deptHead: 'All Dept',
|
||||||
roleHead: 'All Role',
|
roleHead: 'All Role',
|
||||||
userHead: 'All User',
|
userHead: 'All User',
|
||||||
|
@ -1020,7 +1020,16 @@ export default {
|
|||||||
table_config: '表格配置',
|
table_config: '表格配置',
|
||||||
table_column_width_config: '列寬調整',
|
table_column_width_config: '列寬調整',
|
||||||
table_column_adapt: '自適應',
|
table_column_adapt: '自適應',
|
||||||
table_column_custom: '自定義'
|
table_column_custom: '自定義',
|
||||||
|
chart_table_pivot: '透視表',
|
||||||
|
table_pivot_row: '數據行',
|
||||||
|
field_error_tips: '該字段所對應的數據集原始字段發生變更(包括維度、指標,字段類型,字段被刪除等),建議重新編輯',
|
||||||
|
table_border_color: '邊框顏色',
|
||||||
|
table_header_align: '表頭對齊方式',
|
||||||
|
table_item_align: '表格對齊方式',
|
||||||
|
table_align_left: '左對齊',
|
||||||
|
table_align_center: '居中',
|
||||||
|
table_align_right: '右對齊'
|
||||||
},
|
},
|
||||||
dataset: {
|
dataset: {
|
||||||
sheet_warn: '有多個 Sheet 頁,默認抽取第一個',
|
sheet_warn: '有多個 Sheet 頁,默認抽取第一個',
|
||||||
@ -1586,16 +1595,17 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
auth: {
|
auth: {
|
||||||
authConfig: '權限配置',
|
authConfig: '按用户配置權限',
|
||||||
|
sourceConfig: '按资源配置權限',
|
||||||
authQuickConfig: '權限快捷配置',
|
authQuickConfig: '權限快捷配置',
|
||||||
dept: '組織',
|
dept: '組織',
|
||||||
role: '角色',
|
role: '角色',
|
||||||
user: '用戶',
|
user: '用戶',
|
||||||
linkAuth: '數據源權限',
|
linkAuth: '數據源',
|
||||||
datasetAuth: '數據集權限',
|
datasetAuth: '數據集',
|
||||||
chartAuth: '視圖權限',
|
chartAuth: '視圖',
|
||||||
panelAuth: '儀錶闆權限',
|
panelAuth: '儀錶闆',
|
||||||
menuAuth: '菜單和操作權限',
|
menuAuth: '菜單和操作',
|
||||||
deptHead: '所有組織',
|
deptHead: '所有組織',
|
||||||
roleHead: '所有角色',
|
roleHead: '所有角色',
|
||||||
userHead: '所有用戶',
|
userHead: '所有用戶',
|
||||||
|
@ -1023,7 +1023,16 @@ export default {
|
|||||||
table_config: '表格配置',
|
table_config: '表格配置',
|
||||||
table_column_width_config: '列宽调整',
|
table_column_width_config: '列宽调整',
|
||||||
table_column_adapt: '自适应',
|
table_column_adapt: '自适应',
|
||||||
table_column_custom: '自定义'
|
table_column_custom: '自定义',
|
||||||
|
chart_table_pivot: '透视表',
|
||||||
|
table_pivot_row: '数据行',
|
||||||
|
field_error_tips: '该字段所对应的数据集原始字段发生变更(包括维度、指标,字段类型,字段被删除等),建议重新编辑',
|
||||||
|
table_border_color: '边框颜色',
|
||||||
|
table_header_align: '表头对齐方式',
|
||||||
|
table_item_align: '表格对齐方式',
|
||||||
|
table_align_left: '左对齐',
|
||||||
|
table_align_center: '居中',
|
||||||
|
table_align_right: '右对齐'
|
||||||
},
|
},
|
||||||
dataset: {
|
dataset: {
|
||||||
sheet_warn: '有多个 Sheet 页,默认抽取第一个',
|
sheet_warn: '有多个 Sheet 页,默认抽取第一个',
|
||||||
@ -1595,16 +1604,17 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
auth: {
|
auth: {
|
||||||
authConfig: '权限配置',
|
authConfig: '按用户配置权限',
|
||||||
|
sourceConfig: '按资源配置权限',
|
||||||
authQuickConfig: '权限快捷配置',
|
authQuickConfig: '权限快捷配置',
|
||||||
dept: '组织',
|
dept: '组织',
|
||||||
role: '角色',
|
role: '角色',
|
||||||
user: '用户',
|
user: '用户',
|
||||||
linkAuth: '数据源权限',
|
linkAuth: '数据源',
|
||||||
datasetAuth: '数据集权限',
|
datasetAuth: '数据集',
|
||||||
chartAuth: '视图权限',
|
chartAuth: '视图',
|
||||||
panelAuth: '仪表板权限',
|
panelAuth: '仪表板',
|
||||||
menuAuth: '菜单和操作权限',
|
menuAuth: '菜单和操作',
|
||||||
deptHead: '所有组织',
|
deptHead: '所有组织',
|
||||||
roleHead: '所有角色',
|
roleHead: '所有角色',
|
||||||
userHead: '所有用户',
|
userHead: '所有用户',
|
||||||
|
@ -24,9 +24,11 @@ import DeComplexSelect from '@/components/business/condition-table/DeComplexSele
|
|||||||
import '@/components/canvas/custom-component' // 注册自定义组件
|
import '@/components/canvas/custom-component' // 注册自定义组件
|
||||||
|
|
||||||
import '@/utils/DateUtil'
|
import '@/utils/DateUtil'
|
||||||
|
import draggable from 'vuedraggable'
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
Vue.use(VueClipboard)
|
Vue.use(VueClipboard)
|
||||||
Vue.use(widgets)
|
Vue.use(widgets)
|
||||||
|
Vue.component('draggable', draggable)
|
||||||
Vue.prototype.$api = api
|
Vue.prototype.$api = api
|
||||||
|
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
|
@ -14,7 +14,7 @@ import Cookies from 'js-cookie'
|
|||||||
|
|
||||||
const getTimeOut = () => {
|
const getTimeOut = () => {
|
||||||
let time = 10
|
let time = 10
|
||||||
const url = '/system/requestTimeOut'
|
const url = process.env.VUE_APP_BASE_API + 'system/requestTimeOut'
|
||||||
const xhr = new XMLHttpRequest()
|
const xhr = new XMLHttpRequest()
|
||||||
xhr.onreadystatechange = () => {
|
xhr.onreadystatechange = () => {
|
||||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||||
|
@ -2,12 +2,13 @@ export const DEFAULT_COLOR_CASE = {
|
|||||||
value: 'default',
|
value: 'default',
|
||||||
colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],
|
colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],
|
||||||
alpha: 100,
|
alpha: 100,
|
||||||
tableHeaderBgColor: '#4e81bb',
|
tableHeaderBgColor: '#e1eaff',
|
||||||
tableItemBgColor: '#c6d9f0',
|
tableItemBgColor: '#ffffff',
|
||||||
tableFontColor: '#000000',
|
tableFontColor: '#000000',
|
||||||
tableStripe: true,
|
tableStripe: true,
|
||||||
dimensionColor: '#000000',
|
dimensionColor: '#000000',
|
||||||
quotaColor: '#000000'
|
quotaColor: '#000000',
|
||||||
|
tableBorderColor: '#cfdaf4'
|
||||||
}
|
}
|
||||||
export const DEFAULT_SIZE = {
|
export const DEFAULT_SIZE = {
|
||||||
barDefault: true,
|
barDefault: true,
|
||||||
@ -31,8 +32,10 @@ export const DEFAULT_SIZE = {
|
|||||||
tableTitleHeight: 36,
|
tableTitleHeight: 36,
|
||||||
tableItemHeight: 36,
|
tableItemHeight: 36,
|
||||||
tablePageSize: '20',
|
tablePageSize: '20',
|
||||||
tableColumnMode: 'adapt',
|
tableColumnMode: 'custom',
|
||||||
tableColumnWidth: 100,
|
tableColumnWidth: 100,
|
||||||
|
tableHeaderAlign: 'left',
|
||||||
|
tableItemAlign: 'right',
|
||||||
gaugeMin: 0,
|
gaugeMin: 0,
|
||||||
gaugeMax: 100,
|
gaugeMax: 100,
|
||||||
gaugeStartAngle: 225,
|
gaugeStartAngle: 225,
|
||||||
|
@ -2,26 +2,81 @@ import { hexColorToRGBA } from '@/views/chart/chart/util'
|
|||||||
import { DEFAULT_COLOR_CASE, DEFAULT_SIZE } from '@/views/chart/chart/chart'
|
import { DEFAULT_COLOR_CASE, DEFAULT_SIZE } from '@/views/chart/chart/chart'
|
||||||
|
|
||||||
export function getCustomTheme(chart) {
|
export function getCustomTheme(chart) {
|
||||||
|
const headerColor = hexColorToRGBA(DEFAULT_COLOR_CASE.tableHeaderBgColor, DEFAULT_COLOR_CASE.alpha)
|
||||||
|
const itemColor = hexColorToRGBA(DEFAULT_COLOR_CASE.tableItemBgColor, DEFAULT_COLOR_CASE.alpha)
|
||||||
|
const borderColor = hexColorToRGBA(DEFAULT_COLOR_CASE.tableBorderColor, DEFAULT_COLOR_CASE.alpha)
|
||||||
|
const headerAlign = DEFAULT_SIZE.tableHeaderAlign
|
||||||
|
const itemAlign = DEFAULT_SIZE.tableItemAlign
|
||||||
|
|
||||||
const theme = {
|
const theme = {
|
||||||
background: {
|
background: {
|
||||||
color: '#00000000'
|
color: '#00000000'
|
||||||
},
|
},
|
||||||
colCell: {
|
splitLine: {
|
||||||
|
horizontalBorderColor: borderColor,
|
||||||
|
verticalBorderColor: borderColor
|
||||||
|
},
|
||||||
|
cornerCell: {
|
||||||
cell: {
|
cell: {
|
||||||
backgroundColor: hexColorToRGBA(DEFAULT_COLOR_CASE.tableHeaderBgColor, DEFAULT_COLOR_CASE.alpha)
|
backgroundColor: headerColor,
|
||||||
|
horizontalBorderColor: borderColor,
|
||||||
|
verticalBorderColor: borderColor
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
},
|
},
|
||||||
bolderText: {
|
bolderText: {
|
||||||
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
fontSize: DEFAULT_SIZE.tableTitleFontSize
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowCell: {
|
||||||
|
cell: {
|
||||||
|
backgroundColor: headerColor,
|
||||||
|
horizontalBorderColor: borderColor,
|
||||||
|
verticalBorderColor: borderColor
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
|
},
|
||||||
|
bolderText: {
|
||||||
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colCell: {
|
||||||
|
cell: {
|
||||||
|
backgroundColor: headerColor,
|
||||||
|
horizontalBorderColor: borderColor,
|
||||||
|
verticalBorderColor: borderColor
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
|
},
|
||||||
|
bolderText: {
|
||||||
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
|
fontSize: DEFAULT_SIZE.tableTitleFontSize,
|
||||||
|
textAlign: headerAlign
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dataCell: {
|
dataCell: {
|
||||||
cell: {
|
cell: {
|
||||||
backgroundColor: hexColorToRGBA(DEFAULT_COLOR_CASE.tableItemBgColor, DEFAULT_COLOR_CASE.alpha)
|
backgroundColor: itemColor,
|
||||||
|
horizontalBorderColor: borderColor,
|
||||||
|
verticalBorderColor: borderColor
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
fill: DEFAULT_COLOR_CASE.tableFontColor,
|
||||||
fontSize: DEFAULT_SIZE.tableItemFontSize
|
fontSize: DEFAULT_SIZE.tableItemFontSize,
|
||||||
|
textAlign: itemAlign
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,16 +87,58 @@ export function getCustomTheme(chart) {
|
|||||||
// color
|
// color
|
||||||
if (customAttr.color) {
|
if (customAttr.color) {
|
||||||
const c = JSON.parse(JSON.stringify(customAttr.color))
|
const c = JSON.parse(JSON.stringify(customAttr.color))
|
||||||
theme.colCell.cell.backgroundColor = hexColorToRGBA(c.tableHeaderBgColor, c.alpha)
|
const h_c = hexColorToRGBA(c.tableHeaderBgColor, c.alpha)
|
||||||
|
const i_c = hexColorToRGBA(c.tableItemBgColor, c.alpha)
|
||||||
|
const b_c = c.tableBorderColor ? hexColorToRGBA(c.tableBorderColor, c.alpha) : hexColorToRGBA(DEFAULT_COLOR_CASE.tableBorderColor, c.alpha)
|
||||||
|
theme.splitLine.horizontalBorderColor = b_c
|
||||||
|
theme.splitLine.verticalBorderColor = b_c
|
||||||
|
|
||||||
|
theme.cornerCell.cell.backgroundColor = h_c
|
||||||
|
theme.cornerCell.cell.horizontalBorderColor = b_c
|
||||||
|
theme.cornerCell.cell.verticalBorderColor = b_c
|
||||||
|
theme.cornerCell.bolderText.fill = c.tableFontColor
|
||||||
|
theme.cornerCell.text.fill = c.tableFontColor
|
||||||
|
|
||||||
|
theme.rowCell.cell.backgroundColor = h_c
|
||||||
|
theme.rowCell.cell.horizontalBorderColor = b_c
|
||||||
|
theme.rowCell.cell.verticalBorderColor = b_c
|
||||||
|
theme.rowCell.bolderText.fill = c.tableFontColor
|
||||||
|
theme.rowCell.text.fill = c.tableFontColor
|
||||||
|
|
||||||
|
theme.colCell.cell.backgroundColor = h_c
|
||||||
|
theme.colCell.cell.horizontalBorderColor = b_c
|
||||||
|
theme.colCell.cell.verticalBorderColor = b_c
|
||||||
theme.colCell.bolderText.fill = c.tableFontColor
|
theme.colCell.bolderText.fill = c.tableFontColor
|
||||||
theme.dataCell.cell.backgroundColor = hexColorToRGBA(c.tableItemBgColor, c.alpha)
|
theme.colCell.text.fill = c.tableFontColor
|
||||||
|
|
||||||
|
theme.dataCell.cell.backgroundColor = i_c
|
||||||
|
theme.dataCell.cell.horizontalBorderColor = b_c
|
||||||
|
theme.dataCell.cell.verticalBorderColor = b_c
|
||||||
theme.dataCell.text.fill = c.tableFontColor
|
theme.dataCell.text.fill = c.tableFontColor
|
||||||
}
|
}
|
||||||
// size
|
// size
|
||||||
if (customAttr.size) {
|
if (customAttr.size) {
|
||||||
const s = JSON.parse(JSON.stringify(customAttr.size))
|
const s = JSON.parse(JSON.stringify(customAttr.size))
|
||||||
|
const h_a = s.tableHeaderAlign ? s.tableHeaderAlign : DEFAULT_SIZE.tableHeaderAlign
|
||||||
|
const i_a = s.tableItemAlign ? s.tableItemAlign : DEFAULT_SIZE.tableItemAlign
|
||||||
|
|
||||||
|
theme.cornerCell.bolderText.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.cornerCell.bolderText.textAlign = h_a
|
||||||
|
theme.cornerCell.text.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.cornerCell.text.textAlign = h_a
|
||||||
|
|
||||||
|
theme.rowCell.bolderText.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.rowCell.bolderText.textAlign = h_a
|
||||||
|
theme.rowCell.text.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.rowCell.text.textAlign = h_a
|
||||||
|
|
||||||
theme.colCell.bolderText.fontSize = parseInt(s.tableTitleFontSize)
|
theme.colCell.bolderText.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.colCell.bolderText.textAlign = h_a
|
||||||
|
theme.colCell.text.fontSize = parseInt(s.tableTitleFontSize)
|
||||||
|
theme.colCell.text.textAlign = h_a
|
||||||
|
|
||||||
theme.dataCell.text.fontSize = parseInt(s.tableItemFontSize)
|
theme.dataCell.text.fontSize = parseInt(s.tableItemFontSize)
|
||||||
|
theme.dataCell.text.textAlign = i_a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +159,7 @@ export function getSize(chart) {
|
|||||||
size.cellCfg = {
|
size.cellCfg = {
|
||||||
height: s.tableItemHeight
|
height: s.tableItemHeight
|
||||||
}
|
}
|
||||||
if (!s.tableColumnMode || s.tableColumnMode === 'adapt') {
|
if (s.tableColumnMode && s.tableColumnMode === 'adapt') {
|
||||||
delete size.cellCfg.width
|
delete size.cellCfg.width
|
||||||
size.layoutWidthType = 'compact'
|
size.layoutWidthType = 'compact'
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { TableSheet, S2Event } from '@antv/s2'
|
import { TableSheet, S2Event, PivotSheet } from '@antv/s2'
|
||||||
import { getCustomTheme, getSize } from '@/views/chart/chart/common/common_table'
|
import { getCustomTheme, getSize } from '@/views/chart/chart/common/common_table'
|
||||||
|
|
||||||
export function baseTableInfo(s2, container, chart, action, tableData) {
|
export function baseTableInfo(s2, container, chart, action, tableData) {
|
||||||
const containerDom = document.getElementById(container)
|
const containerDom = document.getElementById(container)
|
||||||
|
|
||||||
// data
|
// fields
|
||||||
const fields = chart.data.fields
|
const fields = chart.data.fields
|
||||||
if (!fields || fields.length === 0) {
|
if (!fields || fields.length === 0) {
|
||||||
if (s2) {
|
if (s2) {
|
||||||
@ -102,7 +102,7 @@ export function baseTableInfo(s2, container, chart, action, tableData) {
|
|||||||
export function baseTableNormal(s2, container, chart, action, tableData) {
|
export function baseTableNormal(s2, container, chart, action, tableData) {
|
||||||
const containerDom = document.getElementById(container)
|
const containerDom = document.getElementById(container)
|
||||||
|
|
||||||
// data
|
// fields
|
||||||
const fields = chart.data.fields
|
const fields = chart.data.fields
|
||||||
if (!fields || fields.length === 0) {
|
if (!fields || fields.length === 0) {
|
||||||
if (s2) {
|
if (s2) {
|
||||||
@ -190,3 +190,111 @@ export function baseTableNormal(s2, container, chart, action, tableData) {
|
|||||||
|
|
||||||
return s2
|
return s2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function baseTablePivot(s2, container, chart, action, tableData) {
|
||||||
|
const containerDom = document.getElementById(container)
|
||||||
|
|
||||||
|
// row and column
|
||||||
|
const columnFields = JSON.parse(chart.xaxis)
|
||||||
|
const rowFields = JSON.parse(chart.xaxisExt)
|
||||||
|
const valueFields = JSON.parse(chart.yaxis)
|
||||||
|
const c = []; const r = []; const v = []
|
||||||
|
columnFields.forEach(ele => {
|
||||||
|
c.push(ele.dataeaseName)
|
||||||
|
})
|
||||||
|
rowFields.forEach(ele => {
|
||||||
|
r.push(ele.dataeaseName)
|
||||||
|
})
|
||||||
|
valueFields.forEach(ele => {
|
||||||
|
v.push(ele.dataeaseName)
|
||||||
|
})
|
||||||
|
|
||||||
|
// fields
|
||||||
|
const fields = chart.data.fields
|
||||||
|
if (!fields || fields.length === 0) {
|
||||||
|
if (s2) {
|
||||||
|
s2.destroy()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const columns = []
|
||||||
|
const meta = []
|
||||||
|
|
||||||
|
// add drill list
|
||||||
|
if (chart.drill) {
|
||||||
|
const drillFields = JSON.parse(chart.drillFields)
|
||||||
|
const drillField = drillFields[chart.drillFilters.length]
|
||||||
|
|
||||||
|
const drillFilters = JSON.parse(JSON.stringify(chart.drillFilters))
|
||||||
|
const drillExp = drillFilters[drillFilters.length - 1].datasetTableField
|
||||||
|
|
||||||
|
// 移除所有下钻字段
|
||||||
|
const removeField = []
|
||||||
|
for (let i = 0; i < chart.drillFilters.length; i++) {
|
||||||
|
const ele = chart.drillFilters[i].datasetTableField
|
||||||
|
removeField.push(ele.dataeaseName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// build field
|
||||||
|
fields.forEach(ele => {
|
||||||
|
if (removeField.indexOf(ele.dataeaseName) < 0) {
|
||||||
|
// 用下钻字段替换当前字段
|
||||||
|
if (drillExp.dataeaseName === ele.dataeaseName) {
|
||||||
|
columns.push(drillField.dataeaseName)
|
||||||
|
meta.push({
|
||||||
|
field: drillField.dataeaseName,
|
||||||
|
name: drillField.name
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
columns.push(ele.dataeaseName)
|
||||||
|
meta.push({
|
||||||
|
field: ele.dataeaseName,
|
||||||
|
name: ele.name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
fields.forEach(ele => {
|
||||||
|
columns.push(ele.dataeaseName)
|
||||||
|
meta.push({
|
||||||
|
field: ele.dataeaseName,
|
||||||
|
name: ele.name
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// data config
|
||||||
|
const s2DataConfig = {
|
||||||
|
fields: {
|
||||||
|
rows: r,
|
||||||
|
columns: c,
|
||||||
|
values: v
|
||||||
|
},
|
||||||
|
meta: meta,
|
||||||
|
data: tableData
|
||||||
|
}
|
||||||
|
|
||||||
|
// options
|
||||||
|
const s2Options = {
|
||||||
|
width: containerDom.offsetWidth,
|
||||||
|
height: containerDom.offsetHeight,
|
||||||
|
style: getSize(chart)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始渲染
|
||||||
|
if (s2) {
|
||||||
|
s2.destroy()
|
||||||
|
}
|
||||||
|
s2 = new PivotSheet(containerDom, s2DataConfig, s2Options)
|
||||||
|
|
||||||
|
// click
|
||||||
|
s2.on(S2Event.DATA_CELL_CLICK, action)
|
||||||
|
|
||||||
|
// theme
|
||||||
|
const customTheme = getCustomTheme(chart)
|
||||||
|
s2.setThemeCfg({ theme: customTheme })
|
||||||
|
|
||||||
|
return s2
|
||||||
|
}
|
||||||
|
@ -26,3 +26,284 @@ export function digToHex(dig) {
|
|||||||
}
|
}
|
||||||
return prefix.concat(num.toString(16).toUpperCase())
|
return prefix.concat(num.toString(16).toUpperCase())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const TYPE_CONFIGS = [
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_table',
|
||||||
|
value: 'table-normal',
|
||||||
|
title: 'chart.chart_table_normal',
|
||||||
|
icon: 'table-normal'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_table',
|
||||||
|
value: 'table-info',
|
||||||
|
title: 'chart.chart_table_info',
|
||||||
|
icon: 'table-info'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_table',
|
||||||
|
value: 'table-pivot',
|
||||||
|
title: 'chart.chart_table_pivot',
|
||||||
|
icon: 'table-pivot'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_quota',
|
||||||
|
value: 'text',
|
||||||
|
title: 'chart.chart_card',
|
||||||
|
icon: 'text'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_quota',
|
||||||
|
value: 'gauge',
|
||||||
|
title: 'chart.chart_gauge',
|
||||||
|
icon: 'gauge'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_quota',
|
||||||
|
value: 'liquid',
|
||||||
|
title: 'chart.chart_liquid',
|
||||||
|
icon: 'liquid'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_trend',
|
||||||
|
value: 'line',
|
||||||
|
title: 'chart.chart_line',
|
||||||
|
icon: 'line'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_trend',
|
||||||
|
value: 'line-stack',
|
||||||
|
title: 'chart.chart_line_stack',
|
||||||
|
icon: 'line-stack'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar',
|
||||||
|
title: 'chart.chart_bar',
|
||||||
|
icon: 'bar'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-stack',
|
||||||
|
title: 'chart.chart_bar_stack',
|
||||||
|
icon: 'bar-stack'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'waterfall',
|
||||||
|
title: 'chart.chart_waterfall',
|
||||||
|
icon: 'waterfall'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-horizontal',
|
||||||
|
title: 'chart.chart_bar_horizontal',
|
||||||
|
icon: 'bar-horizontal'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-stack-horizontal',
|
||||||
|
title: 'chart.chart_bar_stack_horizontal',
|
||||||
|
icon: 'bar-stack-horizontal'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'pie',
|
||||||
|
title: 'chart.chart_pie',
|
||||||
|
icon: 'pie'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'pie-rose',
|
||||||
|
title: 'chart.chart_pie_rose',
|
||||||
|
icon: 'pie-rose'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'radar',
|
||||||
|
title: 'chart.chart_radar',
|
||||||
|
icon: 'radar'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'treemap',
|
||||||
|
title: 'chart.chart_treemap',
|
||||||
|
icon: 'treemap'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'word-cloud',
|
||||||
|
title: 'chart.chart_word_cloud',
|
||||||
|
icon: 'word-cloud'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_relation',
|
||||||
|
value: 'scatter',
|
||||||
|
title: 'chart.chart_scatter',
|
||||||
|
icon: 'scatter'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'antv',
|
||||||
|
category: 'chart.chart_type_relation',
|
||||||
|
value: 'funnel',
|
||||||
|
title: 'chart.chart_funnel',
|
||||||
|
icon: 'funnel'
|
||||||
|
},
|
||||||
|
/* 下面是echarts图表类型 */
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_table',
|
||||||
|
value: 'table-normal',
|
||||||
|
title: 'chart.chart_table_normal',
|
||||||
|
icon: 'table-normal'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_table',
|
||||||
|
value: 'table-info',
|
||||||
|
title: 'chart.chart_table_info',
|
||||||
|
icon: 'table-info'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_quota',
|
||||||
|
value: 'text',
|
||||||
|
title: 'chart.chart_card',
|
||||||
|
icon: 'text'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_quota',
|
||||||
|
value: 'gauge',
|
||||||
|
title: 'chart.chart_gauge',
|
||||||
|
icon: 'gauge'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_trend',
|
||||||
|
value: 'line',
|
||||||
|
title: 'chart.chart_line',
|
||||||
|
icon: 'line'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_trend',
|
||||||
|
value: 'line-stack',
|
||||||
|
title: 'chart.chart_line_stack',
|
||||||
|
icon: 'line-stack'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_trend',
|
||||||
|
value: 'chart-mix',
|
||||||
|
title: 'chart.chart_mix',
|
||||||
|
icon: 'chart-mix'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar',
|
||||||
|
title: 'chart.chart_bar',
|
||||||
|
icon: 'bar'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-stack',
|
||||||
|
title: 'chart.chart_bar_stack',
|
||||||
|
icon: 'bar-stack'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-horizontal',
|
||||||
|
title: 'chart.chart_bar_horizontal',
|
||||||
|
icon: 'bar-horizontal'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_compare',
|
||||||
|
value: 'bar-stack-horizontal',
|
||||||
|
title: 'chart.chart_bar_stack_horizontal',
|
||||||
|
icon: 'bar-stack-horizontal'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'pie',
|
||||||
|
title: 'chart.chart_pie',
|
||||||
|
icon: 'pie'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'pie-rose',
|
||||||
|
title: 'chart.chart_pie_rose',
|
||||||
|
icon: 'pie-rose'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'radar',
|
||||||
|
title: 'chart.chart_radar',
|
||||||
|
icon: 'radar'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_distribute',
|
||||||
|
value: 'treemap',
|
||||||
|
title: 'chart.chart_treemap',
|
||||||
|
icon: 'treemap'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_relation',
|
||||||
|
value: 'scatter',
|
||||||
|
title: 'chart.chart_scatter',
|
||||||
|
icon: 'scatter'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_relation',
|
||||||
|
value: 'funnel',
|
||||||
|
title: 'chart.chart_funnel',
|
||||||
|
icon: 'funnel'
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
render: 'echarts',
|
||||||
|
category: 'chart.chart_type_space',
|
||||||
|
value: 'map',
|
||||||
|
title: 'chart.chart_map',
|
||||||
|
icon: 'map'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
@ -4,9 +4,10 @@
|
|||||||
<span v-if="chart.type" v-show="title_show" ref="title" :style="title_class" style="cursor: default;display: block;">
|
<span v-if="chart.type" v-show="title_show" ref="title" :style="title_class" style="cursor: default;display: block;">
|
||||||
<p style="padding:6px 10px 0 10px;margin: 0;overflow: hidden;white-space: pre;text-overflow: ellipsis;">{{ chart.title }}</p>
|
<p style="padding:6px 10px 0 10px;margin: 0;overflow: hidden;white-space: pre;text-overflow: ellipsis;">{{ chart.title }}</p>
|
||||||
</span>
|
</span>
|
||||||
<div style="width: 100%;overflow: hidden;padding: 8px;" :style="{height:chartHeight,background:container_bg_class.background}">
|
<div ref="tableContainer" style="width: 100%;overflow: hidden;padding: 8px;" :style="{background:container_bg_class.background}">
|
||||||
<div v-if="chart.type === 'table-normal'" :id="chartId" style="width: 100%;overflow: hidden;" :class="chart.drill ? 'table-dom-normal-drill' : 'table-dom-normal'" />
|
<div v-if="chart.type === 'table-normal'" :id="chartId" style="width: 100%;overflow: hidden;" :class="chart.drill ? 'table-dom-normal-drill' : 'table-dom-normal'" />
|
||||||
<div v-if="chart.type === 'table-info'" :id="chartId" style="width: 100%;overflow: hidden;" :class="chart.drill ? 'table-dom-info-drill' : 'table-dom-info'" />
|
<div v-if="chart.type === 'table-info'" :id="chartId" style="width: 100%;overflow: hidden;" :class="chart.drill ? 'table-dom-info-drill' : 'table-dom-info'" />
|
||||||
|
<div v-if="chart.type === 'table-pivot'" :id="chartId" style="width: 100%;overflow: hidden;" class="table-dom-normal" />
|
||||||
<el-row v-show="chart.type === 'table-info'" class="table-page">
|
<el-row v-show="chart.type === 'table-info'" class="table-page">
|
||||||
<span class="total-style">
|
<span class="total-style">
|
||||||
{{ $t('chart.total') }}
|
{{ $t('chart.total') }}
|
||||||
@ -34,7 +35,7 @@
|
|||||||
import { uuid } from 'vue-uuid'
|
import { uuid } from 'vue-uuid'
|
||||||
import ViewTrackBar from '@/components/canvas/components/Editor/ViewTrackBar'
|
import ViewTrackBar from '@/components/canvas/components/Editor/ViewTrackBar'
|
||||||
import { hexColorToRGBA } from '@/views/chart/chart/util'
|
import { hexColorToRGBA } from '@/views/chart/chart/util'
|
||||||
import { baseTableInfo, baseTableNormal } from '@/views/chart/chart/table/table-info'
|
import { baseTableInfo, baseTableNormal, baseTablePivot } from '@/views/chart/chart/table/table-info'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ChartComponentS2',
|
name: 'ChartComponentS2',
|
||||||
@ -134,7 +135,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
initData() {
|
initData() {
|
||||||
let datas = []
|
let datas = []
|
||||||
if (this.chart.data) {
|
if (this.chart.data && this.chart.data.fields) {
|
||||||
this.fields = JSON.parse(JSON.stringify(this.chart.data.fields))
|
this.fields = JSON.parse(JSON.stringify(this.chart.data.fields))
|
||||||
const attr = JSON.parse(this.chart.customAttr)
|
const attr = JSON.parse(this.chart.customAttr)
|
||||||
this.currentPage.pageSize = parseInt(attr.size.tablePageSize ? attr.size.tablePageSize : 20)
|
this.currentPage.pageSize = parseInt(attr.size.tablePageSize ? attr.size.tablePageSize : 20)
|
||||||
@ -189,6 +190,8 @@ export default {
|
|||||||
this.myChart = baseTableInfo(this.myChart, this.chartId, chart, this.antVAction, this.tableData)
|
this.myChart = baseTableInfo(this.myChart, this.chartId, chart, this.antVAction, this.tableData)
|
||||||
} else if (chart.type === 'table-normal') {
|
} else if (chart.type === 'table-normal') {
|
||||||
this.myChart = baseTableNormal(this.myChart, this.chartId, chart, this.antVAction, this.tableData)
|
this.myChart = baseTableNormal(this.myChart, this.chartId, chart, this.antVAction, this.tableData)
|
||||||
|
} else if (chart.type === 'table-pivot') {
|
||||||
|
this.myChart = baseTablePivot(this.myChart, this.chartId, chart, this.antVAction, this.tableData)
|
||||||
} else {
|
} else {
|
||||||
if (this.myChart) {
|
if (this.myChart) {
|
||||||
this.antVRenderStatus = false
|
this.antVRenderStatus = false
|
||||||
@ -338,6 +341,7 @@ export default {
|
|||||||
if (this.$refs.title) {
|
if (this.$refs.title) {
|
||||||
const titleHeight = this.$refs.title.offsetHeight
|
const titleHeight = this.$refs.title.offsetHeight
|
||||||
this.chartHeight = (currentHeight - titleHeight) + 'px'
|
this.chartHeight = (currentHeight - titleHeight) + 'px'
|
||||||
|
this.$refs.tableContainer.style.height = this.chartHeight
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="colorForm" :model="colorForm" label-width="80px" size="mini" :disabled="param && !hasDataPermission('manage',param.privileges)">
|
<el-form ref="colorForm" :model="colorForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.color')" class="form-item">
|
<el-form-item :label="$t('chart.color')" class="form-item">
|
||||||
<el-color-picker v-model="colorForm.color" class="color-picker-style" :predefine="predefineColors" @change="changeBackgroundStyle" />
|
<el-color-picker v-model="colorForm.color" class="color-picker-style" :predefine="predefineColors" @change="changeBackgroundStyle" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="legendForm" :model="legendForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="legendForm" :model="legendForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="legendForm.show" @change="changeLegendStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="legendForm.show" @change="changeLegendStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="legendForm" :model="legendForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="legendForm" :model="legendForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="legendForm.show" @change="changeLegendStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="legendForm.show" @change="changeLegendStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="splitForm" :model="splitForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="splitForm" :model="splitForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.name')" class="form-item">
|
<el-form-item :label="$t('chart.name')" class="form-item">
|
||||||
<el-checkbox v-model="splitForm.name.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="splitForm.name.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="splitForm" :model="splitForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="splitForm" :model="splitForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.name')" class="form-item">
|
<el-form-item :label="$t('chart.name')" class="form-item">
|
||||||
<el-checkbox v-model="splitForm.name.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="splitForm.name.show" @change="changeSplitStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="titleForm" :model="titleForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="titleForm" :model="titleForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="titleForm.show" @change="changeTitleStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="titleForm.show" @change="changeTitleStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="titleForm" :model="titleForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="titleForm" :model="titleForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="titleForm.show" @change="changeTitleStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="titleForm.show" @change="changeTitleStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeXAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeXAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeXAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeXAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="width: 100%">
|
<div style="width: 100%">
|
||||||
<el-col>
|
<el-col>
|
||||||
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini" :disabled="!hasDataPermission('manage',param.privileges)">
|
<el-form ref="axisForm" :model="axisForm" label-width="80px" size="mini">
|
||||||
<el-form-item :label="$t('chart.show')" class="form-item">
|
<el-form-item :label="$t('chart.show')" class="form-item">
|
||||||
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
<el-checkbox v-model="axisForm.show" @change="changeYAxisStyle">{{ $t('chart.show') }}</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -1,23 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<el-tag v-if="!hasDataPermission('manage',param.privileges)" size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-dropdown trigger="click" size="mini" @command="clickItem">
|
||||||
<span style="float: left">
|
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
|
||||||
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
|
|
||||||
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
|
||||||
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
|
|
||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
|
||||||
</span>
|
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
|
||||||
<span v-if="item.summary" class="summary-span">{{ $t('chart.'+item.summary) }}</span>
|
|
||||||
<span v-if="item.deType === 1" class="summary-span">
|
|
||||||
{{ $t('chart.' + item.dateStyle) }}
|
|
||||||
</span>
|
|
||||||
</el-tag>
|
|
||||||
<el-dropdown v-else trigger="click" size="mini" @command="clickItem">
|
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<el-tag size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-tag size="small" class="item-axis" :type="tagType">
|
||||||
<span style="float: left">
|
<span style="float: left">
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||||
@ -27,6 +12,7 @@
|
|||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
||||||
</span>
|
</span>
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
||||||
|
<field-error-tips v-if="tagType === 'danger'" />
|
||||||
<span v-if="item.summary" class="summary-span">{{ $t('chart.'+item.summary) }}</span>
|
<span v-if="item.summary" class="summary-span">{{ $t('chart.'+item.summary) }}</span>
|
||||||
<span v-if="item.deType === 1" class="summary-span">
|
<span v-if="item.deType === 1" class="summary-span">
|
||||||
{{ $t('chart.' + item.dateStyle) }}
|
{{ $t('chart.' + item.dateStyle) }}
|
||||||
@ -120,8 +106,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getItemType } from '@/views/chart/components/drag-item/utils'
|
||||||
|
import FieldErrorTips from '@/views/chart/components/drag-item/components/FieldErrorTips'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ChartDragItem',
|
name: 'ChartDragItem',
|
||||||
|
components: { FieldErrorTips },
|
||||||
props: {
|
props: {
|
||||||
param: {
|
param: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -138,10 +128,30 @@ export default {
|
|||||||
conf: {
|
conf: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
dimensionData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
quotaData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
tagType: getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dimensionData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
quotaData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
item: function() {
|
||||||
|
this.getItemTagType()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -208,6 +218,9 @@ export default {
|
|||||||
return {
|
return {
|
||||||
type: type
|
type: type
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
getItemTagType() {
|
||||||
|
this.tagType = getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,256 @@
|
|||||||
|
<template>
|
||||||
|
<span>
|
||||||
|
<el-dropdown trigger="click" size="mini" @command="clickItem">
|
||||||
|
<span class="el-dropdown-link">
|
||||||
|
<el-tag size="small" class="item-axis" :type="tagType">
|
||||||
|
<span style="float: left">
|
||||||
|
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||||
|
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||||
|
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
|
||||||
|
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
||||||
|
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
|
||||||
|
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
||||||
|
</span>
|
||||||
|
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
||||||
|
<field-error-tips v-if="tagType === 'danger'" />
|
||||||
|
<span v-if="item.deType === 1" class="summary-span">
|
||||||
|
{{ $t('chart.' + item.dateStyle) }}
|
||||||
|
</span>
|
||||||
|
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
|
||||||
|
</el-tag>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item>
|
||||||
|
<el-dropdown placement="right-start" size="mini" style="width: 100%" @command="sort">
|
||||||
|
<span class="el-dropdown-link inner-dropdown-menu">
|
||||||
|
<span>
|
||||||
|
<i class="el-icon-sort" />
|
||||||
|
<span>{{ $t('chart.sort') }}</span>
|
||||||
|
<span class="summary-span-item">({{ $t('chart.'+item.sort) }})</span>
|
||||||
|
</span>
|
||||||
|
<i class="el-icon-arrow-right el-icon--right" />
|
||||||
|
</span>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item :command="beforeSort('none')">{{ $t('chart.none') }}</el-dropdown-item>
|
||||||
|
<el-dropdown-item :command="beforeSort('asc')">{{ $t('chart.asc') }}</el-dropdown-item>
|
||||||
|
<el-dropdown-item :command="beforeSort('desc')">{{ $t('chart.desc') }}</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</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-item">({{ $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')" divided>{{ $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-item">({{ $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')">
|
||||||
|
<span>{{ $t('chart.show_name_set') }}</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item icon="el-icon-delete" divided :command="beforeClickItem('remove')">
|
||||||
|
<span>{{ $t('chart.delete') }}</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</span>
|
||||||
|
</el-dropdown>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getItemType } from '@/views/chart/components/drag-item/utils'
|
||||||
|
import FieldErrorTips from '@/views/chart/components/drag-item/components/FieldErrorTips'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DimensionExtItem',
|
||||||
|
components: { FieldErrorTips },
|
||||||
|
props: {
|
||||||
|
param: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
index: {
|
||||||
|
type: Number,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
dimensionData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
quotaData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tagType: getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dimensionData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
item: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
clickItem(param) {
|
||||||
|
if (!param) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch (param.type) {
|
||||||
|
case 'rename':
|
||||||
|
this.showRename()
|
||||||
|
break
|
||||||
|
case 'remove':
|
||||||
|
this.removeItem()
|
||||||
|
break
|
||||||
|
case 'filter':
|
||||||
|
this.editFilter()
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeClickItem(type) {
|
||||||
|
return {
|
||||||
|
type: type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sort(param) {
|
||||||
|
// console.log(param)
|
||||||
|
this.item.sort = param.type
|
||||||
|
this.$emit('onDimensionItemChange', this.item)
|
||||||
|
},
|
||||||
|
beforeSort(type) {
|
||||||
|
return {
|
||||||
|
type: type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dateStyle(param) {
|
||||||
|
// console.log(param)
|
||||||
|
this.item.dateStyle = param.type
|
||||||
|
this.$emit('onDimensionItemChange', this.item)
|
||||||
|
},
|
||||||
|
beforeDateStyle(type) {
|
||||||
|
return {
|
||||||
|
type: type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
datePattern(param) {
|
||||||
|
this.item.datePattern = param.type
|
||||||
|
this.$emit('onDimensionItemChange', this.item)
|
||||||
|
},
|
||||||
|
beforeDatePattern(type) {
|
||||||
|
return {
|
||||||
|
type: type
|
||||||
|
}
|
||||||
|
},
|
||||||
|
editFilter() {
|
||||||
|
this.item.index = this.index
|
||||||
|
this.$emit('editItemFilter', this.item)
|
||||||
|
},
|
||||||
|
showRename() {
|
||||||
|
this.item.index = this.index
|
||||||
|
this.item.renameType = 'dimensionExt'
|
||||||
|
this.$emit('onNameEdit', this.item)
|
||||||
|
},
|
||||||
|
removeItem() {
|
||||||
|
this.item.index = this.index
|
||||||
|
this.item.removeType = 'dimensionExt'
|
||||||
|
this.$emit('onDimensionItemRemove', this.item)
|
||||||
|
},
|
||||||
|
getItemTagType() {
|
||||||
|
this.tagType = getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.item-axis {
|
||||||
|
padding: 1px 6px;
|
||||||
|
margin: 0 3px 2px 3px;
|
||||||
|
text-align: left;
|
||||||
|
height: 24px;
|
||||||
|
line-height: 22px;
|
||||||
|
display: flex;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 159px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-axis:hover {
|
||||||
|
background-color: #fdfdfd;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-span{
|
||||||
|
margin-left: 4px;
|
||||||
|
color: #878d9f;
|
||||||
|
position: absolute;
|
||||||
|
right: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inner-dropdown-menu{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-span-style{
|
||||||
|
display: inline-block;
|
||||||
|
width: 70px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.summary-span-item{
|
||||||
|
margin-left: 4px;
|
||||||
|
color: #878d9f;
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,22 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<el-tag v-if="!hasDataPermission('manage',param.privileges)" size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-dropdown trigger="click" size="mini" @command="clickItem">
|
||||||
<span style="float: left">
|
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
|
||||||
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
|
|
||||||
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
|
||||||
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
|
|
||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
|
||||||
</span>
|
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
|
||||||
<span v-if="item.deType === 1" class="summary-span">
|
|
||||||
{{ $t('chart.' + item.dateStyle) }}
|
|
||||||
</span>
|
|
||||||
</el-tag>
|
|
||||||
<el-dropdown v-else trigger="click" size="mini" @command="clickItem">
|
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<el-tag size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-tag size="small" class="item-axis" :type="tagType">
|
||||||
<span style="float: left">
|
<span style="float: left">
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||||
@ -26,6 +12,7 @@
|
|||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
||||||
</span>
|
</span>
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
||||||
|
<field-error-tips v-if="tagType === 'danger'" />
|
||||||
<span v-if="item.deType === 1" class="summary-span">
|
<span v-if="item.deType === 1" class="summary-span">
|
||||||
{{ $t('chart.' + item.dateStyle) }}
|
{{ $t('chart.' + item.dateStyle) }}
|
||||||
</span>
|
</span>
|
||||||
@ -103,8 +90,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getItemType } from '@/views/chart/components/drag-item/utils'
|
||||||
|
import FieldErrorTips from '@/views/chart/components/drag-item/components/FieldErrorTips'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DimensionItem',
|
name: 'DimensionItem',
|
||||||
|
components: { FieldErrorTips },
|
||||||
props: {
|
props: {
|
||||||
param: {
|
param: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -117,10 +108,27 @@ export default {
|
|||||||
index: {
|
index: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
dimensionData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
quotaData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
tagType: getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dimensionData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
item: function() {
|
||||||
|
this.getItemTagType()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -190,7 +198,11 @@ export default {
|
|||||||
},
|
},
|
||||||
removeItem() {
|
removeItem() {
|
||||||
this.item.index = this.index
|
this.item.index = this.index
|
||||||
|
this.item.removeType = 'dimension'
|
||||||
this.$emit('onDimensionItemRemove', this.item)
|
this.$emit('onDimensionItemRemove', this.item)
|
||||||
|
},
|
||||||
|
getItemTagType() {
|
||||||
|
this.tagType = getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<el-tag v-if="!hasDataPermission('manage',param.privileges)" size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-dropdown trigger="click" size="mini" @command="clickItem">
|
||||||
<span style="float: left">
|
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
|
||||||
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
|
|
||||||
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
|
||||||
<svg-icon v-if="item.sort === 'asc'" icon-class="sort-asc" class-name="field-icon-sort" />
|
|
||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
|
||||||
</span>
|
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
|
||||||
</el-tag>
|
|
||||||
<el-dropdown v-else trigger="click" size="mini" @command="clickItem">
|
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<el-tag size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-tag size="small" class="item-axis" :type="tagType">
|
||||||
<span style="float: left">
|
<span style="float: left">
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||||
@ -23,6 +12,7 @@
|
|||||||
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
<svg-icon v-if="item.sort === 'desc'" icon-class="sort-desc" class-name="field-icon-sort" />
|
||||||
</span>
|
</span>
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
||||||
|
<field-error-tips v-if="tagType === 'danger'" />
|
||||||
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
|
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
@ -36,8 +26,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getItemType } from '@/views/chart/components/drag-item/utils'
|
||||||
|
import FieldErrorTips from '@/views/chart/components/drag-item/components/FieldErrorTips'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DrillItem',
|
name: 'DrillItem',
|
||||||
|
components: { FieldErrorTips },
|
||||||
props: {
|
props: {
|
||||||
param: {
|
param: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -50,10 +44,30 @@ export default {
|
|||||||
index: {
|
index: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
dimensionData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
quotaData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
tagType: getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dimensionData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
quotaData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
item: function() {
|
||||||
|
this.getItemTagType()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -79,6 +93,9 @@ export default {
|
|||||||
removeItem() {
|
removeItem() {
|
||||||
this.item.index = this.index
|
this.item.index = this.index
|
||||||
this.$emit('onDimensionItemRemove', this.item)
|
this.$emit('onDimensionItemRemove', this.item)
|
||||||
|
},
|
||||||
|
getItemTagType() {
|
||||||
|
this.tagType = getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<el-tag v-if="!hasDataPermission('manage',param.privileges)" size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-dropdown trigger="click" size="mini" @command="clickItem">
|
||||||
<span style="float: left">
|
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
|
||||||
<svg-icon v-if="item.deType === 2 || item.deType === 3" icon-class="field_value" class="field-icon-value" />
|
|
||||||
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
|
||||||
</span>
|
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
|
||||||
</el-tag>
|
|
||||||
<el-dropdown v-else trigger="click" size="mini" @command="clickItem">
|
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<el-tag size="small" class="item-axis" :type="item.groupType === 'q'?'success':''">
|
<el-tag size="small" class="item-axis" :type="tagType">
|
||||||
<span style="float: left">
|
<span style="float: left">
|
||||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||||
@ -19,6 +10,7 @@
|
|||||||
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
|
||||||
</span>
|
</span>
|
||||||
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
<span class="item-span-style" :title="item.name">{{ item.name }}</span>
|
||||||
|
<field-error-tips v-if="tagType === 'danger'" />
|
||||||
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
|
<i class="el-icon-arrow-down el-icon--right" style="position: absolute;top: 6px;right: 10px;" />
|
||||||
</el-tag>
|
</el-tag>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
@ -35,8 +27,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { getItemType } from '@/views/chart/components/drag-item/utils'
|
||||||
|
import FieldErrorTips from '@/views/chart/components/drag-item/components/FieldErrorTips'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'FilterItem',
|
name: 'FilterItem',
|
||||||
|
components: { FieldErrorTips },
|
||||||
props: {
|
props: {
|
||||||
param: {
|
param: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -49,10 +45,30 @@ export default {
|
|||||||
index: {
|
index: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
dimensionData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
quotaData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
tagType: getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dimensionData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
quotaData: function() {
|
||||||
|
this.getItemTagType()
|
||||||
|
},
|
||||||
|
item: function() {
|
||||||
|
this.getItemTagType()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -85,6 +101,9 @@ export default {
|
|||||||
removeItem() {
|
removeItem() {
|
||||||
this.item.index = this.index
|
this.item.index = this.index
|
||||||
this.$emit('onFilterItemRemove', this.item)
|
this.$emit('onFilterItemRemove', this.item)
|
||||||
|
},
|
||||||
|
getItemTagType() {
|
||||||
|
this.tagType = getItemType(this.dimensionData, this.quotaData, this.item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user