whychdw
2019-12-20 e981cf16e8eb437542985840342a49f64ce145fc
修改内容
2个文件已修改
1712 ■■■■■ 已修改文件
platforms/android/app/src/main/assets/www/pages/monitor-data/monitor-data.js 856 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
www/pages/monitor-data/monitor-data.js 856 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platforms/android/app/src/main/assets/www/pages/monitor-data/monitor-data.js
@@ -1 +1,855 @@
"use strict";
'use strict';
/**
 * 模板模块
 * 默认模块名: monitor-data
 * @return {[object]}  [ 返回一个对象 ]
 */
loader.define({
    data: {
        vm: ''
    },
    loaded: function loaded(require, exports, module) {
        // 定义F2chart
        var monVolBar = '';
        var monResBar = '';
        var monTmpBar = '';
        // 引入vue
        this.vm = new Vue({
            el: getPageRoot(module),
            data: {
                shows: {
                    monList: false,
                    total: false,
                    monVol: false,
                    monRes: false,
                    monTmp: false,
                    monResLine: false
                },
                loading: bui.loading(),
                open: true,
                uiDialog: '',
                num: -1,
                BattGroupId: -1,
                title: '??',
                battInfo: {
                    sysstate: 0,
                    sysversion: 1.2,
                    battstate: 0,
                    isOutTime: 1,
                    groupcurr: 0,
                    groupvol: 0,
                    monCount: 0,
                    testTimelong: 0
                },
                battList: [{
                    num: 1,
                    BattGroupId: 1,
                    text: '电池组1'
                }, {
                    num: 2,
                    BattGroupId: 2,
                    text: '电池组2'
                }],
                tabs: {
                    active: 0
                },
                timer: new Timeout(),
                tbls: {
                    monInfo: {
                        height: '300px',
                        data: []
                    },
                    total: {
                        data: [{
                            type: '电压',
                            high: '',
                            low: '',
                            avg: ''
                        }, {
                            type: '内阻',
                            high: '',
                            low: '',
                            avg: ''
                        }, {
                            type: '温度',
                            high: '',
                            low: '',
                            avg: ''
                        }]
                    }
                },
                options: {
                    page: {
                        curr: 1, // 当前页
                        size: 50, // 每页的数据量
                        pageTotal: 1, // 总页数
                        total: 0 // 数据总量
                    },
                    monVol: { // 单体电压
                        title: new Title(),
                        height: "300px",
                        option: []
                    },
                    monRes: { // 单体内阻
                        title: new Title(),
                        height: "300px",
                        option: {
                            categories: [],
                            data: []
                        }
                    },
                    monResLine: { // 单体内阻折线图
                        title: '',
                        option: []
                    },
                    monTmp: { // 单体温度
                        title: new Title(),
                        height: "300px",
                        option: []
                    }
                },
                allData: []
            },
            filters: {
                stateFilter: function stateFilter(state, isOutTime) {
                    var rs = '';
                    if (isOutTime == 1) {
                        rs = "未连接";
                    } else {
                        switch (state) {
                            case -1:
                                rs = '未知';
                                break;
                            case 0:
                                rs = '浮充';
                                break;
                            case 1:
                                rs = '放电';
                                break;
                            case 2:
                                rs = '充电';
                                break;
                        }
                    }
                    return rs;
                },
                sysstateFilter: function sysstateFilter(sysstate) {
                    var rs = '常规模式';
                    switch (sysstate) {
                        case 1:
                            rs = '内阻测试';
                            break;
                        case 2:
                            rs = '编址模式';
                            break;
                    }
                    return rs;
                },
                formatSeconds: function (_formatSeconds) {
                    function formatSeconds(_x) {
                        return _formatSeconds.apply(this, arguments);
                    }
                    formatSeconds.toString = function () {
                        return _formatSeconds.toString();
                    };
                    return formatSeconds;
                }(function (num) {
                    return formatSeconds(num);
                })
            },
            methods: {
                setAllData: function setAllData(data) {
                    this.allData = data;
                },
                tabsChange: function tabsChange() {
                    var self = this;
                    this.$nextTick(function () {
                        self.updateGrahp();
                    });
                },
                openDrawer: function openDrawer() {
                    this.open = true;
                },
                closeDrawer: function closeDrawer() {
                    this.open = false;
                },
                listClick: function listClick(item) {
                    // 设置标题
                    this.title = item.text;
                    // 关闭Drawer
                    this.open = false;
                    // 初始化分页信息
                    this.initPage();
                    // 根据点电池组编号查询电池组信息
                    this.num = item.num;
                    // 设置电池组id
                    this.BattGroupId = item.BattGroupId;
                    this.startReadBattMonInfo();
                },
                searchAll: function searchAll() {
                    // 查询电池组的所有信息
                    if (typeof BattinfService != 'undefined') {
                        BattinfService.searchAll();
                    }
                },
                startReadBattMonInfo: function startReadBattMonInfo() {
                    // 开始获取电池组信息
                    var self = this;
                    this.timer.start(function () {
                        self.readBattMonInfo();
                    }, 4000);
                },
                readBattMonInfo: function readBattMonInfo() {
                    // 读取电池组信息
                    var num = this.num;
                    if (num == -1) {
                        return;
                    }
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.readBattMonInfo(num);
                    } else {
                        this.setPageContent({
                            code: 1,
                            data: {
                                sysstate: 0,
                                sysversion: 1.2,
                                battstate: 0,
                                isOutTime: 0,
                                groupcurr: 2.11111,
                                groupvol: 30.444444,
                                monCount: 4,
                                testTimelong: 0,
                                mon_ress: [0.2, 0.3, 1, 2],
                                mon_tmps: [10, 11, 12, 13],
                                mon_vols: [14, 16, 18, 20]
                            }
                        });
                        this.timer.open();
                    }
                },
                setList: function setList(data) {
                    var list = [];
                    // 遍历data
                    for (var i = 0; i < data.length; i++) {
                        var _data = data[i];
                        _data.text = _data.BattGroupName;
                        if (_data.station_install) {
                            list.push(_data);
                        }
                    }
                    // 设置battList的值
                    this.battList = list;
                },
                setPageContent: function setPageContent(res) {
                    // 设置所有的数据
                    this.setAllData(res.data);
                    // 设置电池组的总体信息
                    this.setBattInfo(res.data);
                    // 设置图标配置项
                    this.setOption();
                },
                setMonInfoTbl: function setMonInfoTbl(data) {
                    var monCount = data.monCount;
                    var list = [];
                    var k = -1;
                    // 遍历单体
                    for (var i = 0; i < monCount; i++) {
                        var num = i % 3;
                        if (num == 0) {
                            k++;
                            list[k] = {};
                        }
                        num++;
                        var num_k = 'num' + num;
                        var vol_k = 'vol' + num;
                        var tmp_k = 'tmp' + num;
                        var res_k = 'res' + num;
                        list[k][num_k] = '#' + (i + 1);
                        list[k][vol_k] = data.mon_vols[i];
                        list[k][res_k] = data.mon_ress[i];
                        list[k][tmp_k] = data.mon_tmps[i];
                    }
                    this.tbls.monInfo.data = list;
                },
                setTotal: function setTotal(data) {
                    // 单体电压
                    var vol = this.getMaxMinAvg(data.monCount, data.mon_vols);
                    this.setTotalItem(0, vol, 'V', 2);
                    // 单体内阻
                    var res = this.getMaxMinAvg(data.monCount, data.mon_ress);
                    this.setTotalItem(1, res, 'mΩ', 2);
                    // 单体温度
                    var tmp = this.getMaxMinAvg(data.monCount, data.mon_tmps);
                    this.setTotalItem(2, tmp, '℃', 1);
                },
                setTotalItem: function setTotalItem(item, data, unit, fixed) {
                    this.tbls.total.data[item].high = data.max.text + ':' + data.max.val + unit;
                    this.tbls.total.data[item].low = data.min.text + ':' + data.min.val + unit;
                    this.tbls.total.data[item].avg = Number(data.avg.toFixed(fixed)) + unit;
                },
                setOption: function setOption() {
                    this.loading.hide();
                    var data = this.allData;
                    // 设置单体表格数据
                    this.setMonInfoTbl(data);
                    // 设置统计信息表格
                    this.setTotal(data);
                    // 单体个数
                    var monCount = data.monCount;
                    // 设置分页的总数据量
                    this.setPageTotal(monCount);
                    // 获取起始和结束电池单体
                    var startEnd = this.getStartEndIndex();
                    //console.log(data);
                    // 遍历data的值
                    var monNum = []; // 单体编号
                    var monVol = []; // 单体电压
                    var monRes = []; // 单体内阻
                    var monTmp = []; // 单体温度
                    for (var i = startEnd.start; i < startEnd.end; i++) {
                        monNum.push('#' + (i + 1));
                        monVol.push({
                            x: '#' + (i + 1),
                            y: data.mon_vols[i]
                        });
                        monRes.push({
                            x: '#' + (i + 1),
                            y: data.mon_ress[i]
                        });
                        monTmp.push({
                            x: '#' + (i + 1),
                            y: data.mon_tmps[i]
                        });
                    }
                    // 单体电压
                    this.options.monVol.option = monVol;
                    // 单体内阻
                    this.options.monRes.option = monRes;
                    // 单体温度
                    this.options.monTmp.option = monTmp;
                    // 更新图表
                    this.updateGrahp();
                },
                updateGrahp: function updateGrahp() {
                    // 更新单体电压
                    if (this.tabs.active == 2) {
                        // bui.alert(7788);
                        monVolBar.changeData(this.options.monVol.option);
                    }
                    // 更新单体内阻
                    if (this.tabs.active == 3) {
                        monResBar.changeData(this.options.monRes.option);
                    }
                    // 更新单体温度
                    if (this.tabs.active == 4) {
                        monTmpBar.changeData(this.options.monTmp.option);
                    }
                },
                setBattInfo: function setBattInfo(data) {
                    var battInfo = {
                        sysstate: data.sysstate,
                        sysversion: data.sysversion,
                        battstate: data.battstate,
                        isOutTime: data.isOutTime,
                        groupcurr: data.groupcurr,
                        groupvol: data.groupvol,
                        monCount: data.monCount,
                        testTimelong: data.testTimelong
                    };
                    // 设置电池的信息
                    this.battInfo = battInfo;
                },
                getMaxMinAvg: function getMaxMinAvg(monCount, data, unit) {
                    // 获取较高,较低单体信息和平均值
                    // 构造对象
                    var rs = {
                        min: {
                            text: '#1',
                            val: data[0]
                        },
                        max: {
                            text: '#1',
                            val: data[0]
                        },
                        avg: 0
                    };
                    var sum = data[0];
                    // 遍历monCount
                    for (var i = 1; i < monCount; i++) {
                        // 较大值
                        if (data[i] > rs.max.val) {
                            rs.max.text = "#" + (i + 1);
                            rs.max.val = data[i];
                        } else if (data[i] == rs.max.val) {
                            rs.max.text += ",#" + (i + 1);
                        }
                        // 较小值
                        if (data[i] < rs.min.val) {
                            rs.min.text = "#" + (i + 1);
                            rs.min.val = data[i];
                        } else if (data[i] == rs.min.val) {
                            rs.min.text += ",#" + (i + 1);
                        }
                        sum += data[i];
                    }
                    rs.avg = sum / monCount;
                    return rs;
                },
                confirmStartRes: function confirmStartRes() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('启动内阻测试?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.startBattResTest(num);
                            }
                        }
                    });
                },
                startBattResTest: function startBattResTest(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.startBattResTest(num);
                    } else {
                        this.battInfo.sysstate = 1;
                        // 提示
                        this.$message({
                            message: '请使用手机端启动!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                confirmStopRes: function confirmStopRes() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('停止内阻测试?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.stopBattResTest(num);
                            }
                        }
                    });
                },
                stopBattResTest: function stopBattResTest(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.stopBattResTest(num);
                    } else {
                        this.battInfo.sysstate = 0;
                        // 提示
                        this.$message({
                            message: '请使用手机端停止!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                confirmRestart: function confirmRestart() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('重启汇集器?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.reStartSystem(num);
                            }
                        }
                    });
                },
                reStartSystem: function reStartSystem(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.reStartSystem(num);
                    } else {
                        this.battInfo.sysstate = 0;
                        // 提示
                        this.$message({
                            message: '请使用手机端重启!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                setHt: function setHt() {
                    var pgHt = this.$refs.tabItemHt.offsetHeight - 1;
                    this.options.monVol.height = pgHt + 'px';
                    this.options.monRes.height = pgHt + 'px';
                    this.options.monTmp.height = pgHt + 'px';
                    this.tbls.monInfo.height = pgHt + 'px';
                },
                handlePreBtn: function handlePreBtn() {
                    var self = this;
                    if (this.options.page.curr <= 1) {
                        this.$message('当前已经是第一页');
                        return;
                    }
                    this.options.page.curr--;
                    this.loading.show();
                    setTimeout(function () {
                        // 设置配置项
                        self.setOption();
                    }, 500);
                },
                handleNextBtn: function handleNextBtn() {
                    var self = this;
                    if (this.options.page.curr * this.options.page.size >= this.options.page.total) {
                        this.$message('当前已经是最后一页');
                        return;
                    }
                    this.options.page.curr++;
                    this.loading.show();
                    setTimeout(function () {
                        // 设置配置项
                        self.setOption();
                    }, 500);
                },
                initPage: function initPage() {
                    // 初始化图表分页信息
                    // 初始化页数为1
                    this.options.page.curr = 1;
                    // 设置total
                    this.options.page.total = 0;
                },
                getStartEndIndex: function getStartEndIndex() {
                    // 根据分页信息获取起始和结束点
                    var page = this.options.page;
                    var start = (page.curr - 1) * page.size;
                    var end = (page.curr - 1) * page.size + page.size;
                    if (end > page.total) {
                        end = page.total;
                    }
                    return {
                        start: start,
                        end: end
                    };
                },
                setPageTotal: function setPageTotal(total) {
                    // 设置分页的总数据量
                    this.options.page.total = total;
                    if (total == 0) {
                        this.options.page.pageTotal = 1;
                    } else {
                        this.options.page.pageTotal = Math.ceil(total / this.options.page.size);
                    }
                },
                monHandlerClick: function monHandlerClick(event) {
                    var self = this;
                    var page = this.options.page;
                    var monNum = event.point.index + 1 + (page.curr - 1) * page.size;
                    this.options.monResLine.title = '单体#' + monNum + '内阻折线图';
                    // 构造查询对象
                    var searchParams = {
                        BattGroupId: this.BattGroupId,
                        mon_num: monNum
                    };
                    // 开启等待框
                    this.loading.show();
                    if (typeof BattresdataService != "undefined") {
                        BattresdataService.serchByCondition(JSON.stringify(searchParams));
                    } else {
                        setTimeout(function () {
                            self.loading.hide();
                            self.setMonResLine([{
                                mon_res: 10,
                                test_starttime: '2019-12-03 10:09:00'
                            }, {
                                mon_res: 11,
                                test_starttime: '2019-12-03 11:09:00'
                            }, {
                                mon_res: 9,
                                test_starttime: '2019-12-03 12:09:00'
                            }]);
                            self.uiDialog.open();
                        }, 1000);
                    }
                },
                setMonResLine: function setMonResLine(data) {
                    var monRes = [[]];
                    var times = [];
                    // 遍历data
                    for (var i = 0; i < data.length; i++) {
                        var _data = data[i];
                        monRes[0].push(_data.mon_res);
                        times.push(_data.test_starttime);
                    }
                    this.options.monResLine.categories = times;
                    this.options.monResLine.data = monRes;
                    // 设置配置项
                    this.$refs.monResLine.setOption(this.options.monResLine);
                }
            },
            created: function created() {
                var self = this;
                // 显示左侧弹出框
                setTimeout(function () {
                    self.shows.drawer = true;
                }, 0);
                // 显示单体列表
                setTimeout(function () {
                    self.shows.monList = true;
                }, 0);
                // 显示统计信息
                setTimeout(function () {
                    self.shows.total = true;
                }, 0);
                // 显示单体电压
                setTimeout(function () {
                    self.shows.monVol = true;
                }, 0);
                // 显示单体内阻
                setTimeout(function () {
                    self.shows.monRes = true;
                }, 0);
                // 显示单体温度
                setTimeout(function () {
                    self.shows.monTmp = true;
                }, 0);
                // 显示单体内阻折线
                setTimeout(function () {
                    self.shows.monResLine = true;
                }, 0);
            },
            computed: {
                getTitle: function getTitle() {
                    return this.title + '-监测数据';
                },
                getRestart: function getRestart() {
                    var rs = true;
                    // 电池组状态为浮充,系统状态为常规状态
                    if (this.battInfo.battstate == 0 && this.battInfo.sysstate == 0) {
                        rs = false;
                    }
                    return rs;
                },
                getBattNum: function getBattNum() {
                    var rs = "";
                    if (this.num != -1) {
                        rs = '#' + this.num;
                    }
                    return rs;
                },
                setPagingPreBtn: function setPagingPreBtn() {
                    var rs = true;
                    if (this.tabs.active == 0 || this.tabs.active == 1 || this.options.page.curr <= 1) {
                        return false;
                    }
                    return rs;
                },
                setPagingNextBtn: function setPagingNextBtn() {
                    var rs = true;
                    if (this.tabs.active == 0 || this.tabs.active == 1 || this.options.page.curr * this.options.page.size >= this.options.page.total) {
                        return false;
                    }
                    return rs;
                }
            },
            mounted: function mounted() {
                var self = this;
                // 页面选项卡
                var uiTab = bui.tab({
                    id: "#uiTab",
                    animate: false,
                    swipe: false
                });
                // 选项卡绑定事件
                uiTab.on('to', function (index) {
                    self.tabs.active = index;
                    self.tabsChange();
                });
                // 创建 Chart 对象
                monVolBar = new FGraph(this.$refs.monVolBar);
                monResBar = new FGraph(this.$refs.monResBar);
                monTmpBar = new FGraph(this.$refs.monTmpBar);
                // 自定义居中弹出框
                this.uiDialog = bui.dialog({
                    id: "#dialogCenter",
                    width: 700
                });
                // 查询所有已经安装的电池组
                this.searchAll();
                // 设置高度
                this.setHt();
                // 后台触发事件查询所有的电池组信息
                window['BattinfServicesearchAllcalljs'] = function (res) {
                    var data = res.data;
                    self.setList(data);
                };
                // 后台触发返回读取电池组信息
                window['DeviceServicereadBattMonInfocalljs'] = function (res) {
                    //console.log(res);
                    // 设置页面信息
                    self.setPageContent(res);
                    // 开启延时执行
                    self.timer.open();
                };
                // 启动内阻测试
                window['DeviceServicestartBattResTestcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '启动成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('启动失败!');
                    }
                };
                // 停止内阻测试
                window['DeviceServicestopBattResTestcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '停止成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('停止失败!');
                    }
                };
                // 停止内阻测试
                window['DeviceServicereStartSystemcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '重启汇集器成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('重启汇集器失败!');
                    }
                };
                // 获取单体内阻信息
                window['BattresdataServiceserchByConditioncalljs'] = function (res) {
                    console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.setMonResLine(res.data);
                    } else {
                        self.setMonResLine([]);
                    }
                    // 显示面板
                    self.uiDialog.open();
                };
            },
            destroyed: function destroyed() {
                // 注销方法
                window.BattinfServicesearchAllcalljs = null;
                window.DeviceServicereadBattMonInfocalljs = null;
                window.DeviceServicestartBattResTestcalljs = null;
                window.DeviceServicestopBattResTestcalljs = null;
                // 停止计时器
                this.timer.stop();
            }
        });
    },
    destroyed: function destroyed() {
        this.vm.$destroy();
    }
});
www/pages/monitor-data/monitor-data.js
@@ -1 +1,855 @@
"use strict";
'use strict';
/**
 * 模板模块
 * 默认模块名: monitor-data
 * @return {[object]}  [ 返回一个对象 ]
 */
