diff --git a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java index 92aa75c7ab..5e7b31d617 100644 --- a/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java +++ b/backend/src/main/java/io/dataease/auth/service/impl/AuthUserServiceImpl.java @@ -59,8 +59,13 @@ public class AuthUserServiceImpl implements AuthUserService { @Cacheable(value = AuthConstants.USER_PERMISSION_CACHE_NAME, key = "'user' + #userId" ) @Override public List permissions(Long userId){ - // 用户登录获取菜单权限时同时更新插件菜单表 - dynamicMenuService.syncPluginMenu(); + try { + // 用户登录获取菜单权限时同时更新插件菜单表 + dynamicMenuService.syncPluginMenu(); + }catch (Exception e){ + LogUtil.error(e); + //ignore + } List permissions; SysUser sysUser = sysUserMapper.selectByPrimaryKey(userId); if(sysUser.getIsAdmin()!=null&&sysUser.getIsAdmin()){ diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index 87e218c4ba..861227ceea 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.ArrayList; @@ -69,6 +70,7 @@ public class PanelGroupService { return result; } + @Transactional public PanelGroup saveOrUpdate(PanelGroupRequest request) { String panelId = request.getId(); if (StringUtils.isEmpty(panelId)) { @@ -90,6 +92,7 @@ public class PanelGroupService { newDefaultPanel.setPid(PanelConstants.PANEL_GATHER_DEFAULT_PANEL); newDefaultPanel.setLevel(0); newDefaultPanel.setSource(request.getId()); + newDefaultPanel.setCreateBy(AuthUtils.getUser().getUsername()); checkPanelName(newDefaultPanel.getName(), newDefaultPanel.getPid(), PanelConstants.OPT_TYPE_INSERT, newDefaultPanel.getId()); panelGroupMapper.insertSelective(newDefaultPanel); } else { @@ -105,6 +108,9 @@ public class PanelGroupService { authRequest.setId(panelId); authRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId())); List panelGroupDTOList = extPanelGroupMapper.panelGroupList(authRequest); + if(CollectionUtils.isNotEmpty(panelGroupDTOList)){ + DataEaseException.throwException("未查询到用户对应的资源权限,请尝试刷新重新保存"); + } return panelGroupDTOList.get(0); } diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index 0952760757..3240d4bf56 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -195,6 +195,9 @@ module.exports = { 'object-curly-spacing': [2, 'always', { objectsInObjects: false }], - 'array-bracket-spacing': [2, 'never'] + 'array-bracket-spacing': [2, 'never'], + "vue/no-use-v-if-with-v-for": ["error", { + "allowUsingIterationVar": true + }] } } diff --git a/frontend/src/components/DeDrag/index.vue b/frontend/src/components/DeDrag/index.vue index a1721d5884..9b1ad5959f 100644 --- a/frontend/src/components/DeDrag/index.vue +++ b/frontend/src/components/DeDrag/index.vue @@ -20,14 +20,14 @@ @mouseleave="leave" >
- +
@@ -282,14 +282,17 @@ export default { type: String, default: 'mouseOn' }, + // eslint-disable-next-line vue/require-default-prop element: { require: true, type: Object }, + // eslint-disable-next-line vue/require-default-prop defaultStyle: { require: true, type: Object }, + // eslint-disable-next-line vue/require-default-prop index: { require: true, type: [Number, String] @@ -299,6 +302,7 @@ export default { type: Boolean, default: true }, + // eslint-disable-next-line vue/require-default-prop changeStyle: { require: true, type: Object @@ -911,6 +915,7 @@ export default { }, // 外部传参改动x moveHorizontally(val) { + // eslint-disable-next-line no-unused-vars const [deltaX, _] = snapToGrid(this.grid, val, this.top, this.scale) const left = restrictToBounds(deltaX, this.bounds.minLeft, this.bounds.maxLeft) this.left = left @@ -918,6 +923,7 @@ export default { }, // 外部传参改动y moveVertically(val) { + // eslint-disable-next-line no-unused-vars const [_, deltaY] = snapToGrid(this.grid, this.left, val, this.scale) const top = restrictToBounds(deltaY, this.bounds.minTop, this.bounds.maxTop) this.top = top @@ -926,6 +932,7 @@ export default { // 控制柄移动 handleResize(e) { const handle = this.handle + // eslint-disable-next-line no-unused-vars const scaleRatio = this.scaleRatio const { TL, TR, BL, BR } = this let { x: mouseX, y: mouseY } = this.getMouseCoordinate(e) @@ -1085,6 +1092,7 @@ export default { changeWidth(val) { // console.log('parentWidth', this.parentWidth) // console.log('parentHeight', this.parentHeight) + // eslint-disable-next-line no-unused-vars const [newWidth, _] = snapToGrid(this.grid, val, 0, this.scale) // const right = restrictToBounds(this.parentWidth - newWidth - this.left, this.bounds.minRight, this.bounds.maxRight) // private 将 this.bounds.minRight 设置为0 @@ -1102,6 +1110,7 @@ export default { this.height = height }, changeHeight(val) { + // eslint-disable-next-line no-unused-vars const [_, newHeight] = snapToGrid(this.grid, 0, val, this.scale) // const bottom = restrictToBounds(this.parentHeight - newHeight - this.top, this.bounds.minBottom, this.bounds.maxBottom) // private 将 this.bounds.minBottom 设置为0 @@ -1418,6 +1427,7 @@ export default { }, // 修复 正则获取left与top formatTransformVal(string) { + // eslint-disable-next-line prefer-const let [left, top, rotate = 0] = string.match(/[\d|\.]+/g) if (top === undefined) top = 0 return [Number(left), Number(top), rotate] diff --git a/frontend/src/components/business/condition-table/DeComplexInput.vue b/frontend/src/components/business/condition-table/DeComplexInput.vue index 9ff39ac3bf..8108de7c9f 100644 --- a/frontend/src/components/business/condition-table/DeComplexInput.vue +++ b/frontend/src/components/business/condition-table/DeComplexInput.vue @@ -14,7 +14,9 @@ export default { components: { DeComplexOperator }, // mixins: [mixins], props: { + // eslint-disable-next-line vue/require-default-prop field: String, + // eslint-disable-next-line vue/require-default-prop label: String, defaultOperator: { type: String, diff --git a/frontend/src/components/business/condition-table/DeComplexOperator.vue b/frontend/src/components/business/condition-table/DeComplexOperator.vue index 1feec41b1d..e0b57b5f22 100644 --- a/frontend/src/components/business/condition-table/DeComplexOperator.vue +++ b/frontend/src/components/business/condition-table/DeComplexOperator.vue @@ -30,8 +30,11 @@ export default { event: 'change' }, props: { + // eslint-disable-next-line vue/require-default-prop label: String, + // eslint-disable-next-line vue/require-default-prop operator: String, + // eslint-disable-next-line vue/require-default-prop operators: Array }, data() { diff --git a/frontend/src/components/canvas/components/Editor/Area.vue b/frontend/src/components/canvas/components/Editor/Area.vue index c9d5efb1a7..53757c6a88 100644 --- a/frontend/src/components/canvas/components/Editor/Area.vue +++ b/frontend/src/components/canvas/components/Editor/Area.vue @@ -14,13 +14,16 @@ export default { props: { start: { - type: Object + type: Object, + default: null }, width: { - type: Number + type: Number, + default: null }, height: { - type: Number + type: Number, + default: null } } } diff --git a/frontend/src/components/canvas/components/Editor/Grid.vue b/frontend/src/components/canvas/components/Editor/Grid.vue index a12b6d9313..b36818f34d 100644 --- a/frontend/src/components/canvas/components/Editor/Grid.vue +++ b/frontend/src/components/canvas/components/Editor/Grid.vue @@ -27,6 +27,7 @@ export default { props: { + // eslint-disable-next-line vue/require-default-prop matrixStyle: { type: Object } diff --git a/frontend/src/components/canvas/custom-component/Group.vue b/frontend/src/components/canvas/custom-component/Group.vue index 96fc1d7688..ada3e0b8d9 100644 --- a/frontend/src/components/canvas/custom-component/Group.vue +++ b/frontend/src/components/canvas/custom-component/Group.vue @@ -25,6 +25,7 @@ export default { type: Array, default: () => [] }, + // eslint-disable-next-line vue/require-default-prop element: { type: Object } diff --git a/frontend/src/components/canvas/custom-component/Picture.vue b/frontend/src/components/canvas/custom-component/Picture.vue index a30b20d78c..4a05a88fe6 100644 --- a/frontend/src/components/canvas/custom-component/Picture.vue +++ b/frontend/src/components/canvas/custom-component/Picture.vue @@ -7,6 +7,7 @@