Explorar el Código

feat:报警页面修改

huang, kai (Contractor) hace 2 semanas
padre
commit
05ebf466cf

+ 3 - 0
admin.ui.plus-master/src/api/admin/AlarmService/alarmQueryDto.ts

@@ -27,4 +27,7 @@
    /** 优先级 */
         taskPriority?: integer
 
+        sdate?:string
+        edate?:string
+
 }

+ 31 - 29
admin.ui.plus-master/src/api/admin/reportManagement/alarm/alarmApi.ts

@@ -1,6 +1,6 @@
 import axios, { AxiosResponse } from 'axios'
 import {ContentType, HttpClient, RequestParams} from "/@/api/admin/http-client";
-import {PageInputAlarmFilterModel,alarmFilterModel,PushRulesQuery} from "/@/api/admin/reportManagement/alarm/alarmDto";
+import {PageInputAlarmFilterModel,alarmFilterModel,PushRulesQuery, ResultOutputBoolean} from "/@/api/admin/reportManagement/alarm/alarmDto";
 import request from '/@/utils/request';
 
 export class AlarmApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType>{
@@ -25,38 +25,40 @@ export class AlarmApi<SecurityDataType = unknown> extends HttpClient<SecurityDat
       format: 'json',
       ...params,
     })
-}
 
-export class PushRulesApi {
-  /**
-   * 获取推送规则列表
-   * @param params 请求参数
-   * @returns 接口响应数据  
+      /**
+   * 执行推送规则立即执行
+   *
+   * @param alarmHistoryID 可选的查询参数
+   * @param params         请求配置参数
    */
-  getPushRulesList(params: PushRulesQuery) {
-    const requestUrl = `http://47.101.220.106:8000/api/app/Association/get-push-rules-list?sdate=${params.sdate}&edate=${params.edate}&alarmHistoryID=${params.alarmHistoryID}`
-    
-    var config = {
-        method: 'get',
-        url: requestUrl,
-    };
-
-    return axios(config)
-    
-
-    // return request({
-    //   url: '/api/app/Association/get-push-rules-list',
-    //   method: 'GET', 
-    //   params: {
-    //     ...params,
-    //     sdate: params.sdate ?? '', // 允许为空字符串
-    //     edate: params.edate ?? '', // 允许为空字符串
-    //     alarmHistoryID: params.alarmHistoryID || '' // 确保非空
-    //   }
-    // });
-  }
+
 }
 
+// alarmApi.ts
+
+export class PushRulesApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
+
+  executePushRuleImmediately = (
+    alarmHistoryID?: string,
+    params: RequestParams = {}
+  ): Promise<ResultOutputBoolean> => {
+    const queryParams = alarmHistoryID ? { alarmHistoryID } : {};
+
+    return this.request<ResultOutputBoolean>({
+      path: '/api/app/push/execute-push-rule-immediately',
+      method: 'POST',
+      secure: true,
+      type: ContentType.UrlEncoded,
+      format: 'json',
+      query: queryParams,
+      ...params,
+    });
+  };
+}
+
+
+
 
 
 

+ 9 - 6
admin.ui.plus-master/src/api/admin/reportManagement/alarm/alarmDto.ts

@@ -121,9 +121,12 @@ filter?: alarmFilterModel_SearchFilter
   
   
 
-// /src/api/admin/Association/pushRulesDto.ts
-export interface PushRulesQuery {
-  alarmHistoryID: string
-  sdate?:string;
-  edate?:string;
-}
+// 响应结构
+export interface ResultOutputBoolean {
+  success: boolean;
+  code: string;
+  msg: string;
+  data: boolean;
+  alarmHistoryID: string;
+}
+

+ 27 - 36
admin.ui.plus-master/src/views/admin/statement/alarmManagement/index.vue

@@ -116,9 +116,11 @@
 import { onMounted, reactive, ref, watch } from "vue";
 import { ElMessage, ElTable } from 'element-plus'
 import { alarmFilterModel_SearchFilter, alarmFilterModel, PageInputAlarmFilterModel, PushRulesQuery } from "/@/api/admin/reportManagement/alarm/alarmDto";
-import { AlarmApi,PushRulesApi } from "/@/api/admin/reportManagement/alarm/alarmApi";
+import { AlarmApi } from "/@/api/admin/reportManagement/alarm/alarmApi";
 import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
 import router from "/@/router";
+import { PushRulesApi } from "/@/api/admin/reportManagement/alarm/alarmApi";
+import { ResultOutputBoolean } from "/@/api/admin/reportManagement/alarm/alarmDto";
 
 const pushRulesApi = new PushRulesApi();
 const tableRef = ref<InstanceType<typeof ElTable>>(); // 添加表格引用
