From 00bd5b220df95e62d554711da5645d825c05aaaf Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: Tue, 17 Mar 2026 10:55:42 +0800
Subject: [PATCH] 修改类型

---
 src/views/firework/alarm/index.vue |  358 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 187 insertions(+), 171 deletions(-)

diff --git a/src/views/firework/alarm/index.vue b/src/views/firework/alarm/index.vue
index 980f82b..c1db8bb 100644
--- a/src/views/firework/alarm/index.vue
+++ b/src/views/firework/alarm/index.vue
@@ -1,123 +1,153 @@
 <template>
   <div class="app-container">
-    <div style="display: flex;justify-content: space-between;margin-bottom: 10px">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
+    <div
+      style="display: flex; justify-content: space-between; margin-bottom: 10px"
+    >
+      <el-form
+        :inline="true"
+        style="display: flex; align-items: center; flex-wrap: wrap"
+      >
         <el-form-item>
           <el-date-picker
-              v-model="data.dateRange"
-              value-format="YYYY-MM-DD"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-              style="width: 300px"
+            v-model="data.dateRange"
+            value-format="YYYY-MM-DD"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            style="width: 300px"
           ></el-date-picker>
         </el-form-item>
-        <el-form-item label="报警类型:" >
+        <el-form-item label="报警类型:">
           <el-select
-              clearable
-              v-model="data.queryParams.filter.alarmType"
-              placeholder="请选择"
-              style="width: 100%"
+            clearable
+            v-model="data.queryParams.filter.algoModel"
+            placeholder="请选择"
+            style="width: 100%"
           >
             <el-option
-                v-for="item in data.typeList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
+              v-for="(item, index) in data.typeList"
+              :key="index"
+              :label="item.name"
+              :value="item.value"
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="状态:" >
+        <el-form-item label="状态:">
           <el-select
-              clearable
-              v-model="data.queryParams.filter.alarmStatus"
-              placeholder="请选择"
-              style="width: 100%"
+            clearable
+            v-model="data.queryParams.filter.alarmStatus"
+            placeholder="请选择"
+            style="width: 100%"
           >
             <el-option
-                v-for="item in data.statusList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
+              v-for="item in data.statusList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
             />
           </el-select>
         </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
+        <el-form-item>
+          <el-button type="primary" @click="getList">查询</el-button>
+          <el-button type="primary" plain @click="reset">重置</el-button>
         </el-form-item>
       </el-form>
     </div>
     <!-- 表格数据 -->
     <el-table v-loading="loading" :data="dataList" :border="true">
       <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="企业" prop="companyName" align="center"  />
+      <el-table-column label="企业" prop="companyName" align="center" />
       <el-table-column label="仓库" prop="storeName" align="center" />
       <el-table-column label="库房" prop="storeroomName" align="center" />
-      <el-table-column label="报警类型" prop="alarmType" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.alarmType == 1 ? '超员作业' : scope.row.alarmType == 2?'堵塞通道':scope.row.alarmType == 3?'超高超量':scope.row.alarmType == 4?'非法入侵':scope.row.alarmType == 5?'摄像头遮挡偏移':scope.row.alarmType == 6?'温度':scope.row.alarmType == 7?'湿度':'--'}}</span>
+      <el-table-column label="报警类型" prop="algoModel" align="center">
+        <template slot-scope="scope">
+          {{ getTypeName(scope.row.algoModel) }}
         </template>
       </el-table-column>
-      <el-table-column label="报警状态" prop="alarmStatus" align="center" >
+      <el-table-column label="报警状态" prop="alarmStatus" align="center">
         <template #default="scope">
