From 21d10974b1f1e19162b690c313c6f4014f182963 Mon Sep 17 00:00:00 2001
From: zhouwenxuan <1175765986@qq.com>
Date: 星期四, 31 八月 2023 15:53:35 +0800
Subject: [PATCH] 预警管理

---
 src/views/warningManage/warningPeople/index.vue                  |   68 ++++--
 src/types/warning.d.ts                                           |   31 +-
 src/views/warningManage/warningPeople/component/peopleDialog.vue |  124 ++++++++--
 src/views/warningManage/warningSet/component/setDialog.vue       |   46 +++
 src/api/warningManage/warningPeople/index.ts                     |   41 +++
 src/api/basicDataManage/gasManage/index.ts                       |    9 
 src/api/warningManage/warningInfo/index.ts                       |   25 ++
 src/views/warningManage/warningInfo/index.vue                    |  134 +++++++-----
 src/views/warningManage/warningInfo/component/infoDialog.vue     |   75 +++++-
 src/api/warningManage/warningSet/index.ts                        |   24 ++
 src/views/warningManage/warningSet/index.vue                     |   33 +-
 11 files changed, 450 insertions(+), 160 deletions(-)

diff --git a/src/api/basicDataManage/gasManage/index.ts b/src/api/basicDataManage/gasManage/index.ts
index c37b56e..4062b55 100644
--- a/src/api/basicDataManage/gasManage/index.ts
+++ b/src/api/basicDataManage/gasManage/index.ts
@@ -12,6 +12,15 @@
             });
         },
 
+        //气体不分页
+        getGas: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasCategory/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
         //气体新增
         addGas: (data: object) => {
             return request({
diff --git a/src/api/warningManage/warningInfo/index.ts b/src/api/warningManage/warningInfo/index.ts
new file mode 100644
index 0000000..0be772f
--- /dev/null
+++ b/src/api/warningManage/warningInfo/index.ts
@@ -0,0 +1,25 @@
+import request from '/@/utils/request';
+
+export function warningInfoApi() {
+    return {
+
+        //预警信息分页
+        getWarnLogPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnLog/page`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //预警信息处理
+        handleWarnLog: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnLog/handleById`,
+                method: 'post',
+                data: data
+            });
+        },
+
+    };
+}
\ No newline at end of file
diff --git a/src/api/warningManage/warningPeople/index.ts b/src/api/warningManage/warningPeople/index.ts
new file mode 100644
index 0000000..31edc1c
--- /dev/null
+++ b/src/api/warningManage/warningPeople/index.ts
@@ -0,0 +1,41 @@
+import request from '/@/utils/request';
+
+export function warningPeopleApi() {
+    return {
+
+        //预警通知人员分页
+        getWarnUserPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnUser/page`,
+                method: 'post',
+                data: data
+            });
+        },
+        //预警通知人员新增
+        addWarnUser: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnUser/add`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //预警通知人员修改
+        handelWarnUser: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnUser/update`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //预警通知人员删除
+        delWarnUser: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasWarnUser/del`,
+                method: 'post',
+                data: data
+            });
+        },
+    };
+}
\ No newline at end of file
diff --git a/src/api/warningManage/warningSet/index.ts b/src/api/warningManage/warningSet/index.ts
new file mode 100644
index 0000000..7e5cd8f
--- /dev/null
+++ b/src/api/warningManage/warningSet/index.ts
@@ -0,0 +1,24 @@
+import request from '/@/utils/request';
+
+export function warningSetApi() {
+    return {
+
+        //预警设置查询
+        getWarnSetPage: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasThreshold/list`,
+                method: 'post',
+                data: data
+            });
+        },
+
+        //预警设置修改
+        handelWarnSet: (data: object) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/gasThreshold/update`,
+                method: 'post',
+                data: data
+            });
+        },
+    };
+}
\ No newline at end of file
diff --git a/src/types/warning.d.ts b/src/types/warning.d.ts
index 82748e5..7162092 100644
--- a/src/types/warning.d.ts
+++ b/src/types/warning.d.ts
@@ -1,6 +1,7 @@
 interface TableDataRow {
+    id: string;
     name: string;
-    points: number;
+    threshold: number;
 }
 export interface TableDataState {
     tableData: {
@@ -12,8 +13,9 @@
     isShowUserDialog: boolean;
     disabled: boolean;
     setForm: {
+        id: string;
         name: string;
-        points: number;
+        threshold: number;
     };
     setFormRules:{},
 }
@@ -22,6 +24,8 @@
     id: string;
     name: string;
     phone: string;
+    realName: string;
+    userId: string;
 }
 export interface PeopleDataState {
     tableData: {
@@ -32,7 +36,7 @@
             pageIndex: number;
             pageSize: number;
             searchParams:{
-                name: string
+                realName: string
             }
         };
     }
