dylan 2 лет назад
Родитель
Сommit
da775a378b

+ 67 - 0
src/api/baseinfo/serviceperson.js

@@ -0,0 +1,67 @@
+import request from '@/router/axios';
+
+
+export const getOrgTree = () => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/org/dict',
+        method: 'get',
+
+    })
+}
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+
+export const getList = () => {
+    return request({
+        url: '/api/galaxy-business/serviceperson/list',
+        method: 'get',
+    })
+}
+
+

+ 416 - 0
src/views/business/manage/rtudetail.vue

@@ -0,0 +1,416 @@
+<!--
+ * @Title: 
+ * @Description:  测站基础信息
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <basic-container>
+
+        <el-form ref="form">
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>测站基本信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="测站名称:" labelWidth="150px">
+                    <div style="color: black;">{{ rtuInfo.rtuName }}</div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="测站编码:" labelWidth="150px">
+                    <div style="color: black;">{{ rtuInfo.rtuCode }}</div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="站点类型:" labelWidth="150px">
+                    <label style="color: black;">{{ rtuInfo.rtuKindDesc }}</label>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                    <el-col :span="24"> -->
+                <el-form-item label="通信网络类型:" labelWidth="150px">
+                    <div>
+                        <label v-if="(rtuInfo.isSatellite == 1)" style="color: black;">北斗通信</label>
+                        <label v-else style="color: black;">4G/5G移动网络通信</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="运维单位:" labelWidth="150px">
+                    <div>
+                        <label style="color: black;">{{ rtuInfo.manageCompany }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                </el-row> -->
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>测站地理位置信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="盟市:" labelWidth="150px">
+                    <div>
+                        <label style="color: black;">{{ rtuInfo.adCity }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="旗县区:" labelWidth="150px">
+                    <div>
+                        <label style="color: black;">{{ rtuInfo.adDist }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                    <el-col :span="24"> -->
+                <el-form-item label="经纬度:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.lng }},{{ rtuInfo.lat }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+
+                    </el-row> -->
+
+                <!-- <el-row type="flex">
+
+                        <el-col :span="24"> -->
+                <!-- <el-form-item label="纬度:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.lat }}</label>
+                    </div>
+                </el-form-item> -->
+                <!-- </el-col>
+                </el-row> -->
+
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="站点具体位置描述:" labelWidth="150px">
+                    <label style="color: black;">{{ rtuInfo.locationDesc }}</label>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+            </el-card>
+
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>RTU信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                    <el-col :span="24"> -->
+                <el-form-item label="RTU品牌:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;"> {{ rtuInfo.rtuBrand }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+
+
+                    </el-row> -->
+                <!-- 
+                <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="RTU型号:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.rtuModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="RTU更换时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.rtuReplaceDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="RTU报送单位:" labelWidth="150px">
+                    <label v-if="rtuInfo.datagramToSheng = 1 && rtuInfo.datagramToShi == 1 && rtuInfo.datagramToQu == 1"
+                        style="color: black;">自治区/盟市/旗县区</label>
+                    <label v-else-if="rtuInfo.datagramToSheng = 1 && rtuInfo.datagramToShi == 1"
+                        style="color: black;">自治区/盟市</label>
+                    <label v-else-if="rtuInfo.datagramToSheng = 1 && rtuInfo.datagramToQu == 1"
+                        style="color: black;">自治区/旗县区</label>
+                    <label v-else-if="rtuInfo.datagramToShi == 1 && rtuInfo.datagramToQu == 1"
+                        style="color: black;">盟市/旗县区</label>
+                    <label v-else-if="rtuInfo.datagramToSheng = 1" style="color: black;">自治区</label>
+                    <label v-else-if="rtuInfo.datagramToShi == 1" style="color: black;">盟市</label>
+                    <label v-else-if="rtuInfo.datagramToQu == 1" style="color: black;">旗县区</label>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+
+            </el-card>
+
+            <el-card v-if="rtuInfo.isRain == 1" shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>雨量传感器信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                    <el-col :span="24"> -->
+                <el-form-item label="雨量计品牌:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.rainSensorBrand }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="雨量计型号:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.rainSensorModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="雨量计更换时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.rainSensorReplaceDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+            </el-card>
+            <el-card v-if="(rtuInfo.isRiver == 1 || rtuInfo.isRes == 1)" shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>水位计传感器信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="水位计传感器类型:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.waterSensorTypeText }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="水位计品牌:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.waterSensorBrand }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="水位计型号:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.waterSensorModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="水位计更换时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.waterSensorReplaceDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+            </el-card>
+
+
+            <el-card v-if="rtuInfo.isGround == 1" shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>墒情传感器信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="墒情站传感器类型:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.groundSensorTypeText }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="墒情传感器品牌:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.groundSensorBrand }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="墒情传感器型号:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.groundSensorModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="墒情传感器更换时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.groundSensorReplaceDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+            </el-card>
+
+
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>供电系统信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="蓄电池容量(AH):" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.batteryModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="蓄电池更换时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.batteryReplaceDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="太阳能板(w):" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.sunPowerModel }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+
+            </el-card>
+
+            <el-card v-if="rtuInfo.isSatellite == 1" shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>卫星通讯</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="通讯模式:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.satelliteModelText }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                </el-row> -->
+            </el-card>
+
+            <el-card v-else shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>SIM卡信息</span>
+                </div>
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="SIM卡号:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.networkSimId }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="SIM卡开卡单位:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.networkPayer }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+                <!-- <el-row type="flex">
+                        <el-col :span="24"> -->
+                <el-form-item label="SIM卡缴费截止时间:" labelWidth="150px">
+                    <div class="block">
+                        <label style="color: black;">{{ rtuInfo.networkPayEndDate }}</label>
+                    </div>
+                </el-form-item>
+                <!-- </el-col>
+                    </el-row> -->
+            </el-card>
+        </el-form>
+
+
+    </basic-container>
+</template>
+
+<script>
+import { getDetail } from "@/api/baseinfo/rtu.js";
+export default {
+    components: {
+
+    },
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'rtudetail',
+    data() {
+        return {
+            activeName: 'base',
+            query: {},
+            rtuInfo: [],
+        }
+    },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.onLoad();
+        },
+        onLoad() {
+            this.loading = true;
+            getDetail(this.id).then((res) => {
+                console.log(JSON.stringify(res.data));
+                this.rtuInfo = res.data.data;
+                this.loading = false;
+            });
+        },
+    }
+}
+</script>
+<style></style>
+

