whyczyk
2022-03-23 cbd3fb82b1d15c0a82b63496add7b7af37ac8738
修改实时监控数据表格不出来的问题
2个文件已修改
2个文件已添加
727 ■■■■■ 已修改文件
src/assets/js/const/const_61850.js 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_9100.js 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/monitoring/js/api.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/monitoring/real-monitoring.vue 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/js/const/const_61850.js
New file
@@ -0,0 +1,268 @@
export default {
    workstates: ["在线浮充", "预充电", "核容测试", "停电放电", "内阻测试", "K1/D1测试", '离线养护测试', '未知'],
    alarmstates: ["继电器K1告警", "通讯告警", "设备过温告警", "二极管D1告警"],
    stopreasons: {
        0: '设备掉电', 1: '手动终止', 2: '放电时间到', 3: '放电容量到', 4: '单体电压下限到', 5: '单体温度上限到', 6: '组端电压下限到',
        7: '市电中断', 8: '单体模块通信异常', 9: '存储数据满', 10: '机内温度异常', 11: '放电电流异常', 12: '后台通信中断', 13: '内部程序异常',
        14: '电源电压高', 15: '协议转通信异常', 16: '其他', 27: '其他设备在工作', 28: '其他设备故障停止', 29: '电压过高或过低', 30: '干接点故障',
        31: '单体异常', 32: '电压输入过高或过低', 33: '电池电流异常', 34: "kd测试故障", 35: "切换装置通信异常", 36: "切换装置故障",
        37: "切换装置接触器异常", 100: '未知'
    },
    failreasons: {
        0: '无', 1: '暂停', 2: '正在放电测试', 3: '正在等待放电', 4: '正在限流充电', 5: '正在直连充电', 6: '正在等待充电', 7: '放电时间到停止',
        8: '放电容量到停止', 9: '单体电压下限到停止', 10: '组端电压下限到停止', 11: '市电中断停止', 12: '存储数据满停止', 13: '机内温度异常停止',
        14: '放电电流过流停止', 15: '后台通信中断停止', 16: '负载模块通信中断停止', 17: '选择模块通信中断停止', 18: '负载模块放电过功率停止',
        19: '内部程序异常停止', 20: '市电恢复停止升压放电', 21: '充电过程中市电中断', 22: '组端电压下限', 23: '单体温度上限到停止', 24: '在线电压异常高停止',
        25: '协转通信异常停止', 26: '单体通信异常停止', 27: '其他设备在工作', 28: '其他设备故障停止', 29: '电压过高或过低', 30: '干接点输入故障',
        31: '单体异常', 32: '电压输入过高或过低', 33: '电池电流异常', 34: 'kd测试故障', 35: '其他的设备通信故障',
        51: '其他设备暂停', 52: '其他设备正在放电测试', 53: '其他设备正在等待放电', 54: '其他设备正在限流充电', 55: '其他设备正在直连充电',
        56: '其他设备正在等待充电', 57: '其他设备放电时间到停止', 58: '其他设备放电容量到停止', 59: '其他设备单体电压下限到停止',
        60: '其他设备组端电压下限到停止', 61: '其他设备市电中断停止', 62: '其他设备存储数据满停止', 63: '其他设备机内温度异常停止',
        64: '其他设备放电电流过流停止', 65: '其他设备后台通信中断停止', 66: '其他设备负载模块通信中断停止', 67: '其他设备选择模块通信中断停止',
        68: '其他设备负载模块放电过功率停止', 69: '其他设备内部程序异常停止', 70: '其他设备市电恢复停止升压放电', 71: '其他设备充电过程中市电中断',
        72: '其他设备组端电压下限', 73: '其他设备单体温度上限到停止', 74: '其他设备在线电压异常高停止', 75: '其他设备协转通信异常停止',
        76: '其他设备单体通信异常停止', 77: '其他设备在工作', 78: '其他设备故障停止', 79: '其他设备电压过高或过低', 80: '其他设备干接点输入故障',
        81: '其他设备单体异常', 82: '其他设备电压输入过高或过低', 83: '其他设备电池电流异常', 84: '其他设备kd测试故障',
    },
    cmd: {
        start: 81,    // 启动测试
        stop: 83,    // 停止测试
        set: 40,    // 设置参数
        get: 41,    // 获取参数
    },
    testType: [
        {
            label: '核容放电',
            value: 37,
        },
        {
            label: '内阻测试',
            value: 50
        },
        {
            label: 'K1/D1测试',
            value: 72
        },
    ],
    dischargeRules: {
        DisCurr: {        // 核容电流
            pattern: /^[0-9]{1,3}$/,
            regVal: true,
            min: 1,
            max: 300,
            msg: '取值范围1~300(整数)'
        },
        DisTime: {        // 核容时长
            pattern: /^[0-9]{1,4}$/,
            regVal: true,
            min: 1,
            max: 10000,
            msg: '取值范围1~10000(整数)'
        },
        DisCap: {        // 核容容量
            pattern: /^[0-9]{1,4}$/,
            regVal: true,
            min: 1,
            max: 2000,
            msg: '取值范围1~2000(整数)'
        },
        GroupVol_Low: {        // 组端电压下限
            pattern: /^[0-9]+(\.[0-9]{0,1})?$/,
            regVal: true,
            min: 43,
            max: 54,
            msg: '取值范围43.0~54.0'
        },
        MonomerVol_Low: {        // 单体电压下限
            pattern: /^[0-9]{1,2}(\.[0-9]{0,2})?$/,
            regVal: true,
            min: 1.8,
            max: 2.25,
            msg: '取值范围1.80~2.25(保留两位小数)'
        },
        MonomerTmp_High: {        // 单体温度上限
            pattern: /^[0-9]{1,2}(\.[0-9]{0,1})?$/,
            regVal: true,
            min: 10,
            max: 60,
            msg: '取值范围10~60(保留一位小数)'
        }
    },
    stateList: [
        {
            id: 1,
            name: "workState",
            type: "",
            icon: "",
            text: "设备工作状态:",
            value: "在线浮充",
            show: false
        },
        {
            id: 2,
            name: "connect",
            type: "",
            icon: "el-icon-tongxun",
            text: "汇集器通讯:",
            value: "正常",
            show: false
        },
        {
            id: 3,
            name: "devTemp",
            type: "",
            icon: "el-icon-wendu",
            text: "设备温度:",
            value: "正常",
            show: false
        },
        {
            id: 4,
            name: "contact",
            type: "",
            icon: "el-icon-fenxiang",
            text: "干接点:",
            value: "正常",
            show: false
        },
        {
            id: 7,
            name: "resDay",
            type: "",
            icon: "",
            text: "剩余天数:",
            value: "0",
            notShow: true,
            show: false
        },
        {
            id: 8,
            name: "workMode",
            type: "",
            icon: "",
            text: "工作模式:",
            value: "停止",
            notShow: true,
            show: false
        },
        {
            id: 9,
            name: "groupVol",
            type: "",
            icon: "",
            text: "组端电压:",
            value: "0",
            unit: "V",
            notShow: true,
            show: false
        },
        {
            id: 10,
            name: "peakVol",
            type: "",
            icon: "",
            text: "峰值电压:",
            value: "0",
            unit: "V",
            notShow: true,
            show: false
        },
        // {
        //     id: 110,
        //     name: "xuHang",
        //     type: "",
        //     icon: "",
        //     text: "预估续航时长:",
        //     value: "???",
        //     show: true
        // },
    ],
    historyStateList: [
        // {
        //     id: 5,
        //     name: "stopReason",
        //     type: "",
        //     icon: "",
        //     text: "核容终止原因:",
        //     value: "未知",
        //     show: false
        // },
        {
            id: 6,
            name: "failReason",
            type: "",
            icon: "",
            text: "操作失败原因:",
            value: "未知",
            show: false
        }
    ],
    lastCapacityTest: [
        {
            id: 11,
            name: 'test_starttime',
            type: '',
            icon: '',
            text: '开始时间:',
            value: '未知',
            show: true
        },
        {
            id: 12,
            name: 'test_cap',
            type: '',
            icon: '',
            text: '测试容量:',
            value: '未知',
            show: true
        },
        {
            id: 13,
            name: 'test_timelong',
            type: '',
            icon: '',
            text: '测试时长:',
            value: '未知',
            show: true
        },
        {
            id: 14,
            name: 're_cap',
            type: '',
            icon: '',
            text: '剩余容量:',
            value: '未知',
            show: true
        },
        {
            id: 15,
            name: 'endurance_time',
            type: '',
            icon: '',
            text: '续航时长:',
            value: '未知',
            show: true
        },
        {
            id: 16,
            name: "stopReason",
            type: "",
            icon: "",
            text: "终止原因:",
            value: "未知",
            show: true
        }
    ],
    getItemByName(name, list) {
        let result = false;
        for (let i = 0; i < list.length; i++) {
            let item = list[i];
            if (item.name == name) {
                result = item;
                break;
            }
        }
        return result;
    }
};
src/assets/js/const/const_9100.js
New file
@@ -0,0 +1,80 @@
export default {
    workstates: ['在线监测', '放电测试', '充电测试', '内阻测试', '未知'],
    alarmstates: [
        '无', '暂停', '放电测试', '放电等待', '限流充电', '直流充电', '充电等待', '测试时间到',
        '测试容量到', '单体下限到', '组端下限到', '市电异常', '存储卡不足', '负载温度高', '电流异常', '远程通信坏',
        '负载通信坏', '选择通信坏', '载模块放电过功率停止', '内部程序异常停止', '市电恢复停止升压放电', '充电过程中市电中断',
        '合路器放电功能组端电压下限', '温度上限到', '未知'
    ],
    cmd: {
        get: 41,
        set: 40,
        start: 81,
        stop: 83
    },
    testType: [
        {
            label: '容量测试',
            value: 37,
        },
        {
            label: '内阻测试',
            value: 50
        },
        {
            label: 'K1/D1测试',
            value: 72
        },
        {
            label: '充电测试',
            value: 0x40,
        }
    ],
    testType1: [
        {
            label: '容量测试',
            value: 37,
        },
        {
            label: '充电测试',
            value: 0x40,
        }
    ],
    dischargeRules: {
        DisCurr: {  // 放电电流
            pattern: /^[0-9]+(\.[0-9]*)?$/,
            regVal: true,
            min: 0,
            max: 1000,
            msg: '取值范围0~1000'
        },
        DisCap: {   // 测试容量
            pattern: /^[0-9]+$/,
            regVal: true,
            min: 0,
            max: 90000,
            msg: '取值范围0~90000(整数)'
        },
        DisTime: {  // 测试时长
            pattern: /^[0-9]+$/,
            regVal: true,
            min: 0,
            max: 5940,
            msg: '取值范围0~5940(整数)'
        },
        MonomerVol_Low: {       // 单体下限阀值
            pattern: /^[0-9]+(\.[0-9]*)?$/,
            regVal: true,
            min: 0,
            max: 20,
            msg: '取值范围0~20'
        },
        GroupVol_Low: {        // 组端下限阀值
            pattern: /^[0-9]+(\.[0-9]*)?$/,
            regVal: true,
            min: 0,
            max: 420,
            msg: '取值范围0~420'
        }
    }
};
src/pages/monitoring/js/api.js
@@ -46,6 +46,17 @@
    })
}
/**
 * 根据设备id查询设备当前的开关状态
 * json={"dev_id":910000022}
 */
