Browse Source

feat:报警规则、推送模板添加编辑、禁用、启用功能

xianna.liang 5 months ago
parent
commit
b105770dc9

+ 25 - 0
admin.ui.plus-master/src/api/admin/AlarmService/alarmRulesApi.ts

@@ -46,5 +46,30 @@ export class alarmRulesApi<SecurityDataType = unknown> extends HttpClient<Securi
             ...params
         })
 
+        /**
+ * No description
+ *
+ * @tags
+ * @name deliteData
+ * @summary 删除规则
+ * @request POST:
+ * @secure
+ */
+        deliteData = (
+            data?: {
+              /** @format int64 */
+              id?: number
+            },
+            params: RequestParams = {}
+          ) =>
+            this.request<AxiosResponse, any>({
+              path: `/api/app/push/delete-push-rule`,
+              method: 'POST',
+              body: data,
+              secure: true,
+              type: ContentType.Json,
+              ...params,
+            })
+
 }
 

+ 1 - 1
admin.ui.plus-master/src/api/admin/AlarmService/alarmRulesDto.ts

@@ -20,7 +20,7 @@ export interface alarmRluesFilterModel {
   /**正则表达式 */
   regular?: string,
   /**是否互斥 */
-  isExclusive?: boolean,
+  isExclusive?: boolean | string,
   /**优先级 */
   taskPriority?: number,
   /**触发方式 */

+ 26 - 0
admin.ui.plus-master/src/api/admin/AlarmService/pushTemplateApi.ts

@@ -55,4 +55,30 @@ export class pushTemplateApi<SecurityDataType = unknown> extends HttpClient<Secu
             format: 'json',
             ...params
         })
+
+
+    /**
+     * No description
+     *
+     * @tags
+     * @name deliteData
+     * @summary 删除规则
+     * @request POST:
+     * @secure
+     */
+    deliteData = (
+        data?: {
+            /** @format int64 */
+            id?: number
+        },
+        params: RequestParams = {}
+        ) =>
+        this.request<AxiosResponse, any>({
+            path: `/api/app/push/delete-template`,
+            method: 'POST',
+            body: data,
+            secure: true,
+            type: ContentType.Json,
+            ...params,
+        })
 }

+ 92 - 53
admin.ui.plus-master/src/views/admin/statement/alarmRules/components/add-alarmRules.vue

@@ -1,7 +1,7 @@
 <!-- 报警规则添加列表 -->
 <template>
   <div class="layout-pd">
-    <el-dialog title="报警推送规则" v-model="Data.isShowDialog" style="width: 60%;">
+    <el-dialog v-model="Data.isShowDialog" style="width: 60%;">
       <!--操作-->
       <div style="width: 100%;display: flex;justify-content: left;align-items: center;">
         <h1 style="margin-bottom: 10px;font-size: 30px;">报警推送规则</h1>
@@ -152,32 +152,31 @@ import { pushTemplateApi } from "/@/api/admin/AlarmService/pushTemplateApi";
 import { TemplateFilterDto } from "/@/api/admin/AlarmService/pushTemplateDto";
 import eventBus from "/@/utils/mitt";
 