@@ -270,50 +272,39 @@ const toList = () =>{
  * 执行推送规则
  */
 const handlePushRules = async () => {
-  // 获取选中的行
   const selection = tableRef.value?.getSelectionRows() || [];
-  
+
   if (selection.length === 0) {
-    ElMessage.warning('请选择需要执行推送规则的报警记录');
+    ElMessage.warning('请至少选择一行数据');
     return;
   }
-  
-  // 提取选中行的ID
-  const alarmIds = selection.map(row => row.alarmHistoryID).filter(id => id);
-  
-  if (alarmIds.length === 0) {
-    ElMessage.warning('选中的记录中没有有效的报警ID');
+
+  const alarmHistoryIDs: string[] = selection
+    .map(row => row.alarmHistoryID)
+    .filter((id): id is string => !!id);
+
+  if (alarmHistoryIDs.length === 0) {
+    ElMessage.warning('所选项中没有有效的报警历史ID');
     return;
   }
-  
+
+  const idsString = alarmHistoryIDs.join(',');
+
   try {
-    // 显示加载状态
-    Data.loading = true;
-    
-    // 构建请求参数
-    const queryParams: PushRulesQuery = {
-      alarmHistoryID: alarmIds.join(','), // 将ID数组转为逗号分隔的字符串
-      sdate: Data.Filter.CreateBeginTime || '', // 使用筛选器中的开始时间
-      edate: Data.Filter.CreateEndTime || '',   // 使用筛选器中的结束时间
-    };
-    
-    // 调用API执行推送规则
-    const result = await pushRulesApi.getPushRulesList(queryParams);
-    
-    // 处理成功响应
-    if(result.success=true){
-    ElMessage.success('推送规则执行成功');
-    }
+    const res = await pushRulesApi.executePushRuleImmediately(undefined, {
+      query: {
+        alarmHistoryID: idsString,
+      },
+    });
 
-    // 可以在这里添加其他处理逻辑,例如刷新列表
-    await init();
-    
+    if (res.success && res.data) {
+      ElMessage.success(`推送成功`);
+    } else {
+      ElMessage.error(`推送失败:${res.msg || '未知错误'}`);
+    }
   } catch (error: any) {
-    // 处理错误
-    ElMessage.error(`推送规则执行失败: ${error.message || '未知错误'}`);
-  } finally {
-    // 隐藏加载状态
-    Data.loading = false;
+    console.error('推送失败', error);
+    ElMessage.error('报警推送过程中发生异常');
   }
 };
 

+ 29 - 16
admin.ui.plus-master/src/views/admin/statement/alarmQuery/index.vue

@@ -13,7 +13,7 @@
               </el-col>
               <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
                 <el-form-item label="是否推送">
-                  <el-select v-model="state.filter.isPushed" placeholder="请选择推送状态">
+                  <el-select v-model="state.filter.ispushed" placeholder="请选择推送状态">
                     <el-option label="所有" :value="undefined"></el-option>
                     <el-option v-for="(value, key) in FuelDispenserEnum" :key="key" :label="value" :value="key" />
                   </el-select>
@@ -101,18 +101,20 @@ import { all } from "axios";
 /**推送用户 */
         pushUser: "",
 /**是否推送 */
-        isPushed: undefined,
+        pushed: "",
 /**推送时间 */
-        pushTime: "",},
+        pushTime: "",
+        ispushed:undefined
+      },
   /**表格信息 */
 tableModel: [] as PushDto[],
     /**动态表头 */
     dynamicColumns: [
-{ prop: 'ruleId', label: '规则名称' },
+{ prop: 'ruleName', label: '规则名称' },
 // { prop: 'pushUserid', label: '推送用户id' },
 { prop: 'pushUser', label: '推送用户' },
 { prop: 'content', label: '推送内容' },
-{ prop: 'isPushed', label: '是否推送' },
+{ prop: 'pushed', label: '是否推送' },
 { prop: 'pushTime', label: '推送时间' },
 // { prop: 'alarmhistoryID', label: '报警ID' },
 // { prop: 'taskPriority', label: '优先级' },
@@ -128,8 +130,8 @@ tableModel: [] as PushDto[],
 
 /**设备状态*/
 enum FuelDispenserEnum {
-  true = '是',
-  false = '否',
+  true = "已推送",
+  false = "未推送",
 }
 
   onMounted(async () => {
@@ -178,19 +180,29 @@ const onCurrentChange = (val: number) => {
 /**初始化 */
 const init = async () => {
   state.loading = true;
-  
+
   try {
+    // 处理时间范围
+    let sdate = '';
+    let edate = '';
+    if (state.filter.pushTime && Array.isArray(state.filter.pushTime) && state.filter.pushTime.length === 2) {
+      sdate = state.filter.pushTime[0]; // 开始时间
+      edate = state.filter.pushTime[1]; // 结束时间
+    }
+
     const params = {
-      ...state.pageInput, // 分页参数
-      filter:state.filter     // 筛选条件
+      ...state.pageInput,
+      filter: {
+        ...state.filter,
+        sdate,
+        edate,
+        pushTime: undefined, // 避免传到后端去
+      },
     };
-    
-    // 调用真实API
+
     const res = await new Api().getList(params);
-    
-    // 处理响应数据
     state.tableModel = res?.data?.list ?? [];
-    state.total = res?.data?.total ?? 0; // 获取总记录数用于分页
+    state.total = res?.data?.total ?? 0;
   } catch (error) {
     console.error('获取数据失败:', error);
     ElMessage.error('获取数据失败,请重试');
@@ -206,8 +218,9 @@ const init = async () => {
   // 重置查询条件
   state.filter = {
     pushUser: "",
-    isPushed: undefined,
+    pushed: "",
     pushTime: "",
+    ispushed:undefined
   };
 
   // 重新加载数据

+ 3 - 3
admin.ui.plus-master/src/views/admin/yujing/alarmRules/index.vue

@@ -118,12 +118,12 @@ const Data = reactive({
   /**动态表头 */
   dynamicColumns: [
     { prop: 'ruleName', label: '规则名称' },
-    { prop: 'userName', label: '用户' },
+    // { prop: 'userName', label: '用户' },
     { prop: 'pushMethod', label: '推送方式' },
-    { prop: 'triggerMethod', label: '触发方式' },
+    // { prop: 'triggerMethod', label: '触发方式' },
     { prop: 'regular', label: '正则匹配' },
     { prop: 'taskPriority', label: '优先级' },
-    { prop: 'isExclusive', label: '是否互斥' },
+    // { prop: 'isExclusive', label: '是否互斥' },
     // { prop: 'stationName', label: '推送方式' },
     { prop: 'pushTemplateMappingID', label: '模板' },
     { prop: 'remark', label: '备注' },