diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.java index ed8b1fb88f..9ce1f02393 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.java @@ -2,6 +2,8 @@ package io.dataease.base.mapper.ext; import io.dataease.base.domain.PanelShare; import io.dataease.base.mapper.ext.query.GridExample; +import io.dataease.controller.request.panel.PanelShareRemoveRequest; +import io.dataease.dto.panel.PanelShareOutDTO; import io.dataease.dto.panel.PanelSharePo; import org.apache.ibatis.annotations.Param; @@ -20,6 +22,10 @@ public interface ExtPanelShareMapper { List queryWithResource(GridExample example); + List queryTargets(String panelId); + + void removeShares(@Param("request") PanelShareRemoveRequest request); + List queryUserIdWithRoleIds(Map> param); List queryUserIdWithDeptIds(Map> param); diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.xml index a839281d00..d21efce40f 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelShareMapper.xml @@ -8,6 +8,15 @@ + + + + + + + + + INSERT INTO panel_share (panel_group_id,target_id,granter,create_time,type) VALUES @@ -61,6 +70,26 @@ + + + + + delete from panel_share + where panel_group_id = #{request.panelId} + + and share_id = #{request.shareId} + + + diff --git a/backend/src/main/java/io/dataease/controller/panel/api/ShareApi.java b/backend/src/main/java/io/dataease/controller/panel/api/ShareApi.java index 28cd214bed..56fcf31b51 100644 --- a/backend/src/main/java/io/dataease/controller/panel/api/ShareApi.java +++ b/backend/src/main/java/io/dataease/controller/panel/api/ShareApi.java @@ -3,12 +3,16 @@ package io.dataease.controller.panel.api; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.base.domain.PanelShare; import io.dataease.controller.request.panel.PanelShareFineDto; +import io.dataease.controller.request.panel.PanelShareRemoveRequest; import io.dataease.controller.request.panel.PanelShareRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.dto.panel.PanelShareDto; +import io.dataease.dto.panel.PanelShareOutDTO; import io.dataease.dto.panel.PanelSharePo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import springfox.documentation.annotations.ApiIgnore; @@ -41,9 +45,20 @@ public interface ShareApi { @PostMapping("/queryWithResourceId") List queryWithResourceId(BaseGridRequest request); + @ApiOperation("查询分享目标") + @PostMapping("/queryTargets/{panelId}") + @ApiImplicitParam(paramType = "path", value = "仪表板ID", name = "panelId", required = true, dataType = "String") + List queryTargets(@PathVariable("panelId") String panelId); + @ApiOperation("创建分享") @PostMapping("/fineSave") void fineSave(PanelShareFineDto panelShareFineDto); + + + @ApiOperation("删除分享") + @PostMapping("/removeShares") + void removeShares(PanelShareRemoveRequest request); + } diff --git a/backend/src/main/java/io/dataease/controller/panel/server/ShareServer.java b/backend/src/main/java/io/dataease/controller/panel/server/ShareServer.java index 7b747c4db3..abb4b521a9 100644 --- a/backend/src/main/java/io/dataease/controller/panel/server/ShareServer.java +++ b/backend/src/main/java/io/dataease/controller/panel/server/ShareServer.java @@ -3,11 +3,14 @@ package io.dataease.controller.panel.server; import io.dataease.base.domain.PanelShare; import io.dataease.controller.panel.api.ShareApi; import io.dataease.controller.request.panel.PanelShareFineDto; +import io.dataease.controller.request.panel.PanelShareRemoveRequest; import io.dataease.controller.request.panel.PanelShareRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.dto.panel.PanelShareDto; +import io.dataease.dto.panel.PanelShareOutDTO; import io.dataease.dto.panel.PanelSharePo; import io.dataease.service.panel.ShareService; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -39,10 +42,20 @@ public class ShareServer implements ShareApi { return shareService.queryWithResource(request); } + @Override + public List queryTargets(@PathVariable("panelId") String panelId) { + return shareService.queryTargets(panelId); + } + @Override public void fineSave(@RequestBody PanelShareFineDto panelShareFineDto) { shareService.fineSave(panelShareFineDto); } + + @Override + public void removeShares(@RequestBody PanelShareRemoveRequest request) { + shareService.removeShares(request); + } } diff --git a/backend/src/main/java/io/dataease/controller/request/panel/PanelShareRemoveRequest.java b/backend/src/main/java/io/dataease/controller/request/panel/PanelShareRemoveRequest.java new file mode 100644 index 0000000000..595b194ec2 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/request/panel/PanelShareRemoveRequest.java @@ -0,0 +1,18 @@ +package io.dataease.controller.request.panel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("取消分享参数") +public class PanelShareRemoveRequest implements Serializable { + + @ApiModelProperty("仪表板ID") + private String panelId; + + @ApiModelProperty("分享ID") + private String shareId; +} diff --git a/backend/src/main/java/io/dataease/dto/panel/PanelShareOutDTO.java b/backend/src/main/java/io/dataease/dto/panel/PanelShareOutDTO.java new file mode 100644 index 0000000000..5def152616 --- /dev/null +++ b/backend/src/main/java/io/dataease/dto/panel/PanelShareOutDTO.java @@ -0,0 +1,30 @@ +package io.dataease.dto.panel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel("仪表板分享目标") +@Data +public class PanelShareOutDTO implements Serializable { + + @ApiModelProperty("仪表板ID") + private String panelId; + + @ApiModelProperty("分享ID") + private Long shareId; + + @ApiModelProperty("分享类型{0:用户,1:角色,2:组织}") + private int type; + + @ApiModelProperty("目标ID") + private String targetId; + + @ApiModelProperty("目标名称") + private String targetName; + + @ApiModelProperty("分享时间") + private Long createTime; +} diff --git a/backend/src/main/java/io/dataease/service/panel/ShareService.java b/backend/src/main/java/io/dataease/service/panel/ShareService.java index cf7421af15..fa2a81db86 100644 --- a/backend/src/main/java/io/dataease/service/panel/ShareService.java +++ b/backend/src/main/java/io/dataease/service/panel/ShareService.java @@ -15,9 +15,11 @@ import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.CommonBeanFactory; import io.dataease.controller.request.panel.PanelShareFineDto; +import io.dataease.controller.request.panel.PanelShareRemoveRequest; import io.dataease.controller.request.panel.PanelShareRequest; import io.dataease.controller.sys.base.BaseGridRequest; import io.dataease.dto.panel.PanelShareDto; +import io.dataease.dto.panel.PanelShareOutDTO; import io.dataease.dto.panel.PanelSharePo; import io.dataease.service.message.DeMsgutil; import lombok.Data; @@ -345,5 +347,13 @@ public class ShareService { return extPanelShareMapper.queryWithResource(example); } + public List queryTargets(String panelId) { + return extPanelShareMapper.queryTargets(panelId); + } + + + public void removeShares(PanelShareRemoveRequest removeRequest) { + extPanelShareMapper.removeShares(removeRequest); + } } diff --git a/frontend/src/api/panel/share.js b/frontend/src/api/panel/share.js index 6e515bcd4b..4382805c70 100644 --- a/frontend/src/api/panel/share.js +++ b/frontend/src/api/panel/share.js @@ -9,6 +9,23 @@ import request from '@/utils/request' }) } */ +export function shareTargets(panelId) { + return request({ + url: '/api/share/queryTargets/' + panelId, + method: 'post', + loading: true + }) +} + +export function removeShares(data) { + return request({ + url: '/api/share/removeShares/', + method: 'post', + loading: true, + data + }) +} + export function loadShares(data) { return request({ url: '/api/share/queryWithResourceId', diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index e82c093d1d..a6b3f5b8b8 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1225,6 +1225,15 @@ export default { link_expire: 'Link is expire', link_share_desc: 'After opening the link, anyone can access the dashboard through this link.', share: 'Share', + remove_share_confirm: 'Sure removel All share ?', + share_in: 'Share in', + share_out: 'Share out', + who_share: 'Who share', + when_share: 'When share', + share_to: 'Share to', + org: 'Orgnization', + role: 'Role', + user: 'User', datalist: 'Chart List', group: 'Catalogue', panel: 'Dashboard', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index b2ed395331..2f998dba5e 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1228,6 +1228,15 @@ export default { link_expire: '鏈接已過期!', link_share_desc: '開啓鏈接後,任何人可通過此鏈接訪問儀表板。', share: '分享', + remove_share_confirm: '確認取消當前儀表板所有分享?', + share_in: '分享給我', + share_out: '我分享的', + who_share: '分享人', + when_share: '分享時間', + share_to: '分享對象', + org: '組織', + role: '角色', + user: '用戶', datalist: '視圖列表', group: '目錄', panel: '儀表板', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 51d2ca8630..b4fba80231 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1236,6 +1236,15 @@ export default { link_share: '链接分享', link_share_desc: '开启链接后,任何人可通过此链接访问仪表板。', share: '分享', + remove_share_confirm: '确认取消当前仪表板所有分享?', + share_in: '分享给我', + share_out: '我分享的', + who_share: '分享人', + when_share: '分享时间', + share_to: '分享对象', + org: '组织', + role: '角色', + user: '用户', datalist: '视图列表', group: '目录', panel: '仪表板', diff --git a/frontend/src/views/panel/GrantAuth/ShareHead/index.vue b/frontend/src/views/panel/GrantAuth/ShareHead/index.vue new file mode 100644 index 0000000000..1456935086 --- /dev/null +++ b/frontend/src/views/panel/GrantAuth/ShareHead/index.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/frontend/src/views/panel/GrantAuth/shareTree.vue b/frontend/src/views/panel/GrantAuth/shareTree.vue index 43a1dc9007..aaad538641 100644 --- a/frontend/src/views/panel/GrantAuth/shareTree.vue +++ b/frontend/src/views/panel/GrantAuth/shareTree.vue @@ -1,11 +1,17 @@