export const realTimePowerOff = (params) => {
    return axios({
        method: "post",
        url: "Fbs9100_stateAction_action_serchContactorState",
        data: "json=" + JSON.stringify(params)
    })
}
/**
 * 根据电池组id查询该电池组中所有电池信息  (图表数据)
 * json={"BattGroupId":1005074}
 */
src/pages/monitoring/real-monitoring.vue
@@ -122,6 +122,7 @@
    searchBattInfo,
    getBattGroupInfo,
    realTimeAlarm,
    realTimePowerOff,
    realTimeSearch,
    realTimeGroup,
    JhStateActionSerchByCondition,
@@ -131,11 +132,20 @@
import progressBlockVerticalBar from "@/components/chart/progress-block-vertical-bar";
import getMarkLineData from "@/components/chart/js/getMarkLineData";
import getTblHeader from "@/pages/monitoring/js/getTblHeader";
import const_61850 from "@/assets/js/const/const_61850";
import const_9100 from "@/assets/js/const/const_9100";
import const_ld_nine from "@/assets/js/const/const_ld_nine";
let vol, resChart, temp, conduct, currChart, leakVol;
export default {
    data() {
        let pageConfig = this.$store.getters["user/realTabsConfig"];
        let stateList = const_61850.stateList;
        let historyStateList = const_61850.historyStateList;
        let lastCapacityTest = const_61850.lastCapacityTest;
        return {
            stateList: stateList,
            historyStateList: historyStateList,
            lastCapacityTest: lastCapacityTest,
            showPopup: false,
            cascaderValue: '',
            fieldValue: '请选择站点',
@@ -475,6 +485,364 @@
            let batt = this.batt;
            if (this.$units.regEquipType(batt.FBSDeviceId, ["LD9"])) {
                this.realTimeLd9Data();
            } else {
                this.realTimePowerOffs();
            }
        },
        /* 查询电路图开关状态和信息 */
        realTimePowerOffs() {
            let batt = this.batt;
            // 设备为61850显示右侧的面板
            if (this.$units.regEquipType(batt.FBSDeviceId, ["equip61850"])) {
                this.stateListShow = true;
            } else {
                this.stateListShow = false;
            }
            // 查询后台数据
            realTimePowerOff({
                dev_id: batt.FBSDeviceId,
            }).then((res) => {
                let rs = JSON.parse(res.data.result);
                let outTime = 2 * 60; //设备超时时间(2分钟)
                let isOutTime = true; //通讯中断        判断设备是否通讯中断    true:中断    false:正常
                if (rs.code == 1) {
                    let data = rs.data[0];
                    // 设置版本号
                    this.dev_version = data.dev_version;
                    // 基础信息
                    this.setEquipBase(data);
                    // 判断是否超时
                    var nowTime = new Date(data.note).getTime(); //当前时间
                    var record = new Date(data.record_datetime).getTime();
                    if (Math.abs(nowTime - record) / 1000 > outTime) {
                        this.disconnect();
                    } else {
                        // 未超时执行逻辑
                        let dev_id = batt.FBSDeviceId;
                        this.diagram.powerCut = 0;
                        // 设备为61850
                        if (this.$units.regEquipType(dev_id, "equip61850")) {
                            this.setEquip61850(data);
                        } else if (
                            this.$units.regEquipType(dev_id, ["BTS", "BTS9110", "BTS9120", "lithium", "LD9"])
                        ) {
                            this.setEquipBTS(data);
                        } else if (this.$units.regEquipType(dev_id, ["BTS9605", "BTS9611"])) {
                            this.setEquip9605(data);
                        } else {
                            this.disconnect();
                        }
                    }
                } else {
                    // 设置版本号
                    this.dev_version = "";
                    // 设备处于未连接
                    this.disconnect();
                }
            });
        },
        // 设置stateList的值
        setStateList(name, value, type) {
            let stateList = this.stateList;
            for (let i = 0; i < stateList.length; i++) {
                let state = stateList[i];
                if (state.name == name) {
                    state.value = value;
                    state.type = type ? type : "";
                }
            }
            let historyStateList = this.historyStateList;
            for (let i = 0; i < historyStateList.length; i++) {
                let state = historyStateList[i];
                if (state.name == name) {
                    state.value = value;
                    state.type = type ? type : "";
                }
            }
            for (let i = 0, list = this.lastCapacityTest, j = list.length; i < j; i++) {
                let state = list[i];
                if (state.name == name) {
                    state.value = value;
                    state.type = type || "";
                }
            }
        },
        // 9605设备
        setEquip9605(data) {
            let batt = this.batt;
            // 关闭遮罩层
            this.maskShow = false;
            //  电路图类型
            let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
            this.diagram.desc = "";
            let battstate = this.inputs.batt_state;
            let alarmstatus = data.dev_alarmstate;
            // 设置停电放电状态
            if (data.dev_onlinevollow) {
                this.inputs.batt_state = 5;
                this.diagram.type = 5;
                this.diagram.desc = "(开关闭合)";
                this.diagram.powerCut = 1;
                // 当前设备是BTS设备
                if (workstatus === 0 && data.dev_res_test_state !== 0) {
                    this.diagram.desc += "(内阻测试)";
                }
                return;
            }
            // 判断workstatus
            switch (workstatus) {
                case 0:
                    this.diagram.type = 0;
                    //this.diagram.desc = '(开关闭合)';
                    // 当前设备是BTS设备
                    if (data.dev_res_test_state !== 0) {
                        this.diagram.type = 6;
                        this.diagram.desc += "(内阻测试)";
                    }
                    break;
                case 1:
                    this.diagram.type = 1;
                    //this.diagram.desc = '(开关断开)';
                    break;
                case 2:
                    this.diagram.type = 2;
                    //this.diagram.desc = '(开关断开)';
                    break;
                default:
                    this.diagram.type = -1;
                    this.maskShow = true;
                    break;
            }
        },
        // BTS设备信息
        setEquipBTS(data) {
            let batt = this.batt;
            // 关闭遮罩层
            this.maskShow = false;
            //  电路图类型
            let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
            this.diagram.desc = "";
            let battstate = this.inputs.batt_state;
            let alarmstatus = data.dev_alarmstate;
            // 是否为锂电池
            let isLithium = this.$units.regEquipType(batt.FBSDeviceId, "lithium");
            // 设置停电放电状态
            if (data.dev_onlinevollow) {
                this.inputs.batt_state = 5;
                this.diagram.type = 5;
                this.diagram.desc = "(开关闭合)";
                this.diagram.powerCut = 1;
                // 当前设备是BTS设备
                if (workstatus === 0 && data.dev_res_test_state !== 0) {
                    this.diagram.desc += "(内阻测试)";
                }
                // 锂电池详细描述为空
                if (isLithium) {
                    this.diagram.desc = "";
                }
                return;
            }
            // 判断workstatus
            switch (workstatus) {
                case 0:
                    this.diagram.type = 0;
                    this.diagram.desc = "(开关闭合)";
                    // 当前设备是BTS设备
                    if (data.dev_res_test_state !== 0) {
                        this.diagram.desc += "(内阻测试)";
                    }
                    break;
                case 1:
                    if (
                        data.dev_testgroupnum > 0 &&
                        data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1
                    ) {
                        this.diagram.type = 1;
                        this.diagram.desc = "(开关断开)";
                    } else {
                        if (battstate === 3) {
                            this.diagram.type = 1;
                            this.diagram.desc = "(开关断开)";
                        } else {
                            this.diagram.type = 0;
                            this.diagram.desc = "(开关闭合)";
                        }
                    }
                    // 当前设备是BTS设备
                    if (data.dev_testtype == 209) {
                        this.diagram.desc += "(KD测试)";
                        this.diagram.type = 3;
                    }
                    break;
                case 2:
                    //辨别当前电池组是否在充电
                    if (
                        this.diagram.type == 2 ||
                        (data.dev_testgroupnum > 0 &&
                            data.dev_testgroupnum === batt.GroupIndexInFBSDevice + 1)
                    ) {
                        //充电
                        if (
                            alarmstatus === 1 ||
                            alarmstatus === 2 ||
                            alarmstatus === 3 ||
                            alarmstatus === 4 ||
                            alarmstatus === 6
                        ) {
                            //限流充电      -->常闭接触器断开
                            this.diagram.type = 2;
                            this.diagram.desc = "(开关断开)";
                        } else {
                            //直流充电     -->常闭接触器闭合
                            this.diagram.type = 2;
                            this.diagram.desc = "(开关闭合)";
                        }
                    } else {
                        this.diagram.type = 0;
                        this.diagram.desc = "(开关闭合)";
                    }
                    break;
                default:
                    this.diagram.type = -1;
                    this.maskShow = true;
                    break;
            }
            // 锂电池详细描述为空
            if (isLithium) {
                this.diagram.desc = "";
            }
        },
        // 61850设备信息
        setEquip61850(data) {
            //  电路图类型
            let workstatus = parseInt(data.dev_workstate); //[0:'在线监测',1:'放电测试',2:'充电测试',3:'内阻测试',4:'未知'];
            this.diagram.desc = "";
            // 关闭遮罩层
            this.maskShow = false;
            // 设置停电放电状态
            if (data.dev_onlinevollow) {
                this.inputs.batt_state = 5;
                this.diagram.type = 5;
                this.diagram.desc = "(开关闭合)";
                this.diagram.powerCut = 1;
                // 当前设备是BTS设备
                if (workstatus === 0 && data.dev_res_test_state !== 0) {
                    this.diagram.desc += "(内阻测试)";
                }
                return;
            }
            switch (workstatus) {
                case 0: //浮充状态拓扑图
                    this.diagram.type = 0;
                    this.diagram.desc = "(开关闭合)";
                    break;
                case 4: //浮充状态(内阻测试)拓扑图
                    this.diagram.type = 0;
                    // 当前设备是否是内阻测试
                    this.diagram.desc = "(开关闭合)";
                    this.diagram.desc += "(内阻测试)";
                    break;
                case 1: //充电状态拓扑图
                    this.diagram.type = 2;
                    this.diagram.desc = "(开关断开)";
                    break;
                case 2: //放电状态拓扑图
                    this.diagram.type = 1;
                    this.diagram.desc = "(开关断开)";
                    break;
                case 3: //放电状态拓扑图
                    this.diagram.type = 5;
                    break;
                case 5: //放电状态(KD测试)拓扑图
                    this.diagram.type = 3;
                    this.diagram.desc = "(开关断开)";
                    this.diagram.desc += "(KD测试)";
                    break;
                case 6: // 离线养护测试
                    this.diagram.type = 4;
                    this.diagram.desc = "离线养护测试";
                    break;
                default:
                    //未知
                    this.diagram.type = -1;
                    this.diagram.desc = "(未知)";
                    this.maskShow = true;
                    break;
            }
            // 设备工作状态
            let workStates = const_61850.workstates;
            this.setStateList("workState", workStates[data.dev_workstate]);
            // 核容终止原因
            // let stopReasons = const_61850.stopreasons;
            // if (data.dev_workstate == 2) {
            //   this.setStateList("stopReason", "未知");
            // } else {
            //   this.setStateList(
            //     "stopReason",
            //     stopReasons[data.dev_last_captest_stop_type]
            //   );
            // }
            // 操作失败原因
            let failReasons = const_61850.failreasons;
            this.setStateList("failReason", failReasons[data.dev_alarmstate]);
            // 告警信息
            let alarms = data.dev_61850alarms.split(",");
            // alarms = ['false', 'false', 'true', 'false', 'true'];
            // 通讯状态
            if (alarms[1] == "true") {
                this.setStateList("connect", "异常", "table-row-error");
            } else {
                this.setStateList("connect", "正常", "");
            }
            // 温度
            if (alarms[2] == "true") {
                this.setStateList("devTemp", "异常", "table-row-error");
            } else {
                this.setStateList("devTemp", "正常", "");
            }
            // 干接点
            if (alarms[4] == "true") {
                this.setStateList("contact", "异常", "table-row-error");
            } else {
                this.setStateList("contact", "正常", "");
            }
        },
        // 基础信息
        setEquipBase(data) {
            let groupIndex = this.batt.GroupIndexInFBSDevice;
            // 设备的温度
            this.diagram.temp = data.dev_temp;
            let contactRes = (groupIndex != 0
                ? data.dev_conresist1
                : data.dev_conresist
            ).toHold(2);
            let dropVol = (groupIndex != 0
                ? data.dev_condvoldp1
                : data.dev_condvoldp
            ).toHold(2);
            let alarms = data.dev_61850alarms.split(",");
            if (alarms.length) {
                this.diagram.contactRes = alarms[0] == "true" ? "k1异常" : contactRes;
                this.diagram.dropVol = alarms[3] == "true" ? "D1异常" : dropVol;
            } else {
                this.diagram.contactRes = contactRes;
                this.diagram.dropVol = dropVol;
            }
        },
        realTimeLd9Data() {