瀏覽代碼

feat:预警规则配置参数 页面优化

huang, kai (Contractor) 6 天之前
父節點
當前提交
b352e9b4ab

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

@@ -23,11 +23,12 @@ export interface alarmRluesFilterModel {
   regular?: string | null;
   /**是否互斥 */
   isExclusive?: boolean | string | null;
+  isExclusiveMaintenance?: boolean | string | null;
   /**优先级 */
   taskPriority?: number;
   /**触发方式 */
   triggerMethod?: number | string | null;
-  triggerMethod2?: number | string | null;
+  maintenanceTriggerMethod?:number | string | null;
   /**规则条件 */
   conditionsJson?: string | null;
   maintenanceJson?: string | null;
@@ -36,6 +37,8 @@ export interface alarmRluesFilterModel {
   id?: number;
   condition?:string | null;
   condition2?:string | null;
+  cacheFilter?: Partial<alarmRluesFilterModel>;
+  
 }
 
 /**

+ 0 - 43
admin.ui.plus-master/src/api/admin/AlarmService/dto (11).ts

@@ -1,43 +0,0 @@
-/** 查询信息输出 */
-  export interface ResultOutputPageOutputPushUsersDto{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
- data?:PageOutputPushUsersDto[] | null
-}
-    export interface PageOutputPushUsersDto{
-      /**
-      * 数据总数
-      * @format int64
-      */
-      total?: number
-      /** 数据 */
-      list?: PushUsersDto[] | null
-    }
-    export interface PushUsersDto{
-   /** 用户id */
-      userId?: integer
-   /** 用户名称 */
-      userName?: string
-   /** 微信昵称 */
-      nickname?: string
-   /** 用户角色 */
-      userRole?: string
-   /** 用户手机号 */
-      userPhone?: string
-   /** 用户Openid */
-      userOpenid?: string
-   /** 添加时间 */
-      createtime?: string
-
-}
-export interface pageInput {
-      /**当前页数 */
-      CurrentPage: number | any
-      /**展示页数 */
-      PageSize: number | any
-    }

+ 4 - 2
admin.ui.plus-master/src/views/admin/product/qrBook/components/qrbook-edit.vue

@@ -15,7 +15,7 @@
             </el-col>
             <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
               <el-form-item label="上传人" prop="author">
-                <!-- <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input> -->
+                <!-- <el-input v-model="injectedNickName" disabled placeholder="请输入上传人" clearable></el-input> -->
                 
                   <span v-if="injectedNickName">{{ injectedNickName }}</span>
                   <span v-else>暂未获取到上传人昵称</span>
@@ -140,12 +140,14 @@ console.log('injectedNickName:', injectedNickName.value);
   const onSubmit =  () => {
     formRef.value.validate(async (valid: boolean) =>{
       if(!valid) return
-  
+    
       formData.loading = true
+      formData.editData.author = injectedNickName.value
       let request = JSON.parse(JSON.stringify(formData.editData)) 
       let res = await new QRBookApi().uploadFile(request as QRBookFileInfoRequset)
       if(res?.data?.value) eventBus.emit('refreshView')
 
+      
       formData.editData = {} as QRBookTableInfo
       formData.isShowDialog = false
       formData.loading = false

+ 41 - 22
admin.ui.plus-master/src/views/admin/yujing/alarmRules/components/add-alarmRules.vue

@@ -84,13 +84,6 @@
           </el-form-item>
         </el-form>
       </div>
-      <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
-        <el-form :inline="true" @submit.stop.prevent>
-          <el-form-item label="互&#8195;&#8195;斥:" style="width: 100%;">
-            <el-switch v-model="Data.Filter.isExclusive" />
-          </el-form-item>
-        </el-form>
-      </div>
       <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
         <el-form :inline="true" @submit.stop.prevent>
           <el-form-item label="&#8195;优先级:" style="width: 100%;" prop="taskPriority">
@@ -116,17 +109,26 @@
           </el-form-item>
         </el-form>
       </div>
+
+            <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
+        <el-form :inline="true" @submit.stop.prevent>
+          <el-form-item label="互&#8195;&#8195;斥:" style="width: 100%;">
+            <el-switch v-model="Data.Filter.isExclusive" />
+          </el-form-item>
+        </el-form>
+      </div>
       
       <!-- 条件部分 - 初始不显示,点击添加按钮后才显示 -->
       <div v-if="Data.showAlarmConditions">
         <div v-for="(condition, index) in Data.condition" :key="index" 
              style="width: 100%;display: flex;justify-content: center;align-items: center; margin-top: 10px;">
           <el-form :inline="true" @submit.stop.prevent :model="condition" :rules="conditionRules">
-            <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 135%;">
+            <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 130%; ">
               <el-row :gutter="20" style="width: 100%;">
                 <!-- 报警设备 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
+                     <!-- style="display: flex; align-items: center;" -->
                     <span style="margin-right: 13px;">报警设备:</span>
                     <el-form-item prop="equipment">
                       <el-select v-model="condition.equipment" placeholder="请选择" style="flex: 1;">
@@ -137,14 +139,14 @@
                           :value="item"
                         />
                       </el-select>
-                      <span>&#8195;&</span>
+                      <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <!-- 报警类型 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">报警类型:</span>
                     <el-form-item prop="type">
                       <el-select v-model="condition.type" placeholder="请选择" style="flex: 1;">
@@ -155,14 +157,14 @@
                           :value="item"
                         />
                       </el-select>
-                      <span>&#8195;&</span>
+                      <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <!-- 报警来源 -->
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">报警来源:</span>
                     <el-form-item prop="source">
                       <el-select v-model="condition.source" placeholder="请选择" style="flex: 1;">
@@ -197,8 +199,8 @@
       </div>
       <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
         <el-form :inline="true" @submit.stop.prevent>
-          <el-form-item label="触发方式:" style="width: 100%;" prop="triggerMethod2">
-            <el-radio-group v-model="Data.Filter.triggerMethod2">
+          <el-form-item label="触发方式:" style="width: 100%;" prop="maintenanceTriggerMethod">
+            <el-radio-group v-model="Data.Filter.maintenanceTriggerMethod">
               <el-radio label="其中之一条件满足即触发">其中之一条件满足即触发</el-radio>
               <el-radio label="全部满足时触发">全部满足时触发</el-radio>
             </el-radio-group>
@@ -206,6 +208,14 @@
         </el-form>
       </div>
       
+      <div style="width: 100%;display: flex;justify-content: center;align-items: center;">
+        <el-form :inline="true" @submit.stop.prevent>
+          <el-form-item label="互&#8195;&#8195;斥:" style="width: 100%;">
+            <el-switch v-model="Data.Filter.isExclusiveMaintenance" />
+          </el-form-item>
+        </el-form>
+      </div>
+
       <!-- 维修条件部分 - 初始不显示,点击添加按钮后才显示 -->
       <div v-if="Data.showRepairConditions">
         <div v-for="(condition2, index) in Data.condition2" :key="index" 
@@ -214,7 +224,7 @@
             <el-form-item :label="index === 0 ? '条&#8195;&#8195;件:' : '附加条件:'" style="width: 130%;">
               <el-row :gutter="20" style="width: 100%;">
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;width: 90px;">维修类型:</span>
                     <el-form-item prop="proType">
                       <el-select v-model="condition2.proType" placeholder="请选择" style="flex: 1;">
@@ -225,13 +235,13 @@
                           :value="item"
                         />
                       </el-select>
-                  <span>&#8195;&</span>
+                  <span>&#8195;&#8195;&#8195;&</span>
                     </el-form-item>
                   </div>
                 </el-col>
                 
                 <el-col :span="8">
-                  <div style="display: flex; align-items: center;">
+                  <div>
                     <span style="margin-right: 13px;">维修状态:</span>
                     <el-form-item prop="proStatus">
                       <el-select v-model="condition2.proStatus" placeholder="请选择" style="flex: 1;">
@@ -306,9 +316,10 @@ const Data = reactive({
     pushTemplateMappingID: [],
     regular: '',
     isExclusive: false,
+    isExclusiveMaintenance: false,
     taskPriority: 1,
     triggerMethod: null, // 这里应根据实际情况设置默认值,比如0表示其中之一条件满足即触发
-    triggerMethod2: null, // 这里应根据实际情况设置默认值,比如0表示其中之一条件满足即触发
+    maintenanceTriggerMethod:null,
     conditionsJson: '' as any,
     maintenanceJson: '' as any,
     pushUserid: [] as number[], // 选中的用户ID数组
@@ -646,10 +657,10 @@ const openDialog = (row: alarmRluesFilterModel) => {
   console.log(row)
   if(row){
     console.log(Data.Filter)
-    const { triggerMethod, triggerMethod2, ruleName, roleMappingId, labelId,pushUserid,condition,condition2, ...rest } = Data.Filter;
+    const { triggerMethod, maintenanceTriggerMethod, ruleName, roleMappingId, labelId,pushUserid,condition,condition2, ...rest } = Data.Filter;
     Data.Filter = { ...rest, ...row };
     Data.Filter.triggerMethod = triggerMethod || Data.Filter.triggerMethod;
-    Data.Filter.triggerMethod2 = triggerMethod2 || Data.Filter.triggerMethod2;
+    Data.Filter.maintenanceTriggerMethod = maintenanceTriggerMethod || Data.Filter.maintenanceTriggerMethod;
     Data.Filter.roleMappingId = roleMappingId || Data.Filter.roleMappingId;
     Data.Filter.condition2 = condition2 || Data.Filter.condition2;
     Data.Filter.condition = condition || Data.Filter.condition;
@@ -662,6 +673,13 @@ const openDialog = (row: alarmRluesFilterModel) => {
     } else {
       Data.Filter.isExclusive = false;
     }
+
+    if (Data.Filter.isExclusiveMaintenance == '是') {
+      Data.Filter.isExclusiveMaintenance = true;
+    } else {
+      Data.Filter.isExclusiveMaintenance = false;
+    }
+
     const temp = <string[]>Data.Filter.pushMethod?.split(',');
     for (var i = 0; i < temp.length; i++) {
       if (temp[i] == '微信') {
@@ -707,11 +725,12 @@ const openDialog = (row: alarmRluesFilterModel) => {
       pushTemplateMappingID: [],
       regular: '',
       isExclusive: false,
+      isExclusiveMaintenance: false,
       taskPriority: 1,
       triggerMethod: null,
-      triggerMethod2: null,
       conditionsJson: null,
       maintenanceJson: null,
+      maintenanceTriggerMethod:null,
       pushUserid: []
     } as unknown as alarmRluesFilterModel;
   }

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

@@ -87,12 +87,11 @@
 
 <script setup lang="ts" name="partsManagement/oilGun">
 import { defineAsyncComponent, onBeforeMount, onMounted, reactive, ref, watch } from "vue";
-import { alarmRluesFilterModel_SearchFilter, alarmRluesFilterModel, PageInputAlarmRluesFilterModel, UserListItem } from "/@/api/admin/AlarmService/alarmRulesDto";
+import { alarmRluesFilterModel_SearchFilter, alarmRluesFilterModel, PageInputAlarmRluesFilterModel } from "/@/api/admin/AlarmService/alarmRulesDto";
 import { alarmRulesApi } from "/@/api/admin/AlarmService/alarmRulesApi";
 import eventBus from "/@/utils/mitt";
 import StatusBox from '/@/components/StatusBox.vue';
 import { useDynamicPageSize } from "/@/composables/useDynamicPageSize";
-import { ElMessage } from "element-plus";
 
 
 // 使用组合式函数获取分页状态
@@ -112,7 +111,6 @@ const Data = reactive({
     ruleName: "",
     Status:"",
     upload:"",
-    userName:"",
     isActive:undefined
   } as alarmRluesFilterModel_SearchFilter,
   /**表格信息 */
@@ -291,30 +289,8 @@ onMounted(async () => {
   })
 })
 
-const getUserList = async () => {
-  try {
-    const res = await new alarmRulesApi().getList({
-      currentPage: 1, 
-      pageSize: 100,
-      filter: {
-        // 可选过滤条件(如用户名搜索)
-        userName: "",
-      },
-    });
-    
-    // 处理返回数据
-    Data.userList = res.data.list.map((user: UserListItem) => ({
-      id: user.userId,
-      userName: user.userName, // 下拉框显示名称
-      value: user.userId, // 选中值为用户ID
-      nickname: user.nickname,
-      phone: user.userPhone,
-    }));
-  } catch (error) {
-    console.error("获取用户列表失败:", error);
-    ElMessage.error("用户列表加载失败");
-  }
-};
+
+
 </script>
 
 <style scoped lang="scss">

+ 33 - 38
admin.ui.plus-master/src/views/example/codeGeneration/index.vue

@@ -461,42 +461,37 @@ const onsubmit=()=>{
         }
       }
       indexCode=indexCode+`\n</el-form-item>
-          </el-form>`
-    }
-    if(selBtn.length>0){
-      indexCode=indexCode+`\n<el-row justify="space-between" class="submit-button" style="margin-bottom: -9px;">`
-      for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('批量')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-CirclePlus" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-            for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('查询')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-Search" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-            for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('添加')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-Plus" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-            for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('重置')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-RefreshRight" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-            for(let i=0;i<selBtn.length;i++){
-        if(selBtn[i].name.includes('上传')){
-          selection=true
-        }
-        indexCode=indexCode+`\n<el-button  type="primary" icon="ele-Upload" @click="${selBtn[i].method}"> ${selBtn[i].name} </el-button>`
-      }
-      indexCode=indexCode+`\n</el-row>`
+          </el-form>
+          
+          <hr>
+
+          `
     }
+if(selBtn.length > 0) {
+  const iconMap = [
+    { keyword: '批量导入', icon: 'ele-UploadFilled' },
+    { keyword: '审核', icon: 'ele-Tickets' },
+    { keyword: '导出', icon: 'ele-Document' },
+    { keyword: '查询', icon: 'ele-Search' },
+    { keyword: '添加', icon: 'ele-Plus' },
+    { keyword: '重置', icon: 'ele-RefreshRight' },
+    { keyword: '上传', icon: 'ele-Upload' },
+    { keyword: '删除', icon: 'ele-Delete' },
+  ];
+  
+  indexCode += `\n<el-row justify="space-between" class="submit-button" style="margin-bottom: -9px;">`;
+  
+  selBtn.forEach(btn => {
+    const match = iconMap.find(item => btn.name.includes(item.keyword));
+    const icon = match?.icon || '';
+    
+    if (match) selection = true;
+    
+    indexCode += `\n<el-button type="primary" icon="${icon}" @click="${btn.method}"> ${btn.name} </el-button>`;
+  });
+  
+  indexCode += `\n</el-row>`;
+}
     indexCode=indexCode+`\n</el-card>
       </el-col>`
   }
@@ -517,7 +512,7 @@ const onsubmit=()=>{
         indexCode=indexCode+`\n<el-link
                   class="my-el-link mr12 ml12"
                   type="primary"
-                  icon="ele-Upload"
+                  icon="ele-Delete"
                   @click="${tabBtn[i].method}(row)"
                   :underline="false"
                   target="_blank"
@@ -530,8 +525,8 @@ const onsubmit=()=>{
     if(state.isPage){
       indexCode=indexCode+`\n<div class="my-flex my-flex-end" style="margin-top: 20px">
             <el-pagination
-              v-model:currentPage="pageState.pageInput.CurrentPage"
-              v-model:page-size="pageState.pageInput.PageSize"
+              v-model:currentPage="pageState.pageInput.currentPage"
+              v-model:page-size="pageState.pageInput.pageSize"
               :total="state.total"
               :page-sizes="[10, 15, 20, 50, 100]"
               small