@@ -43,8 +47,10 @@
     isShowUserDialog: boolean;
     disabled: boolean;
     peopleForm: {
+        id: string;
         name: string;
         phone: string;
+        realName: string;
     };
     setFormRules:{},
     peopleList: Array<TableDataPeople>
@@ -53,15 +59,16 @@
 export interface TableDataInfo {
     id: string;
     content: string;
-    warningTime: string;
-    name: string;
-    ppm: string;
-    level: string;
-    notifier: string;
-    managePeople: string;
-    manageTime: string;
+    warnTime: string;
+    gasName: string;
+    gasConcentration: string;
+    gasThresholdId: string;
+    handlerName: string;
+    handlerRealName: string;
+    handlerTime: string;
     status: string;
     method?: string;
+    gasWarnLogSmsUsers: []
 }
 export interface InfoDataState {
     tableData: {
@@ -72,7 +79,7 @@
             pageIndex: number;
             pageSize: number;
             searchParams:{
-                time: [];
+                time: string[];
                 level: string;
                 status: string;
                 gas: string;
@@ -87,12 +94,14 @@
 export interface people {
     id: string;
     name: string;
+    realName: string;
 }
 export interface InfoState {
     title: string;
     isShowUserDialog: boolean;
     disabled: boolean;
     infoForm: {
+        id: string;
         name: string;
         method: string;
     };
diff --git a/src/views/warningManage/warningInfo/component/infoDialog.vue b/src/views/warningManage/warningInfo/component/infoDialog.vue
index df40d83..599ed3a 100644
--- a/src/views/warningManage/warningInfo/component/infoDialog.vue
+++ b/src/views/warningManage/warningInfo/component/infoDialog.vue
@@ -15,7 +15,7 @@
                         size="default"
                         :disabled="state.disabled"
                     >
-                        <el-option v-for="item in state.peopleList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                        <el-option v-for="item in state.peopleList" :key="item.id" :label="item.realName" :value="item.id"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="处理方式:" prop="points">
@@ -35,6 +35,9 @@
 <script setup lang="ts">
 import {reactive, ref} from "vue";
 import {InfoState} from "/@/types/warning";
+import {userApi} from "/@/api/systemManage/user";
+import {ElMessage} from "element-plus";
+import {warningInfoApi} from "/@/api/warningManage/warningInfo";
 
 const gasRef = ref();
 const emit = defineEmits(["getInfoData"]);
@@ -43,42 +46,74 @@
     isShowUserDialog: false,
     disabled: false,
     infoForm: {
+        id: '',
         name: '',
         method: ''
     },
     setFormRules:{
         name: [{ required: true, message: '请选择预警人员', trigger: 'blur' }],
     },
-    peopleList: [
-        // {
-        //     id: '1',
-        //     name: '张三',
-        // },
-        // {
-        //     id: '2',
-        //     name: '李四',
-        // }
-    ]
+    peopleList: []
 });
 const openDialog = (type: string, value: any) => {
+    getUserList();
     state.isShowUserDialog = true;
     if (type === '查看') {
         state.disabled = true;
-        state.infoForm = JSON.parse(JSON.stringify(value));
-        state.infoForm.name = state.infoForm.managePeople;
-        console.log("info",state.infoForm)
+        let data = JSON.parse(JSON.stringify(value));
+        state.infoForm.id = data.id;
+        state.infoForm.name = data.handlerId;
+        state.infoForm.method = data.handlerDesc;
     } else if (type === '处理'){
         state.disabled = false;
-        state.infoForm = {
-            name: '',
-            method: ''
-        }
+        state.infoForm = JSON.parse(JSON.stringify(value));
     }
     state.title = type;
 };
 
-const onSubmit = () => {
-    gasRef.value.clearValidate();
+const getUserList = async () => {
+    const param = {
+        pageIndex: 1,
+        pageSize: 9999,
+        searchParams: {
+            roleId: null,
+            name: "",
+            realName: "",
+            userIndentityId: null
+        }
+    }
+    let res = await userApi().getUserList(param);
+    if(res.data.code == 100) {
+        state.peopleList = res.data.data;
+    }else {
+        ElMessage({
+            type: 'error',
+            message: res.data.msg
+        });
+    }
+}
+
+const onSubmit = async () => {
+    if(state.title == '处理') {
+        const param = {
+            id: state.infoForm.id,
+            userId: state.infoForm.name,
+            handlerDesc: state.infoForm.method
+        }
+        let res = await warningInfoApi().handleWarnLog(param);
+        if(res.data.code == 100) {
+            ElMessage({
+                type: 'success',
+                message: '处理成功'
+            });
+        }else {
+            ElMessage({
+                type: 'error',
+                message: res.data.msg
+            });
+        }
+        gasRef.value.clearValidate();
+    }
     state.isShowUserDialog = false;
     emit('getInfoData');
 };
diff --git a/src/views/warningManage/warningInfo/index.vue b/src/views/warningManage/warningInfo/index.vue
index 3ad31f8..4adf885 100644
--- a/src/views/warningManage/warningInfo/index.vue
+++ b/src/views/warningManage/warningInfo/index.vue
@@ -40,8 +40,9 @@
                             class="w100"
                             style="max-width: 180px"
                             size="default"
+                            filterable
                         >
-                            <el-option v-for="item in state.tableData.gasList" :key="item.label" :label="item.value" :value="item.label"></el-option>
+                            <el-option v-for="item in state.tableData.gasList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                     <el-button size="default" type="primary" class="ml10" @click="search()">
@@ -60,28 +61,34 @@
             </div>
             <el-table :data="state.tableData.data" style="width: 100%">
                 <el-table-column align="center" prop="content" label="预警内容"/>
-                <el-table-column align="center" prop="warningTime" label="预警时间"/>
-                <el-table-column align="center" prop="name" label="气体名称"/>
-                <el-table-column align="center" prop="ppm" label="气体浓度"/>
-                <el-table-column align="center" prop="level" label="预警级别" height="100">
+                <el-table-column align="center" prop="warnTime" label="预警时间"/>
+                <el-table-column align="center" prop="gasName" label="气体名称"/>
+                <el-table-column align="center" prop="gasConcentration" label="气体浓度"/>
+                <el-table-column align="center" prop="gasThresholdId" label="预警级别" height="100">
                     <template #default="scope">
-                        <span class="yellow" v-if="scope.row.level == '1'">黄色预警</span>
-                        <span class="red" v-if="scope.row.level == '2'">红色预警</span>
+                        <span class="yellow" v-if="scope.row.gasThresholdId == '1'">黄色预警</span>
+                        <span class="red" v-else-if="scope.row.gasThresholdId == '2'">红色预警</span>
                     </template>
                 </el-table-column>
-                <el-table-column align="center" prop="notifier" label="通知人员"/>
-                <el-table-column align="center" prop="managePeople" label="处理人"/>
-                <el-table-column align="center" prop="manageTime" label="处理时间"/>
+                <el-table-column align="center" prop="gasWarnLogSmsUsers" label="通知人员">
+                    <template #default="scope">
+                        <div v-for="(item, index) in scope.row.gasWarnLogSmsUsers" :key="index">
+                            {{item.realname}}
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" prop="handlerRealName" label="处理人"/>
+                <el-table-column align="center" prop="handlerTime" label="处理时间"/>
                 <el-table-column align="center" prop="status" label="处理状态">
                     <template #default="scope">
-                        <span v-if="scope.row.status == '1'">未处理</span>
-                        <span v-if="scope.row.status == '2'">已处理</span>
+                        <span v-if="scope.row.status == '0'">未处理</span>
+                        <span v-if="scope.row.status == '1'">已处理</span>
                     </template>
                 </el-table-column>
                 <el-table-column label="操作" show-overflow-tooltip width="140">
                     <template #default="scope">
-                        <el-button size="small" text type="primary" v-if="scope.row.status == '2'" @click="openDialog('查看', scope.row)">查看</el-button>
-                        <el-button size="small" text type="primary" v-if="scope.row.status == '1'" @click="openDialog('处理', scope.row)">处理</el-button>
+                        <el-button size="small" text type="primary" v-if="scope.row.status == '1'" @click="openDialog('查看', scope.row)">查看</el-button>
+                        <el-button size="small" text type="primary" v-if="scope.row.status == '0'" @click="openDialog('处理', scope.row)">处理</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -106,42 +113,17 @@
 </template>
 
 <script setup lang="ts">
-import {reactive, ref} from "vue";
+import {reactive, ref, onMounted} from "vue";
 import { ElMessage, ElMessageBox } from 'element-plus'
 import {InfoDataState, PeopleDataState} from "/@/types/warning";
 import infoDialog from "./component/infoDialog.vue";
+import { gasManageApi } from "/@/api/basicDataManage/gasManage";
+import {warningInfoApi} from "/@/api/warningManage/warningInfo";
 
 const infoRef = ref();
 const state = reactive<InfoDataState>({
     tableData: {
-        data: [
-            // {
-            //     id: '1',
-            //     content: '【气体监测预警提示】2023年10月20日8:30 甲烷气体浓度连续超标系统判断为黄色预警,请相关负责人及时检查处置。',
-            //     warningTime: '2023年10月20日 8:30',
-            //     name: '甲烷',
-            //     ppm: '5ppm',
-            //     level: '1',
-            //     notifier: '老娄、老程',
-            //     managePeople: '张三',
-            //     manageTime: '2023年10月20日  11:30',
-            //     status: '1',
-            // },
-            // {
-            //     id: '1',
-            //     content: '【气体监测预警提示】2023年10月20日8:30 甲烷气体浓度连续超标系统判断为黄色预警,请相关负责人及时检查处置。',
-            //     warningTime: '2023年10月20日 8:30',
-            //     name: '甲烷',
-            //     ppm: '5ppm',
-            //     level: '2',
-            //     notifier: '老娄、老程',
-            //     managePeople: '张三',
-            //     manageTime: '2023年10月20日  11:30',
-            //     status: '2',
-            //     method:'xxx'
-            // },
-
-        ],
+        data: [],
         total: 0,
         loading: false,
         listQuery: {
@@ -166,29 +148,64 @@
         ],
         statusList: [
             {
-                label: '1',
+                label: '0',
                 value: '未处理'
             },
             {
-                label: '2',
+                label: '1',
                 value: '已处理'
             }
         ],
-        gasList: [
-            {
-                label: '1',
-                value: '甲醛'
-            },
-            {
-                label: '2',
-                value: '甲烷'
-            }
-        ]
+        gasList: []
     }
 });
 
-const initInfoData = () => {
-    console.log("数据列表")
+//页面加载
+onMounted(() => {
+    getGas();
+    initInfoData();
+});
+
+//气体列表
+const getGas = async () => {
+    let res = await gasManageApi().getGas({});
+    if(res.data.code == 100){
+        state.tableData.gasList = res.data.data;
+    }else {
+        ElMessage({
+            type: 'warning',
+            message: res.data.msg
+        });
+    }
+};
+
+//预警信息列表
+const initInfoData = async () => {
+    const param = {
+        pageIndex: state.tableData.listQuery.pageIndex,
+        pageSize: state.tableData.listQuery.pageSize,
+        searchParams: {
+            startTime: state.tableData.listQuery.searchParams.time[0],
+            endTime: state.tableData.listQuery.searchParams.time[1],
+            gasCategoryId: state.tableData.listQuery.searchParams.gas,
+            status: state.tableData.listQuery.searchParams.status,
+            gasThresholdId: state.tableData.listQuery.searchParams.level,
+        }
+    };
+    let res = await warningInfoApi().getWarnLogPage(param);
+    console.log("res",res)
+    if(res.data.code == 100) {
+        state.tableData.data = res.data.data;
+        state.tableData.total = res.data.total;
+        state.tableData.listQuery.pageIndex = res.data.pageIndex;
+        state.tableData.listQuery.pageSize = res.data.pageSize;
+    }else {
+        ElMessage({
+            type: 'warning',
+            message: res.data.msg
+        });
+    }
+
 };
 const onHandleSizeChange = (val: number) => {
     state.tableData.listQuery.pageSize = val;
@@ -221,9 +238,12 @@
 };
 
 const search = () => {
+    state.tableData.listQuery.pageIndex = 1;
+    initInfoData();
     console.log("vla",state.tableData.listQuery.searchParams)
 }
 const reset = () => {
+    state.tableData.listQuery.pageIndex = 1;
     state.tableData.listQuery.searchParams.time = [];
     state.tableData.listQuery.searchParams.level = '';
     state.tableData.listQuery.searchParams.status = '';
diff --git a/src/views/warningManage/warningPeople/component/peopleDialog.vue b/src/views/warningManage/warningPeople/component/peopleDialog.vue
index 41562f6..28cdc67 100644
--- a/src/views/warningManage/warningPeople/component/peopleDialog.vue
+++ b/src/views/warningManage/warningPeople/component/peopleDialog.vue
@@ -8,7 +8,7 @@
             <el-form :model="state.peopleForm" size="default" ref="gasRef" :rules="state.setFormRules" label-width="150px">
                 <el-form-item label="预警人员:" prop="name">
                     <el-select
-                        v-model="state.peopleForm.name"
+                        v-model="state.peopleForm.realName"
                         filterable
                         class="w100"
                         style="max-width: 180px"
@@ -16,9 +16,9 @@
                         @change="changePeople"
                         :disabled="state.disabled"
                     >
-                        <el-option v-for="item in state.peopleList" :key="item.id" :label="item.name" :value="item.id">
+                        <el-option v-for="item in state.peopleList" :key="item.id" :label="item.realName" :value="item.id">
                             <div class="valueTable">
-                                <div><div>姓名:</div><span>{{item.name}}</span></div>
+                                <div><div>姓名:</div><span>{{item.realName}}</span></div>
                                 <div><div>手机号:</div><span>{{item.phone}}</span></div>
                             </div>
                         </el-option>
@@ -41,6 +41,9 @@
 <script setup lang="ts">
 import {reactive, ref} from "vue";
 import {PeopleState} from "/@/types/warning";
+import { userApi } from "/@/api/systemManage/user";
+import { warningPeopleApi } from "/@/api/warningManage/warningPeople";
+import {ElMessage} from "element-plus";
 
 const gasRef = ref();
 const emit = defineEmits(["getPeopleData"]);
@@ -49,27 +52,22 @@
     isShowUserDialog: false,
     disabled: false,
     peopleForm: {
+        id: '',
         name: '',
-        phone: ''
+        phone: '',
+        realName: ''
     },
     setFormRules:{
         name: [{ required: true, message: '请选择预警人员', trigger: 'blur' }],
         phone: [{ required: true, message: '请输入手机号', trigger: 'blur' }],
     },
-    peopleList: [
-        // {
-        //     id: '1',
-        //     name: '张三',
-        //     phone: '112554566666'
-        // },
-        // {
-        //     id: '2',
-        //     name: '李四',
-        //     phone: '11254212321'
-        // }
-    ]
+    peopleList: []
 });
+
+let chooseObj = reactive<any>({});
+
 const openDialog = (type: string, value: any) => {
+    getUserList();
     state.isShowUserDialog = true;
     if (type === '查看') {
         state.disabled = true;
@@ -79,26 +77,100 @@
         state.disabled = false;
         state.title = '修改预警人员';
         state.peopleForm = JSON.parse(JSON.stringify(value));
+        chooseObj = state.peopleForm;
     }else {
         state.disabled = false;
         state.title = '新增预警人员';
         state.peopleForm = {
+            id: '',
             name: '',
-            phone: ''
+            phone: '',
+            realName: ''
         }
     }
 };
-
-const changePeople = (val:any) => {
-    const obj = state.peopleList.find(item => item.id === val);
-    if(obj){
-        state.peopleForm.phone = obj.phone;
+const getUserList = async () => {
+    const param = {
+        pageIndex: 1,
+        pageSize: 9999,
+        searchParams: {
+            roleId: null,
+            name: "",
+            realName: "",
+            userIndentityId: null
+        }
+    }
+    let res = await userApi().getUserList(param);
+    if(res.data.code == 100) {
+        state.peopleList = res.data.data;
+    }else {
+        ElMessage({
+            type: 'error',
+            message: res.data.msg
+        });
     }
 }
-const onSubmit = () => {
-    gasRef.value.clearValidate();
-    state.isShowUserDialog = false;
-    emit('getPeopleData');
+
+const changePeople = (val:any) => {
+    chooseObj = state.peopleList.find(item => item.id === val);
+    console.log("obj",chooseObj)
+    if(chooseObj){
+        state.peopleForm.phone = chooseObj.phone;
+    }
+}
+const onSubmit = async () => {
+    if(state.title == '新增预警人员' || state.title == '修改预警人员'){
+        const valid = gasRef.value.validate();
+        if(valid) {
+            if(state.title == '新增预警人员'){
+                const param = {
+                    userId: chooseObj.id,
+                    name: chooseObj.name,
+                    realName: chooseObj.realName,
+                    phone: chooseObj.phone
+                }
+                let res = await warningPeopleApi().addWarnUser(param);
+                if(res.data.code == 100) {
+                    ElMessage({
+                        type: 'success',
+                        message: '新增成功'
+                    });
+                }else{
+                    ElMessage({
+                        type: 'error',
+                        message: res.data.msg
+                    });
+                }
+            }else if(state.title == '修改预警人员'){
+                const param = {
+                    id: state.peopleForm.id,
+                    userId: chooseObj.id,
+                    name: chooseObj.name,
+                    realName: chooseObj.realName,
+                    phone: chooseObj.phone
+                }
+                console.log("res",param)
+                let res = await warningPeopleApi().handelWarnUser(param);
+                if(res.data.code == 100) {
+                    ElMessage({
+                        type: 'success',
+                        message: '修改成功'
+                    });
+                }else{
+                    ElMessage({
+                        type: 'error',
+                        message: res.data.msg
+                    });
+                }
+            }
+        }
+        gasRef.value.clearValidate();
+        state.isShowUserDialog = false;
+        emit('getPeopleData');
+    }else {
+        state.isShowUserDialog = false;
+        emit('getPeopleData');
+    }
 };
 
 const handleClose = () => {
diff --git a/src/views/warningManage/warningPeople/index.vue b/src/views/warningManage/warningPeople/index.vue
index 0e8274e..e3c1063 100644
--- a/src/views/warningManage/warningPeople/index.vue
+++ b/src/views/warningManage/warningPeople/index.vue
@@ -4,9 +4,9 @@
             <div class="system-menu-search mb15">
                 <el-form :inline="true" >
                     <el-form-item label="姓名:">
-                        <el-input  v-model="state.tableData.listQuery.searchParams.name"  placeholder="姓名" ></el-input>
+                        <el-input  v-model="state.tableData.listQuery.searchParams.realName"  placeholder="请输入姓名" ></el-input>
                     </el-form-item>
-                    <el-button size="default" type="primary" class="ml10">
+                    <el-button size="default" type="primary" class="ml10" @click="search()">
                         <el-icon>
                             <ele-Search />
                         </el-icon>
@@ -28,9 +28,9 @@
             </el-button>
 
             <el-table :data="state.tableData.data" style="width: 100%">
-                <el-table-column align="center" prop="name" label="预警人员"/>
+                <el-table-column align="center" prop="realName"  label="预警人员"/>
                 <el-table-column align="center" prop="phone" label="手机号"/>
-                <el-table-column label="操作" show-overflow-tooltip width="140">
+                <el-table-column label="操作" show-overflow-tooltip align="center" width="240">
                     <template #default="scope">
                         <el-button size="small" text type="primary" @click="openDialog('查看', scope.row)">查看</el-button>
                         <el-button size="small" text type="primary" @click="openDialog('修改', scope.row)">修改</el-button>
@@ -59,40 +59,46 @@
 </template>
 
 <script setup lang="ts">
-import {reactive, ref} from "vue";
+import {reactive, ref, onMounted} from "vue";
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { PeopleDataState } from "/@/types/warning";
 import peopleDialog from "./component/peopleDialog.vue";
+import { warningPeopleApi } from "/@/api/warningManage/warningPeople";
 
 const peopleRef = ref();
 const state = reactive<PeopleDataState>({
     tableData: {
-        data: [
-            // {
-            //     id: '1',
-            //     name: '张三',
-            //     phone: '112554566666'
-            // },
-            // {
-            //     id: '2',
-            //     name: '李四',
-            //     phone: '11254212321'
-            // }
-        ],
+        data: [],
         total: 0,
         loading: false,
         listQuery: {
             pageIndex: 1,
             pageSize: 10,
             searchParams:{
-                name: ''
+                realName: ''
             }
         }
     }
 });
 
-const initPeopleData = () => {
-    console.log("数据列表")
+//页面加载
+onMounted(() => {
+    initPeopleData();
+});
+
+const initPeopleData = async () => {
+    let res = await warningPeopleApi().getWarnUserPage(state.tableData.listQuery);
+    if(res.data.code == 100) {
+        state.tableData.listQuery.pageIndex = res.data.pageIndex;
+        state.tableData.listQuery.pageSize = res.data.pageSize;
+        state.tableData.total = res.data.total;
+        state.tableData.data = res.data.data;
+    }else {
+        ElMessage({
+            type: 'error',
+            message: res.data.msg
+        });
+    }
 };
 const onHandleSizeChange = (val: number) => {
     state.tableData.listQuery.pageSize = val;
@@ -116,15 +122,31 @@
             type: 'warning',
         }
     )
-        .then(() => {
+    .then(async () => {
+        let res = await warningPeopleApi().delWarnUser({id: val.id})
+        if(res.data.code == 100) {
             ElMessage({
                 type: 'success',
                 message: '删除成功',
             })
-        })
+            state.tableData.listQuery.pageIndex = 1;
+            initPeopleData();
+        }else {
+            ElMessage({
+                type: 'error',
+                message: res.data.msg
+            });
+        }
+    })
+};
+const search = () => {
+    state.tableData.listQuery.pageIndex = 1;
+    initPeopleData();
 };
 const reset = () => {
-    state.tableData.listQuery.searchParams.name = '';
+    state.tableData.listQuery.pageIndex = 1;
+    state.tableData.listQuery.searchParams.realName = '';
+    initPeopleData();
 }
 </script>
 <style scoped lang="scss">
diff --git a/src/views/warningManage/warningSet/component/setDialog.vue b/src/views/warningManage/warningSet/component/setDialog.vue
index 87cedd9..ccf3cf4 100644
--- a/src/views/warningManage/warningSet/component/setDialog.vue
+++ b/src/views/warningManage/warningSet/component/setDialog.vue
@@ -5,12 +5,12 @@
             v-model="state.isShowUserDialog"
             width="550px"
         >
-            <el-form :model="state.setForm" size="default" ref="gasRef" :rules="state.setFormRules" label-width="150px">
+            <el-form :model="state.setForm" size="default" ref="gasRef" :rules=" state.title == '修改' ?state.setFormRules:''" label-width="150px">
                 <el-form-item label="预警名称:" prop="name">
                     <span>{{state.setForm.name}}</span>
                 </el-form-item>
-                <el-form-item label="连续超过阈值点数:" prop="points">
-                    <el-input v-model.trim="state.setForm.points" :disabled="state.disabled"></el-input>
+                <el-form-item label="连续超过阈值点数:" prop="threshold">
+                    <el-input v-model.trim="state.setForm.threshold" :disabled="state.disabled"></el-input>
                 </el-form-item>
             </el-form>
             <template #footer>
@@ -26,6 +26,8 @@
 <script setup lang="ts">
 import {reactive, ref} from "vue";
 import {SetState} from "/@/types/warning";
+import { warningSetApi } from "/@/api/warningManage/warningSet";
+import {ElMessage} from "element-plus/es";
 
 const gasRef = ref();
 const emit = defineEmits(["getSetData"]);
@@ -34,11 +36,12 @@
     isShowUserDialog: false,
     disabled: false,
     setForm: {
+        id: '',
         name: '',
-        points: 0
+        threshold: 0
     },
     setFormRules:{
-        points: [{ required: true, message: '请填写连续超过阈值点数', trigger: 'blur' }],
+        threshold: [{ required: true, message: '请填写连续超过阈值点数', trigger: 'blur' }],
     }
 });
 const openDialog = (type: string, value: any) => {
@@ -53,10 +56,35 @@
         state.setForm = JSON.parse(JSON.stringify(value));
     }
 };
-const onSubmit = () => {
-    gasRef.value.clearValidate();
-    state.isShowUserDialog = false;
-    emit('getSetData');
+const onSubmit = async () => {
+
+    if(state.title == '修改'){
+        const valid = gasRef.value.validate();
+        if(valid){
+            const param = {
+                id: state.setForm.id,
+                threshold: state.setForm.threshold
+            }
+            let res = await warningSetApi().handelWarnSet(param);
+            if(res.data.code == 100){
+                ElMessage({
+                    type: 'success',
+                    message: '修改成功'
+                });
+            }else {
+                ElMessage({
+                    type: 'error',
+                    message: res.data.msg
+                });
+            }
+        }
+        gasRef.value.clearValidate();
+        state.isShowUserDialog = false;
+        emit('getSetData');
+    }else {
+        state.isShowUserDialog = false;
+        emit('getSetData');
+    }
 };
 
 const handleClose = () => {
diff --git a/src/views/warningManage/warningSet/index.vue b/src/views/warningManage/warningSet/index.vue
index e7eae42..873e235 100644
--- a/src/views/warningManage/warningSet/index.vue
+++ b/src/views/warningManage/warningSet/index.vue
@@ -3,7 +3,7 @@
         <el-card shadow="hover">
             <el-table :data="state.tableData.data" style="width: 100%">
                 <el-table-column align="center" prop="name" label="预警名称"/>
-                <el-table-column align="center" prop="points" label="连续超过阈值点数"/>
+                <el-table-column align="center" prop="threshold" label="连续超过阈值点数"/>
                 <el-table-column label="操作" show-overflow-tooltip width="140">
                     <template #default="scope">
                         <el-button size="small" text type="primary" @click="openDialog('查看', scope.row)">查看</el-button>
@@ -17,28 +17,33 @@
 </template>
 
 <script setup lang="ts">
-import {reactive, ref} from "vue";
+import {reactive, ref, onMounted} from "vue";
 import { TableDataState } from "/@/types/warning";
 import setDialog from "./component/setDialog.vue";
+import { warningSetApi } from "/@/api/warningManage/warningSet";
+import {ElMessage} from "element-plus/es";
 
 const setRef = ref();
 const state = reactive<TableDataState>({
     tableData: {
-        data: [
-            {
-                name: '黄色预警',
-                points: 1
-            },
-            {
-                name: '红色预警',
-                points: 2
-            },
-        ]
+        data: []
     }
 });
+//页面加载
+onMounted(() => {
+    initSetData();
+});
 
-const initSetData = () => {
-    console.log("数据列表")
+const initSetData = async () => {
+    let res = await warningSetApi().getWarnSetPage({});
+    if(res.data.code == 100) {
+        state.tableData.data = res.data.data;
+    }else {
+        ElMessage({
+            type: 'error',
+            message: res.data.msg
+        });
+    }
 };
 const openDialog = (type: string, value: any) => {
     setRef.value.openDialog(type, value);

--
Gitblit v1.9.2