-          <span>{{scope.row.alarmStatus == 1 ? '已消警' : '未消警'}}</span>
+          <span>{{ scope.row.alarmStatus == 1 ? "已消警" : "未消警" }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="报警图片" prop="alarmFile" align="center" width="120" >
+      <el-table-column
+        label="报警图片"
+        prop="alarmFile"
+        align="center"
+        width="120"
+      >
         <template #default="scope">
           <div class="demo-image__preview" v-if="scope.row.alarmFile">
             <el-image
-                style="width: 100px; height: 100px"
-                :src="scope.row.alarmFile"
-                :zoom-rate="1.2"
-                :max-scale="7"
-                :min-scale="0.2"
-                :preview-src-list="[scope.row.alarmFile]"
-                :initial-index="0"
-                fit="cover"
-                :preview-teleported= true
+              style="width: 100px; height: 100px"
+              :src="scope.row.alarmFile"
+              :zoom-rate="1.2"
+              :max-scale="7"
+              :min-scale="0.2"
+              :preview-src-list="[scope.row.alarmFile]"
+              :initial-index="0"
+              fit="cover"
+              :preview-teleported="true"
             />
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="报警时间" prop="warningDate" align="center" width="120" />
-      <el-table-column label="消警时间" prop="clearDate" align="center" width="120" >
+      <el-table-column
+        label="报警时间"
+        prop="warningDate"
+        align="center"
+        width="120"
+      />
+      <el-table-column
+        label="消警时间"
+        prop="clearDate"
+        align="center"
+        width="120"
+      >
         <template #default="scope">
-          <span v-if="scope.row.clearDate">{{scope.row.clearDate}}</span>
+          <span v-if="scope.row.clearDate">{{ scope.row.clearDate }}</span>
           <span v-else>—</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  >
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template #default="scope">
-          <el-button link type="primary" v-if="scope.row.alarmStatus == 0" @click="handelAlarm(scope.row)">消警</el-button>
+          <el-button
+            link
+            type="primary"
+            v-if="scope.row.alarmStatus == 0"
+            @click="handelAlarm(scope.row)"
+            >消警</el-button
+          >
           <span v-else>—</span>
         </template>
       </el-table-column>
     </el-table>
     <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageIndex"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
+      v-show="total > 0"
+      :total="total"
+      v-model:page="queryParams.pageIndex"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
     />
   </div>
 </template>
 
 <script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delTemplate, getTemplate} from "@/api/signAgreement/template";
-import {editAlarm, getAlarm} from "@/api/company/alarm";
+import {
+  getCurrentInstance,
+  onMounted,
+  onUnmounted,
+  reactive,
+  ref,
+  toRefs,
+} from "vue";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { delTemplate, getTemplate } from "@/api/signAgreement/template";
+import { editAlarm, getAlarm } from "@/api/company/alarm";
 import Cookies from "js-cookie";
 const { proxy } = getCurrentInstance();
 const loading = ref(false);
@@ -128,95 +158,90 @@
     pageIndex: 1,
     pageSize: 10,
     filter: {
-      alarmStartTime: '',
-      alarmEndTime: '',
+      alarmStartTime: "",
+      alarmEndTime: "",
       alarmStatus: null,
-      companyCode: '',
-      alarmType: null
-    }
+      companyCode: "",
+      algoModel: "",
+    },
   },
   total: 0,
   dataList: [],
   statusList: [
     {
       id: 1,
-      name: '已消警'
+      name: "已消警",
     },
     {
       id: 0,
-      name: '未消警'
+      name: "未消警",
     },
   ],
-  dateRange:[],
+  dateRange: [],
   typeList: [
     {
-      id: 1,
-      name: '超员作业'
+      name: "吸烟检测",
+      value: "SmokingAlarm",
     },
     {
-      id: 2,
-      name: '堵塞通道'
+      name: "逃生通道堵塞",
+      value: "ChannelBlockageDetection",
     },
     {
-      id: 3,
-      name: '超高超量'
+      name: "区域入侵",
+      value: "FieldDetectorObjectsInside",
     },
     {
-      id: 4,
-      name: '非法入侵'
+      name: "人员数量超限",
+      value: "CrowdDensityCriticalAlarm",
     },
     {
-      id: 5,
-      name: '摄像头遮挡偏移'
+      name: "明火检测",
+      value: "FireDetection",
     },
     {
-      id: 6,
-      name: '温度'
+      name: "预置标记检测",
+      value: "PresetMarkerDetection",
     },
-    {
-      id: 7,
-      name: '湿度'
-    },
-  ]
+  ],
 });
 
 const { queryParams, total, dataList } = toRefs(data);
 const classHourRef = ref();