-let isLoading = ref(false)
-
 const Data = reactive({
   isShowDialog: false,
   Filter: {
-    /**规则名称*/
-    ruleName: '',
-    /**角色 */
-    roleMappingId: [],
-    /**备注*/
-    remark: '',
-    /**推送方式 */
-    pushMethod: '',
-    /**模板 */
-    pushTemplateMappingID: [],
-    /**正则表达式 */
-    regular: '',
-    /**是否互斥 */
-    isExclusive: false,
-    /**优先级 */
-    taskPriority: 1,
-    /**触发方式 */
-    triggerMethod: '',
-    /**规则条件 */
-    conditionsJson: '' as any,
-    pushUserid: []
+    // id: null,
+    // /**规则名称*/
+    // ruleName: '',
+    // /**角色 */
+    // roleMappingId: [],
+    // /**备注*/
+    // remark: '',
+    // /**推送方式 */
+    // pushMethod: '',
+    // /**模板 */
+    // pushTemplateMappingID: [],
+    // /**正则表达式 */
+    // regular: '',
+    // /**是否互斥 */
+    // isExclusive: false,
+    // /**优先级 */
+    // taskPriority: 1,
+    // /**触发方式 */
+    // triggerMethod: '',
+    // /**规则条件 */
+    // conditionsJson: '' as any,
+    // pushUserid: []
   } as alarmRluesFilterModel,
   selectList: [">", "<", "="],
   /** 角色列表 */
@@ -234,6 +233,8 @@ const radioChange = (() => {
   } else {
     if (Data.radioValue2 == true) {
       Data.Filter.pushMethod = 'email'
+    } else {
+      Data.Filter.pushMethod = ''
     }
   }
 })
@@ -303,49 +304,87 @@ watch([() => [...Data.selectValue1], () => [...Data.selectValue2], () => [...Dat
 
 // 保存提交内容
 const toSave = async () => {
+  console.log('提交数据')
+  console.log(Data.Filter)
   await new alarmRulesApi().addForm(Data.Filter).then((res) => {
     console.log(res)
     eventBus.emit('refreshView')
   })
   Data.isShowDialog = false
-  reset()
+  // reset()
 
 }
 
 // 重置
-const reset = (() => {
-  /**规则名称*/
-  Data.Filter.ruleName = '',
-    /**角色 */
-    Data.Filter.roleMappingId = [],
-    /**备注*/
-    Data.Filter.remark = '',
-    /**推送方式 */
-    Data.Filter.pushMethod = '',
-    Data.radioValue1 = false,
-    Data.radioValue2 = false,
-    /**模板 */
-    Data.Filter.pushTemplateMappingID = [],
-    Data.mode1 = '',
-    Data.mode2 = '',
-    /**正则表达式 */
-    Data.Filter.regular = '',
-    /**是否互斥 */
-    Data.Filter.isExclusive = false,
-    /**优先级 */
-    Data.Filter.taskPriority = 1,
-    /**触发方式 */
-    Data.Filter.triggerMethod = '',
-    /**规则条件 */
-    Data.Filter.conditionsJson = '',
-    Data.num = 0
-})
+// const reset = (() => {
+//   /**规则名称*/
+//   Data.Filter.ruleName = '',
+//     /**角色 */
+//     Data.Filter.roleMappingId = [],
+//     /**备注*/
+//     Data.Filter.remark = '',
+//     /**推送方式 */
+//     Data.Filter.pushMethod = '',
+//     Data.radioValue1 = false,
+//     Data.radioValue2 = false,
+//     /**模板 */
+//     Data.Filter.pushTemplateMappingID = [],
+//     Data.mode1 = '',
+//     Data.mode2 = '',
+//     /**正则表达式 */
+//     Data.Filter.regular = '',
+//     /**是否互斥 */
+//     Data.Filter.isExclusive = false,
+//     /**优先级 */
+//     Data.Filter.taskPriority = 1,
+//     /**触发方式 */
+//     Data.Filter.triggerMethod = '',
+//     /**规则条件 */
+//     Data.Filter.conditionsJson = '',
+//     Data.num = 0
+// })
 
 /**
  * 根据参数 打开表单
  * @param val
  */
-const openDialog = () => {
+const openDialog = (row: alarmRluesFilterModel) => {
+  Data.radioValue1 = false
+  Data.radioValue2 = false
+  if (row) {
+    Data.Filter = row
+    console.log('测试测试测试')
+    console.log(row)
+    if (Data.Filter.isExclusive == '是') {
+      Data.Filter.isExclusive = true
+    } else {
+      Data.Filter.isExclusive = false
+    }
+    const temp = <string[]>Data.Filter.pushMethod?.split(',')
+    for (var i = 0; i < temp.length; i++) {
+      if (temp[i] == '微信') {
+        Data.radioValue1 = true
+      } else if (temp[i] == '电子邮箱') {
+        Data.radioValue2 = true
+      }
+    }
+  } else {
+    Data.Filter = {
+      ruleName: '',
+      roleMappingId: [],
+      remark: '',
+      pushMethod: '',
+      pushTemplateMappingID: [],
+      regular: '',
+      isExclusive: false,
+      taskPriority: 1,
+      triggerMethod: '',
+      conditionsJson: '' as any,
+      pushUserid: []
+    } as alarmRluesFilterModel
+    console.log(Data.Filter)
+  }
+
   Data.isShowDialog = true
 }
 

+ 20 - 8
admin.ui.plus-master/src/views/admin/statement/alarmRules/components/pushTemplate.vue

@@ -69,7 +69,7 @@ import { pushTemplateApi } from "/@/api/admin/AlarmService/pushTemplateApi";
 import eventBus from "/@/utils/mitt";
 
 
-const Data = reactive({
+let Data = ref({
   id: 0,
   templateName: '',
   templateType: '',
@@ -83,17 +83,19 @@ const typeList = [
 
 // 提交数据
 const toSave = async () => {
-  if (Data.templateName == '') {
+  if (Data.value.templateName == '') {
     isShowTooltip.value = true
     return
   }
-  Data.id = Number(new Date())
-  await new pushTemplateApi().addForm(Data).then(() => {
+  if (Data.value.id == 0) {
+    Data.value.id = Number(new Date())
+  }
+  await new pushTemplateApi().addForm(Data.value).then(() => {
     eventBus.emit('refreshView')
   })
-  Data.templateName = ''
-  Data.templateType = ''
-  Data.templateContent = ''
+  Data.value.templateName = ''
+  Data.value.templateType = ''
+  Data.value.templateContent = ''
   isShowTooltip.value = false
   isShowDialog.value = false
 
@@ -105,8 +107,18 @@ const isShowTooltip = ref(false)
  * 根据参数 打开表单
  * @param val
  */
-const openDialog = () => {
+const openDialog = (rowData: pushTemplateModel) => {
   isShowDialog.value = true
+  if (rowData) {
+    Data.value = rowData
+  } else {
+    Data.value = {
+      id: 0,
+      templateName: '',
+      templateType: '',
+      templateContent: ''
+    } as pushTemplateModel
+  }
 }
 
 defineExpose({

+ 44 - 15
admin.ui.plus-master/src/views/admin/statement/alarmRules/index.vue

@@ -24,7 +24,7 @@
               <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
             </el-row>
             <el-row>
-              <el-button type="primary" icon="ele-RefreshRight" @click="addAlarmRules"> 添加 </el-button>
+              <el-button type="primary" icon="ele-RefreshRight" @click="addAlarmRules('')"> 添加 </el-button>
             </el-row>
           </el-row>
         </el-card>
@@ -36,13 +36,19 @@
             style="width: 100%">
             <el-table-column v-for="column in Data.dynamicColumns" :key="column.prop" :prop="column.prop"
               :label="column.label" />
+            <el-table-column label="状态" width="80" align="center" show-overflow-tooltip>
+              <template #default="{ row }">
+                <el-tag type="success" v-if="row.isActive">启用</el-tag>
+                <el-tag type="danger" v-else>禁用</el-tag>
+              </template>
+            </el-table-column>
 
             <el-table-column label="操作" fixed="right" header-align="center" align="center" class="right-operation"
               width="100">
               <template #default="{ row }">
-                <el-link class="my-el-link mr12 ml12" @click="toEdit(row)" type="primary" icon="ele-Edit"
+                <el-link class="my-el-link mr12 ml12" @click="addAlarmRules(row)" type="primary" icon="ele-Edit"
                   :underline="false" target="_blank">编辑</el-link>
-                <el-link class="my-el-link mr12 ml12" @click="toDelete(row)" type="primary" icon="ele-Delete"
+                <el-link class="my-el-link mr12 ml12" @click="toDelete(row.id)" type="primary" icon="ele-Delete"
                   :underline="false" target="_blank">删除</el-link>
                 <el-link class="my-el-link mr12 ml12" @click="toOpen(row)" type="primary" icon="ele-SwitchButton"
                   :underline="false" target="_blank">启用</el-link>
@@ -85,7 +91,7 @@ const Data = reactive({
     ruleName: ""
   } as alarmRluesFilterModel_SearchFilter,
   /**表格信息 */
-  tableModel: [] as alarmRluesFilterModel,
+  tableModel: [] as alarmRluesFilterModel[],
   /**动态表头 */
   dynamicColumns: [
     { prop: 'ruleName', label: '规则名称' },
@@ -118,7 +124,7 @@ const editDialogRef = ref()
 const init = async () => {
   Data.loading = true
   const res: any = await new alarmRulesApi().getData({ ...Data.pageInput, filter: Data.Filter })
-  console.log(res)
+  // console.log(res)
   Data.tableModel = res?.data ?? []
   // Data.total = res?.data?.length ?? 0   // 接口中没有总的数据量
   Data.loading = false
@@ -143,8 +149,8 @@ const onReset = () => {
 /** 
  * 添加规则
 */
-const addAlarmRules = (() => {
-  editDialogRef.value.openDialog()
+const addAlarmRules = ((row: any) => {
+  editDialogRef.value.openDialog(row)
   init()
 })
 
@@ -169,7 +175,7 @@ const onCurrentChange = (val: number) => {
 /** 数据转换 */
 const pushMethodChange = (() => {
   // 推送方式
-  Data.tableModel.forEach((item) => {
+  Data.tableModel.forEach((item: any) => {
     const pushList = item['pushMethod'].split(',')
     for (var i = 0; i < pushList.length; i++) {
       if (pushList[i] == 'wx') {
@@ -197,16 +203,39 @@ const pushMethodChange = (() => {
 })
 
 // 操作
-const toEdit = (() => {
-  console.log('编辑')
-})
+const toDelete = (async (id?: number) => {
+  await new alarmRulesApi().deliteData({ 'id': id }).then(() => {
+    eventBus.emit('refreshView')
+  })
 
-const toDelete = (() => {
-  console.log('删除')
 })
 
-const toOpen = (() => {
-  console.log('启用')
+const toOpen = (async (row: any) => {
+  row.isActive = !row.isActive
+  const data = { ...row } as any
+
+  if (data.isExclusive == '是') {
+    data.isExclusive = true
+    console.log(1)
+  } else {
+    data.isExclusive = false
+  }
+  if (data.pushMethod == '') {
+    return
+  } else {
+    if (data.pushMethod == '微信') {
+      data.pushMethod = 'wx'
+    } else if (data.pushMethod == '电子邮箱') {
+      data.pushMethod = 'email'
+    } else {
+      data.pushMethod = 'wx,email'
+    }
+  }
+
+
+  await new alarmRulesApi().addForm(data).then(() => {
+    eventBus.emit('refreshView')
+  })
 })
 
 // 挂载前

+ 23 - 23
admin.ui.plus-master/src/views/admin/statement/alarmRules/template.vue

@@ -24,7 +24,7 @@
                             <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
                         </el-row>
                         <el-row>
-                            <el-button type="primary" icon="ele-RefreshRight" @click="addTemplate"> 添加 </el-button>
+                            <el-button type="primary" icon="ele-RefreshRight" @click="addTemplate('')"> 添加 </el-button>
                         </el-row>
                     </el-row>
                 </el-card>
@@ -36,14 +36,20 @@
                         row-key="id" style="width: 100%">
                         <el-table-column v-for="column in Data.dynamicColumns" :key="column.prop" :prop="column.prop"
                             :label="column.label" />
+                        <el-table-column label="状态" width="80" align="center" show-overflow-tooltip>
+                            <template #default="{ row }">
+                                <el-tag type="success" v-if="row.isActive">启用</el-tag>
+                                <el-tag type="danger" v-else>禁用</el-tag>
+                            </template>
+                        </el-table-column>
 
                         <!-- 操作 -->
                         <el-table-column label="操作" fixed="right" header-align="center" align="center"
                             class="right-operation" width="100">
                             <template #default="{ row }">
-                                <el-link class="my-el-link mr12 ml12" @click="toEdit(row)" type="primary"
+                                <el-link class="my-el-link mr12 ml12" @click="addTemplate(row)" type="primary"
                                     icon="ele-Edit" :underline="false" target="_blank">编辑</el-link>
-                                <el-link class="my-el-link mr12 ml12" @click="toDelete(row)" type="primary"
+                                <el-link class="my-el-link mr12 ml12" @click="toDelete(row.id)" type="primary"
                                     icon="ele-Delete" :underline="false" target="_blank">删除</el-link>
                                 <el-link class="my-el-link mr12 ml12" @click="toOpen(row)" type="primary"
                                     icon="ele-SwitchButton" :underline="false" target="_blank">启用</el-link>
@@ -87,7 +93,7 @@ const Data = reactive({
         templateName: ""
     } as pushTemplateModel_SearchFilter,
     /**表格信息 */
-    tableModel: [] as pushTemplateModel,
+    tableModel: [] as pushTemplateModel[],
     tableData: [] as any,
     /**动态表头 */
     dynamicColumns: [
@@ -114,16 +120,15 @@ const editDialogRef = ref()
 const init = async () => {
     Data.loading = true
     const res: any = await new pushTemplateApi().getPage({ ...Data.pageInput, filter: Data.Filter })
-    console.log(res)
+    // console.log(res)
     Data.tableModel = res?.data ?? []
-    // Data.total = 100   // 接口中没有总的数据量
+    // Data.total = 100   // ---- 接口中没有总的数据量,后端添加后获取赋值,即可实现页码跳转
     Data.loading = false
     dataChange()
 }
 
 const onQuery = () => {
     init()
-    console.log("查询")
 }
 
 /**重置查询条件 */
@@ -139,8 +144,8 @@ const onReset = () => {
 /** 
  * 添加模板
 */
-const addTemplate = (() => {
-    editDialogRef.value.openDialog()
+const addTemplate = ((row: any) => {
+    editDialogRef.value.openDialog(row)
     init()
 })
 
@@ -168,33 +173,28 @@ const dataChange = (() => {
     // // 推送方式
     // let index = 0
     Data.tableModel.forEach((item: any) => {
-        console.log(item)
-
 
         if (item.templateType == 'wx') {
             item.templateType = "微信"
         } else if (item.templateType == 'email') {
             item.templateType = "电子邮箱"
         }
-
-        // if(item.templateName != null){
-        //     Data.tableData.push(item)
-        // }
-
     })
 })
 
 // 操作
-const toEdit = (() => {
-    console.log('编辑')
-})
+const toDelete = (async (id: number) => {
+    await new pushTemplateApi().deliteData({ 'id': id }).then((res) => {
+        eventBus.emit('refreshView')
+    })
 
-const toDelete = (() => {
-    console.log('删除')
 })
 
-const toOpen = (() => {
-    console.log('启用')
+const toOpen = (async (row: any) => {
+    row.isActive = !row.isActive
+    await new pushTemplateApi().addForm(row).then(() => {
+        eventBus.emit('refreshView')
+    })
 })
 
 // 挂载前