Commit 887396e5967e336173188f7872c49d969d668a38

Authored by ww
1 parent 692fd702

feat: 规则链新增清除事件

1   -import { RuleChainPaginationItemType } from './model/type';
  1 +import { ClearEventsParam, RuleChainPaginationItemType } from './model/type';
2 2 import { TBPaginationResult } from '/#/axios';
3 3 import { defHttp } from '/@/utils/http/axios';
4 4 import { RuleChainDetail, RuleChainType } from '/@/views/rule/designer/types/ruleNode';
... ... @@ -75,3 +75,26 @@ export const getRuleNodeEventList = (
75 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 3 export interface RuleChainPaginationItemType {
2 4 id: Id;
3 5 createdTime: number;
... ... @@ -19,3 +21,11 @@ export interface Id {
19 21 export interface AdditionalInfo {
20 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 1 <script lang="ts" setup>
2   - import { useTable, BasicTable } from '/@/components/Table';
  2 + import { BasicTable, useTable } from '/@/components/Table';
3 3 import { getColumns } from './config';
4   - import { getRuleNodeEventList } from '/@/api/ruleDesigner';
  4 + import { doClearEvents, getRuleNodeEventList } from '/@/api/ruleDesigner';
5 5 import { BasicNodeFormData, NodeData } from '../../../../types/node';
6 6 import { computed, reactive, ref, unref, watch } from 'vue';
7 7 import { useUserStore } from '/@/store/modules/user';
8 8 import { EventSelect } from '../EventSelect';
9 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 12 import { FilterForm } from '../FilterForm';
13 13 import { useModal } from '/@/components/Modal';
14 14 import { DataActionModeEnum } from '/@/enums/toolEnum';
... ... @@ -31,6 +31,8 @@
31 31 data: {} as Recordable,
32 32 });
33 33
  34 + const dataLength = ref();
  35 +
34 36 const [register, { reload, setColumns, setPagination }] = useTable({
35 37 columns: getColumns(EventTypeEnum.DEBUG_RULE_NODE),
36 38 showIndexColumn: false,
... ... @@ -56,6 +58,8 @@
56 58 { ...searchParams.data, eventType: unref(eventType) }
57 59 );
58 60
  61 + dataLength.value = result.totalElements;
  62 +
59 63 return result;
60 64 },
61 65 });
... ... @@ -100,6 +104,17 @@
100 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 118 watch(
104 119 () => props.elementInfo?.id,
105 120 () => {
... ... @@ -115,6 +130,20 @@
115 130 <EventSelect v-model:type="eventType" @change="handleEventTypeChange" />
116 131 </template>
117 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 147 <Tooltip title="过滤器">
119 148 <Icon
120 149 icon="material-symbols:filter-list"
... ...