diff --git a/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java b/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java new file mode 100644 index 0000000000..b77aee6e59 --- /dev/null +++ b/core/core-backend/src/main/java/io/dataease/chart/dao/ext/mapper/ExtChartViewMapper.java @@ -0,0 +1,17 @@ +package io.dataease.chart.dao.ext.mapper; + +import io.dataease.api.chart.vo.ViewSelectorVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +@Mapper +public interface ExtChartViewMapper { + + @Select(""" + select id, scene_id as pid, title, type from core_chart_view where scene_id = #{resourceId} + """) + List queryViewOption(@Param("resourceId") Long resourceId); +} diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java index 58c003e400..c49543288d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import io.dataease.api.chart.dto.*; +import io.dataease.api.chart.vo.ViewSelectorVO; import io.dataease.api.dataset.union.model.SQLObj; import io.dataease.chart.dao.auto.entity.CoreChartView; import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper; +import io.dataease.chart.dao.ext.mapper.ExtChartViewMapper; import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; import io.dataease.dataset.manage.PermissionManage; @@ -41,6 +43,9 @@ public class ChartViewManege { @Resource private PermissionManage permissionManage; + @Resource + private ExtChartViewMapper extChartViewMapper; + private ObjectMapper objectMapper = new ObjectMapper(); @Transactional @@ -273,4 +278,7 @@ public class ChartViewManege { } + public List viewOption(Long resourceId) { + return extChartViewMapper.queryViewOption(resourceId); + } } diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java index b477617a39..d4c3213266 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java @@ -3,6 +3,7 @@ package io.dataease.chart.server; import io.dataease.api.chart.ChartViewApi; import io.dataease.api.chart.dto.ChartViewDTO; import io.dataease.api.chart.dto.ChartViewFieldDTO; +import io.dataease.api.chart.vo.ViewSelectorVO; import io.dataease.chart.manage.ChartViewManege; import io.dataease.exception.DEException; import io.dataease.result.ResultCode; @@ -52,5 +53,8 @@ public class ChartViewServer implements ChartViewApi { return chartViewManege.getDetails(id); } - + @Override + public List viewOption(Long resourceId) { + return chartViewManege.viewOption(resourceId); + } } diff --git a/core/core-frontend/src/assets/svg/people.svg b/core/core-frontend/src/assets/svg/people.svg index 2bd54aeb72..26d9c9986a 100644 --- a/core/core-frontend/src/assets/svg/people.svg +++ b/core/core-frontend/src/assets/svg/people.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/core/core-frontend/src/assets/svg/user-reci.svg b/core/core-frontend/src/assets/svg/user-reci.svg new file mode 100644 index 0000000000..a6d141f057 --- /dev/null +++ b/core/core-frontend/src/assets/svg/user-reci.svg @@ -0,0 +1,3 @@ + + + diff --git a/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue b/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue index a54d5bee10..1fdada09b5 100644 --- a/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue +++ b/core/core-frontend/src/components/data-visualization/canvas/ComponentWrapper.vue @@ -5,6 +5,7 @@ import { ref, onMounted, toRefs, getCurrentInstance, computed } from 'vue' import findComponent from '@/utils/components' import { downloadCanvas, imgUrlTrans } from '@/utils/imgUtils' import ComponentEditBar from '@/components/visualization/ComponentEditBar.vue' +import ComponentSelector from '@/components/visualization/ComponentSelector.vue' import { useEmitt } from '@/hooks/web/useEmitt' const componentWrapperInnerRef = ref(null) @@ -72,6 +73,10 @@ const props = defineProps({ type: Number, required: false, default: 100 + }, + isSelector: { + type: Boolean, + default: false } }) const { config, showPosition, index, canvasStyleData, canvasViewInfo, dvInfo, searchCount, scale } = @@ -187,7 +192,7 @@ const deepScale = computed(() => scale.value / 100) @mouseenter="onMouseEnter" > scale.value / 100) :show-position="showPosition" @userViewEnlargeOpen="opt => emits('userViewEnlargeOpen', opt)" > +
diff --git a/core/core-frontend/src/components/visualization/ComponentSelector.vue b/core/core-frontend/src/components/visualization/ComponentSelector.vue new file mode 100644 index 0000000000..b8d436da7b --- /dev/null +++ b/core/core-frontend/src/components/visualization/ComponentSelector.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts b/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts new file mode 100644 index 0000000000..666d7c8adc --- /dev/null +++ b/core/core-frontend/src/store/modules/data-visualization/viewSelector.ts @@ -0,0 +1,57 @@ +import { defineStore } from 'pinia' +import { store } from '@/store/index' + +interface ViewSelectorState { + enable: boolean + viewIdList: string[] +} + +export const viewSelectorStore = defineStore('viewSelectorStore', { + state: (): ViewSelectorState => { + return { + enable: false, + viewIdList: [] + } + }, + getters: { + getEnable(): boolean { + return this.enable + }, + getViewIdList(): string[] { + return this.viewIdList + } + }, + actions: { + setEnable(enable: boolean) { + this.enable = enable + }, + remove(id?: string) { + let len = this.viewIdList.length + if (!len) { + return + } + if (!id) { + this.viewIdList = [] + return + } + while (len--) { + if (this.viewIdList[len] === id) { + this.viewIdList.splice(len, 1) + } + } + }, + add(id: string) { + if (!this.viewIdList.includes(id)) { + this.viewIdList.push(id) + } + }, + clear() { + this.enable = false + this.viewIdList = [] + } + } +}) + +export const useViewSelectorStoreWithOut = () => { + return viewSelectorStore(store) +} diff --git a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue index 3a48d0d067..8b4c21b366 100644 --- a/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue +++ b/core/core-frontend/src/views/data-visualization/PreviewCanvas.vue @@ -25,6 +25,10 @@ const props = defineProps({ type: Boolean, required: false, default: false + }, + isSelector: { + type: Boolean, + default: false } }) @@ -119,6 +123,7 @@ defineExpose({ :canvas-view-info="state.canvasViewInfoPreview" :dv-info="state.dvInfo" :cur-gap="state.curPreviewGap" + :is-selector="props.isSelector" >
viewOption(@PathVariable("resourceId") Long resourceId); } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java new file mode 100644 index 0000000000..8bd68009c3 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/chart/vo/ViewSelectorVO.java @@ -0,0 +1,24 @@ +package io.dataease.api.chart.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class ViewSelectorVO implements Serializable { + @Serial + private static final long serialVersionUID = -7163837502596313691L; + + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + private String title; + + private String type; + + @JsonSerialize(using = ToStringSerializer.class) + private Long pid; +} diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java index 724b1a65d8..7d47125b8c 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/ReportApi.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.api.report.dto.*; import io.dataease.api.report.vo.ReportGridVO; +import io.dataease.api.report.vo.ReportInfoVO; import io.dataease.api.report.vo.ReportInstanceVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -57,7 +58,7 @@ public interface ReportApi { @Operation(summary = "查询详情") @GetMapping("/info/{taskId}") - ReportEditor info(@PathVariable("taskId") Long taskId); + ReportInfoVO info(@PathVariable("taskId") Long taskId); @Operation(summary = "查询日志列表") @Parameters({ diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java new file mode 100644 index 0000000000..b5796cec98 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/report/vo/ReportInfoVO.java @@ -0,0 +1,57 @@ +package io.dataease.api.report.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +@Data +public class ReportInfoVO implements Serializable { + @Serial + private static final long serialVersionUID = 2287397931951305464L; + + @JsonSerialize(using = ToStringSerializer.class) + private Long taskId; + + private String name; + + private String title; + + private String content; + + private Integer rtid; + + @JsonSerialize(using = ToStringSerializer.class) + private Long rid; + + private Integer format; + + private List viewIdList; + + private Integer viewDataRange; + + private String pixel; + + private List reciFlagList; + + private List uidList; + + private List ridList; + + private List emailList; + + private List larkGroupList; + + private Integer extWaitTime; + + private Integer rateType; + + private String rateVal; + + private Long startTime; + + private Long endTime; +}