diff --git a/backend/src/main/java/io/dataease/auth/api/AuthApi.java b/backend/src/main/java/io/dataease/auth/api/AuthApi.java index 51080b57b0..7430096544 100644 --- a/backend/src/main/java/io/dataease/auth/api/AuthApi.java +++ b/backend/src/main/java/io/dataease/auth/api/AuthApi.java @@ -30,6 +30,10 @@ public interface AuthApi { @PostMapping("/useInitPwd") Boolean useInitPwd(); + @ApiOperation("不再提示修改密码") + @PostMapping("/removeNoti") + void removeNoti(); + @ApiOperation("用户初始密码") @PostMapping("/defaultPwd") String defaultPwd(); diff --git a/backend/src/main/java/io/dataease/auth/server/AuthServer.java b/backend/src/main/java/io/dataease/auth/server/AuthServer.java index eee98e7ca0..26c01c0ea5 100644 --- a/backend/src/main/java/io/dataease/auth/server/AuthServer.java +++ b/backend/src/main/java/io/dataease/auth/server/AuthServer.java @@ -158,7 +158,16 @@ public class AuthServer implements AuthApi { return false; } String md5 = CodingUtil.md5(DEFAULT_PWD); - return StringUtils.equals(AuthUtils.getUser().getPassword(), md5); + boolean isInitPwd = StringUtils.equals(AuthUtils.getUser().getPassword(), md5); + if (isInitPwd) { + return sysUserService.needPwdNoti(user.getUserId()); + } + return false; + } + + @Override + public void removeNoti() { + sysUserService.saveUserAssist(false); } @Override diff --git a/backend/src/main/java/io/dataease/commons/model/BaseRspModel.java b/backend/src/main/java/io/dataease/commons/model/BaseRspModel.java index c2478a9147..6b75aab6a8 100644 --- a/backend/src/main/java/io/dataease/commons/model/BaseRspModel.java +++ b/backend/src/main/java/io/dataease/commons/model/BaseRspModel.java @@ -3,9 +3,7 @@ package io.dataease.commons.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; - import java.io.Serializable; -import java.util.List; @Data public class BaseRspModel implements Serializable { diff --git a/backend/src/main/java/io/dataease/commons/wrapper/XssAndSqlHttpServletRequestWrapper.java b/backend/src/main/java/io/dataease/commons/wrapper/XssAndSqlHttpServletRequestWrapper.java index 973d0173e1..a9251e291c 100644 --- a/backend/src/main/java/io/dataease/commons/wrapper/XssAndSqlHttpServletRequestWrapper.java +++ b/backend/src/main/java/io/dataease/commons/wrapper/XssAndSqlHttpServletRequestWrapper.java @@ -17,7 +17,6 @@ import com.google.gson.Gson; import io.dataease.commons.holder.ThreadLocalContextHolder; import io.dataease.commons.utils.CommonBeanFactory; import io.dataease.commons.utils.ServletUtils; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.core.env.Environment; import org.springframework.util.StreamUtils; diff --git a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java index 34e6002cd1..c8b9d03057 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -8,11 +8,9 @@ import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.controller.request.chart.*; import io.dataease.controller.response.ChartDetail; import io.dataease.dto.chart.ChartViewDTO; -import io.dataease.plugins.common.base.domain.ChartViewCacheWithBLOBs; import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.service.chart.ChartViewCacheService; import io.dataease.service.chart.ChartViewService; -import io.dataease.service.panel.PanelViewService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java index d6d8620060..8833cccf3a 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetGroupController.java @@ -1,14 +1,12 @@ package io.dataease.controller.dataset; import com.github.xiaoymin.knife4j.annotations.ApiSupport; -import io.dataease.auth.annotation.DeLog; import io.dataease.auth.annotation.DePermission; import io.dataease.auth.annotation.DePermissions; import io.dataease.commons.constants.DePermissionType; import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.commons.constants.SysLogConstants; import io.dataease.commons.utils.DeLogUtils; -import io.dataease.controller.dataset.request.DeleteGroupRequest; import io.dataease.controller.request.dataset.DataSetGroupRequest; import io.dataease.dto.SysLogDTO; import io.dataease.dto.dataset.DataSetGroupDTO; @@ -20,7 +18,6 @@ import io.swagger.annotations.ApiOperation; import org.apache.shiro.authz.annotation.Logical; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; - import javax.annotation.Resource; import java.util.List; diff --git a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java index b1644ab116..6832a45023 100644 --- a/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java +++ b/backend/src/main/java/io/dataease/controller/dataset/DataSetTableFieldController.java @@ -34,7 +34,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @Author gin diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java index 241d0fd29f..c8d3478e44 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelGroupController.java @@ -6,7 +6,6 @@ import io.dataease.auth.annotation.DePermissionProxy; import io.dataease.auth.annotation.DePermissions; import io.dataease.controller.request.panel.PanelGroupBaseInfoRequest; import io.dataease.plugins.common.base.domain.PanelGroup; -import io.dataease.plugins.common.base.domain.PanelGroupWithBLOBs; import io.dataease.commons.constants.DePermissionType; import io.dataease.commons.constants.ResourceAuthLevel; import io.dataease.controller.handler.annotation.I18n; @@ -19,10 +18,8 @@ import io.dataease.service.panel.PanelGroupService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import springfox.documentation.annotations.ApiIgnore; - import org.apache.shiro.authz.annotation.Logical; import org.springframework.web.bind.annotation.*; - import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; diff --git a/backend/src/main/java/io/dataease/controller/panel/PanelViewLinkageController.java b/backend/src/main/java/io/dataease/controller/panel/PanelViewLinkageController.java index 54e5b24fbe..69f707ae48 100644 --- a/backend/src/main/java/io/dataease/controller/panel/PanelViewLinkageController.java +++ b/backend/src/main/java/io/dataease/controller/panel/PanelViewLinkageController.java @@ -5,7 +5,6 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.auth.annotation.DePermissionProxy; import io.dataease.commons.model.BaseRspModel; import io.dataease.controller.request.panel.PanelLinkageRequest; -import io.dataease.dto.PanelViewLinkageDTO; import io.dataease.dto.PermissionProxy; import io.dataease.service.panel.PanelViewLinkageService; import io.swagger.annotations.Api; diff --git a/backend/src/main/java/io/dataease/controller/request/chart/ChartCalRequest.java b/backend/src/main/java/io/dataease/controller/request/chart/ChartCalRequest.java index 89d8b40e09..9193118bc1 100644 --- a/backend/src/main/java/io/dataease/controller/request/chart/ChartCalRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/chart/ChartCalRequest.java @@ -1,6 +1,5 @@ package io.dataease.controller.request.chart; -import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.dto.chart.ChartViewDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java b/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java index dfb72cd05a..55c24e6ae2 100644 --- a/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/chart/ChartExtRequest.java @@ -5,8 +5,6 @@ import io.dataease.plugins.common.request.chart.ChartExtFilterRequest; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; -import springfox.documentation.annotations.ApiIgnore; - import java.util.List; /** diff --git a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java index bd33c0b6ae..c3d1c793fd 100644 --- a/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java +++ b/backend/src/main/java/io/dataease/controller/request/dataset/DataSetTableRequest.java @@ -6,8 +6,6 @@ import io.dataease.plugins.common.dto.datasource.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; -import springfox.documentation.annotations.ApiIgnore; - import java.util.List; /** diff --git a/backend/src/main/java/io/dataease/controller/response/ChartDetail.java b/backend/src/main/java/io/dataease/controller/response/ChartDetail.java index 39143f3784..d38736e20c 100644 --- a/backend/src/main/java/io/dataease/controller/response/ChartDetail.java +++ b/backend/src/main/java/io/dataease/controller/response/ChartDetail.java @@ -1,8 +1,6 @@ package io.dataease.controller.response; import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; -import io.dataease.plugins.common.base.domain.DatasetTable; -import io.dataease.plugins.common.base.domain.Datasource; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/backend/src/main/java/io/dataease/controller/sys/LicenseController.java b/backend/src/main/java/io/dataease/controller/sys/LicenseController.java index d45745a8bb..d6e7869f7a 100644 --- a/backend/src/main/java/io/dataease/controller/sys/LicenseController.java +++ b/backend/src/main/java/io/dataease/controller/sys/LicenseController.java @@ -1,8 +1,5 @@ package io.dataease.controller.sys; - - -import com.google.gson.Gson; import io.dataease.commons.license.DefaultLicenseService; import io.dataease.commons.license.F2CLicenseResponse; import io.dataease.controller.ResultHolder; @@ -12,7 +9,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; - import javax.annotation.Resource; @ApiIgnore diff --git a/backend/src/main/java/io/dataease/controller/sys/MsgController.java b/backend/src/main/java/io/dataease/controller/sys/MsgController.java index c1cd24783f..5cadd80227 100644 --- a/backend/src/main/java/io/dataease/controller/sys/MsgController.java +++ b/backend/src/main/java/io/dataease/controller/sys/MsgController.java @@ -21,7 +21,6 @@ import org.apache.commons.lang3.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/backend/src/main/java/io/dataease/controller/sys/SysPluginController.java b/backend/src/main/java/io/dataease/controller/sys/SysPluginController.java index c9a0992f59..a43458f112 100644 --- a/backend/src/main/java/io/dataease/controller/sys/SysPluginController.java +++ b/backend/src/main/java/io/dataease/controller/sys/SysPluginController.java @@ -6,7 +6,6 @@ import io.dataease.plugins.common.base.domain.MyPlugin; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; import io.dataease.controller.sys.base.BaseGridRequest; -import io.dataease.controller.sys.request.PluginStatus; import io.dataease.service.sys.PluginService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/backend/src/main/java/io/dataease/controller/wizard/ReptileController.java b/backend/src/main/java/io/dataease/controller/wizard/ReptileController.java index 3fb4b2cd80..9d252df2ff 100644 --- a/backend/src/main/java/io/dataease/controller/wizard/ReptileController.java +++ b/backend/src/main/java/io/dataease/controller/wizard/ReptileController.java @@ -4,15 +4,11 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.service.wizard.ReptileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.context.MessageSource; -import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - import javax.annotation.Resource; import java.util.List; -import java.util.Map; @Api(tags = "首页") @ApiSupport(order = 80) diff --git a/backend/src/main/java/io/dataease/dto/chart/ScatterChartDataDTO.java b/backend/src/main/java/io/dataease/dto/chart/ScatterChartDataDTO.java index d8ee6cd6ef..1c67f46bb4 100644 --- a/backend/src/main/java/io/dataease/dto/chart/ScatterChartDataDTO.java +++ b/backend/src/main/java/io/dataease/dto/chart/ScatterChartDataDTO.java @@ -1,8 +1,6 @@ package io.dataease.dto.chart; import lombok.Data; - -import java.math.BigDecimal; import java.util.List; /** diff --git a/backend/src/main/java/io/dataease/dto/dataset/ExcelSheetData.java b/backend/src/main/java/io/dataease/dto/dataset/ExcelSheetData.java index 9380de31f9..c085d37048 100644 --- a/backend/src/main/java/io/dataease/dto/dataset/ExcelSheetData.java +++ b/backend/src/main/java/io/dataease/dto/dataset/ExcelSheetData.java @@ -3,8 +3,6 @@ package io.dataease.dto.dataset; import io.dataease.plugins.common.dto.datasource.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import springfox.documentation.annotations.ApiIgnore; - import java.util.List; import java.util.Map; diff --git a/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java b/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java index 90998aa082..bfd71cc075 100644 --- a/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java +++ b/backend/src/main/java/io/dataease/dto/panel/PanelGroupDTO.java @@ -5,8 +5,6 @@ import io.dataease.plugins.common.base.domain.PanelGroupWithBLOBs; import io.dataease.plugins.common.model.ITreeBase; import io.swagger.annotations.ApiModelProperty; import lombok.Data; - -import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java b/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java new file mode 100644 index 0000000000..ad6d042a0b --- /dev/null +++ b/backend/src/main/java/io/dataease/ext/ExtSysUserAssistMapper.java @@ -0,0 +1,17 @@ +package io.dataease.ext; + +import io.dataease.plugins.common.base.domain.SysUserAssist; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +@Mapper +public interface ExtSysUserAssistMapper { + + @Insert("insert into sys_user_assist values(#{po.userId}, #{po.needFirstNoti})") + void save(@Param("po") SysUserAssist po); + + @Select("select * from sys_user_assist where user_id = #{userId}") + SysUserAssist query(@Param("userId") Long userId); +} diff --git a/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java b/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java index 621750a2ae..20d75b4e89 100644 --- a/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java +++ b/backend/src/main/java/io/dataease/plugins/server/ColumnPermissionsController.java @@ -12,18 +12,13 @@ import io.dataease.plugins.common.entity.XpackConditionEntity; import io.dataease.plugins.common.entity.XpackGridRequest; import io.dataease.plugins.config.SpringContextUtil; import io.dataease.plugins.xpack.auth.dto.request.DataSetColumnPermissionsDTO; -import io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO; import io.dataease.plugins.xpack.auth.dto.request.DatasetColumnPermissions; -import io.dataease.plugins.xpack.auth.dto.request.DatasetRowPermissions; import io.dataease.plugins.xpack.auth.service.ColumnPermissionService; -import io.dataease.plugins.xpack.auth.service.RowPermissionService; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; - import java.util.ArrayList; import java.util.List; @ApiIgnore diff --git a/backend/src/main/java/io/dataease/plugins/server/PluginCommonServer.java b/backend/src/main/java/io/dataease/plugins/server/PluginCommonServer.java index 214a23e2b6..0b4e8370ca 100644 --- a/backend/src/main/java/io/dataease/plugins/server/PluginCommonServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/PluginCommonServer.java @@ -6,7 +6,6 @@ import io.dataease.plugins.common.dto.StaticResource; import io.dataease.plugins.common.service.PluginComponentService; import io.dataease.plugins.common.service.PluginMenuService; import io.dataease.plugins.config.SpringContextUtil; -import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java index 9cd0fa9f21..7daaec754f 100644 --- a/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java +++ b/backend/src/main/java/io/dataease/plugins/server/XAuthServer.java @@ -20,10 +20,7 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.web.bind.annotation.*; import io.dataease.plugins.xpack.auth.service.AuthXpackService; import springfox.documentation.annotations.ApiIgnore; - import java.util.*; -import java.util.stream.Collectors; - @ApiIgnore @RequestMapping("/plugin/auth") @RestController diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index 73a274818f..6f00e03989 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -20,9 +20,7 @@ import io.dataease.plugins.datasource.query.QueryProvider; import io.dataease.provider.ProviderFactory; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; - import javax.annotation.Resource; -import java.beans.PropertyVetoException; import java.lang.reflect.Method; import java.sql.*; import java.util.*; diff --git a/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java b/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java index dc45766d01..9e6891f5af 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartGroupService.java @@ -9,7 +9,6 @@ import io.dataease.dto.chart.ChartGroupDTO; import io.dataease.plugins.common.base.domain.ChartGroup; import io.dataease.plugins.common.base.domain.ChartGroupExample; import io.dataease.plugins.common.base.mapper.ChartGroupMapper; -import io.dataease.service.sys.SysAuthService; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 80310e0ac4..8e251dc1b4 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -285,7 +285,7 @@ public class ChartViewService { try { ChartViewDTO view = this.getOne(id, request.getQueryFrom()); // 如果是从仪表板获取视图数据,则仪表板的查询模式,查询结果的数量,覆盖视图对应的属性 - if (CommonConstants.VIEW_QUERY_FROM.PANEL.equals(request.getQueryFrom()) && CommonConstants.VIEW_RESULT_MODE.CUSTOM.equals(request.getResultMode())) { + if (CommonConstants.VIEW_RESULT_MODE.CUSTOM.equals(request.getResultMode())) { view.setResultMode(request.getResultMode()); view.setResultCount(request.getResultCount()); } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 4fcb323110..bb0bb9c8d3 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -7,7 +7,6 @@ import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import io.dataease.auth.annotation.DeCleaner; import io.dataease.auth.api.dto.CurrentUserDto; -import io.dataease.controller.request.chart.ChartExtRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.controller.sys.base.ConditionEntity; import io.dataease.dto.SysLogDTO; @@ -45,7 +44,6 @@ import io.dataease.service.engine.EngineService; import io.dataease.service.sys.SysAuthService; import net.sf.jsqlparser.expression.BinaryExpression; import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.ExpressionVisitor; import net.sf.jsqlparser.expression.Parenthesis; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.expression.operators.conditional.OrExpression; @@ -53,7 +51,6 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.InExpression; import net.sf.jsqlparser.expression.operators.relational.LikeExpression; import net.sf.jsqlparser.parser.CCJSqlParserUtil; -import net.sf.jsqlparser.parser.SimpleNode; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index 5fc90e9ec8..6b0d6fe100 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -2,6 +2,7 @@ package io.dataease.service.sys; import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.auth.service.ExtAuthService; +import io.dataease.ext.ExtSysUserAssistMapper; import io.dataease.ext.ExtSysUserMapper; import io.dataease.ext.query.GridExample; import io.dataease.commons.constants.AuthConstants; @@ -16,10 +17,7 @@ import io.dataease.controller.sys.request.SysUserStateRequest; import io.dataease.controller.sys.response.SysUserGridResponse; import io.dataease.controller.sys.response.SysUserRole; import io.dataease.i18n.Translator; -import io.dataease.plugins.common.base.domain.SysUser; -import io.dataease.plugins.common.base.domain.SysUserExample; -import io.dataease.plugins.common.base.domain.SysUsersRolesExample; -import io.dataease.plugins.common.base.domain.SysUsersRolesKey; +import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.mapper.SysUserMapper; import io.dataease.plugins.common.base.mapper.SysUsersRolesMapper; import io.dataease.plugins.common.entity.XpackLdapUserEntity; @@ -28,7 +26,6 @@ import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; @@ -56,9 +53,12 @@ public class SysUserService { @Resource private ExtSysUserMapper extSysUserMapper; - @Autowired + @Resource private ExtAuthService extAuthService; + @Resource + private ExtSysUserAssistMapper extSysUserAssistMapper; + public List query(BaseGridRequest request) { @@ -435,5 +435,17 @@ public class SysUserService { } } + public boolean needPwdNoti(Long userId) { + SysUserAssist userAssist = extSysUserAssistMapper.query(userId); + return ObjectUtils.isEmpty(userAssist) || userAssist.getNeedFirstNoti(); + } + + public void saveUserAssist(Boolean noti) { + Long userId = AuthUtils.getUser().getUserId(); + SysUserAssist sysUserAssist = new SysUserAssist(); + sysUserAssist.setUserId(userId); + sysUserAssist.setNeedFirstNoti(noti); + extSysUserAssistMapper.save(sysUserAssist); + } } diff --git a/backend/src/main/resources/db/migration/V37__1.12.sql b/backend/src/main/resources/db/migration/V37__1.12.sql index 8e9084d26e..6d5cfe6a31 100644 --- a/backend/src/main/resources/db/migration/V37__1.12.sql +++ b/backend/src/main/resources/db/migration/V37__1.12.sql @@ -58,3 +58,10 @@ INSERT INTO `sys_auth` (`id`, `auth_source`, `auth_source_type`, `auth_target`, INSERT INTO `sys_auth_detail` (`id`, `auth_id`, `privilege_name`, `privilege_type`, `privilege_value`, `privilege_extend`, `remark`, `create_user`, `create_time`, `update_time`, `copy_from`, `copy_id`) VALUES ('be90dc66-f5c7-11ec-bbef-0242ac130004', 'be9028cb-f5c7-11ec-bbef-0242ac130004', 'i18n_auth_grant', 15, 1, 'grant', '基础权限-授权', 'auto', 1656299878000, NULL, NULL, NULL); INSERT INTO `sys_auth_detail` (`id`, `auth_id`, `privilege_name`, `privilege_type`, `privilege_value`, `privilege_extend`, `remark`, `create_user`, `create_time`, `update_time`, `copy_from`, `copy_id`) VALUES ('be90ddbc-f5c7-11ec-bbef-0242ac130004', 'be9028cb-f5c7-11ec-bbef-0242ac130004', 'i18n_auth_manage', 3, 1, 'manage', '基础权限-管理', 'auto', 1656299878000, NULL, NULL, NULL); INSERT INTO `sys_auth_detail` (`id`, `auth_id`, `privilege_name`, `privilege_type`, `privilege_value`, `privilege_extend`, `remark`, `create_user`, `create_time`, `update_time`, `copy_from`, `copy_id`) VALUES ('be911f44-f5c7-11ec-bbef-0242ac130004', 'be9028cb-f5c7-11ec-bbef-0242ac130004', 'i18n_auth_use', 1, 1, 'use', '基础权限-使用', 'auto', 1656299878000, NULL, NULL, NULL); + +DROP TABLE IF EXISTS `sys_user_assist`; +CREATE TABLE `sys_user_assist` ( + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `need_first_noti` bit(1) DEFAULT NULL COMMENT '是否需要首登提示', + PRIMARY KEY (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; diff --git a/frontend/mock/index.js b/frontend/mock/index.js index 90e2ffe9ec..82f2c4e542 100644 --- a/frontend/mock/index.js +++ b/frontend/mock/index.js @@ -56,7 +56,6 @@ const responseFake = (url, type, respond) => { url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`), type: type || 'get', response(req, res) { - console.log('request invoke:' + req.path) res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond)) } } diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index c57748d5d9..3a6864d28e 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -36,6 +36,13 @@ export function needModifyPwd() { }) } +export function removePwdTips() { + return request({ + url: '/api/auth/removeNoti', + method: 'post' + }) +} + export function defaultPwd() { return request({ url: '/api/auth/defaultPwd', diff --git a/frontend/src/components/AssistButton/ColorButton.vue b/frontend/src/components/AssistButton/ColorButton.vue new file mode 100644 index 0000000000..c4273ce710 --- /dev/null +++ b/frontend/src/components/AssistButton/ColorButton.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/frontend/src/components/ElVisualSelect/index.vue b/frontend/src/components/ElVisualSelect/index.vue index 3799166a96..e97ac20409 100644 --- a/frontend/src/components/ElVisualSelect/index.vue +++ b/frontend/src/components/ElVisualSelect/index.vue @@ -69,12 +69,16 @@ export default { }, list() { this.resetList() - this.init() + this.$nextTick(() => { + this.init() + }) } }, mounted() { this.resetList() - this.init() + this.$nextTick(() => { + this.init() + }) }, methods: { addScrollDiv(selectDom) { @@ -101,13 +105,13 @@ export default { if (this.defaultFirst && this.list.length > 0) { this.selectValue = this.list[0].value } + if (!this.list || !this.list.length) return const selectDom = document.querySelector( `.${this.classId} .el-select-dropdown .el-select-dropdown__wrap` ) this.scrollbar = document.querySelector(`.${this.classId} .el-select-dropdown .el-scrollbar`) this.slectBoxDom = document.querySelector(`.${this.classId} .el-select-dropdown__wrap`) - if (!this.slectBoxDom || !this.slectBoxDom.style) return this.slectBoxDom.style.display = 'flex' this.slectBoxDom.style.flexDirection = 'row' this.domList = selectDom.querySelector( diff --git a/frontend/src/components/Notification/index.vue b/frontend/src/components/Notification/index.vue index fe85d4c114..61eb3c5528 100644 --- a/frontend/src/components/Notification/index.vue +++ b/frontend/src/components/Notification/index.vue @@ -94,32 +94,30 @@ export default { // 先加载消息类型 loadMsgTypes() this.queryCount() - // this.search() - // 每30s定时刷新拉取消息 - /* this.timer = setInterval(() => { - this.queryCount() - }, 30000) */ }, mounted() { - bus.$on('refresh-top-notification', () => { - if (this.visible) this.search() - else this.queryCount() - }) - - bus.$on('web-msg-topic-call', msg => { - this.count = (this.count || this.paginationConfig.total) + 1 - // this.queryCount() - // this.search() - }) + this.initEvents() }, beforeDestroy() { this.timer && clearInterval(this.timer) + bus.$off('refresh-top-notification', this.refreshTopNotification) + bus.$off('web-msg-topic-call', this.webMsgTopicCall) }, destroyed() { this.timer && clearInterval(this.timer) }, methods: { - + refreshTopNotification() { + if (this.visible) this.search() + else this.queryCount() + }, + webMsgTopicCall() { + this.count = (this.count || this.paginationConfig.total) + 1 + }, + initEvents() { + bus.$on('refresh-top-notification', this.refreshTopNotification) + bus.$on('web-msg-topic-call', this.webMsgTopicCall) + }, showDetail(row) { const param = { ...{ msgNotification: true, msgType: row.typeId, sourceParam: row.param }} this.visible = false diff --git a/frontend/src/components/canvas/components/Editor/MarkLine.vue b/frontend/src/components/canvas/components/Editor/MarkLine.vue index b3fc0e25b3..4dc67b4d43 100644 --- a/frontend/src/components/canvas/components/Editor/MarkLine.vue +++ b/frontend/src/components/canvas/components/Editor/MarkLine.vue @@ -40,10 +40,10 @@ export default { eventBus.$on('move', (isDownward, isRightward) => { this.showLine(isDownward, isRightward) }) - - eventBus.$on('unmove', () => { - this.hideLine() - }) + eventBus.$on('unmove', this.hideLine) + }, + beforeDestroy() { + eventBus.$off('unmove', this.hideLine) }, methods: { hideLine() { diff --git a/frontend/src/components/canvas/components/Editor/Preview.vue b/frontend/src/components/canvas/components/Editor/Preview.vue index 9072ff6edb..65f1bda35c 100644 --- a/frontend/src/components/canvas/components/Editor/Preview.vue +++ b/frontend/src/components/canvas/components/Editor/Preview.vue @@ -287,6 +287,7 @@ export default { erd.uninstall(this.$refs.canvasInfoTemp) erd.uninstall(this.$refs.canvasInfoMain) clearInterval(this.timer) + eventBus.$off('openChartDetailsDialog', this.openChartDetailsDialog) }, methods: { _isMobile() { @@ -411,7 +412,6 @@ export default { }) } }, 1500) - eventBus.$on('openChartDetailsDialog', this.openChartDetailsDialog) } } diff --git a/frontend/src/components/canvas/components/Editor/PreviewMobile.vue b/frontend/src/components/canvas/components/Editor/PreviewMobile.vue index 02b2b192a5..bc759a2de4 100644 --- a/frontend/src/components/canvas/components/Editor/PreviewMobile.vue +++ b/frontend/src/components/canvas/components/Editor/PreviewMobile.vue @@ -178,6 +178,7 @@ export default { _this.canvasStyleDataInit() }, beforeDestroy() { + eventBus.$off('openChartDetailsDialog', this.openChartDetailsDialog) clearInterval(this.timer) }, methods: { diff --git a/frontend/src/components/canvas/components/Editor/Shape.vue b/frontend/src/components/canvas/components/Editor/Shape.vue index 7bc1fd3ba1..e8cac6dc69 100644 --- a/frontend/src/components/canvas/components/Editor/Shape.vue +++ b/frontend/src/components/canvas/components/Editor/Shape.vue @@ -94,13 +94,17 @@ export default { } this.element.type === 'custom' && (this.pointList = ['l', 'r']) - eventBus.$on('runAnimation', () => { + eventBus.$on('runAnimation', this.runAnimation) + }, + beforeDestroy() { + eventBus.$off('runAnimation', this.runAnimation) + }, + methods: { + runAnimation() { if (this.element === this.curComponent) { runAnimation(this.$el, this.curComponent.animations) } - }) - }, - methods: { + }, // 鼠标移入事件 enter() { this.mouseOn = true diff --git a/frontend/src/components/canvas/components/Editor/index.vue b/frontend/src/components/canvas/components/Editor/index.vue index 853bf428f8..4296e4d690 100644 --- a/frontend/src/components/canvas/components/Editor/index.vue +++ b/frontend/src/components/canvas/components/Editor/index.vue @@ -1051,9 +1051,7 @@ export default { // 获取编辑器元素 this.$store.commit('getEditor') const _this = this - eventBus.$on('hideArea', () => { - this.hideArea() - }) + eventBus.$on('hideArea', this.hideArea) eventBus.$on('startMoveIn', this.startMoveIn) eventBus.$on('openChartDetailsDialog', this.openChartDetailsDialog) bus.$on('onRemoveLastItem', this.removeLastItem) @@ -1065,6 +1063,12 @@ export default { }, 500) } }, + beforeDestroy() { + eventBus.$off('hideArea', this.hideArea) + eventBus.$off('startMoveIn', this.startMoveIn) + eventBus.$off('openChartDetailsDialog', this.openChartDetailsDialog) + bus.$off('onRemoveLastItem', this.removeLastItem) + }, created() { }, methods: { diff --git a/frontend/src/components/canvas/components/Toolbar.vue b/frontend/src/components/canvas/components/Toolbar.vue index 26b0361302..087bfdd9a9 100644 --- a/frontend/src/components/canvas/components/Toolbar.vue +++ b/frontend/src/components/canvas/components/Toolbar.vue @@ -202,6 +202,11 @@ export default { this.mobileLayoutInitStatus = this.mobileLayoutStatus this.showGridSwitch = this.canvasStyleData.aidedDesign.showGrid }, + beforeDestroy() { + eventBus.$off('preview', this.preview) + eventBus.$off('save', this.save) + eventBus.$off('clearCanvas', this.clearCanvas) + }, methods: { close() { // 关闭页面清理缓存 @@ -734,4 +739,8 @@ export default { .el-dropdown-menu__item{ line-height: 32px; } + +::v-deep .el-radio-button__inner{ +padding:7px 7px +} diff --git a/frontend/src/components/canvas/custom-component/DeFrame.vue b/frontend/src/components/canvas/custom-component/DeFrame.vue index db2dc4ec31..8db2bed8b4 100644 --- a/frontend/src/components/canvas/custom-component/DeFrame.vue +++ b/frontend/src/components/canvas/custom-component/DeFrame.vue @@ -67,14 +67,18 @@ export default { created() { }, mounted() { - bus.$on('frameLinksChange-' + this.element.id, () => { + bus.$on('frameLinksChange-' + this.element.id, this.frameLinksChange) + }, + beforeDestroy() { + bus.$off('frameLinksChange-' + this.element.id, this.frameLinksChange) + }, + methods: { + frameLinksChange() { this.frameShow = false this.$nextTick(() => { this.frameShow = true }) - }) - }, - methods: { + }, loaded(e) { }, onError(e) { @@ -91,7 +95,7 @@ export default { display: flex; align-items: center; justify-content: center; - background-color: #FFFFFF; + background-color: rgba(255,255,255,0.3); font-size: 12px; color: #9ea6b2; } diff --git a/frontend/src/components/canvas/custom-component/DeStreamMedia.vue b/frontend/src/components/canvas/custom-component/DeStreamMedia.vue index ca721e004d..48c8b2633f 100644 --- a/frontend/src/components/canvas/custom-component/DeStreamMedia.vue +++ b/frontend/src/components/canvas/custom-component/DeStreamMedia.vue @@ -84,7 +84,14 @@ export default { }, mounted() { this.initOption() - bus.$on('streamMediaLinksChange-' + this.element.id, () => { + bus.$on('streamMediaLinksChange-' + this.element.id, this.streamMediaLinksChange) + }, + beforeDestroy() { + bus.$off('streamMediaLinksChange-' + this.element.id, this.streamMediaLinksChange) + this.destroyPlayer() + }, + methods: { + streamMediaLinksChange() { this.pOption = this.element.streamMediaLinks[this.element.streamMediaLinks.videoType] this.flvPlayer = null this.videoShow = false @@ -92,12 +99,7 @@ export default { this.videoShow = true this.initOption() }) - }) - }, - beforeDestroy() { - this.destroyPlayer() - }, - methods: { + }, initOption() { if (flvjs.isSupported() && this.pOption.url) { this.destroyPlayer() @@ -139,7 +141,7 @@ export default { display: flex; align-items: center; justify-content: center; - background-color: beige; + background-color: rgba(245, 245, 220, 0.3); font-size: 12px; color: #000000; } diff --git a/frontend/src/components/canvas/custom-component/DeVideo.vue b/frontend/src/components/canvas/custom-component/DeVideo.vue index da7590ecb2..40f705ce53 100644 --- a/frontend/src/components/canvas/custom-component/DeVideo.vue +++ b/frontend/src/components/canvas/custom-component/DeVideo.vue @@ -90,15 +90,19 @@ export default { this.initOption() }, mounted() { - bus.$on('videoLinksChange-' + this.element.id, () => { + bus.$on('videoLinksChange-' + this.element.id, this.videoLinksChange) + }, + beforeDestroy() { + bus.$off('videoLinksChange-' + this.element.id, this.videoLinksChange) + }, + methods: { + videoLinksChange() { this.showVideo = false this.$nextTick(() => { this.showVideo = true this.initOption() }) - }) - }, - methods: { + }, initOption() { this.pOption = this.element.videoLinks[this.element.videoLinks.videoType] this.pOption.height = this.h - (this.curGap * 2) @@ -135,7 +139,7 @@ export default { display: flex; align-items: center; justify-content: center; - background-color: #FFFFFF; + background-color: rgba(255,255,255,0.3); font-size: 12px; color: #9ea6b2; } diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index 3075c9402e..202080869b 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -404,6 +404,17 @@ export default { this.bindPluginEvent() }, + beforeDestroy() { + bus.$off('plugin-chart-click', this.pluginChartClick) + bus.$off('plugin-jump-click', this.pluginJumpClick) + bus.$off('plugin-add-view-track-filter', this.pluginAddViewTrackFilter) + bus.$off('view-in-cache', this.viewInCache) + bus.$off('batch-opt-change', this.batchOptChange) + bus.$off('onSubjectChange', this.optFromBatchThemeChange) + bus.$off('onThemeColorChange', this.optFromBatchThemeChange) + bus.$off('onThemeAttrChange', this.optFromBatchSingleProp) + bus.$off('clear_panel_linkage', this.clearPanelLinkage) + }, created() { this.refId = uuid.v1 if (this.element && this.element.propValue && this.element.propValue.viewId) { @@ -441,7 +452,7 @@ export default { this.$store.commit('recordViewEdit', { viewId: this.chart.id, hasEdit: true }) this.mergeScale() }, - optFromBatchThemeChange(changeType) { + optFromBatchThemeChange() { const updateParams = { 'id': this.chart.id } const sourceCustomAttr = JSON.parse(this.sourceCustomAttrStr) const sourceCustomStyle = JSON.parse(this.sourceCustomStyleStr) @@ -467,38 +478,34 @@ export default { : this.$refs[this.element.propValue.id].chartResize() } }, - bindPluginEvent() { - bus.$on('plugin-chart-click', param => { - param.viewId && param.viewId === this.element.propValue.viewId && this.chartClick(param) - }) - bus.$on('plugin-jump-click', param => { - param.viewId && param.viewId === this.element.propValue.viewId && this.jumpClick(param) - }) - bus.$on('plugin-add-view-track-filter', param => { - param.viewId && param.viewId === this.element.propValue.viewId && this.addViewTrackFilter(param) - }) - bus.$on('view-in-cache', param => { - param.viewId && param.viewId === this.element.propValue.viewId && this.getDataEdit(param) - }) - bus.$on('batch-opt-change', param => { - this.batchOptChange(param) - }) - bus.$on('onSubjectChange', () => { - this.optFromBatchThemeChange('subject') - }) - bus.$on('onThemeColorChange', () => { - this.optFromBatchThemeChange('themeColor') - }) - bus.$on('onThemeAttrChange', (param) => { - this.optFromBatchSingleProp(param) - }) - bus.$on('clear_panel_linkage', (param) => { - if (param.viewId === 'all' || param.viewId === this.element.propValue.viewId) { - this.$refs[this.element.propValue.id].reDrawView() - } - }) + pluginChartClick(param) { + param.viewId && param.viewId === this.element.propValue.viewId && this.chartClick(param) + }, + pluginJumpClick(param) { + param.viewId && param.viewId === this.element.propValue.viewId && this.jumpClick(param) + }, + pluginAddViewTrackFilter(param) { + param.viewId && param.viewId === this.element.propValue.viewId && this.addViewTrackFilter(param) + }, + viewInCache(param) { + param.viewId && param.viewId === this.element.propValue.viewId && this.getDataEdit(param) + }, + clearPanelLinkage(param) { + if (param.viewId === 'all' || param.viewId === this.element.propValue.viewId) { + this.$refs[this.element.propValue.id].reDrawView() + } + }, + bindPluginEvent() { + bus.$on('plugin-chart-click', this.pluginChartClick) + bus.$on('plugin-jump-click', this.pluginJumpClick) + bus.$on('plugin-add-view-track-filter', this.pluginAddViewTrackFilter) + bus.$on('view-in-cache', this.viewInCache) + bus.$on('batch-opt-change', this.batchOptChange) + bus.$on('onSubjectChange', this.optFromBatchThemeChange) + bus.$on('onThemeColorChange', this.optFromBatchThemeChange) + bus.$on('onThemeAttrChange', this.optFromBatchSingleProp) + bus.$on('clear_panel_linkage', this.clearPanelLinkage) }, - addViewTrackFilter(linkageParam) { this.$store.commit('addViewTrackFilter', linkageParam) }, diff --git a/frontend/src/components/canvas/utils/style.js b/frontend/src/components/canvas/utils/style.js index 88e7defa3e..99c9c236a1 100644 --- a/frontend/src/components/canvas/utils/style.js +++ b/frontend/src/components/canvas/utils/style.js @@ -1,5 +1,6 @@ import { sin, cos } from '@/components/canvas/utils/translate' import store from '@/store' +import { colorReverse } from '@/components/canvas/utils/utils' export const LIGHT_THEME_COLOR_MAIN = '#000000' export const LIGHT_THEME_COLOR_SLAVE1 = '#CCCCCC' @@ -257,6 +258,10 @@ export const THEME_ATTR_TRANS_MAIN = { } } +export const THEME_ATTR_TRANS_SLAVE1_BACKGROUND = { + 'tooltip': ['backgroundColor'] +} + // 移动端特殊属性 export const mobileSpecialProps = { 'lineWidth': 3, // 线宽固定值 @@ -325,10 +330,12 @@ export function adaptCurTheme(customStyle, customAttr) { recursionThemTransObj(THEME_STYLE_TRANS_MAIN, customStyle, LIGHT_THEME_COLOR_MAIN) recursionThemTransObj(THEME_STYLE_TRANS_SLAVE1, customStyle, LIGHT_THEME_COLOR_SLAVE1) recursionThemTransObj(THEME_ATTR_TRANS_MAIN, customAttr, LIGHT_THEME_COLOR_MAIN) + recursionThemTransObj(THEME_ATTR_TRANS_SLAVE1_BACKGROUND, customAttr, LIGHT_THEME_COMPONENT_BACKGROUND) } else { recursionThemTransObj(THEME_STYLE_TRANS_MAIN, customStyle, DARK_THEME_COLOR_MAIN) recursionThemTransObj(THEME_STYLE_TRANS_SLAVE1, customStyle, DARK_THEME_COLOR_SLAVE1) recursionThemTransObj(THEME_ATTR_TRANS_MAIN, customAttr, DARK_THEME_COLOR_MAIN) + recursionThemTransObj(THEME_ATTR_TRANS_SLAVE1_BACKGROUND, customAttr, DARK_THEME_COMPONENT_BACKGROUND) } customAttr['color'] = { ...canvasStyle.chartInfo.chartColor } customStyle['text'] = { ...canvasStyle.chartInfo.chartTitle, title: customStyle['text']['title'] } @@ -347,6 +354,14 @@ export function adaptCurThemeCommonStyle(component) { for (const styleKey in filterStyle) { component.style[styleKey] = filterStyle[styleKey] } + } else { + if (component.style.color) { + if (store.state.canvasStyleData.panel.themeColor === 'light') { + component.style.color = LIGHT_THEME_COLOR_MAIN + } else { + component.style.color = DARK_THEME_COLOR_MAIN + } + } } return component } @@ -366,7 +381,6 @@ export function adaptCurThemeFilterStyleAll(styleKey) { item.style[styleKey] = filterStyle[styleKey] } }) - console.log('componentData=' + JSON.stringify(componentData)) } export function isFilterComponent(component) { diff --git a/frontend/src/components/canvas/utils/utils.js b/frontend/src/components/canvas/utils/utils.js index a251c94adb..b9d25c17a9 100644 --- a/frontend/src/components/canvas/utils/utils.js +++ b/frontend/src/components/canvas/utils/utils.js @@ -1,5 +1,5 @@ import { - BASE_MOBILE_STYLE, COMMON_BACKGROUND, COMMON_BACKGROUND_NONE, + BASE_MOBILE_STYLE, COMMON_BACKGROUND_NONE, HYPERLINKS } from '@/components/canvas/custom-component/component-list' @@ -174,7 +174,6 @@ export function checkViewTitle(opt, id, tile) { return false } } catch (e) { - console.log('checkViewTitle error', e) return false } } @@ -205,3 +204,9 @@ export function dataURLToBlob(dataurl) { // ie 图片转格式 } return new Blob([u8arr], { type: mime }) } + +export function colorReverse(OldColorValue) { + OldColorValue = '0x' + OldColorValue.replace(/#/g, '') + const str = '000000' + (0xFFFFFF - OldColorValue).toString(16) + return '#' + str.substring(str.length - 6, str.length) +} diff --git a/frontend/src/components/widget/DeWidget/DeDate.vue b/frontend/src/components/widget/DeWidget/DeDate.vue index 83934b8679..7864ba6992 100644 --- a/frontend/src/components/widget/DeWidget/DeDate.vue +++ b/frontend/src/components/widget/DeWidget/DeDate.vue @@ -112,12 +112,20 @@ export default { } }, mounted() { - bus.$on('onScroll', () => { + bus.$on('onScroll', this.onScroll) + bus.$on('reset-default-value', this.resetDefaultValue) + }, + beforeDestroy() { + bus.$off('onScroll', this.onScroll) + bus.$off('reset-default-value', this.resetDefaultValue) + }, + methods: { + onScroll() { if (this.onFocus) { this.$refs.dateRef.hidePicker() } - }) - bus.$on('reset-default-value', id => { + }, + resetDefaultValue(id) { if (this.inDraw && this.manualModify && this.element.id === id) { if (!this.element.options.attrs.default.isDynamic) { this.values = this.fillValueDerfault() @@ -128,12 +136,7 @@ export default { this.values = widget.dynamicDateFormNow(this.element) this.dateChange(this.values) } - }) - }, - beforeDestroy() { - bus.$off('reset-default-value') - }, - methods: { + }, onBlur() { this.onFocus = false }, diff --git a/frontend/src/components/widget/DeWidget/DeInputSearch.vue b/frontend/src/components/widget/DeWidget/DeInputSearch.vue index da83bef29e..063fca3a2b 100644 --- a/frontend/src/components/widget/DeWidget/DeInputSearch.vue +++ b/frontend/src/components/widget/DeWidget/DeInputSearch.vue @@ -71,17 +71,18 @@ export default { } }, mounted() { - bus.$on('reset-default-value', id => { + bus.$on('reset-default-value', this.resetDefaultValue) + }, + beforeDestroy() { + bus.$off('reset-default-value', this.resetDefaultValue) + }, + methods: { + resetDefaultValue(id) { if (this.inDraw && this.manualModify && this.element.id === id) { this.value = this.fillValueDerfault() this.search() } - }) - }, - beforeDestroy() { - bus.$off('reset-default-value') - }, - methods: { + }, search() { if (!this.inDraw) { this.element.options.value = this.value diff --git a/frontend/src/components/widget/DeWidget/DeNumberRange.vue b/frontend/src/components/widget/DeWidget/DeNumberRange.vue index 6a5a5a34b4..1d286c6161 100644 --- a/frontend/src/components/widget/DeWidget/DeNumberRange.vue +++ b/frontend/src/components/widget/DeWidget/DeNumberRange.vue @@ -104,7 +104,13 @@ export default { } }, mounted() { - bus.$on('reset-default-value', id => { + bus.$on('reset-default-value', this.resetDefaultValue) + }, + beforeDestroy() { + bus.$off('reset-default-value', this.resetDefaultValue) + }, + methods: { + resetDefaultValue(id) { if (this.inDraw && this.manualModify && this.element.id === id) { const values = this.element.options.value this.form.min = values[0] @@ -113,12 +119,7 @@ export default { } this.search() } - }) - }, - beforeDestroy() { - bus.$off('reset-default-value') - }, - methods: { + }, searchWithKey(index) { this.timeMachine = setTimeout(() => { if (index === this.changeIndex) { diff --git a/frontend/src/components/widget/DeWidget/DeSelect.vue b/frontend/src/components/widget/DeWidget/DeSelect.vue index 1cbdf5a8da..3d8edb3d8e 100644 --- a/frontend/src/components/widget/DeWidget/DeSelect.vue +++ b/frontend/src/components/widget/DeWidget/DeSelect.vue @@ -36,6 +36,7 @@ import ElVisualSelect from '@/components/ElVisualSelect' import { multFieldValues, linkMultFieldValues } from '@/api/dataset/dataset' import bus from '@/utils/bus' +import { isSameVueObj } from '@/utils' import { getLinkToken, getToken } from '@/utils/auth' import customInput from '@/components/widget/DeWidget/customInput' import { textSelectWidget } from '@/components/widget/DeWidget/serviceNameFn.js' @@ -143,7 +144,9 @@ export default { }) }, 'element.options.attrs.sort': function(value, old) { - if (value === null || typeof value === 'undefined' || value === old) return + if (value === null || typeof value === 'undefined' || value === old || isSameVueObj(value, old)) return + this.show = false + this.datas = [] let method = multFieldValues @@ -160,34 +163,45 @@ export default { this.element.options.attrs.fieldId.length > 0 && method(param).then(res => { this.datas = this.optionDatas(res.data) + this.$nextTick(() => { + this.show = true + this.handleCoustomStyle() + }) }) || (this.element.options.value = '') } }, created() { + if (this.element && this.element.options && this.element.options.attrs) { + this.element.options.attrs.visual = true + } + if (!this.element.options.attrs.sort) { this.element.options.attrs.sort = {} } this.initLoad() }, + mounted() { - bus.$on('onScroll', () => { + bus.$on('onScroll', this.onScroll) + bus.$on('reset-default-value', this.resetDefaultValue) + }, + beforeDestroy() { + bus.$off('onScroll', this.onScroll) + bus.$off('reset-default-value', this.resetDefaultValue) + }, + methods: { + onScroll() { if (this.onFocus) { this.$refs.deSelect.blur() } - }) - bus.$on('reset-default-value', id => { + }, + resetDefaultValue(id) { if (this.inDraw && this.manualModify && this.element.id === id) { this.value = this.fillValueDerfault() this.changeValue(this.value) } - }) - }, - beforeDestroy() { - bus.$off('reset-default-value') - }, - - methods: { + }, onBlur() { this.onFocus = false }, diff --git a/frontend/src/components/widget/DeWidget/DeSelectGrid.vue b/frontend/src/components/widget/DeWidget/DeSelectGrid.vue index 5a66ed6150..65097931d5 100644 --- a/frontend/src/components/widget/DeWidget/DeSelectGrid.vue +++ b/frontend/src/components/widget/DeWidget/DeSelectGrid.vue @@ -40,6 +40,7 @@ import { multFieldValues, linkMultFieldValues } from '@/api/dataset/dataset' import { getLinkToken, getToken } from '@/utils/auth' import bus from '@/utils/bus' +import { isSameVueObj } from '@/utils' import { attrsMap, styleAttrs, textSelectGridWidget } from '@/components/widget/DeWidget/serviceNameFn.js' export default { @@ -144,7 +145,7 @@ export default { }) || (this.element.options.value = '') }, 'element.options.attrs.multiple': function(value, old) { - if (typeof old === 'undefined' || value === old) return + if (typeof old === 'undefined' || value === old || isSameVueObj(value, old)) return if (!this.inDraw) { this.value = value ? [] : null this.element.options.value = '' @@ -199,7 +200,13 @@ export default { this.initLoad() }, mounted() { - bus.$on('reset-default-value', id => { + bus.$on('reset-default-value', this.resetDefaultValue) + }, + beforeDestroy() { + bus.$off('reset-default-value', this.resetDefaultValue) + }, + methods: { + resetDefaultValue(id) { if (this.inDraw && this.manualModify && this.element.id === id) { this.value = this.fillValueDerfault() this.changeValue(this.value) @@ -209,13 +216,7 @@ export default { this.isIndeterminate = this.value.length > 0 && this.value.length < this.datas.length } } - }) - }, - beforeDestroy() { - bus.$off('reset-default-value') - }, - - methods: { + }, changeInputStyle() { if (!this.$parent.handlerInputStyle) return this.$nextTick(() => { diff --git a/frontend/src/components/widget/DeWidget/DeSelectTree.vue b/frontend/src/components/widget/DeWidget/DeSelectTree.vue index 6907204013..a53c0deaff 100644 --- a/frontend/src/components/widget/DeWidget/DeSelectTree.vue +++ b/frontend/src/components/widget/DeWidget/DeSelectTree.vue @@ -24,6 +24,7 @@ diff --git a/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue b/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue index 81dbec9c25..5faaf2d375 100644 --- a/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue +++ b/frontend/src/views/panel/SubjectSetting/PreSubject/SubjectTemplateItem.vue @@ -1,42 +1,78 @@