+ 188 - 0
src/views/business/warning/rtuwarninglist.vue

@@ -0,0 +1,188 @@
+<!--
+ * @Title: 
+ * @Description: 每个测站产生的预警信息列表
+ * @Author: swp
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <basic-container>
+            <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud" v-model="form"
+                :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
+                @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                @before-open="beforeOpen">
+                <template slot="warningStatus" slot-scope="row">
+                    <div v-if="row.row.warningStatus == 0" style="color: orangered;">
+                        预警中
+                    </div>
+                    <div v-else style="color: blue;">
+                        已关闭
+                    </div>
+                </template>
+            </avue-crud>
+        </basic-container>
+    </div>
+</template>
+
+<script>
+import { getPage, getDetail } from "@/api/warning/warning.js";
+export default {
+    components: {},
+    name: 'rtuwarninglist',
+    data() {
+        return {
+            drawer: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 80,
+                align: "center",
+                headerAlign: "center",
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                menu: false,
+                border: true,
+                index: true,
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                viewBtnText: "当前异常详情",
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                columnBtn: false,
+                column: [
+                    {
+                        label: "异常类别",
+                        prop: "warningKind",
+                        span: 12,
+                        // props: {
+                        //     label: 'dictValue',
+                        //     value: 'id'
+                        // },
+                        // dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=warn_kinds',
+                        html: true,
+                        formatter: (val) => {
+                            if (val.warningKind) {
+                                let htmltext = '';
+                                if (val.warningKind == 1) {
+                                    htmltext = '<b style="color:red">测站离线</b>';
+                                } else if (val.warningKind == 2) {
+                                    htmltext = '<b style="color:red">测站时钟异常</b>';
+                                } else if (val.warningKind == 3) {
+                                    htmltext = '<b style="color:red">测站雨量小时报漏报</b>';
+                                } else if (val.warningKind == 4) {
+                                    htmltext = '<b style="color:red">测站水位小时报漏报</b>';
+                                } else if (val.warningKind == 5) {
+                                    htmltext = '<b style="color:red">雨量5分钟上报延时</b>';
+                                } else if (val.warningKind == 6) {
+                                    htmltext = '<b style="color:red">雨量站小时上报延时</b>';
+                                } else if (val.warningKind == 7) {
+                                    htmltext = '<b style="color:red">水位站小时上报延时</b>';
+                                } else if (val.warningKind == 8) {
+                                    htmltext = '<b style="color:red">雨量疑似异常值</b>';
+                                }
+
+                                return htmltext;
+                            }
+                        }
+                    },
+                    {
+                        label: "异常信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "发生时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+            dialogTitle: '',
+        };
+    },
+    props: {
+        rtuCode: {
+            type: [String],
+            required: true
+        },
+    },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['rtuCode'] = this.rtuCode;
+            params['warningStatus'] = 0;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>