-onMounted(()=>{
-  const info = JSON.parse(Cookies.get('userInfo'))
-  data.queryParams.filter.companyCode = info.companynumber
-  getList()
-})
+onMounted(() => {
+  const info = JSON.parse(Cookies.get("userInfo"));
+  data.queryParams.filter.companyCode = info.companynumber;
+  getList();
+});
 
-onUnmounted(()=>{
+onUnmounted(() => {});
 
-})
-
-const addProject = (type,value) => {
-  dialogRef.value.openDialog(type,value)
-}
-
+const addProject = (type, value) => {
+  dialogRef.value.openDialog(type, value);
+};
+const getTypeName = (type) => {
+  return data.typeList.find((i) => i.value == type)?.name;
+};
 const getList = async () => {
-  loading.value = true
-  data.queryParams.filter.alarmStartTime = data.dateRange[0]
-  data.queryParams.filter.alarmEndTime = data.dateRange[1]
-  const res = await getAlarm(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.result.records
-        .map(item => {
+  loading.value = true;
+  data.queryParams.filter.alarmStartTime = data.dateRange[0];
+  data.queryParams.filter.alarmEndTime = data.dateRange[1];
+  const res = await getAlarm(data.queryParams);
+  if (res.code == 200) {
+    data.dataList = res.result.records.map((item) => {
       return {
         ...item,
-        alarmFile:item.alarmFile ? import.meta.env.VITE_APP_BASE_API+ '/upload/'+  item.alarmFile: ''
-      }
-    })
-    data.total = res.result.total
-  }else{
-    ElMessage.warning(res.message)
+        alarmFile: item.alarmFile
+          ? import.meta.env.VITE_APP_BASE_API + "/upload/" + item.alarmFile
+          : "",
+      };
+    });
+    data.total = res.result.total;
+  } else {
+    ElMessage.warning(res.message);
   }
-  loading.value = false
-}
-
-
+  loading.value = false;
+};
 
 /** 重置新增的表单以及其他数据  */
 function reset() {
@@ -224,61 +249,52 @@
     pageIndex: 1,
     pageSize: 10,
     filter: {
-      alarmStartTime: '',
-      alarmEndTime: '',
+      alarmStartTime: "",
+      alarmEndTime: "",
       alarmStatus: null,
-      companyCode: '',
-      alarmType: null
-    }
-  }
-  data.dateRange = []
-  getList()
+      companyCode: "",
+      algoModel: "",
+    },
+  };
+  data.dateRange = [];
+  getList();
 }
 const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delTemplate(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
+  ElMessageBox.confirm("确定删除此条数据?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const res = await delTemplate(val.id);
+    if (res.code == 200) {
+      ElMessage.success("数据删除成功");
+      await getList();
+    } else {
+      ElMessage.warning(res.message);
+    }
+  });
+};
 
 const handelAlarm = (val) => {
-  ElMessageBox.confirm(
-      '确定对此条数据消警?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const param = {
-          id: val.id
-        }
-        const res = await editAlarm(param)
-        if(res.code == 200){
-          ElMessage.success('消警成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
+  ElMessageBox.confirm("确定对此条数据消警?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(async () => {
+    const param = {
+      id: val.id,
+    };
+    const res = await editAlarm(param);
+    if (res.code == 200) {
+      ElMessage.success("消警成功");
+      await getList();
+    } else {
+      ElMessage.warning(res.message);
+    }
+  });
+};
 
 const getRowKeys = (row) => {
-  return row.name
-}
+  return row.name;
+};
 </script>

--
Gitblit v1.9.2