loader.define({
    data: {
        vm: ''
    },
    loaded: function loaded(require, exports, module) {
        // 定义F2chart
        var monVolBar = '';
        var monResBar = '';
        var monTmpBar = '';
        // 引入vue
        this.vm = new Vue({
            el: getPageRoot(module),
            data: {
                shows: {
                    monList: false,
                    total: false,
                    monVol: false,
                    monRes: false,
                    monTmp: false,
                    monResLine: false
                },
                loading: bui.loading(),
                open: true,
                uiDialog: '',
                num: -1,
                BattGroupId: -1,
                title: '??',
                battInfo: {
                    sysstate: 0,
                    sysversion: 1.2,
                    battstate: 0,
                    isOutTime: 1,
                    groupcurr: 0,
                    groupvol: 0,
                    monCount: 0,
                    testTimelong: 0
                },
                battList: [{
                    num: 1,
                    BattGroupId: 1,
                    text: '电池组1'
                }, {
                    num: 2,
                    BattGroupId: 2,
                    text: '电池组2'
                }],
                tabs: {
                    active: 0
                },
                timer: new Timeout(),
                tbls: {
                    monInfo: {
                        height: '300px',
                        data: []
                    },
                    total: {
                        data: [{
                            type: '电压',
                            high: '',
                            low: '',
                            avg: ''
                        }, {
                            type: '内阻',
                            high: '',
                            low: '',
                            avg: ''
                        }, {
                            type: '温度',
                            high: '',
                            low: '',
                            avg: ''
                        }]
                    }
                },
                options: {
                    page: {
                        curr: 1, // 当前页
                        size: 50, // 每页的数据量
                        pageTotal: 1, // 总页数
                        total: 0 // 数据总量
                    },
                    monVol: { // 单体电压
                        title: new Title(),
                        height: "300px",
                        option: []
                    },
                    monRes: { // 单体内阻
                        title: new Title(),
                        height: "300px",
                        option: {
                            categories: [],
                            data: []
                        }
                    },
                    monResLine: { // 单体内阻折线图
                        title: '',
                        option: []
                    },
                    monTmp: { // 单体温度
                        title: new Title(),
                        height: "300px",
                        option: []
                    }
                },
                allData: []
            },
            filters: {
                stateFilter: function stateFilter(state, isOutTime) {
                    var rs = '';
                    if (isOutTime == 1) {
                        rs = "未连接";
                    } else {
                        switch (state) {
                            case -1:
                                rs = '未知';
                                break;
                            case 0:
                                rs = '浮充';
                                break;
                            case 1:
                                rs = '放电';
                                break;
                            case 2:
                                rs = '充电';
                                break;
                        }
                    }
                    return rs;
                },
                sysstateFilter: function sysstateFilter(sysstate) {
                    var rs = '常规模式';
                    switch (sysstate) {
                        case 1:
                            rs = '内阻测试';
                            break;
                        case 2:
                            rs = '编址模式';
                            break;
                    }
                    return rs;
                },
                formatSeconds: function (_formatSeconds) {
                    function formatSeconds(_x) {
                        return _formatSeconds.apply(this, arguments);
                    }
                    formatSeconds.toString = function () {
                        return _formatSeconds.toString();
                    };
                    return formatSeconds;
                }(function (num) {
                    return formatSeconds(num);
                })
            },
            methods: {
                setAllData: function setAllData(data) {
                    this.allData = data;
                },
                tabsChange: function tabsChange() {
                    var self = this;
                    this.$nextTick(function () {
                        self.updateGrahp();
                    });
                },
                openDrawer: function openDrawer() {
                    this.open = true;
                },
                closeDrawer: function closeDrawer() {
                    this.open = false;
                },
                listClick: function listClick(item) {
                    // 设置标题
                    this.title = item.text;
                    // 关闭Drawer
                    this.open = false;
                    // 初始化分页信息
                    this.initPage();
                    // 根据点电池组编号查询电池组信息
                    this.num = item.num;
                    // 设置电池组id
                    this.BattGroupId = item.BattGroupId;
                    this.startReadBattMonInfo();
                },
                searchAll: function searchAll() {
                    // 查询电池组的所有信息
                    if (typeof BattinfService != 'undefined') {
                        BattinfService.searchAll();
                    }
                },
                startReadBattMonInfo: function startReadBattMonInfo() {
                    // 开始获取电池组信息
                    var self = this;
                    this.timer.start(function () {
                        self.readBattMonInfo();
                    }, 4000);
                },
                readBattMonInfo: function readBattMonInfo() {
                    // 读取电池组信息
                    var num = this.num;
                    if (num == -1) {
                        return;
                    }
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.readBattMonInfo(num);
                    } else {
                        this.setPageContent({
                            code: 1,
                            data: {
                                sysstate: 0,
                                sysversion: 1.2,
                                battstate: 0,
                                isOutTime: 0,
                                groupcurr: 2.11111,
                                groupvol: 30.444444,
                                monCount: 4,
                                testTimelong: 0,
                                mon_ress: [0.2, 0.3, 1, 2],
                                mon_tmps: [10, 11, 12, 13],
                                mon_vols: [14, 16, 18, 20]
                            }
                        });
                        this.timer.open();
                    }
                },
                setList: function setList(data) {
                    var list = [];
                    // 遍历data
                    for (var i = 0; i < data.length; i++) {
                        var _data = data[i];
                        _data.text = _data.BattGroupName;
                        if (_data.station_install) {
                            list.push(_data);
                        }
                    }
                    // 设置battList的值
                    this.battList = list;
                },
                setPageContent: function setPageContent(res) {
                    // 设置所有的数据
                    this.setAllData(res.data);
                    // 设置电池组的总体信息
                    this.setBattInfo(res.data);
                    // 设置图标配置项
                    this.setOption();
                },
                setMonInfoTbl: function setMonInfoTbl(data) {
                    var monCount = data.monCount;
                    var list = [];
                    var k = -1;
                    // 遍历单体
                    for (var i = 0; i < monCount; i++) {
                        var num = i % 3;
                        if (num == 0) {
                            k++;
                            list[k] = {};
                        }
                        num++;
                        var num_k = 'num' + num;
                        var vol_k = 'vol' + num;
                        var tmp_k = 'tmp' + num;
                        var res_k = 'res' + num;
                        list[k][num_k] = '#' + (i + 1);
                        list[k][vol_k] = data.mon_vols[i];
                        list[k][res_k] = data.mon_ress[i];
                        list[k][tmp_k] = data.mon_tmps[i];
                    }
                    this.tbls.monInfo.data = list;
                },
                setTotal: function setTotal(data) {
                    // 单体电压
                    var vol = this.getMaxMinAvg(data.monCount, data.mon_vols);
                    this.setTotalItem(0, vol, 'V', 2);
                    // 单体内阻
                    var res = this.getMaxMinAvg(data.monCount, data.mon_ress);
                    this.setTotalItem(1, res, 'mΩ', 2);
                    // 单体温度
                    var tmp = this.getMaxMinAvg(data.monCount, data.mon_tmps);
                    this.setTotalItem(2, tmp, '℃', 1);
                },
                setTotalItem: function setTotalItem(item, data, unit, fixed) {
                    this.tbls.total.data[item].high = data.max.text + ':' + data.max.val + unit;
                    this.tbls.total.data[item].low = data.min.text + ':' + data.min.val + unit;
                    this.tbls.total.data[item].avg = Number(data.avg.toFixed(fixed)) + unit;
                },
                setOption: function setOption() {
                    this.loading.hide();
                    var data = this.allData;
                    // 设置单体表格数据
                    this.setMonInfoTbl(data);
                    // 设置统计信息表格
                    this.setTotal(data);
                    // 单体个数
                    var monCount = data.monCount;
                    // 设置分页的总数据量
                    this.setPageTotal(monCount);
                    // 获取起始和结束电池单体
                    var startEnd = this.getStartEndIndex();
                    //console.log(data);
                    // 遍历data的值
                    var monNum = []; // 单体编号
                    var monVol = []; // 单体电压
                    var monRes = []; // 单体内阻
                    var monTmp = []; // 单体温度
                    for (var i = startEnd.start; i < startEnd.end; i++) {
                        monNum.push('#' + (i + 1));
                        monVol.push({
                            x: '#' + (i + 1),
                            y: data.mon_vols[i]
                        });
                        monRes.push({
                            x: '#' + (i + 1),
                            y: data.mon_ress[i]
                        });
                        monTmp.push({
                            x: '#' + (i + 1),
                            y: data.mon_tmps[i]
                        });
                    }
                    // 单体电压
                    this.options.monVol.option = monVol;
                    // 单体内阻
                    this.options.monRes.option = monRes;
                    // 单体温度
                    this.options.monTmp.option = monTmp;
                    // 更新图表
                    this.updateGrahp();
                },
                updateGrahp: function updateGrahp() {
                    // 更新单体电压
                    if (this.tabs.active == 2) {
                        // bui.alert(7788);
                        monVolBar.changeData(this.options.monVol.option);
                    }
                    // 更新单体内阻
                    if (this.tabs.active == 3) {
                        monResBar.changeData(this.options.monRes.option);
                    }
                    // 更新单体温度
                    if (this.tabs.active == 4) {
                        monTmpBar.changeData(this.options.monTmp.option);
                    }
                },
                setBattInfo: function setBattInfo(data) {
                    var battInfo = {
                        sysstate: data.sysstate,
                        sysversion: data.sysversion,
                        battstate: data.battstate,
                        isOutTime: data.isOutTime,
                        groupcurr: data.groupcurr,
                        groupvol: data.groupvol,
                        monCount: data.monCount,
                        testTimelong: data.testTimelong
                    };
                    // 设置电池的信息
                    this.battInfo = battInfo;
                },
                getMaxMinAvg: function getMaxMinAvg(monCount, data, unit) {
                    // 获取较高,较低单体信息和平均值
                    // 构造对象
                    var rs = {
                        min: {
                            text: '#1',
                            val: data[0]
                        },
                        max: {
                            text: '#1',
                            val: data[0]
                        },
                        avg: 0
                    };
                    var sum = data[0];
                    // 遍历monCount
                    for (var i = 1; i < monCount; i++) {
                        // 较大值
                        if (data[i] > rs.max.val) {
                            rs.max.text = "#" + (i + 1);
                            rs.max.val = data[i];
                        } else if (data[i] == rs.max.val) {
                            rs.max.text += ",#" + (i + 1);
                        }
                        // 较小值
                        if (data[i] < rs.min.val) {
                            rs.min.text = "#" + (i + 1);
                            rs.min.val = data[i];
                        } else if (data[i] == rs.min.val) {
                            rs.min.text += ",#" + (i + 1);
                        }
                        sum += data[i];
                    }
                    rs.avg = sum / monCount;
                    return rs;
                },
                confirmStartRes: function confirmStartRes() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('启动内阻测试?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.startBattResTest(num);
                            }
                        }
                    });
                },
                startBattResTest: function startBattResTest(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.startBattResTest(num);
                    } else {
                        this.battInfo.sysstate = 1;
                        // 提示
                        this.$message({
                            message: '请使用手机端启动!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                confirmStopRes: function confirmStopRes() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('停止内阻测试?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.stopBattResTest(num);
                            }
                        }
                    });
                },
                stopBattResTest: function stopBattResTest(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.stopBattResTest(num);
                    } else {
                        this.battInfo.sysstate = 0;
                        // 提示
                        this.$message({
                            message: '请使用手机端停止!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                confirmRestart: function confirmRestart() {
                    var self = this;
                    var num = this.num;
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 确认框
                    this.$confirm('重启汇集器?', '确认信息', {
                        distinguishCancelAndClose: true,
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                        callback: function callback(action, instance) {
                            if (action == 'confirm') {
                                self.reStartSystem(num);
                            }
                        }
                    });
                },
                reStartSystem: function reStartSystem(num) {
                    var self = this;
                    //console.log(num);
                    if (num == -1) {
                        this.$message({
                            message: '请先选择电池组',
                            type: 'warning'
                        });
                        return;
                    }
                    // 加载等待
                    this.loading.show();
                    if (typeof DeviceService != 'undefined') {
                        DeviceService.reStartSystem(num);
                    } else {
                        this.battInfo.sysstate = 0;
                        // 提示
                        this.$message({
                            message: '请使用手机端重启!',
                            type: 'warning'
                        });
                        setTimeout(function () {
                            self.loading.hide();
                        }, 4000);
                    }
                },
                setHt: function setHt() {
                    var pgHt = this.$refs.tabItemHt.offsetHeight - 1;
                    this.options.monVol.height = pgHt + 'px';
                    this.options.monRes.height = pgHt + 'px';
                    this.options.monTmp.height = pgHt + 'px';
                    this.tbls.monInfo.height = pgHt + 'px';
                },
                handlePreBtn: function handlePreBtn() {
                    var self = this;
                    if (this.options.page.curr <= 1) {
                        this.$message('当前已经是第一页');
                        return;
                    }
                    this.options.page.curr--;
                    this.loading.show();
                    setTimeout(function () {
                        // 设置配置项
                        self.setOption();
                    }, 500);
                },
                handleNextBtn: function handleNextBtn() {
                    var self = this;
                    if (this.options.page.curr * this.options.page.size >= this.options.page.total) {
                        this.$message('当前已经是最后一页');
                        return;
                    }
                    this.options.page.curr++;
                    this.loading.show();
                    setTimeout(function () {
                        // 设置配置项
                        self.setOption();
                    }, 500);
                },
                initPage: function initPage() {
                    // 初始化图表分页信息
                    // 初始化页数为1
                    this.options.page.curr = 1;
                    // 设置total
                    this.options.page.total = 0;
                },
                getStartEndIndex: function getStartEndIndex() {
                    // 根据分页信息获取起始和结束点
                    var page = this.options.page;
                    var start = (page.curr - 1) * page.size;
                    var end = (page.curr - 1) * page.size + page.size;
                    if (end > page.total) {
                        end = page.total;
                    }
                    return {
                        start: start,
                        end: end
                    };
                },
                setPageTotal: function setPageTotal(total) {
                    // 设置分页的总数据量
                    this.options.page.total = total;
                    if (total == 0) {
                        this.options.page.pageTotal = 1;
                    } else {
                        this.options.page.pageTotal = Math.ceil(total / this.options.page.size);
                    }
                },
                monHandlerClick: function monHandlerClick(event) {
                    var self = this;
                    var page = this.options.page;
                    var monNum = event.point.index + 1 + (page.curr - 1) * page.size;
                    this.options.monResLine.title = '单体#' + monNum + '内阻折线图';
                    // 构造查询对象
                    var searchParams = {
                        BattGroupId: this.BattGroupId,
                        mon_num: monNum
                    };
                    // 开启等待框
                    this.loading.show();
                    if (typeof BattresdataService != "undefined") {
                        BattresdataService.serchByCondition(JSON.stringify(searchParams));
                    } else {
                        setTimeout(function () {
                            self.loading.hide();
                            self.setMonResLine([{
                                mon_res: 10,
                                test_starttime: '2019-12-03 10:09:00'
                            }, {
                                mon_res: 11,
                                test_starttime: '2019-12-03 11:09:00'
                            }, {
                                mon_res: 9,
                                test_starttime: '2019-12-03 12:09:00'
                            }]);
                            self.uiDialog.open();
                        }, 1000);
                    }
                },
                setMonResLine: function setMonResLine(data) {
                    var monRes = [[]];
                    var times = [];
                    // 遍历data
                    for (var i = 0; i < data.length; i++) {
                        var _data = data[i];
                        monRes[0].push(_data.mon_res);
                        times.push(_data.test_starttime);
                    }
                    this.options.monResLine.categories = times;
                    this.options.monResLine.data = monRes;
                    // 设置配置项
                    this.$refs.monResLine.setOption(this.options.monResLine);
                }
            },
            created: function created() {
                var self = this;
                // 显示左侧弹出框
                setTimeout(function () {
                    self.shows.drawer = true;
                }, 0);
                // 显示单体列表
                setTimeout(function () {
                    self.shows.monList = true;
                }, 0);
                // 显示统计信息
                setTimeout(function () {
                    self.shows.total = true;
                }, 0);
                // 显示单体电压
                setTimeout(function () {
                    self.shows.monVol = true;
                }, 0);
                // 显示单体内阻
                setTimeout(function () {
                    self.shows.monRes = true;
                }, 0);
                // 显示单体温度
                setTimeout(function () {
                    self.shows.monTmp = true;
                }, 0);
                // 显示单体内阻折线
                setTimeout(function () {
                    self.shows.monResLine = true;
                }, 0);
            },
            computed: {
                getTitle: function getTitle() {
                    return this.title + '-监测数据';
                },
                getRestart: function getRestart() {
                    var rs = true;
                    // 电池组状态为浮充,系统状态为常规状态
                    if (this.battInfo.battstate == 0 && this.battInfo.sysstate == 0) {
                        rs = false;
                    }
                    return rs;
                },
                getBattNum: function getBattNum() {
                    var rs = "";
                    if (this.num != -1) {
                        rs = '#' + this.num;
                    }
                    return rs;
                },
                setPagingPreBtn: function setPagingPreBtn() {
                    var rs = true;
                    if (this.tabs.active == 0 || this.tabs.active == 1 || this.options.page.curr <= 1) {
                        return false;
                    }
                    return rs;
                },
                setPagingNextBtn: function setPagingNextBtn() {
                    var rs = true;
                    if (this.tabs.active == 0 || this.tabs.active == 1 || this.options.page.curr * this.options.page.size >= this.options.page.total) {
                        return false;
                    }
                    return rs;
                }
            },
            mounted: function mounted() {
                var self = this;
                // 页面选项卡
                var uiTab = bui.tab({
                    id: "#uiTab",
                    animate: false,
                    swipe: false
                });
                // 选项卡绑定事件
                uiTab.on('to', function (index) {
                    self.tabs.active = index;
                    self.tabsChange();
                });
                // 创建 Chart 对象
                monVolBar = new FGraph(this.$refs.monVolBar);
                monResBar = new FGraph(this.$refs.monResBar);
                monTmpBar = new FGraph(this.$refs.monTmpBar);
                // 自定义居中弹出框
                this.uiDialog = bui.dialog({
                    id: "#dialogCenter",
                    width: 700
                });
                // 查询所有已经安装的电池组
                this.searchAll();
                // 设置高度
                this.setHt();
                // 后台触发事件查询所有的电池组信息
                window['BattinfServicesearchAllcalljs'] = function (res) {
                    var data = res.data;
                    self.setList(data);
                };
                // 后台触发返回读取电池组信息
                window['DeviceServicereadBattMonInfocalljs'] = function (res) {
                    //console.log(res);
                    // 设置页面信息
                    self.setPageContent(res);
                    // 开启延时执行
                    self.timer.open();
                };
                // 启动内阻测试
                window['DeviceServicestartBattResTestcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '启动成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('启动失败!');
                    }
                };
                // 停止内阻测试
                window['DeviceServicestopBattResTestcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '停止成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('停止失败!');
                    }
                };
                // 停止内阻测试
                window['DeviceServicereStartSystemcalljs'] = function (res) {
                    //console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.$message({
                            message: '重启汇集器成功!',
                            type: 'success'
                        });
                    } else {
                        self.$message.error('重启汇集器失败!');
                    }
                };
                // 获取单体内阻信息
                window['BattresdataServiceserchByConditioncalljs'] = function (res) {
                    console.log(res);
                    // 关闭等待
                    self.loading.hide();
                    // 根据返回结果显示内容
                    if (res.code == 1) {
                        self.setMonResLine(res.data);
                    } else {
                        self.setMonResLine([]);
                    }
                    // 显示面板
                    self.uiDialog.open();
                };
            },
            destroyed: function destroyed() {
                // 注销方法
                window.BattinfServicesearchAllcalljs = null;
                window.DeviceServicereadBattMonInfocalljs = null;
                window.DeviceServicestartBattResTestcalljs = null;
                window.DeviceServicestopBattResTestcalljs = null;
                // 停止计时器
                this.timer.stop();
            }
        });
    },
    destroyed: function destroyed() {
        this.vm.$destroy();
    }
});