deviceAlarm.html 15.3 KB
<!doctype html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
    <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
    <title>报警事件记录</title>
    <link rel="stylesheet" type="text/css" href="../css/api.css" />
    <link rel="stylesheet" type="text/css" href="../css/aui.css" />
    <link rel="stylesheet" type="text/css" href="../css/style.css" />
</head>

<body class="device-alarm-view warning-view">
    <div class="aui-content aui-margin-b-15">
        <header class="aui-bar aui-bar-nav" id="header">
            <a class="aui-btn aui-pull-left" tapmode onclick="closeWin()">
                <span class="aui-iconfont aui-icon-left"></span>
            </a>
            <div class="aui-title">报警事件记录</div>
        </header>
        <!-- <p class="thing-small-title"><s></s>设备编号:1234567890abc</p> -->
        <p class="thing-small-title aui-margin-b-10" id="selectNumber"><s></s>暂无设备</p>
        <div class="search-view-inline">
            <!-- <div class="select-list aui-ellipsis-1" tapmode>
                <span id='selectNumber'></span>
                <i></i>
            </div>
            <label></label> -->
            <div class="select-list aui-ellipsis-1" tapmode id="select-status" onclick="selectStatus( this )" style="width:100%;">
                <abbr style="font-size:14px;height:40px;line-height:40px;text-indent:10px;display:inline-block;">处理状态:</abbr>
                <span style="text-indent:-6px;">请选择</span>
                <i></i>
            </div>
        </div>
        <!-- <div class="search-view-inline">
            <div class="select-list" tapmode>
                <p class="thing-small-title aui-ellipsis-1" id="selectNumber" style="margin-top:0;"><s style="margin-top:13px;"></s>暂无设备</p>
            </div>
            <label></label>
            <div class="select-list aui-ellipsis-1" tapmode id="select-status" onclick="selectStatus( this )" style="width:50%;">
                <span>请选择处理状态</span>
                <i></i>
            </div>
        </div> -->
        <ul id="device-list">
            <!-- <li>
            <p><label>1</label><span>处理人:超级管理员</span><abbr>2019.03.06 12:00</abbr></p>
            <p class="aui-hr"></p>
            <p><em>漏电报警</em></p>
            <p class="aui-hr"></p>
            <p><small>未处理</small><big>处理</big><big>监控</big></p>
          </li>
          <li>
            <p><label>1</label><span>处理人:超级管理员</span><abbr>2019.03.06 12:00</abbr></p>
            <p class="aui-hr"></p>
            <p><em>漏电报警</em><em>线路超温报警</em></p>
            <p class="aui-hr"></p>
            <p><small>已处理</small><big class="already-handle">处理</big><big>监控</big></p>
          </li> -->
        </ul>
        <div id="loading-data-view"></div>
    </div>
</body>

