Commit 887396e5967e336173188f7872c49d969d668a38

Authored by ww
1 parent 692fd702

feat: 规则链新增清除事件

1 -import { RuleChainPaginationItemType } from './model/type'; 1 +import { ClearEventsParam, RuleChainPaginationItemType } from './model/type';
2 import { TBPaginationResult } from '/#/axios'; 2 import { TBPaginationResult } from '/#/axios';
3 import { defHttp } from '/@/utils/http/axios'; 3 import { defHttp } from '/@/utils/http/axios';
4 import { RuleChainDetail, RuleChainType } from '/@/views/rule/designer/types/ruleNode'; 4 import { RuleChainDetail, RuleChainType } from '/@/views/rule/designer/types/ruleNode';
@@ -75,3 +75,26 @@ export const getRuleNodeEventList = ( @@ -75,3 +75,26 @@ export const getRuleNodeEventList = (
75 { joinPrefix: false } 75 { joinPrefix: false }
76 ); 76 );
77 }; 77 };
  78 +
  79 +export const doClearEvents = ({
  80 + tenantId,
  81 + startTime,
  82 + endTime,
  83 + eventType,
  84 + ruleId,
  85 +}: ClearEventsParam) => {
  86 + return defHttp.post(
  87 + {
  88 + url: `${Api.GET_RULE_NODE_EVENTS}/${ruleId}/clear`,
  89 + params: {
  90 + startTime,
  91 + endTime,
  92 + tenantId,
  93 + },
  94 + data: {
  95 + eventType,
  96 + },
  97 + },
  98 + { joinPrefix: false }
  99 + );
  100 +};
  1 +import { EventTypeEnum } from '/@/views/rule/designer/src/components/UpdateNodeDrawer/EventSelect/config';
  2 +
1 export interface RuleChainPaginationItemType { 3 export interface RuleChainPaginationItemType {
2 id: Id; 4 id: Id;
3 createdTime: number; 5 createdTime: number;
@@ -19,3 +21,11 @@ export interface Id { @@ -19,3 +21,11 @@ export interface Id {
19 export interface AdditionalInfo { 21 export interface AdditionalInfo {
20 description: string; 22 description: string;
21 } 23 }
  24 +
  25 +export interface ClearEventsParam {
  26 + ruleId: string;
  27 + tenantId: string;
  28 + startTime: string;
  29 + endTime: string;
  30 + eventType: EventTypeEnum;
  31 +}
1 <script lang="ts" setup> 1 <script lang="ts" setup>
2 - import { useTable, BasicTable } from '/@/components/Table'; 2 + import { BasicTable, useTable } from '/@/components/Table';
3 import { getColumns } from './config'; 3 import { getColumns } from './config';
4 - import { getRuleNodeEventList } from '/@/api/ruleDesigner'; 4 + import { doClearEvents, getRuleNodeEventList } from '/@/api/ruleDesigner';
5 import { BasicNodeFormData, NodeData } from '../../../../types/node'; 5 import { BasicNodeFormData, NodeData } from '../../../../types/node';
6 import { computed, reactive, ref, unref, watch } from 'vue'; 6 import { computed, reactive, ref, unref, watch } from 'vue';
7 import { useUserStore } from '/@/store/modules/user'; 7 import { useUserStore } from '/@/store/modules/user';
8 import { EventSelect } from '../EventSelect'; 8 import { EventSelect } from '../EventSelect';
9 import { Icon } from '/@/components/Icon'; 9 import { Icon } from '/@/components/Icon';
10 - import { Tooltip } from 'ant-design-vue';  
11 - import { EventTypeEnum } from '../EventSelect/config'; 10 + import { Tooltip, Popconfirm } from 'ant-design-vue';
  11 + import { EventTypeEnum, EventTypeNameEnum } from '../EventSelect/config';
12 import { FilterForm } from '../FilterForm'; 12 import { FilterForm } from '../FilterForm';
13 import { useModal } from '/@/components/Modal'; 13 import { useModal } from '/@/components/Modal';
14 import { DataActionModeEnum } from '/@/enums/toolEnum'; 14 import { DataActionModeEnum } from '/@/enums/toolEnum';
@@ -31,6 +31,8 @@ @@ -31,6 +31,8 @@
31 data: {} as Recordable, 31 data: {} as Recordable,
32 }); 32 });
33 33
  34 + const dataLength = ref();
  35 +
34 const [register, { reload, setColumns, setPagination }] = useTable({ 36 const [register, { reload, setColumns, setPagination }] = useTable({
35 columns: getColumns(EventTypeEnum.DEBUG_RULE_NODE), 37 columns: getColumns(EventTypeEnum.DEBUG_RULE_NODE),
36 showIndexColumn: false, 38 showIndexColumn: false,
@@ -56,6 +58,8 @@ @@ -56,6 +58,8 @@
56 { ...searchParams.data, eventType: unref(eventType) } 58 { ...searchParams.data, eventType: unref(eventType) }
57 ); 59 );
58 60
  61 + dataLength.value = result.totalElements;
  62 +
59 return result; 63 return result;
60 }, 64 },
61 }); 65 });
@@ -100,6 +104,17 @@ @@ -100,6 +104,17 @@
100 } as ModalParamsType<string>); 104 } as ModalParamsType<string>);
101 }; 105 };
102 106
  107 + const handleClearStats = async () => {
  108 + const userInfo = useUserStore();
  109 + await doClearEvents({
  110 + ruleId: unref(getNodeId)!,
  111 + tenantId: userInfo.getUserInfo.tenantId!,
  112 + ...(searchParams.params as Record<'startTime' | 'endTime', string>),
  113 + eventType: unref(eventType),
  114 + });
  115 + reload();
  116 + };
  117 +
103 watch( 118 watch(
104 () => props.elementInfo?.id, 119 () => props.elementInfo?.id,
105 () => { 120 () => {
@@ -115,6 +130,20 @@ @@ -115,6 +130,20 @@
115 <EventSelect v-model:type="eventType" @change="handleEventTypeChange" /> 130 <EventSelect v-model:type="eventType" @change="handleEventTypeChange" />
116 </template> 131 </template>
117 <template #toolbar> 132 <template #toolbar>
  133 + <Popconfirm
  134 + @confirm="handleClearStats"
  135 + :title="`清除所有${EventTypeNameEnum[eventType]}`"
  136 + :content="`是否确认清除所有${EventTypeNameEnum[eventType]}`"
  137 + >
  138 + <Tooltip title="">
  139 + <Icon
  140 + v-if="dataLength"
  141 + icon="ant-design:delete-outlined"
  142 + class="cursor-pointer svg:text-2xl"
  143 + />
  144 + </Tooltip>
  145 + </Popconfirm>
  146 +
118 <Tooltip title="过滤器"> 147 <Tooltip title="过滤器">
119 <Icon 148 <Icon
120 icon="material-symbols:filter-list" 149 icon="material-symbols:filter-list"