From 27c8277d717b34b55f3ea967027b53b067f77df3 Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期四, 20 八月 2026 16:58:49 +0800
Subject: [PATCH] feat 功能变更
---
src/views/bi/decision/alert-rule/index.vue | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/src/views/bi/decision/alert-rule/index.vue b/src/views/bi/decision/alert-rule/index.vue
new file mode 100644
index 0000000..159d8a0
--- /dev/null
+++ b/src/views/bi/decision/alert-rule/index.vue
@@ -0,0 +1,88 @@
+<script lang="ts" setup>
+import type { VxeTableGridOptions } from '#/adapter/vxe-table';
+import type { DecisionAlertApi } from '#/api/bi/decision/alert';
+
+import { Page, useVbenModal } from '@vben/common-ui';
+
+import { message, Tag } from 'ant-design-vue';
+
+import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
+import { deleteAlertRule, getAlertRulePage } from '#/api/bi/decision/alert';
+
+import { severityColor, severityText, useGridColumns, useGridFormSchema } from './data';
+import Form from './modules/form.vue';
+
+defineOptions({ name: 'DecisionAlertRule' });
+
+const [FormModal, formModalApi] = useVbenModal({
+ connectedComponent: Form,
+ destroyOnClose: true,
+});
+
+const [Grid, gridApi] = useVbenVxeGrid({
+ formOptions: {
+ schema: useGridFormSchema(),
+ },
+ gridOptions: {
+ columns: useGridColumns(),
+ height: 'auto',
+ proxyConfig: {
+ ajax: {
+ query: async ({ page, form }: any) => {
+ const res = await getAlertRulePage({ ...page, ...form });
+ return res;
+ },
+ },
+ },
+ } as VxeTableGridOptions<DecisionAlertApi.AlertRule>,
+});
+
+function handleRefresh() {
+ gridApi.query();
+}
+
+function handleCreate() {
+ formModalApi.setData(null).open();
+}
+
+function handleEdit(row: DecisionAlertApi.AlertRule) {
+ formModalApi.setData(row).open();
+}
+
+async function handleDelete(row: DecisionAlertApi.AlertRule) {
+ const hide = message.loading(`姝e湪鍒犻櫎銆�${row.name}銆�...`, 0);
+ try {
+ await deleteAlertRule(row.id!);
+ message.success('鍒犻櫎鎴愬姛');
+ handleRefresh();
+ } finally {
+ hide();
+ }
+}
+</script>
+
+<template>
+ <Page :auto-content-height="true">
+ <div class="mb-3 flex items-center justify-between">
+ <span class="text-lg font-bold">棰勮瑙勫垯閰嶇疆</span>
+ <a-button type="primary" @click="handleCreate">鏂板</a-button>
+ </div>
+ <Grid>
+ <template #severitySlot="{ row }">
+ <Tag :color="severityColor(row.severity)">{{ severityText(row.severity) }}</Tag>
+ </template>
+ <template #enabledSlot="{ row }">
+ <Tag :color="row.enabled === 1 ? 'green' : 'default'">{{ row.enabled === 1 ? '鍚敤' : '绂佺敤' }}</Tag>
+ </template>
+ <template #actionSlot="{ row }">
+ <TableAction
+ :actions="[
+ { label: '缂栬緫', type: 'link', icon: ACTION_ICON.EDIT, onClick: handleEdit.bind(null, row) },
+ { label: '鍒犻櫎', type: 'link', danger: true, icon: ACTION_ICON.DELETE, onClick: handleDelete.bind(null, row) },
+ ]"
+ />
+ </template>
+ </Grid>
+ <FormModal />
+ </Page>
+</template>
\ No newline at end of file
--
Gitblit v1.9.3