</html>
<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript" src="../script/common.js"></script>
<script type="text/javascript" src="../script/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
    var header = $api.byId('header');
    fixStatusBar_API(header);
    var selectorStyle = {
        mask: 'rgba(0,0,0,0.3)',
        title: {
            bg: '#f5f5f5',
            color: 'rgb(0,0,0)',
            size: 14,
            h: 44
        },
        leftButton: {
            w: 80,
            h: 35,
            marginT: 5,
            marginL: 8,
            color: 'rgb(0,0,0)',
            bg: 'rgb(200,200,200)',
            size: 14,
        },
        rightButton: {
            w: 80,
            h: 35,
            marginT: 5,
            marginR: 8,
            color: 'rgb(255,255,255)',
            bg: '#5D93E4',
            size: 14,
        },
        item: {
            h: 40,
            bg: '#fff',
            bgActive: '#57A0EC',
            bgHighlight: '#57A0EC',
            color: '#666',
            active: '#FFF',
            highlight: '#FFF',
            size: 14,
            lineColor: '#ccc',
            textAlign: 'center',
        },
    };
    var page = 1,
        limit = 10,
        status = '',
        keyword = '',
        imei = $api.getStorage('defaultDevice'),
        nextDataFlag = true,
        loadDataFlag = true;
    var token = $api.getStorage('userToken');
    var user_id = $api.getStorage('userID');
    $api.html($api.byId('selectNumber'), "<s></s>设备编号:"+imei);
    apiready = function() {
        api.setStatusBarStyle({
            style: 'dark',
            color: 'rgba(0,0,0,0)'
        });
        api.parseTapmode();
        fnInitData();
        /**上拉加载 */
        api.addEventListener({
            name: 'scrolltobottom',
            extra: {
                threshold: 0
            }
        }, function(ret, err) {
            if(!loadDataFlag) return false;
            if (nextDataFlag) {
                //页码+1,继续请求数据
                page += 1;
                fnInitData();
            } else {
                api.toast({
                    msg: "暂无更多数据",
                    duration: 2000,
                    location: 'bottom'
                });
            }
        });
        /** 下拉刷新 */
        api.setRefreshHeaderInfo({
            loadingImg:'../image/loading_more.gif',
            bgColor: 'rgba(255,255,255,1)',
            textColor: '#000',
            textDown: '下拉刷新...',
            textUp: '松开刷新...'
        }, function(ret, err) {
              page = 1;
              limit = 10;
              status = '';
              $api.html($api.dom($api.byId("select-status"), 'span'), "请选择");
              keyword = '';
              nextDataFlag = true;
              loadDataFlag = true;
              $api.html($api.byId("device-list"), '');
              fnInitData(true);
        });
    }

    function selectStatus(obj) {
        var statusList = [{
            text: '全部',
            status: 'normal'
        }, {
            text: '已处理',
            status: 'normal'
        }, {
            text: '未解决',
            status: 'normal'
        }];
        var selectSta = api.require('UIMultiSelector');
        selectSta.open({
            rect: {
                h: 244
            },
            text: {
                title: '处理状态',
                leftBtn: '取消',
                rightBtn: '确定',
                selectAll: '全选'
            },
            max: 1,
            singleSelection: true,
            maskClose: false,
            styles: selectorStyle,
            animation: true,
            maskClose: true,
            items: statusList
        }, function(ret, err) {
            if (ret.eventType == 'clickLeft') {
                status = "";
                $api.html($api.dom(obj, 'span'), "请选择");
                selectSta.close();
            }
            if (ret.eventType == 'clickRight') {
                //console.log(JSON.stringify(ret))
                if (ret.items.length > 0) {
                    status = ret.items[0].text;
                    $api.html($api.dom(obj, 'span'), status);
                    if (status == '全部') {
                        status = '';
                    }
                    page = 1;
                    nextDataFlag = true;
                    $api.html($api.byId("device-list"), '');
                    fnInitData();
                    selectSta.close();
                } else {
                    api.toast({
                        msg: '请选择处理状态',
                        duration: 2000,
                        location: 'bottom'
                    });
                }
            }
        });
    }

    function fnInitData(flag) {
        loadDataFlag = false;
        loadingData($api.byId("loading-data-view"));
        //console.log(HOST + '/iot_api/v1/app/get_warning_list?page=' + page + '&limit=' + limit + '&imei=' + imei + '&status=' + status + '&keyword=' + keyword);
        //if(status=="全部")status='';
        $.ajax({
            url: HOST + '/iot_api/v1/app/get_warning_list?page=' + page + '&limit=' + limit + '&imei=' + imei + '&status=' + status + '&user_id=' + user_id,
            type: 'GET',
            dataType: 'json',
            headers: {
                'Content-Type': 'application/json;charset=utf-8',
                'token': token
            },
            success: function(ret) {
                //console.log(JSON.stringify(ret));
                if (ret) {
                    if (ret.code == 0) {
                        if (!ret.data.next) {
                            nextDataFlag = false;
                        }
                        if (ret.data.count==0) {
                            noData($api.byId("device-list"));
                        }
                        for (var i = 0; i < ret.data.rows.length; i++) {
                            var targetItem = '<li><p class="aui-ellipsis-1"><label>' + (((page - 1) * limit) + (i + 1)) + '</label><span>处理人:' + (ret.data.rows[i].userName ? ret.data.rows[i].userName : '') + '</span><abbr>' + parseTime(ret.data.rows[
                                    i].createdAt,'{y}-{m}-{d} {h}:{i}:{s}') +
                                '</abbr></p>' +
                                '<p class="aui-hr"></p><p class="warning-item-content">';
                            if (ret.data.rows[i].over_current_warning == '1') {
                                targetItem += '<em>过载报警</em>';
                            }
                            if (ret.data.rows[i].short_curent_warning == '1') {
                                targetItem += '<em>短路报警</em>';
                            }
                            if (ret.data.rows[i].rest_current_warning == '1') {
                                targetItem += '<em>漏电报警</em>';
                            }
                            if (ret.data.rows[i].over_high_voltage_warning == '1') {
                                targetItem += '<em>过压报警</em>';
                            }
                            if (ret.data.rows[i].over_low_voltage_warning == '1') {
                                targetItem += '<em>欠压报警</em>';
                            }
                            if (ret.data.rows[i].over_line_temp_warning == '1') {
                                targetItem += '<em>线缆超温报警</em>';
                            }
                            if (ret.data.rows[i].over_temp1_warning == '1') {
                                targetItem += '<em>产品内部超温</em>';
                            }
                            if (ret.data.rows[i].fan_error == '1') {
                                targetItem += '<em>风扇异常</em>';
                            }
                            if (ret.data.rows[i].IGBT_error == '1') {
                                targetItem += '<em>IGBT驱动异常</em>';
                            }
                            if (ret.data.rows[i].param_error == '1') {
                                targetItem += '<em>参数存储异常</em>';
                            }
                            if (ret.data.rows[i].param_error == '1') {
                                targetItem += '<em>信号测量异常</em>';
                            }
                            targetItem += '</p><p class="aui-hr"></p>' +
                                '<p><small>';
                            if (ret.data.rows[i].status == '未解决') {
                                targetItem += ret.data.rows[i].status + '</small><big ';
                            } else {
                                targetItem += ret.data.rows[i].status + '</small><big class="already-handle" ';
                            }
                            targetItem += 'onclick="resolveWarning(this)" data-id="' + ret.data.rows[i].id + '">处理</big></p>' + //<big onclick="closeWin()">监控</big>
                                '</li>';
                            $api.append($api.byId("device-list"), targetItem);
                        }
                        $api.html($api.byId('loading-data-view'),'');
                    } else {
                        $api.html($api.byId('loading-data-view'),'');
                        api.toast({
                            msg: ret.msg,
                            duration: 2000,
                            location: 'bottom'
                        });
                    }
                }
                loadDataFlag = true;
                if(flag){
                    api.refreshHeaderLoadDone();
                }
            },
            error: function() {
                $api.html($api.byId('loading-data-view'),'');
                api.toast({
                    msg: '获取数据失败',
                    duration: 2000,
                    location: 'bottom'
                });
                loadDataFlag = true;
                if(flag){
                    api.refreshHeaderLoadDone();
                }
            }
        });
    }

    function resolveWarning(obj) {
        if ($api.hasCls(obj, 'already-handle')) return false;
        var id = $api.attr(obj, 'data-id');
        api.confirm({
            title: '操作确认',
            msg: '确认警告已处理?',
            buttons: ['确定', '取消']
        }, function(ret, err) {
            if (ret && ret.buttonIndex == 1) {
                $.ajax({
                    url: HOST + '/iot_api/v1/app/resolve_warning',
                    type: 'POST',
                    dataType: 'json',
                    headers: {
                        'Content-Type': 'application/json;charset=utf-8',
                        'token': $api.getStorage('userToken')
                    },
                    data: JSON.stringify({
                        id: id,
                        user_id: user_id
                    }),
                    success: function(ret) {
                        //console.log(JSON.stringify(ret));
                        if (ret) {
                            if (ret.code == 0) {
                                api.toast({
                                    msg: '操作成功',
                                    duration: 2000,
                                    location: 'bottom'
                                });

                                $api.addCls(obj, 'already-handle');
                                var jsfun = 'startLoadWarnCount();';
                                api.execScript({
                                    name: 'root',
                                    frameName: 'home',
                                    script: jsfun
                                });
                            } else {
                                api.toast({
                                    msg: ret.msg,
                                    duration: 2000,
                                    location: 'bottom'
                                });
                            }
                        }
                    },
                    error: function() {
                        api.toast({
                            msg: '处理失败',
                            duration: 2000,
                            location: 'bottom'
                        });
                    }
                });
            }
        });
    }
</script>