Signed-off-by: didiyu <1293722656@qq.com>
| | |
| | | { |
| | | label: '设备告警历史查询', |
| | | name: 'warnmanage/equiphistory' |
| | | },{ |
| | | label: '电池告警参数设置', |
| | | name: 'warnmanage/cellwarnset' |
| | | },{ |
| | | label: '设备告警参数设置', |
| | | name: 'warnmanage/equipwarnset' |
| | | } |
| | | ] |
| | | } |
| | |
| | | 'monitor/real': (resolve)=>require(['./views/monitor/realTime.vue'], resolve), |
| | | 'monitor/history': (resolve)=>require(['./views/monitor/history.vue'], resolve), |
| | | 'warnmanage/cellreal': (resolve)=>require(['./views/warnmanage/cellreal.vue'], resolve), |
| | | 'warnmanage/cellhistory': (resolve)=>require(['./views/warnmanage/cellhistory.vue'], resolve), |
| | | 'warnmanage/equipreal': (resolve)=>require(['./views/warnmanage/equipreal.vue'], resolve), |
| | | 'warnmanage/equiphistory': (resolve)=>require(['./views/warnmanage/equiphistory.vue'], resolve), |
| | | 'warnmanage/cellwarnset': (resolve)=>require(['./views/warnmanage/cellwarnset.vue'], resolve), |
| | | 'warnmanage/equipwarnset': (resolve)=>require(['./views/warnmanage/equipwarnset.vue'], resolve) |
| | | } |
| | | } |
| | | ]; |
New file |
| | |
| | | <template> |
| | | <div class="view-root"> |
| | | <div class="view-root-inner"> |
| | | <div class="view-layout"> |
| | | <Row> |
| | | <Col span="3"> |
| | | 维护区 |
| | | </Col> |
| | | <Col span="8"> |
| | | 机房站点 |
| | | </Col> |
| | | <Col span="5"> |
| | | 蓄电池组 |
| | | </Col> |
| | | <Col span="8"> |
| | | 告警开始日期 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="3"> |
| | | <Select v-model="whq" :value='4451' @on-change="changedwhq" style="width:160px" placement="bottom" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="jfzd" @on-change="changedjfzd" style="width:430px" placement="bottom" > |
| | | <Option v-for="item in station_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | <Col span="5"> |
| | | <Select v-model="xdcz" @on-change="changed" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in battgroup_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | |
| | | <Col span="4"> |
| | | <DatePicker type="date" format="yyyy-MM-dd" v-model="startTime" @on-change="startTimeChoose" placeholder="请选择时间段" :editable="false" style="width: 200px; color: #515a6e;"></DatePicker> |
| | | </Col> |
| | | <Col span="4"> |
| | | <DatePicker type="date" format="yyyy-MM-dd" v-model="endTime" @on-change="endTimeOpen" |
| | | placeholder="请选择时间段" :editable="false" style="width: 200px;color: #515a6e;"></DatePicker> |
| | | </Col> |
| | | |
| | | </Row> |
| | | |
| | | <Row> |
| | | <Col span="12"> |
| | | <CheckboxGroup v-model="warncond" @on-change="changed"> |
| | | <Row> |
| | | <Col span="8"> |
| | | <Checkbox label="119002" size="large"> |
| | | <span>组端电压</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Checkbox label="119003" size="large"> |
| | | <span>充电电流</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Checkbox label="119004" size="large"> |
| | | <span>放电电流</span> |
| | | </Checkbox> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="8"> |
| | | <Checkbox label="119005" size="large"> |
| | | <span>单体电压</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Checkbox label="119007" size="large"> |
| | | <span>单体内阻</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Checkbox label="119006" size="large"> |
| | | <span>单体温度</span> |
| | | </Checkbox> |
| | | </Col> |
| | | </Row> |
| | | </CheckboxGroup> |
| | | </Col> |
| | | <Col span="4"> |
| | | <Col > |
| | | <CheckboxGroup v-model="warnthr" @on-change="changed"> |
| | | <Row span="12"> |
| | | <Checkbox label="1" size="large"> |
| | | <span>上限告警</span> |
| | | </Checkbox> |
| | | </Row> |
| | | <Row span="12"> |
| | | <Checkbox label="0" size="large"> |
| | | |
| | | <span>下限告警</span> |
| | | </Checkbox> |
| | | </Row> |
| | | </CheckboxGroup> |
| | | </Col> |
| | | </Col> |
| | | <Col span="8"> |
| | | <CheckboxGroup v-model="warngra" @on-change="changed"> |
| | | <Row> |
| | | <Col span="12"> |
| | | <Checkbox label="1" size="large"> |
| | | <span>一级告警</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="12"> |
| | | <Checkbox label="2" size="large"> |
| | | <span>二级告警</span> |
| | | </Checkbox> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="12"> |
| | | <Checkbox label="3" size="large"> |
| | | <span>三级告警</span> |
| | | </Checkbox> |
| | | </Col> |
| | | <Col span="12"> |
| | | <Checkbox label="4" size="large"> |
| | | <span>四级告警</span> |
| | | </Checkbox> |
| | | </Col> |
| | | </Row> |
| | | </CheckboxGroup> |
| | | </Col> |
| | | </Row> |
| | | |
| | | <Divider style="background-color: #2d8cf0" /> |
| | | |
| | | |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" @on-selection-change="selectmoredata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | <div style="float: right; margin-right:20px"><Button :size="buttonSize" @click="sureExp" icon="ios-download-outline" type="primary">导出</Button></div> |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | |
| | | import {ajax, formatSeconds, sethoubeiTime, |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery' |
| | | import Csv from './js/csv.js'; |
| | | import ExportCsv from './js/export-csv.js'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | loading: true, |
| | | station_name1:[], |
| | | station_name:[], |
| | | battgroup_name:[], |
| | | whq: '', |
| | | jfzd: '', |
| | | xdcz: '0', |
| | | warncond: ['119002', '119003', '119004', '119005', '119007', '119006'], |
| | | warnthr:['1','0'], |
| | | warngra:['1','2','3','4'], |
| | | pageCurr: '1', |
| | | pageSize: '10', |
| | | pageAll: 1, |
| | | tableHeight: 450, |
| | | tableData1: [], |
| | | tableColumns1: [ |
| | | { |
| | | title: '编号', |
| | | key: 'number' |
| | | }, |
| | | { |
| | | title: '机房名称', |
| | | key: 'comname', |
| | | render: (h, params) => { |
| | | //console.log(params); |
| | | return h('div', params.row.comname); |
| | | } |
| | | }, |
| | | { |
| | | title: '电池组名称', |
| | | key: 'battname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警名称', |
| | | key: 'warnname' |
| | | |
| | | }, |
| | | { |
| | | title: '单体编号', |
| | | key: 'singname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警值', |
| | | key: 'warnval' |
| | | |
| | | }, |
| | | { |
| | | title: '告警等级', |
| | | key: 'warnlev' |
| | | |
| | | }, |
| | | { |
| | | title: '确认告警', |
| | | key: 'warnsure', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnsure === 0 ? 'error' : 'success'; |
| | | const text = row.warnsure === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | }, |
| | | { |
| | | title: '告警确认时间', |
| | | key: 'warnsuretime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警开始时间', |
| | | key: 'warnstarttime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警结束时间', |
| | | key: 'warnstoptime' |
| | | |
| | | } |
| | | |
| | | ], |
| | | |
| | | startTime: '2000-01-01', |
| | | endTime: new Date() |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | }, |
| | | computed:{ |
| | | fault_type_id(){ |
| | | if(this.warncond.indexOf("119002")>-1){return '119002'} |
| | | else{return '0';} |
| | | }, |
| | | fault_level(){ |
| | | if(this.warncond.indexOf("119003")>-1){return '119003'} |
| | | else{return '0';} |
| | | }, |
| | | record_uid(){ |
| | | if(this.warncond.indexOf("119004")>-1){return '119004'} |
| | | else{return '0';} |
| | | }, |
| | | maint_type_id(){ |
| | | if(this.warncond.indexOf("119005")>-1){return '119005'} |
| | | else{return '0';} |
| | | }, |
| | | maint_close(){ |
| | | if(this.warncond.indexOf("119007")>-1){return '119007'} |
| | | else{return '0';} |
| | | }, |
| | | maint_done(){ |
| | | if(this.warncond.indexOf("119006")>-1){return '119006'} |
| | | else{return '0';} |
| | | }, |
| | | alm_id(){ |
| | | if(this.warnthr.indexOf("1")>-1){return '1'} |
| | | else{return '100';} |
| | | }, |
| | | alm_signal_id(){ |
| | | if(this.warnthr.indexOf("0")>-1){return '0'} |
| | | else{return '100';} |
| | | }, |
| | | |
| | | numone(){ |
| | | if(this.warngra.indexOf("1")>-1){return '1'} |
| | | else{return '0';} |
| | | }, |
| | | BattGroupId(){ |
| | | if(this.warngra.indexOf("2")>-1){return '2'} |
| | | else{return '0';} |
| | | }, |
| | | master_audit(){ |
| | | if(this.warngra.indexOf("3")>-1){return '3'} |
| | | else{return '0';} |
| | | }, |
| | | appoint_uid(){ |
| | | if(this.warngra.indexOf("4")>-1){return '4'} |
| | | else{return '0';} |
| | | }, |
| | | dealwhq(){ |
| | | if(!isNaN(this.whq)){return '';} |
| | | else{return this.whq;} |
| | | }, |
| | | dealjfzd(){ |
| | | if(!isNaN(this.jfzd)){return '';} |
| | | else{return this.jfzd;} |
| | | }, |
| | | dealxdcz(){ |
| | | if(this.xdcz<10000){ |
| | | return '0'; |
| | | } |
| | | else{ |
| | | return this.xdcz; |
| | | } |
| | | }, |
| | | STtime(){ |
| | | return this.formatDateTime(this.startTime)+" 00:00:00"; |
| | | }, |
| | | EDtime(){ |
| | | return this.formatDateTime(this.endTime)+" 23:59:59"; |
| | | }, |
| | | Page(){ |
| | | return {pageCurr:this.pageCurr ,pageSize:this.pageSize, pageAll:this.pageAll}; |
| | | } |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | getpageCurr(a){ |
| | | |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | startTimeChoose () { |
| | | |
| | | |
| | | if (new Date(this.startTime) - new Date(this.endTime) > 0) { |
| | | |
| | | this.startTime = '2000-01-01'; |
| | | return; |
| | | } |
| | | this.changed(); |
| | | }, |
| | | // 结束时间验证 |
| | | endTimeOpen () { |
| | | |
| | | if (this.endTime-new Date()>0) { |
| | | this.endTime = new Date(); |
| | | return; |
| | | } |
| | | this.changed(); |
| | | }, |
| | | |
| | | formatDateTime (date) { |
| | | var y = date.getFullYear(); |
| | | var m = date.getMonth() + 1; |
| | | m = m < 10 ? ('0' + m) : m; |
| | | var d = date.getDate(); |
| | | d = d < 10 ? ('0' + d) : d; |
| | | var h = date.getHours(); |
| | | var minute = date.getMinutes(); |
| | | minute = minute < 10 ? ('0' + minute) : minute; |
| | | return y + '-' + m + '-' + d; |
| | | }, |
| | | urlEncode(param, key, encode) { |
| | | var vm=this; |
| | | if(param==null) return ''; |
| | | var paramStr = ''; |
| | | var t = typeof (param); |
| | | if (t == 'string' || t == 'number' || t == 'boolean') { |
| | | paramStr += '&' + key + '=' + ((encode==null||encode) ? encodeURIComponent(param) : param); |
| | | } else { |
| | | for (var i in param) { |
| | | var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i); |
| | | paramStr += vm.urlEncode(param[i], k, encode); |
| | | } |
| | | } |
| | | return paramStr; |
| | | }, |
| | | |
| | | getallwhq(){ |
| | | var vm=this; |
| | | //页面加载时查询维护区中的枢纽类型 |
| | | ajax({ |
| | | |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationName1InGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(null), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1 && data.data.length>0){ |
| | | this.station_name1=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=data.data.length; |
| | | vm.sn1placeholder=obj.label; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name1.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name1=[]; |
| | | vm.station_name1.push({ |
| | | value: '暂无管理的维护区', |
| | | label: '暂无管理的维护区' |
| | | }); |
| | | |
| | | } |
| | | vm.getalljfzd(); |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | }, |
| | | changedwhq(){ |
| | | this.getalljfzd(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getalljfzd(){ |
| | | var vm=this; |
| | | var checkedwhq=vm.dealwhq; |
| | | ajax({ |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationNameInGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({UNote:checkedwhq}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | // console.log(data); |
| | | if(data.code==1 && data.data.length>0){ |
| | | vm.station_name=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | vm.snplaceholder=obj.label; |
| | | obj.value=data.data.length; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name=[]; |
| | | vm.station_name.push({ |
| | | value: '暂无管理的机房站点', |
| | | label: '暂无管理的机房站点' |
| | | }); |
| | | |
| | | } |
| | | vm.getallxdcz(); |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | changedjfzd(){ |
| | | this.getallxdcz(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getallxdcz(){ |
| | | var vm=this; |
| | | var checkedwhq=vm.dealwhq; |
| | | var checkedjfzd=vm.jfzd; |
| | | ajax({ |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchBattgroupidInGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({UNote:checkedwhq,UName:checkedjfzd}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | // console.log(data); |
| | | if(data.code==1 && data.data.length>0){ |
| | | vm.battgroup_name=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=data.data.length; |
| | | vm.bnplaceholder=obj.label; |
| | | }else{ |
| | | obj.label=data.data[i-1].BattGroupName+"-"+data.data[i-1].MonCount+"节"; |
| | | obj.value=data.data[i-1].BattGroupId; |
| | | } |
| | | vm.battgroup_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.battgroup_name=[]; |
| | | vm.battgroup_name.push({ |
| | | value: '暂无管理的蓄电池组', |
| | | label: '暂无管理的蓄电池组' |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | startSearch: function() { |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | | //console.warn('haha87686'); |
| | | var vm=this; |
| | | var searchcond={ |
| | | page: vm.Page, |
| | | binf: { |
| | | StationName1: vm.dealwhq?vm.dealwhq:'', |
| | | StationName: vm.dealjfzd?vm.dealjfzd:'', |
| | | BattGroupId: vm.dealxdcz?vm.dealxdcz:0 |
| | | }, |
| | | mainf:{ |
| | | appoint_uid: vm.appoint_uid?vm.appoint_uid:4, /*<!-- 四级告警 -->*/ |
| | | master_audit: vm.master_audit?vm.master_audit:3, /*<!-- 三级告警 -->*/ |
| | | num: vm.numone?vm.numone:1, /*<!-- 一级告警 -->*/ |
| | | BattGroupId: vm.BattGroupId?vm.BattGroupId:2, /*<!-- 二级告警 -->*/ |
| | | usr_id: 0, |
| | | fault_type_id: vm.fault_type_id?vm.fault_type_id:119002, /*<!-- 组端电压 -->*/ |
| | | fault_level: vm.fault_level?vm.fault_level:119003, /*<!-- 充电电流 -->*/ |
| | | record_uid: vm.record_uid?vm.record_uid:119004, /*<!-- 放电电流 -->*/ |
| | | maint_type_id: vm.maint_type_id?vm.maint_type_id:119005, /*<!-- 单体电压 -->*/ |
| | | maint_done: vm.maint_done?vm.maint_done:119006, /*<!-- 单体温度 -->*/ |
| | | maint_close: vm.maint_close?vm.maint_close:119007, /*<!-- 单体内阻 -->*/ |
| | | master_id: 0 /*<!-- 连接条阻抗 -->*/ |
| | | }, |
| | | adata_H:{ |
| | | MonNum: 0, |
| | | alm_id: vm.alm_id?vm.alm_id:1, /*<!-- 上限告警 -->*/ |
| | | alm_start_time: vm.STtime?vm.STtime:'2000-01-01'+" 00:00:00", |
| | | alm_start_time1: vm.EDtime?vm.EDtime:new Date()+" 23:59:59", |
| | | alm_signal_id: vm.alm_signal_id?vm.alm_signal_id:0, /*<!-- 下限告警 -->*/ |
| | | Record_Id: 0 /*<!-- 容量更换告警 -->*/ |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | vm.loading=true; |
| | | ajax({ |
| | | type:"post", |
| | | url:"Battalarm_data_historyAction!serchByInfo", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(searchcond), |
| | | success:function(data){ |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length-1;i++){ |
| | | if(i == (data2.length-1)){ |
| | | vm.pageAll = data2[i].page.pageAll; |
| | | |
| | | } |
| | | |
| | | var wv=null; |
| | | if(data2[i].adata_H&&data2[i].binf){ |
| | | if(data2[i].adata_H.alm_signal_id >= 19 && data2[i].adata_H.alm_signal_id <= 22){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(0)+'AH'; //容量告警 |
| | | }else if((data2[i].adata_H.alm_signal_id >= 9 && data2[i].adata_H.alm_signal_id <= 10)){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(3)+'V'; //单体电压 |
| | | }else if(data2[i].adata_H.alm_signal_id >= 1 && data2[i].adata_H.alm_signal_id <= 4){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(1)+'V'; //在线电压,组端电压 |
| | | }else if(data2[i].adata_H.alm_signal_id >= 5 && data2[i].adata_H.alm_signal_id <= 5){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(1)+'A'; //充电电流,放电电流 |
| | | }else if(data2[i].adata_H.alm_signal_id >= 13 && data2[i].adata_H.alm_signal_id <= 14){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(3)+'mΩ'; //单体内阻 |
| | | }else if(data2[i].adata_H.alm_signal_id >= 11 && data2[i].adata_H.alm_signal_id <= 12){ |
| | | wv=(data2[i].adata_H.alm_value).toFixed(1)+'℃'; //单体温度 |
| | | }else{ |
| | | wv=(data2[i].adata_H.alm_value); |
| | | } |
| | | |
| | | var oneobj={ |
| | | number:(vm.pageCurr-1)*vm.pageSize+(i+1), //编号 |
| | | // number: i+1, |
| | | comname:data2[i].binf.StationName, //机房名称 |
| | | battname:data2[i].binf.BattGroupName, //电池组名称 |
| | | warnname:data2[i].binf.StationName8, //告警名称 |
| | | singname:data2[i].adata_H.MonNum, //单体编号 |
| | | warnval:wv, //告警值 |
| | | warnlev:data2[i].binf.StationName9, //告警等级 |
| | | warnsure:data2[i].adata_H.alm_is_confirmed, //告警确认 |
| | | warnsuretime:data2[i].adata_H.alm_is_confirmed!=0?data2[i].adata_H.alm_confirmed_time:"-", //告警确认时间 |
| | | warnstarttime:data2[i].adata_H.alm_start_time, //告警开始时间 |
| | | warnstoptime:data2[i].adata_H.alm_end_time!=0?data2[i].adata_H.alm_end_time:"-" //告警结束时间 |
| | | } |
| | | oneobj.label=data2[i].adata_H.num.toString(); |
| | | oneobj.note=data2[i].binf.StationName8; |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | if(vm.allnum.length>0){if(vm.isInArray(vm.allnum ,oneobj.number)){oneobj._checked=true; }} |
| | | |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }else{ |
| | | |
| | | // if(data.data.length == 1){ |
| | | // vm.pageAll = data.data[0].page.pageAll; |
| | | // } |
| | | |
| | | } |
| | | |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | //clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | vm.loading=false; |
| | | |
| | | }, |
| | | error:function(){ |
| | | // clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | creatTable(){ |
| | | var vm=this; |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | changed(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | exportXls(params){ |
| | | if(params.filename){ |
| | | if(params.filename.indexOf('.xls')===-1){ |
| | | params.filename += '.xls'; |
| | | } |
| | | } else{ |
| | | params.filename = 'table.xls'; |
| | | } |
| | | let columns = []; |
| | | let datas = []; |
| | | if(params.columns && params.data){ |
| | | columns = params.columns; |
| | | datas = params.data; |
| | | }else{ |
| | | columns = this.allColumns; |
| | | if(!('original' in params)) params.original = true; |
| | | datas = params.original ? this.data : this.rebuildData; |
| | | } |
| | | let noHeader = false; |
| | | if('noHeader' in params) noHeader = params.noHeader; |
| | | const data = Csv(columns, datas, params, noHeader); |
| | | if(params.callback) params.callback(data); |
| | | else ExportCsv.download(params.filename, data); |
| | | }, |
| | | sureExp(){ |
| | | var vm=this; |
| | | vm.exportXls({ |
| | | filename: "电池告警历史数据", |
| | | columns: vm.tableColumns1, |
| | | data: vm.tableData1.map(function(k){ |
| | | if(k.warnsure){k.warnsure='是';}else{k.warnsure='否';} |
| | | if(k.warnstarttime){ k.warnstarttime='="'+k.warnstarttime+'"'} |
| | | if(k.warnsuretime.length>3){k.warnsuretime='="'+k.warnsuretime+'"'} |
| | | if(k.warnstoptime.length>3){k.warnstoptime='="'+k.warnstoptime+'"'} |
| | | return k; |
| | | |
| | | }) |
| | | }); |
| | | vm.mockTableData1(); |
| | | }, |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p><p>也可以点击左下角进行多行选择</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(msg, fun, arr, url){ |
| | | var vm=this; |
| | | var tit=''; |
| | | if(!vm.num){ |
| | | tit='已选项要'+msg+'吗?'; |
| | | } |
| | | else{tit='编号为'+vm.num+'要'+msg+'吗?'} |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | if(fun){fun(arr, url)} |
| | | }, |
| | | onCancel: () => { |
| | | vm.operatedata=[]; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | tabCheckbox(){ |
| | | var vm=this; |
| | | vm.operatedata=[]; |
| | | vm.selecttext=!vm.selecttext; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | vm.$refs.table.selectAll(false); |
| | | vm.tableColumns1.splice(0,1); |
| | | vm.selectone=true; |
| | | vm.allnum=[]; |
| | | } |
| | | else{vm.tableColumns1.unshift({ |
| | | type: 'selection', |
| | | width: 60, |
| | | align: 'center' |
| | | }); |
| | | vm.selectone=false; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }, |
| | | selectonedata(val){ |
| | | // console.warn(val,'单选111'); |
| | | var vm=this; |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | delrecord(){ |
| | | var vm=this; |
| | | if(vm.operatedata==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | stationname:k.comname+"-"+k.battname, |
| | | num:k.label, |
| | | note:k.note |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Battalarm_data_historyAction!delete"; |
| | | vm.alertSure('删除记录',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | selectmoredata(val){ |
| | | var vm=this; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | // console.warn(val,'多选222'); |
| | | vm.operatedata=val; |
| | | vm.allnum=vm.operatedata.map(function(k){return k.number}); |
| | | } |
| | | }, |
| | | isInArray(arr,value){ |
| | | for(var i = 0; i < arr.length; i++){ |
| | | if(value === arr[i]){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | ajaxdata(arr, url){ |
| | | var vm=this; |
| | | var js=JSON.stringify(arr).toString(); |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
| | | }, |
| | | |
| | | destroyed: function() { |
| | | clearTimeout($.ti); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .view-layout { |
| | | height: 100%; |
| | | } |
| | | .view-layout-left { |
| | | float: left; |
| | | width: 360px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .view-layout-right { |
| | | margin-left: 370px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .ivu-date-picker-cells-cell em{ |
| | | color: #515a6e; |
| | | } |
| | | </style> |
| | |
| | | </Row> |
| | | <Row> |
| | | <Col span="8"> |
| | | <Select v-model="whq" :value='4451' @on-change="creatTable" style="width:200px" placement="bottom" > |
| | | <Select v-model="whq" :value='4451' @on-change="changedwhq" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="jfzd" @on-change="creatTable" style="width:200px" placement="bottom" > |
| | | <Select v-model="jfzd" @on-change="changedjfzd" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="xdcz" @on-change="creatTable" style="width:200px" placement="bottom" > |
| | | <Select v-model="xdcz" @on-change="changed" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in battgroup_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | |
| | | </Row> |
| | | <Row> |
| | | <Col span="8"> |
| | | <CheckboxGroup v-model="warncond" @on-change="creatTable"> |
| | | <CheckboxGroup v-model="warncond" @on-change="changed"> |
| | | <Col> |
| | | <Row span="12"> |
| | | <Checkbox label="119002" size="large"> |
| | |
| | | </Col> |
| | | <Col span="8"> |
| | | <Col > |
| | | <CheckboxGroup v-model="warnthr" @on-change="creatTable"> |
| | | <CheckboxGroup v-model="warnthr" @on-change="changed"> |
| | | <Row span="12"> |
| | | <Checkbox label="1" size="large"> |
| | | <span>上限告警</span> |
| | |
| | | </Col> |
| | | </Col> |
| | | <Col span="8"> |
| | | <CheckboxGroup v-model="warngra" @on-change="creatTable"> |
| | | <CheckboxGroup v-model="warngra" @on-change="changed"> |
| | | <Col> |
| | | <Row span="12"> |
| | | <Checkbox label="1" size="large"> |
| | |
| | | |
| | | </Row> |
| | | |
| | | <Divider /> |
| | | <Divider style="background-color: #2d8cf0" /> |
| | | |
| | | <Table :data="tableData1" border :columns="tableColumns1" ref="table" :height="tableHeight" no-data-text="数据加载中..." stripe></Table> |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" @on-selection-change="selectmoredata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | <div style="float: right; margin-right:20px"><Button :size="buttonSize" @click="sureExp" icon="ios-download-outline" type="primary">导出</Button></div> |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="surewarn" icon="md-thumbs-up" type="success">确认告警</Button> |
| | | <Button :size="buttonSize" @click="cancelwarn" icon="md-close" type="info">取消告警</Button> |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | <script> |
| | | |
| | |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery' |
| | | |
| | | import $ from 'jquery'; |
| | | import Csv from './js/csv.js'; |
| | | import ExportCsv from './js/export-csv.js'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | loading: true, |
| | | station_name1:[], |
| | | station_name:[], |
| | | battgroup_name:[], |
| | |
| | | key: 'warnstoptime' |
| | | |
| | | } |
| | | |
| | | |
| | | ] |
| | | |
| | |
| | | else{return this.jfzd;} |
| | | }, |
| | | dealxdcz(){ |
| | | if(!isNaN(this.xdcz)){return '0';} |
| | | else{return this.jfzd;} |
| | | if(this.xdcz<10000){ |
| | | return '0'; |
| | | } |
| | | else{ |
| | | return this.xdcz; |
| | | } |
| | | } |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | getwarncond(val){ |
| | | console.log(this.warncond); |
| | | |
| | | }, |
| | | getpageCurr(a){ |
| | | console.warn(44599933); |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | console.warn(8877); |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | isInArray(arr,value){ |
| | | for(var i = 0; i < arr.length; i++){ |
| | | if(value === arr[i]){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | getwarnthr(){ |
| | | console.log(this.warnthr); |
| | | }, |
| | | getwarngra(){ |
| | | console.log(this.warngra); |
| | | }, |
| | | |
| | | // getxdcz(){ |
| | | // console.log(this.xdcz); |
| | | // }, |
| | | |
| | | urlEncode(param, key, encode) { |
| | | urlEncode(param, key, encode) { |
| | | var vm=this; |
| | | if(param==null) return ''; |
| | | var paramStr = ''; |
| | |
| | | } |
| | | } |
| | | return paramStr; |
| | | }, |
| | | }, |
| | | |
| | | getallwhq(){ |
| | | var vm=this; |
| | |
| | | vm.station_name1.push(obj); |
| | | } |
| | | }else{ |
| | | |
| | | vm.station_name1=[]; |
| | | vm.station_name1.push({ |
| | | value: '暂无管理的维护区', |
| | | label: '暂无管理的维护区' |
| | |
| | | |
| | | }); |
| | | |
| | | }, |
| | | changedwhq(){ |
| | | this.getalljfzd(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getalljfzd(){ |
| | | var vm=this; |
| | |
| | | vm.station_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.snplaceholder='暂无管理的机房站点'; |
| | | vm.station_name=[]; |
| | | vm.station_name.push({ |
| | | value: '暂无管理的机房站点', |
| | | label: '暂无管理的机房站点' |
| | |
| | | |
| | | }) |
| | | |
| | | }, |
| | | changedjfzd(){ |
| | | this.getallxdcz(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getallxdcz(){ |
| | | var vm=this; |
| | |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=data.data.length; |
| | | vm.bnplaceholder=obj.label; |
| | | |
| | | }else{ |
| | | obj.label=data.data[i-1].BattGroupName+"-"+data.data[i-1].MonCount+"节"; |
| | | obj.value=data.data[i-1].BattGroupId; |
| | |
| | | vm.battgroup_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.bnplaceholder='暂无管理的蓄电池组'; |
| | | vm.battgroup_name=[]; |
| | | vm.battgroup_name.push({ |
| | | value: '暂无管理的蓄电池组', |
| | | label: '暂无管理的蓄电池组' |
| | |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | // console.warn(self.operatedata ,555); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | |
| | | 'bmd.mainf.appoint_uid': vm.appoint_uid?vm.appoint_uid:4 /*<!-- 四级告警 -->*/ |
| | | } |
| | | |
| | | console.log(searchcond); |
| | | vm.loading=true; |
| | | ajax({ |
| | | type:"post", |
| | | url:"Battalarm_dataAction!serchByCondition", |
| | |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | console.log(44444); |
| | | console.log(data); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length-1;i++){ |
| | | if(i == (data2.length-1)){ |
| | | vm.pageAll = data2[i].page.pageAll; |
| | | console.log(777777); |
| | | |
| | | }else{ |
| | | var wv=null; |
| | | if(data2[i].adata&&data2[i].binf){ |
| | |
| | | warnstarttime:data2[i].adata.alm_start_time, //告警开始时间 |
| | | warnstoptime:data2[i].adata.alm_is_confirmed!=0?data2[i].adata.alm_end_time:"-" //告警结束时间 |
| | | } |
| | | |
| | | |
| | | oneobj.label=data2[i].adata.num.toString(); |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | if(vm.allnum.length>0){if(vm.isInArray(vm.allnum ,oneobj.number)){oneobj._checked=true; }} |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | console.log(alldt); |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | //clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | vm.loading=false; |
| | | |
| | | |
| | | }, |
| | | error:function(){ |
| | | // clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | |
| | | } |
| | | |
| | | }); |
| | |
| | | creatTable(){ |
| | | var vm=this; |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | changed(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | exportXls(params){ |
| | | if(params.filename){ |
| | | if(params.filename.indexOf('.xls')===-1){ |
| | | params.filename += '.xls'; |
| | | } |
| | | } else{ |
| | | params.filename = 'table.xls'; |
| | | } |
| | | let columns = []; |
| | | let datas = []; |
| | | if(params.columns && params.data){ |
| | | columns = params.columns; |
| | | datas = params.data; |
| | | }else{ |
| | | columns = this.allColumns; |
| | | if(!('original' in params)) params.original = true; |
| | | datas = params.original ? this.data : this.rebuildData; |
| | | } |
| | | let noHeader = false; |
| | | if('noHeader' in params) noHeader = params.noHeader; |
| | | const data = Csv(columns, datas, params, noHeader); |
| | | if(params.callback) params.callback(data); |
| | | else ExportCsv.download(params.filename, data); |
| | | }, |
| | | sureExp(){ |
| | | var vm=this; |
| | | vm.exportXls({ |
| | | filename: "电池告警实时数据", |
| | | columns: vm.tableColumns1, |
| | | data: vm.tableData1.map(function(k){ |
| | | if(k.warnsure){k.warnsure='是';}else{k.warnsure='否';} |
| | | if(k.warnstarttime){ k.warnstarttime='="'+k.warnstarttime+'"'} |
| | | if(k.warnsuretime.length>3){k.warnsuretime='="'+k.warnsuretime+'"'} |
| | | if(k.warnstoptime.length>3){k.warnstoptime='="'+k.warnstoptime+'"'} |
| | | return k; |
| | | |
| | | }) |
| | | }); |
| | | vm.mockTableData1(); |
| | | }, |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p><p>也可以点击左下角进行多行选择</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(msg, fun, arr, url){ |
| | | var vm=this; |
| | | var tit=''; |
| | | if(!vm.num){ |
| | | tit='已选项要'+msg+'吗?'; |
| | | } |
| | | else{tit='编号为'+vm.num+'要'+msg+'吗?'} |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | if(fun){fun(arr, url)} |
| | | }, |
| | | onCancel: () => { |
| | | vm.operatedata=[]; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | tabCheckbox(){ |
| | | var vm=this; |
| | | vm.operatedata=[]; |
| | | vm.selecttext=!vm.selecttext; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | vm.$refs.table.selectAll(false); |
| | | vm.tableColumns1.splice(0,1); |
| | | vm.selectone=true; |
| | | vm.allnum=[]; |
| | | } |
| | | else{vm.tableColumns1.unshift({ |
| | | type: 'selection', |
| | | width: 60, |
| | | align: 'center' |
| | | }); |
| | | vm.selectone=false; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }, |
| | | selectonedata(val){ |
| | | // console.warn(val,'单选111'); |
| | | var vm=this; |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | surewarn(){ |
| | | var vm=this; |
| | | if(vm.operatedata.length==0){vm.confirm();} |
| | | else{ |
| | | |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | stationname:k.comname+"-"+k.battname, |
| | | num:k.label, |
| | | alm_confirmed_time:new Date().format('yyyy-MM-dd hh:mm:ss'), |
| | | alm_is_confirmed: 1, |
| | | note:k.warnname |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Battalarm_dataAction!update"; |
| | | vm.alertSure('确认告警',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | cancelwarn(){ |
| | | var vm=this; |
| | | if(vm.operatedata.length==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | stationname:k.comname+"-"+k.battname, |
| | | num:k.label, |
| | | alm_end_time:new Date().format('yyyy-MM-dd hh:mm:ss'), |
| | | Record_Id: 0, |
| | | alm_cleared_type: 2, |
| | | note:k.warnname |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Battalarm_dataAction!cancelalarm"; |
| | | |
| | | vm.alertSure('取消告警',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | delrecord(){ |
| | | var vm=this; |
| | | if(vm.operatedata==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | stationname:k.comname+"-"+k.battname, |
| | | num:k.label, |
| | | note:k.warnname |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Battalarm_dataAction!delete"; |
| | | vm.alertSure('删除记录',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | selectmoredata(val){ |
| | | var vm=this; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | // console.warn(val,'多选222'); |
| | | vm.operatedata=val; |
| | | vm.allnum=vm.operatedata.map(function(k){return k.number}); |
| | | } |
| | | }, |
| | | isInArray(arr,value){ |
| | | for(var i = 0; i < arr.length; i++){ |
| | | if(value === arr[i]){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | ajaxdata(arr, url){ |
| | | var vm=this; |
| | | var js=JSON.stringify(arr).toString(); |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "bads="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
New file |
| | |
| | | <template> |
| | | <div class="view-root"> |
| | | <div class="view-root-inner"> |
| | | <div class="view-layout"> |
| | | <Row> |
| | | <Col span="24"> |
| | | 参数选择 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="24"> |
| | | <Select v-model="whq" @on-change="changedwhq" placement="bottom" disabled placeholder="电池容量告警参数" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | </Row> |
| | | <Divider style="background-color: transparent;" /> |
| | | |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <!-- <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> --> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="surewarn" icon="md-create" type="success">修改</Button> |
| | | <!-- <Button :size="buttonSize" @click="cancelwarn" icon="md-close" type="info">取消告警</Button> |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> --> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | |
| | | <Modal |
| | | v-model="showmodal" |
| | | title="告警参数修改" |
| | | @on-ok="endalert" |
| | | @on-cancel="cancel" draggable> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警ID |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警名称 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].battname" disabled placeholder="Enter something..德萨." /> |
| | | </Col> |
| | | <Col span="10" > |
| | | <Input v-model="operatedata[0].comname" disabled placeholder="Enter some" /> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警上限系数值(0.0~30.0) |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警上限等级(1~4) |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].warnname" @on-change="dealdata" placeholder="Enteruuuuu" /> |
| | | </Col> |
| | | <Col span="10" style="padding:1% 0"> |
| | | <RadioGroup v-model="operatedata[0].singname"> |
| | | <Radio label="1"></Radio> |
| | | <Radio label="2"></Radio> |
| | | <Radio label="3"></Radio> |
| | | <Radio label="4"></Radio> |
| | | </RadioGroup> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警下限系数值(0.0~30.0) |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警下限等级(1~4) |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].warnsuretime" @on-change="dealdata2" placeholder="Enteruuuuu" /> |
| | | </Col> |
| | | <Col span="10" style="padding:1% 0"> |
| | | <RadioGroup v-model="operatedata[0].warnstarttime" > |
| | | <Radio label="1"></Radio> |
| | | <Radio label="2"></Radio> |
| | | <Radio label="3"></Radio> |
| | | <Radio label="4"></Radio> |
| | | </RadioGroup> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;marginTop:3%;"> |
| | | <Checkbox v-model="upx" @on-change="changeupx">告警上限使能</Checkbox> |
| | | </Col> |
| | | <Col span="10" style="marginTop:3%;"> |
| | | <Checkbox v-model="downx" @on-change="changedownx">告警下限使能</Checkbox> |
| | | </Col> |
| | | </Row> |
| | | </Modal> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | <script> |
| | | |
| | | import {ajax, formatSeconds, sethoubeiTime, |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | warnparamstate:[ |
| | | {key:'Batt_Alarm_Type_OnlineVol',name:'在线电压告警'}, |
| | | {key:'Batt_Alarm_Type_GroupVol',name:'组端电压告警'}, |
| | | {key:'Batt_Alarm_Type_BattChargeCurr',name:'充电电流告警'}, |
| | | {key:'Batt_Alarm_Type_BattDisChargeCurr',name:'放电电流告警'}, |
| | | {key:'Batt_Alarm_Type_MonVol',name:'单体电压告警'}, |
| | | {key:'Batt_Alarm_Type_MonTmp',name:'单体温度告警'}, |
| | | {key:'Batt_Alarm_Type_MonRes',name:'单体内阻告警'}, |
| | | {key:'Batt_Alarm_Type_ConnRes',name:'单体连接条告警'}, |
| | | {key:'Batt_Alarm_Type_DisChargeMonVol',name:'放电单体电压告警'}, |
| | | {key:'Batt_Alarm_Type_CapAlarm',name:'容量告警告警'}, |
| | | {key:'Batt_Alarm_Type_CapChange',name:'容量更换告警'},], |
| | | |
| | | showmodal:false, |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | station_name1:[{label: '电池告警参数',value:1},{label: '电池容量告警参数',value:0}], |
| | | station_name:[], |
| | | battgroup_name:[], |
| | | whq: 0, |
| | | jfzd: '', |
| | | xdcz: '0', |
| | | warncond: ['119002', '119003', '119004', '119005', '119007', '119006'], |
| | | warnthr:['1','0'], |
| | | warngra:['1','2','3','4'], |
| | | pageCurr: '1', |
| | | pageSize: '10', |
| | | pageAll: 1, |
| | | tableHeight: 450, |
| | | tableData1: [], |
| | | tableColumns1: [ |
| | | { |
| | | title: '编号', |
| | | key: 'number' |
| | | }, |
| | | { |
| | | title: '告警名称', |
| | | key: 'comname', |
| | | render: (h, params) => { |
| | | //console.log(params); |
| | | return h('div', params.row.comname); |
| | | } |
| | | }, |
| | | { |
| | | title: '告警ID', |
| | | key: 'battname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限系数值(0.0~30.0)', |
| | | key: 'warnname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限等级(1~4)', |
| | | key: 'singname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限使能', |
| | | key: 'warnsure', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnsure === 0 ? 'error' : 'success'; |
| | | const text = row.warnsure === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限系数值(0.0~30.0)', |
| | | key: 'warnsuretime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限等级(1~4)', |
| | | key: 'warnstarttime', |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限使能', |
| | | key: 'warnstoptime', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnstoptime === 0 ? 'error' : 'success'; |
| | | const text = row.warnstoptime === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | ], |
| | | upx:false, |
| | | downx:false |
| | | |
| | | |
| | | } |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | changeupx(){ |
| | | var b=this.upx?1:0; |
| | | for (var k in this.operatedata[0]){ |
| | | if(k=='warnsure'){this.operatedata[0].warnsure=b;} |
| | | } |
| | | |
| | | }, |
| | | changedownx(){ |
| | | var b=this.downx?1:0; |
| | | for (var k in this.operatedata[0]){ |
| | | if(k=='warnstoptime'){this.operatedata[0].warnstoptime=b;} |
| | | } |
| | | }, |
| | | getParmName(keywords){ |
| | | var name=""; |
| | | for(var i=0;i<this.warnparamstate.length;i++){ |
| | | if(this.warnparamstate[i].key == keywords){ |
| | | name = this.warnparamstate[i].name; |
| | | break; |
| | | } |
| | | } |
| | | return name; |
| | | }, |
| | | getpageCurr(a){ |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | changedwhq(){ |
| | | this.getalljfzd(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | changedjfzd(){ |
| | | this.getallxdcz(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | startSearch: function() { |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | // console.warn(self.operatedata ,555); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | | //console.warn('haha87686'); |
| | | var vm=this; |
| | | var searchcond={ |
| | | alm_id:vm.whq |
| | | } |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:"Alarm_paramAction!serchByCondition", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(searchcond), |
| | | success:function(data){ |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length-1;i++){ |
| | | if(data2[i]){ |
| | | var oneobj={ |
| | | number:(vm.pageCurr-1)*vm.pageSize+(i+1), //编号 |
| | | // number: i+1, |
| | | comname: vm.getParmName(data2[i].alm_name), //机房名称 |
| | | battname:data2[i].alm_id, //电池组名称 |
| | | warnname:data2[i].alm_high_coe, //告警名称 |
| | | singname:data2[i].alm_high_level.toString(), //单体编号 |
| | | warnsure:data2[i].alm_high_en, //告警确认 |
| | | |
| | | warnsuretime:data2[i].alm_low_coe, //告警确认时间 |
| | | warnstarttime:data2[i].alm_low_level.toString(), //告警开始时间 |
| | | |
| | | warnstoptime:data2[i].alm_low_en //告警结束时间 |
| | | } |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }else{ |
| | | |
| | | if(data.data.length == 1){ |
| | | vm.pageAll = data.data[0].page.pageAll; |
| | | } |
| | | |
| | | } |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | |
| | | |
| | | }, |
| | | error:function(){ |
| | | |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | creatTable(){ |
| | | var vm=this; |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | changed(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(){ |
| | | var vm=this; |
| | | vm.showmodal = true |
| | | }, |
| | | selectonedata(val){ |
| | | |
| | | var vm=this; |
| | | // if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.$set(vm.operatedata,''+0, val); |
| | | if(vm.operatedata[0].warnsure==1){vm.upx=true;}else{vm.upx=false;} |
| | | if(vm.operatedata[0].warnstoptime==1){vm.downx=true;}else{vm.downx=false;} |
| | | // vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | surewarn(){ |
| | | var vm=this; |
| | | if(!vm.operatedata[0].number){vm.confirm();} |
| | | else{ |
| | | vm.alertSure(); |
| | | } |
| | | }, |
| | | endalert(){ |
| | | var vm=this; |
| | | var tit=''; |
| | | |
| | | tit='确认修改'+vm.operatedata[0].comname+'参数吗?' |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | vm.ajaxdata(); |
| | | }, |
| | | onCancel: () => { |
| | | vm.showmodal = false; |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | ajaxdata(){ |
| | | var vm=this; |
| | | var narr={ |
| | | alm_name:vm.operatedata[0].comname, |
| | | alm_id:vm.operatedata[0].battname, |
| | | alm_high_coe:vm.operatedata[0].warnname, |
| | | alm_high_level:vm.operatedata[0].singname, |
| | | alm_low_coe:vm.operatedata[0].warnsuretime, |
| | | alm_low_level:vm.operatedata[0].warnstarttime, |
| | | alm_high_en:vm.operatedata[0].warnsure, |
| | | alm_low_en:vm.operatedata[0].warnstoptime |
| | | }; |
| | | |
| | | |
| | | |
| | | var url="Alarm_paramAction!update"; |
| | | var js=JSON.stringify(narr).toString(); |
| | | vm.num=0; |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | }, |
| | | cancel () { |
| | | var vm=this; |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | }, |
| | | dealdata(){ |
| | | var vm=this; |
| | | if(vm.operatedata[0].warnname>0){ |
| | | vm.operatedata[0].warnname=parseFloat(vm.operatedata[0].warnname); |
| | | if(vm.operatedata[0].warnname>30){vm.operatedata[0].warnname=30}; |
| | | } |
| | | else {vm.operatedata[0].warnname=0;} |
| | | }, |
| | | dealdata2(){ |
| | | var vm=this; |
| | | if(vm.operatedata[0].warnsuretime>0){ |
| | | vm.operatedata[0].warnsuretime=parseFloat(vm.operatedata[0].warnsuretime); |
| | | if(vm.operatedata[0].warnsuretime>30){vm.operatedata[0].warnsuretime=30}; |
| | | } |
| | | else {vm.operatedata[0].warnsuretime=0;} |
| | | } |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | // vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
| | | }, |
| | | |
| | | destroyed: function() { |
| | | clearTimeout($.ti); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .view-layout { |
| | | height: 100%; |
| | | } |
| | | .view-layout-left { |
| | | float: left; |
| | | width: 360px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .view-layout-right { |
| | | margin-left: 370px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="view-root"> |
| | | <div class="view-root-inner"> |
| | | <div class="view-layout"> |
| | | <Row> |
| | | <Col span="8"> |
| | | 维护区 |
| | | </Col> |
| | | <Col span="8"> |
| | | 机房站点 |
| | | </Col> |
| | | <Col span="8"> |
| | | 告警开始时间 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="8"> |
| | | <Select v-model="whq" :value='4451' @on-change="changedwhq" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="jfzd" @on-change="changedjfzd" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | <Col span="4"> |
| | | <DatePicker type="date" format="yyyy-MM-dd" v-model="startTime" @on-change="startTimeChoose" placeholder="请选择时间段" :editable="false" style="width: 200px; color: #515a6e;"></DatePicker> |
| | | </Col> |
| | | <Col span="4"> |
| | | <DatePicker type="date" format="yyyy-MM-dd" v-model="endTime" @on-change="endTimeOpen" |
| | | placeholder="请选择时间段" :editable="false" style="width: 200px;color: #515a6e;"></DatePicker> |
| | | </Col> |
| | | </Row> |
| | | |
| | | |
| | | <Divider style="background-color: #2d8cf0"/> |
| | | |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" @on-selection-change="selectmoredata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | <div style="float: right; margin-right:20px"><Button :size="buttonSize" @click="sureExp" icon="ios-download-outline" type="primary">导出</Button></div> |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | |
| | | import {ajax, formatSeconds, sethoubeiTime, |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery' |
| | | import Csv from './js/csv.js'; |
| | | import ExportCsv from './js/export-csv.js'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | loading: true, |
| | | station_name1:[], |
| | | station_name:[], |
| | | warn_style:[ |
| | | {label:'全部',value:0},{label:'通信故障',value:119020},{label:'继电器告警',value:618501},{label:'通讯告警',value:618502}, |
| | | {label:'设备过温告警',value:618503}, {label:'二极管D1告警',value:618504}, {label:'续航不足告警',value:119023}, |
| | | {label:'基站停电告警',value:119024}, {label:'基站发电告警',value:119025},{label:'基站掉站告警',value:119026}, |
| | | {label:'基站开门告警',value:119027} |
| | | ], |
| | | whq: '', |
| | | jfzd: '', |
| | | xdcz: '0', |
| | | warncond: ['119002', '119003', '119004', '119005', '119007', '119006'], |
| | | warnthr:['1','0'], |
| | | warngra:['1','2','3','4'], |
| | | pageCurr: 1, |
| | | pageSize: 10, |
| | | pageAll: 1, |
| | | tableHeight: 450, |
| | | tableData1: [], |
| | | tableColumns1: [ |
| | | { |
| | | title: '编号', |
| | | key: 'number' |
| | | }, |
| | | { |
| | | title: '设备ID', |
| | | key: 'comname', |
| | | render: (h, params) => { |
| | | //console.log(params); |
| | | return h('div', params.row.comname); |
| | | } |
| | | }, |
| | | { |
| | | title: '设备名称', |
| | | key: 'battname' |
| | | |
| | | }, |
| | | { |
| | | title: '设备IP', |
| | | key: 'warnname' |
| | | |
| | | }, |
| | | { |
| | | title: '所在机房名称', |
| | | key: 'singname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警事件', |
| | | key: 'warnval' |
| | | |
| | | }, |
| | | { |
| | | title: '告警等级', |
| | | key: 'warnlev' |
| | | |
| | | }, |
| | | { |
| | | title: '告警确认', |
| | | key: 'warnsure', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnsure === 0 ? 'error' : 'success'; |
| | | const text = row.warnsure === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | }, |
| | | { |
| | | title: '告警确认时间', |
| | | key: 'warnsuretime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警开始时间', |
| | | key: 'warnstarttime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警结束时间', |
| | | key: 'warnstoptime' |
| | | |
| | | } |
| | | |
| | | ], |
| | | startTime: '2000-01-01', |
| | | endTime: new Date() |
| | | |
| | | |
| | | } |
| | | |
| | | }, |
| | | computed:{ |
| | | fault_type_id(){ |
| | | if(this.warncond.indexOf("119002")>-1){return '119002'} |
| | | else{return '0';} |
| | | }, |
| | | fault_level(){ |
| | | if(this.warncond.indexOf("119003")>-1){return '119003'} |
| | | else{return '0';} |
| | | }, |
| | | record_uid(){ |
| | | if(this.warncond.indexOf("119004")>-1){return '119004'} |
| | | else{return '0';} |
| | | }, |
| | | maint_type_id(){ |
| | | if(this.warncond.indexOf("119005")>-1){return '119005'} |
| | | else{return '0';} |
| | | }, |
| | | maint_close(){ |
| | | if(this.warncond.indexOf("119007")>-1){return '119007'} |
| | | else{return '0';} |
| | | }, |
| | | maint_done(){ |
| | | if(this.warncond.indexOf("119006")>-1){return '119006'} |
| | | else{return '0';} |
| | | }, |
| | | alm_id(){ |
| | | if(this.warnthr.indexOf("1")>-1){return '1'} |
| | | else{return '100';} |
| | | }, |
| | | alm_signal_id(){ |
| | | if(this.warnthr.indexOf("0")>-1){return '0'} |
| | | else{return '100';} |
| | | }, |
| | | |
| | | numone(){ |
| | | if(this.warngra.indexOf("1")>-1){return '1'} |
| | | else{return '0';} |
| | | }, |
| | | BattGroupId(){ |
| | | if(this.warngra.indexOf("2")>-1){return '2'} |
| | | else{return '0';} |
| | | }, |
| | | master_audit(){ |
| | | if(this.warngra.indexOf("3")>-1){return '3'} |
| | | else{return '0';} |
| | | }, |
| | | appoint_uid(){ |
| | | if(this.warngra.indexOf("4")>-1){return '4'} |
| | | else{return '0';} |
| | | }, |
| | | dealwhq(){ |
| | | if(!isNaN(this.whq)){return '';} |
| | | else{return this.whq;} |
| | | }, |
| | | dealjfzd(){ |
| | | if(!isNaN(this.jfzd)){return '';} |
| | | else{return this.jfzd;} |
| | | }, |
| | | dealxdcz(){ |
| | | if(isNaN(this.xdcz)){ |
| | | return '0'; |
| | | } |
| | | else{ |
| | | return this.xdcz; |
| | | } |
| | | }, |
| | | STtime(){ |
| | | return this.formatDateTime(this.startTime)+" 00:00:00"; |
| | | }, |
| | | EDtime(){ |
| | | return this.formatDateTime(this.endTime)+" 23:59:59"; |
| | | } |
| | | // Page(){ |
| | | // return {pageCurr:this.pageCurr ,pageSize:this.pageSize, pageAll:this.pageAll}; |
| | | // } |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | getpageCurr(a){ |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | startTimeChoose () { |
| | | if (new Date(this.startTime) - new Date(this.endTime) > 0) { |
| | | this.startTime = '2000-01-01'; |
| | | return; |
| | | } |
| | | this.changedjfzd(); |
| | | }, |
| | | // 结束时间验证 |
| | | endTimeOpen () { |
| | | if (this.endTime-new Date()>0) { |
| | | this.endTime = new Date(); |
| | | return; |
| | | } |
| | | this.changedjfzd(); |
| | | }, |
| | | |
| | | formatDateTime (date) { |
| | | var y = date.getFullYear(); |
| | | var m = date.getMonth() + 1; |
| | | m = m < 10 ? ('0' + m) : m; |
| | | var d = date.getDate(); |
| | | d = d < 10 ? ('0' + d) : d; |
| | | var h = date.getHours(); |
| | | var minute = date.getMinutes(); |
| | | minute = minute < 10 ? ('0' + minute) : minute; |
| | | return y + '-' + m + '-' + d; |
| | | }, |
| | | |
| | | //获取设备的告警类型 |
| | | getAlarmTypeByAlmType(alm_type){ |
| | | if(alm_type>0){ |
| | | switch(alm_type){ |
| | | case 618501:return "继电器K1告警"; |
| | | case 618502:return "通讯告警"; |
| | | case 618503:return "设备过温告警"; |
| | | case 618504:return "二极管D1告警"; |
| | | case 119023:return "续航不足告警"; |
| | | case 119024:return "基站停电告警"; |
| | | case 119025:return "基站发电告警"; |
| | | case 119026:return "基站掉站告警"; |
| | | case 119027:return "基站开门告警"; |
| | | case 119028:return "设备高温告警"; |
| | | case 119032:return "设备SD卡故障"; |
| | | case 119033:return "采集线告警"; |
| | | } |
| | | } |
| | | return "通信故障"; |
| | | }, |
| | | //获取告警等级 |
| | | getAlarmLevel(alm_level){ |
| | | if(alm_level>0){ |
| | | switch(alm_level){ |
| | | case 1:return "一级告警"; |
| | | case 2:return "二级告警"; |
| | | case 3:return "三级告警"; |
| | | case 4:return "四级告警"; |
| | | } |
| | | } |
| | | return ""; |
| | | }, |
| | | |
| | | getallwhq(){ |
| | | var vm=this; |
| | | //页面加载时查询维护区中的枢纽类型 |
| | | ajax({ |
| | | |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationName1InGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(null), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1 && data.data.length>0){ |
| | | this.station_name1=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=data.data.length; |
| | | vm.sn1placeholder=obj.label; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name1.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name1=[]; |
| | | vm.station_name1.push({ |
| | | value: '暂无管理的维护区', |
| | | label: '暂无管理的维护区' |
| | | }); |
| | | |
| | | } |
| | | vm.getalljfzd(); |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | }, |
| | | changedwhq(){ |
| | | this.getalljfzd(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getalljfzd(){ |
| | | var vm=this; |
| | | var checkedwhq=vm.dealwhq; |
| | | ajax({ |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationNameInGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({UNote:checkedwhq}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | // console.log(data); |
| | | if(data.code==1 && data.data.length>0){ |
| | | vm.station_name=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | vm.snplaceholder=obj.label; |
| | | obj.value=data.data.length; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name=[]; |
| | | vm.station_name.push({ |
| | | value: '暂无管理的机房站点', |
| | | label: '暂无管理的机房站点' |
| | | }); |
| | | |
| | | } |
| | | // vm.getallxdcz(); |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | changedjfzd(){ |
| | | // this.getallxdcz(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | startSearch: function() { |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | | //console.warn('haha87686'); |
| | | var vm=this; |
| | | var searchcond={ |
| | | binf:{ |
| | | StationName: vm.dealjfzd?vm.dealjfzd:'', |
| | | StationName1: vm.dealwhq?vm.dealwhq:'', |
| | | BattProductDate: vm.STtime?vm.STtime:'2000-01-01'+" 00:00:00", |
| | | BattProductDate1: vm.EDtime?vm.EDtime:new Date()+" 23:59:59" |
| | | }, |
| | | page: {pageSize: vm.pageSize, pageCurr: vm.pageCurr} |
| | | |
| | | }; |
| | | |
| | | // console.log(searchcond); |
| | | vm.loading=true; |
| | | ajax({ |
| | | type:"post", |
| | | url:"Batt_devalarm_data_historyAction!serchByCondition", |
| | | async: true, |
| | | dataType: 'text', |
| | | data: "json="+JSON.stringify(searchcond), |
| | | success:function(data){ |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length;i++){ |
| | | if(i == (data2.length-1)){ |
| | | vm.pageAll = data2[i].usr_id; |
| | | } |
| | | if(data2[i]){ |
| | | var ws=0,alm_confirmed_time='...'; |
| | | if(data2[i].alm_is_confirmed == 1){ |
| | | ws=1; |
| | | alm_confirmed_time=data2[i].alm_confirmed_time; |
| | | } |
| | | |
| | | var oneobj={ |
| | | number:(vm.pageCurr-1)*vm.pageSize+(i+1), //编号 |
| | | // number: i+1, |
| | | comname:data2[i].dev_id, //设备id |
| | | battname:data2[i].dev_name, //设备名称 |
| | | warnname:data2[i].dev_ip, //设备ip |
| | | singname:data2[i].stationName, //所在机房 |
| | | warnval: vm.getAlarmTypeByAlmType(data2[i].alm_type), //故障事件 |
| | | warnlev: vm.getAlarmLevel(data2[i].alm_level), |
| | | warnsure:ws, //告警确认 |
| | | warnsuretime:alm_confirmed_time, //告警确认时间 |
| | | warnstarttime:data2[i].alm_start_time, //告警开始时间 |
| | | warnstoptime:data2[i].alm_end_time //告警结束时间 |
| | | } |
| | | |
| | | oneobj.label=data2[i].num.toString(); |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | if(vm.allnum.length>0){if(vm.isInArray(vm.allnum ,oneobj.number)){oneobj._checked=true; }} |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }else{ |
| | | |
| | | // if(data.data.length == 1){ |
| | | // vm.pageAll = data.data[0].page.pageAll; |
| | | // } |
| | | |
| | | } |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | //clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | vm.loading=false; |
| | | |
| | | }, |
| | | error:function(){ |
| | | // clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | creatTable(){ |
| | | var vm=this; |
| | | |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | |
| | | exportXls(params){ |
| | | if(params.filename){ |
| | | if(params.filename.indexOf('.xls')===-1){ |
| | | params.filename += '.xls'; |
| | | } |
| | | } else{ |
| | | params.filename = 'table.xls'; |
| | | } |
| | | let columns = []; |
| | | let datas = []; |
| | | if(params.columns && params.data){ |
| | | columns = params.columns; |
| | | datas = params.data; |
| | | }else{ |
| | | columns = this.allColumns; |
| | | if(!('original' in params)) params.original = true; |
| | | datas = params.original ? this.data : this.rebuildData; |
| | | } |
| | | let noHeader = false; |
| | | if('noHeader' in params) noHeader = params.noHeader; |
| | | const data = Csv(columns, datas, params, noHeader); |
| | | if(params.callback) params.callback(data); |
| | | else ExportCsv.download(params.filename, data); |
| | | }, |
| | | sureExp(){ |
| | | var vm=this; |
| | | vm.exportXls({ |
| | | filename: "设备告警历史数据", |
| | | columns: vm.tableColumns1, |
| | | data: vm.tableData1.map(function(k){ |
| | | if(k.comname){k.comname="\t"+k.comname;} |
| | | if(k.warnsure){k.warnsure='是';}else{k.warnsure='否';} |
| | | if(k.warnstarttime){ k.warnstarttime='="'+k.warnstarttime+'"'} |
| | | if(k.warnsuretime.length>3){k.warnsuretime='="'+k.warnsuretime+'"'} |
| | | if(k.warnstoptime.length>3){k.warnstoptime='="'+k.warnstoptime+'"'} |
| | | return k; |
| | | |
| | | }) |
| | | }); |
| | | vm.mockTableData1(); |
| | | }, |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p><p>也可以点击左下角进行多行选择</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(msg, fun, arr, url){ |
| | | var vm=this; |
| | | var tit=''; |
| | | if(!vm.num){ |
| | | tit='已选项要'+msg+'吗?'; |
| | | } |
| | | else{tit='编号为'+vm.num+'要'+msg+'吗?'} |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | if(fun){fun(arr, url)} |
| | | }, |
| | | onCancel: () => { |
| | | vm.operatedata=[]; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | tabCheckbox(){ |
| | | var vm=this; |
| | | vm.operatedata=[]; |
| | | vm.selecttext=!vm.selecttext; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | vm.$refs.table.selectAll(false); |
| | | vm.tableColumns1.splice(0,1); |
| | | vm.selectone=true; |
| | | vm.allnum=[]; |
| | | } |
| | | else{vm.tableColumns1.unshift({ |
| | | type: 'selection', |
| | | width: 60, |
| | | align: 'center' |
| | | }); |
| | | vm.selectone=false; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }, |
| | | selectonedata(val){ |
| | | // console.warn(val,'单选111'); |
| | | var vm=this; |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | delrecord(){ |
| | | var vm=this; |
| | | if(vm.operatedata==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | num:k.label, |
| | | stationname:k.singname, |
| | | note:k.warnval |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Batt_devalarm_data_historyAction!deletePro"; |
| | | vm.alertSure('删除记录',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | selectmoredata(val){ |
| | | var vm=this; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | // console.warn(val,'多选222'); |
| | | vm.operatedata=val; |
| | | vm.allnum=vm.operatedata.map(function(k){return k.number}); |
| | | } |
| | | }, |
| | | isInArray(arr,value){ |
| | | for(var i = 0; i < arr.length; i++){ |
| | | if(value === arr[i]){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | ajaxdata(arr, url){ |
| | | var vm=this; |
| | | var js=JSON.stringify(arr).toString(); |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
| | | }, |
| | | |
| | | destroyed: function() { |
| | | clearTimeout($.ti); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .view-layout { |
| | | height: 100%; |
| | | } |
| | | .view-layout-left { |
| | | float: left; |
| | | width: 360px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .view-layout-right { |
| | | margin-left: 370px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="view-root"> |
| | | <div class="view-root-inner"> |
| | | <div class="view-layout"> |
| | | <Row> |
| | | <Col span="8"> |
| | | 维护区 |
| | | </Col> |
| | | <Col span="8"> |
| | | 机房站点 |
| | | </Col> |
| | | <Col span="8"> |
| | | 告警类型 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="8"> |
| | | <Select v-model="whq" :value='4451' @on-change="changedwhq" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="jfzd" @on-change="changedjfzd" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in station_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | <Col span="8"> |
| | | <Select v-model="xdcz" @on-change="changedjfzd" style="width:200px" placement="bottom" > |
| | | <Option v-for="item in warn_style" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | </Row> |
| | | |
| | | |
| | | <Divider style="background-color: #2d8cf0"/> |
| | | |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" @on-selection-change="selectmoredata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | <div style="float: right; margin-right:20px"><Button :size="buttonSize" @click="sureExp" icon="ios-download-outline" type="primary">导出</Button></div> |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="surewarn" icon="md-thumbs-up" type="success">确认告警</Button> |
| | | <Button :size="buttonSize" @click="cancelwarn" icon="md-close" type="info">取消告警</Button> |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | |
| | | import {ajax, formatSeconds, sethoubeiTime, |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery' |
| | | import Csv from './js/csv.js'; |
| | | import ExportCsv from './js/export-csv.js'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | loading: true, |
| | | station_name1:[], |
| | | station_name:[], |
| | | warn_style:[ |
| | | {label:'全部',value:0},{label:'通信故障',value:119020},{label:'继电器告警',value:618501},{label:'通讯告警',value:618502}, |
| | | {label:'设备过温告警',value:618503}, {label:'二极管D1告警',value:618504}, {label:'续航不足告警',value:119023}, |
| | | {label:'基站停电告警',value:119024}, {label:'基站发电告警',value:119025},{label:'基站掉站告警',value:119026}, |
| | | {label:'基站开门告警',value:119027} |
| | | ], |
| | | whq: '', |
| | | jfzd: '', |
| | | xdcz: '0', |
| | | warncond: ['119002', '119003', '119004', '119005', '119007', '119006'], |
| | | warnthr:['1','0'], |
| | | warngra:['1','2','3','4'], |
| | | pageCurr: '1', |
| | | pageSize: '10', |
| | | pageAll: 1, |
| | | tableHeight: 450, |
| | | tableData1: [], |
| | | tableColumns1: [ |
| | | { |
| | | title: '编号', |
| | | key: 'number' |
| | | }, |
| | | { |
| | | title: '设备ID', |
| | | key: 'comname', |
| | | render: (h, params) => { |
| | | //console.log(params); |
| | | return h('div', params.row.comname); |
| | | } |
| | | }, |
| | | { |
| | | title: '设备名称', |
| | | key: 'battname' |
| | | |
| | | }, |
| | | { |
| | | title: '设备IP', |
| | | key: 'warnname' |
| | | |
| | | }, |
| | | { |
| | | title: '所在机房名称', |
| | | key: 'singname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警事件', |
| | | key: 'warnval' |
| | | |
| | | }, |
| | | { |
| | | title: '告警等级', |
| | | key: 'warnlev' |
| | | |
| | | }, |
| | | { |
| | | title: '告警确认', |
| | | key: 'warnsure', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnsure === 0 ? 'error' : 'success'; |
| | | const text = row.warnsure === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | }, |
| | | { |
| | | title: '告警确认时间', |
| | | key: 'warnsuretime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警开始时间', |
| | | key: 'warnstarttime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警结束时间', |
| | | key: 'warnstoptime' |
| | | |
| | | } |
| | | |
| | | ] |
| | | |
| | | |
| | | } |
| | | |
| | | }, |
| | | computed:{ |
| | | fault_type_id(){ |
| | | if(this.warncond.indexOf("119002")>-1){return '119002'} |
| | | else{return '0';} |
| | | }, |
| | | fault_level(){ |
| | | if(this.warncond.indexOf("119003")>-1){return '119003'} |
| | | else{return '0';} |
| | | }, |
| | | record_uid(){ |
| | | if(this.warncond.indexOf("119004")>-1){return '119004'} |
| | | else{return '0';} |
| | | }, |
| | | maint_type_id(){ |
| | | if(this.warncond.indexOf("119005")>-1){return '119005'} |
| | | else{return '0';} |
| | | }, |
| | | maint_close(){ |
| | | if(this.warncond.indexOf("119007")>-1){return '119007'} |
| | | else{return '0';} |
| | | }, |
| | | maint_done(){ |
| | | if(this.warncond.indexOf("119006")>-1){return '119006'} |
| | | else{return '0';} |
| | | }, |
| | | alm_id(){ |
| | | if(this.warnthr.indexOf("1")>-1){return '1'} |
| | | else{return '100';} |
| | | }, |
| | | alm_signal_id(){ |
| | | if(this.warnthr.indexOf("0")>-1){return '0'} |
| | | else{return '100';} |
| | | }, |
| | | |
| | | numone(){ |
| | | if(this.warngra.indexOf("1")>-1){return '1'} |
| | | else{return '0';} |
| | | }, |
| | | BattGroupId(){ |
| | | if(this.warngra.indexOf("2")>-1){return '2'} |
| | | else{return '0';} |
| | | }, |
| | | master_audit(){ |
| | | if(this.warngra.indexOf("3")>-1){return '3'} |
| | | else{return '0';} |
| | | }, |
| | | appoint_uid(){ |
| | | if(this.warngra.indexOf("4")>-1){return '4'} |
| | | else{return '0';} |
| | | }, |
| | | dealwhq(){ |
| | | if(!isNaN(this.whq)){return '';} |
| | | else{return this.whq;} |
| | | }, |
| | | dealjfzd(){ |
| | | if(!isNaN(this.jfzd)){return '';} |
| | | else{return this.jfzd;} |
| | | }, |
| | | dealxdcz(){ |
| | | if(isNaN(this.xdcz)){ |
| | | return '0'; |
| | | } |
| | | else{ |
| | | return this.xdcz; |
| | | } |
| | | } |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | |
| | | getpageCurr(a){ |
| | | |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | |
| | | |
| | | //获取设备的告警类型 |
| | | getAlarmTypeByAlmType(alm_type){ |
| | | if(alm_type>0){ |
| | | switch(alm_type){ |
| | | case 618501:return "继电器K1告警"; |
| | | case 618502:return "通讯告警"; |
| | | case 618503:return "设备过温告警"; |
| | | case 618504:return "二极管D1告警"; |
| | | case 119023:return "续航不足告警"; |
| | | case 119024:return "基站停电告警"; |
| | | case 119025:return "基站发电告警"; |
| | | case 119026:return "基站掉站告警"; |
| | | case 119027:return "基站开门告警"; |
| | | case 119028:return "设备高温告警"; |
| | | case 119032:return "设备SD卡故障"; |
| | | case 119033:return "采集线告警"; |
| | | } |
| | | } |
| | | return "通信故障"; |
| | | }, |
| | | //获取告警等级 |
| | | getAlarmLevel(alm_level){ |
| | | if(alm_level>0){ |
| | | switch(alm_level){ |
| | | case 1:return "一级告警"; |
| | | case 2:return "二级告警"; |
| | | case 3:return "三级告警"; |
| | | case 4:return "四级告警"; |
| | | } |
| | | } |
| | | return ""; |
| | | }, |
| | | |
| | | getallwhq(){ |
| | | var vm=this; |
| | | //页面加载时查询维护区中的枢纽类型 |
| | | ajax({ |
| | | |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationName1InGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(null), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1 && data.data.length>0){ |
| | | this.station_name1=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=data.data.length; |
| | | vm.sn1placeholder=obj.label; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name1.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name1=[]; |
| | | vm.station_name1.push({ |
| | | value: '暂无管理的维护区', |
| | | label: '暂无管理的维护区' |
| | | }); |
| | | |
| | | } |
| | | vm.getalljfzd(); |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | }, |
| | | changedwhq(){ |
| | | this.getalljfzd(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | getalljfzd(){ |
| | | var vm=this; |
| | | var checkedwhq=vm.dealwhq; |
| | | ajax({ |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationNameInGroup", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({UNote:checkedwhq}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | // console.log(data); |
| | | if(data.code==1 && data.data.length>0){ |
| | | vm.station_name=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | vm.snplaceholder=obj.label; |
| | | obj.value=data.data.length; |
| | | }else{ |
| | | obj.label=data.data[i-1]; |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name.push(obj); |
| | | } |
| | | }else{ |
| | | vm.station_name=[]; |
| | | vm.station_name.push({ |
| | | value: '暂无管理的机房站点', |
| | | label: '暂无管理的机房站点' |
| | | }); |
| | | |
| | | } |
| | | // vm.getallxdcz(); |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | changedjfzd(){ |
| | | // this.getallxdcz(); |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | startSearch: function() { |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | | //console.warn('haha87686'); |
| | | var vm=this; |
| | | var searchcond={ |
| | | stationName1: vm.dealwhq?vm.dealwhq:'', |
| | | stationName: vm.dealjfzd?vm.dealjfzd:'', |
| | | alm_type: vm.dealxdcz?vm.dealxdcz:0, |
| | | page: {pageSize: vm.pageSize, pageCurr: vm.pageCurr} |
| | | |
| | | }; |
| | | |
| | | |
| | | vm.loading=true; |
| | | ajax({ |
| | | type:"post", |
| | | url:"Batt_devalarm_dataAction!serchByInfo", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(searchcond), |
| | | success:function(data){ |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length;i++){ |
| | | if(i == (data2.length-1)){ |
| | | vm.pageAll = data2[i].usr_id; |
| | | |
| | | } |
| | | if(data2[i]){ |
| | | var ws=0,alm_confirmed_time='...'; |
| | | if(data2[i].alm_is_confirmed == 1){ |
| | | ws=1; |
| | | alm_confirmed_time=data2[i].alm_confirmed_time; |
| | | } |
| | | |
| | | var oneobj={ |
| | | number:(vm.pageCurr-1)*vm.pageSize+(i+1), //编号 |
| | | // number: i+1, |
| | | comname:data2[i].dev_id, //设备id |
| | | battname:data2[i].dev_name, //设备名称 |
| | | warnname:data2[i].dev_ip, //设备ip |
| | | singname:data2[i].stationName, //所在机房 |
| | | warnval: vm.getAlarmTypeByAlmType(data2[i].alm_type), //故障事件 |
| | | warnlev: vm.getAlarmLevel(data2[i].alm_level), |
| | | warnsure:ws, //告警确认 |
| | | warnsuretime:alm_confirmed_time, //告警确认时间 |
| | | warnstarttime:data2[i].alm_start_time, //告警开始时间 |
| | | warnstoptime:'...' //告警结束时间 |
| | | } |
| | | oneobj.num=data2[i].num.toString(); |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | if(vm.allnum.length>0){if(vm.isInArray(vm.allnum ,oneobj.number)){oneobj._checked=true; }} |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }else{ |
| | | |
| | | // if(data.data.length == 1){ |
| | | // vm.pageAll = data.data[0].page.pageAll; |
| | | // } |
| | | |
| | | } |
| | | |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | //clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | vm.loading=false; |
| | | |
| | | }, |
| | | error:function(){ |
| | | // clearTimeout($.ti); |
| | | // $.ti=setTimeout(vm.creatTable,8000); |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | creatTable(){ |
| | | var vm=this; |
| | | |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | exportXls(params){ |
| | | if(params.filename){ |
| | | if(params.filename.indexOf('.xls')===-1){ |
| | | params.filename += '.xls'; |
| | | } |
| | | } else{ |
| | | params.filename = 'table.xls'; |
| | | } |
| | | let columns = []; |
| | | let datas = []; |
| | | if(params.columns && params.data){ |
| | | columns = params.columns; |
| | | datas = params.data; |
| | | }else{ |
| | | columns = this.allColumns; |
| | | if(!('original' in params)) params.original = true; |
| | | datas = params.original ? this.data : this.rebuildData; |
| | | } |
| | | let noHeader = false; |
| | | if('noHeader' in params) noHeader = params.noHeader; |
| | | const data = Csv(columns, datas, params, noHeader); |
| | | if(params.callback) params.callback(data); |
| | | else ExportCsv.download(params.filename, data); |
| | | }, |
| | | sureExp(){ |
| | | var vm=this; |
| | | vm.exportXls({ |
| | | filename: "设备告警实时数据", |
| | | columns: vm.tableColumns1, |
| | | data: vm.tableData1.map(function(k){ |
| | | if(k.comname){k.comname="\t"+k.comname;} |
| | | if(k.warnsure){k.warnsure='是';}else{k.warnsure='否';} |
| | | if(k.warnstarttime){ k.warnstarttime='="'+k.warnstarttime+'"'} |
| | | if(k.warnsuretime.length>3){k.warnsuretime='="'+k.warnsuretime+'"'} |
| | | if(k.warnstoptime.length>3){k.warnstoptime='="'+k.warnstoptime+'"'} |
| | | return k; |
| | | |
| | | }) |
| | | }); |
| | | vm.mockTableData1(); |
| | | }, |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p><p>也可以点击左下角进行多行选择</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(msg, fun, arr, url){ |
| | | var vm=this; |
| | | var tit=''; |
| | | if(!vm.num){ |
| | | tit='已选项要'+msg+'吗?'; |
| | | } |
| | | else{tit='编号为'+vm.num+'要'+msg+'吗?'} |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | if(fun){fun(arr, url)} |
| | | }, |
| | | onCancel: () => { |
| | | vm.operatedata=[]; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | tabCheckbox(){ |
| | | var vm=this; |
| | | vm.operatedata=[]; |
| | | vm.selecttext=!vm.selecttext; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | vm.$refs.table.selectAll(false); |
| | | vm.tableColumns1.splice(0,1); |
| | | vm.selectone=true; |
| | | vm.allnum=[]; |
| | | } |
| | | else{vm.tableColumns1.unshift({ |
| | | type: 'selection', |
| | | width: 60, |
| | | align: 'center' |
| | | }); |
| | | vm.selectone=false; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }, |
| | | selectonedata(val){ |
| | | // console.warn(val,'单选111'); |
| | | var vm=this; |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | surewarn(){ |
| | | var vm=this; |
| | | if(vm.operatedata.length==0){vm.confirm();} |
| | | else{ |
| | | |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | num:k.num, |
| | | stationName:k.singname, |
| | | alm_is_confirmed:1, |
| | | alm_confirmed_time:new Date().format('yyyy-MM-dd hh:mm:ss'), |
| | | note:k.warnval |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Batt_devalarm_dataAction!updatePro"; |
| | | vm.alertSure('确认告警',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | cancelwarn(){ |
| | | var vm=this; |
| | | if(vm.operatedata.length==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | num:k.num, |
| | | stationName:k.singname, |
| | | note:k.warnval, |
| | | alm_cleared_type:2, |
| | | alm_end_time:new Date().format('yyyy-MM-dd hh:mm:ss'), |
| | | record_id:0 |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Batt_devalarm_dataAction!cancelPro"; |
| | | |
| | | vm.alertSure('取消告警',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | delrecord(){ |
| | | var vm=this; |
| | | if(vm.operatedata==0){vm.confirm();} |
| | | else{ |
| | | var narr=vm.operatedata.map(function(k){ |
| | | var obj={ |
| | | num:k.num, |
| | | stationName:k.singname, |
| | | note:k.warnval |
| | | }; |
| | | return obj; |
| | | |
| | | }); |
| | | var url="Batt_devalarm_dataAction!deletePro"; |
| | | vm.alertSure('删除记录',vm.ajaxdata, narr, url); |
| | | } |
| | | }, |
| | | selectmoredata(val){ |
| | | var vm=this; |
| | | if(vm.tableColumns1[0].type=='selection'){ |
| | | if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | // console.warn(val,'多选222'); |
| | | vm.operatedata=val; |
| | | vm.allnum=vm.operatedata.map(function(k){return k.number}); |
| | | } |
| | | }, |
| | | isInArray(arr,value){ |
| | | for(var i = 0; i < arr.length; i++){ |
| | | if(value === arr[i]){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | |
| | | ajaxdata(arr, url){ |
| | | var vm=this; |
| | | var js=JSON.stringify(arr).toString(); |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
| | | }, |
| | | |
| | | destroyed: function() { |
| | | clearTimeout($.ti); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .view-layout { |
| | | height: 100%; |
| | | } |
| | | .view-layout-left { |
| | | float: left; |
| | | width: 360px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .view-layout-right { |
| | | margin-left: 370px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="view-root"> |
| | | <div class="view-root-inner"> |
| | | <div class="view-layout"> |
| | | <Row> |
| | | <Col span="12"> |
| | | 维护区 |
| | | </Col> |
| | | <Col span="12"> |
| | | 机房站点 |
| | | </Col> |
| | | |
| | | </Row> |
| | | <Row> |
| | | <Col span="12"> |
| | | <Select v-model="whq" @on-change="changedwhq" placement="bottom" > |
| | | <Option v-for="item in station_name1" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | </Col> |
| | | <Col span="12"> |
| | | <Select v-model="jfzd" @on-change="changedjfzd" placement="bottom" > |
| | | <Option v-for="item in station_name" :value="item.value" :key="item.value">{{ item.label }}</Option> |
| | | </Select> |
| | | |
| | | </Col> |
| | | |
| | | </Row> |
| | | <Divider style="background-color: transparent;" /> |
| | | |
| | | <Table :highlight-row="selectone" :data="tableData1" :disabled-hover="true" border :columns="tableColumns1" ref="table" @on-current-change="selectonedata" :height="tableHeight" no-data-text="暂无数据"></Table> |
| | | <div style="margin: 10px;overflow: hidden"> |
| | | <!-- <div style="float: left;"> <Button :size="buttonSize" @click="tabCheckbox" icon="md-checkmark-circle" type="warning">{{selecttext?'取消':'多选'}}</Button></div> --> |
| | | <div style="float: right;"> |
| | | <Page :total="pageAll" size="small" show-elevator show-sizer :current="1" @on-change="getpageCurr" @on-page-size-change="getpageSize"/> |
| | | </div> |
| | | |
| | | <div style="float: right; margin-right:20px"> |
| | | <ButtonGroup > |
| | | <Button :size="buttonSize" @click="surewarn" icon="md-create" type="success">修改</Button> |
| | | <!-- <Button :size="buttonSize" @click="cancelwarn" icon="md-close" type="info">取消告警</Button> |
| | | <Button :size="buttonSize" @click="delrecord" icon="ios-warning-outline" type="error">删除记录</Button> --> |
| | | </ButtonGroup> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | |
| | | <Modal |
| | | v-model="showmodal" |
| | | title="告警参数修改" |
| | | @on-ok="endalert" |
| | | @on-cancel="cancel" draggable> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警ID |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警名称 |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].battname" disabled placeholder="Enter something..德萨." /> |
| | | </Col> |
| | | <Col span="10" > |
| | | <Input v-model="operatedata[0].comname" disabled placeholder="Enter some" /> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警上限系数值(0.0~30.0) |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警上限等级(1~4) |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].warnname" @on-change="dealdata" placeholder="Enteruuuuu" /> |
| | | </Col> |
| | | <Col span="10" style="padding:1% 0"> |
| | | <RadioGroup v-model="operatedata[0].singname"> |
| | | <Radio label="1"></Radio> |
| | | <Radio label="2"></Radio> |
| | | <Radio label="3"></Radio> |
| | | <Radio label="4"></Radio> |
| | | </RadioGroup> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | 告警下限系数值(0.0~30.0) |
| | | </Col> |
| | | <Col span="10"> |
| | | 告警下限等级(1~4) |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;"> |
| | | <Input v-model="operatedata[0].warnsuretime" @on-change="dealdata2" placeholder="Enteruuuuu" /> |
| | | </Col> |
| | | <Col span="10" style="padding:1% 0"> |
| | | <RadioGroup v-model="operatedata[0].warnstarttime" > |
| | | <Radio label="1"></Radio> |
| | | <Radio label="2"></Radio> |
| | | <Radio label="3"></Radio> |
| | | <Radio label="4"></Radio> |
| | | </RadioGroup> |
| | | </Col> |
| | | </Row> |
| | | <Row> |
| | | <Col span="10" style="marginRight:10%;marginTop:3%;"> |
| | | <Checkbox v-model="upx" @on-change="changeupx">告警上限使能</Checkbox> |
| | | </Col> |
| | | <Col span="10" style="marginTop:3%;"> |
| | | <Checkbox v-model="downx" @on-change="changedownx">告警下限使能</Checkbox> |
| | | </Col> |
| | | </Row> |
| | | </Modal> |
| | | |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </template> |
| | | <script> |
| | | |
| | | import {ajax, formatSeconds, sethoubeiTime, |
| | | Timeout, getMaxFromArr, getMinFromArr, |
| | | Title, getSumFromArr, getAvgFromArr} from "../../libs/common" |
| | | import {getBattstate, BTSCircle} from '../../assets/js/battInfo' |
| | | import $ from 'jquery'; |
| | | import { setTimeout } from 'timers'; |
| | | export default { |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | warnparamstate:[ |
| | | {key:'Batt_Alarm_Type_OnlineVol',alm_id:119001,name:'在线电压告警'}, |
| | | {key:'Batt_Alarm_Type_GroupVol',alm_id:119002,name:'组端电压告警'}, |
| | | {key:'Batt_Alarm_Type_BattChargeCurr',alm_id:119003,name:'充电电流告警'}, |
| | | {key:'Batt_Alarm_Type_BattDisChargeCurr',alm_id:119004,name:'放电电流告警'}, |
| | | {key:'Batt_Alarm_Type_MonVol',alm_id:119005,name:'单体电压告警'}, |
| | | {key:'Batt_Alarm_Type_MonTmp',alm_id:119006,name:'单体温度告警'}, |
| | | {key:'Batt_Alarm_Type_MonRes',alm_id:119007,name:'单体内阻告警'}, |
| | | {key:'Batt_Alarm_Type_ConnRes',alm_id:119008,name:'单体连接条告警'}, |
| | | {key:'Batt_Alarm_Type_DisChargeMonVol',alm_id:119009,name:'放电单体电压告警'}, |
| | | {key:'Batt_Alarm_Type_CapAlarm',alm_id:119010,name:'容量告警告警'}, |
| | | {key:'Batt_Alarm_Type_CapChange',alm_id:119011,name:'容量更换告警'}, |
| | | ], |
| | | |
| | | showmodal:false, |
| | | selecttext:false, |
| | | selectone: true, |
| | | operatedata: [{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}], |
| | | buttonSize: 'small', |
| | | timer: new Timeout(), // 实时告警计时器 |
| | | station_name1:[], |
| | | station_name:[], |
| | | battgroup_name:[], |
| | | whq: 91000001, |
| | | jfzd: 0, |
| | | xdcz: '0', |
| | | warncond: ['119002', '119003', '119004', '119005', '119007', '119006'], |
| | | warnthr:['1','0'], |
| | | warngra:['1','2','3','4'], |
| | | pageCurr: '1', |
| | | pageSize: '10', |
| | | pageAll: 1, |
| | | tableHeight: 450, |
| | | tableData1: [], |
| | | tableColumns1: [ |
| | | { |
| | | title: '设备', |
| | | key: 'number' |
| | | }, |
| | | { |
| | | title: '告警名称', |
| | | key: 'comname', |
| | | render: (h, params) => { |
| | | //console.log(params); |
| | | return h('div', params.row.comname); |
| | | } |
| | | }, |
| | | { |
| | | title: '告警ID', |
| | | key: 'battname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限系数值(0.0~30.0)', |
| | | key: 'warnname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限等级(1~4)', |
| | | key: 'singname' |
| | | |
| | | }, |
| | | { |
| | | title: '告警上限使能', |
| | | key: 'warnsure', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnsure === 0 ? 'error' : 'success'; |
| | | const text = row.warnsure === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限系数值(0.0~30.0)', |
| | | key: 'warnsuretime' |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限等级(1~4)', |
| | | key: 'warnstarttime', |
| | | |
| | | }, |
| | | { |
| | | title: '告警下限使能', |
| | | key: 'warnstoptime', |
| | | width: 150, |
| | | align: 'center', |
| | | render: (h, params) => { |
| | | const row = params.row; |
| | | const color = row.warnstoptime === 0 ? 'error' : 'success'; |
| | | const text = row.warnstoptime === 0 ? '未确认' : '已确认'; |
| | | |
| | | return h('Tag', { |
| | | props: { |
| | | type: 'dot', |
| | | color: color |
| | | } |
| | | }, text); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | ], |
| | | upx:false, |
| | | downx:false |
| | | |
| | | |
| | | } |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | dealdata(){ |
| | | var vm=this; |
| | | if(vm.operatedata[0].warnname>0){ |
| | | vm.operatedata[0].warnname=parseFloat(vm.operatedata[0].warnname); |
| | | if(vm.operatedata[0].warnname>30){vm.operatedata[0].warnname=30}; |
| | | } |
| | | else {vm.operatedata[0].warnname=0;} |
| | | }, |
| | | dealdata2(){ |
| | | var vm=this; |
| | | if(vm.operatedata[0].warnsuretime>0){ |
| | | vm.operatedata[0].warnsuretime=parseFloat(vm.operatedata[0].warnsuretime); |
| | | if(vm.operatedata[0].warnsuretime>30){vm.operatedata[0].warnsuretime=30}; |
| | | } |
| | | else {vm.operatedata[0].warnsuretime=0;} |
| | | }, |
| | | |
| | | getallwhq(){ |
| | | var vm=this; |
| | | //页面加载时查询维护区中的枢纽类型 |
| | | ajax({ |
| | | |
| | | type:"post", |
| | | url:"User_battgroup_baojigroup_battgroupAction!serchStationByStationName1", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({UNote:""}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1 && data.data.length>0){ |
| | | // console.warn(data); |
| | | var data2=data.data; |
| | | this.station_name1=[]; |
| | | for(var i=0;i<=data2.length-1;i++){ |
| | | var obj={}; |
| | | |
| | | obj.label=data2[i].StationName; |
| | | obj.value=data2[i].FBSDeviceId; |
| | | if(obj.label&&obj.value){vm.station_name1.push(obj);} |
| | | |
| | | } |
| | | |
| | | |
| | | }else{ |
| | | vm.station_name1=[]; |
| | | vm.station_name1.push({ |
| | | value: '暂无管理的维护区', |
| | | label: '暂无管理的维护区' |
| | | }); |
| | | |
| | | } |
| | | vm.getalljfzd(); |
| | | |
| | | } |
| | | |
| | | }); |
| | | |
| | | }, |
| | | |
| | | getalljfzd(){ |
| | | var vm=this; |
| | | var checkedwhq=vm.whq; |
| | | ajax({ |
| | | type:"post", |
| | | url:"Dev_paramAction!serchByInfo", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify({"dev_id":checkedwhq}), |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | // console.log(data); |
| | | if(data.code==1 && data.data.length>0){ |
| | | vm.station_name=[]; |
| | | for(var i=0;i<=data.data.length;i++){ |
| | | var obj={}; |
| | | if(i==0){ |
| | | obj.label='全部(共'+data.data.length+'种)'; |
| | | obj.value=0; |
| | | |
| | | }else{ |
| | | obj.label=vm.getParmName(data.data[i-1]); |
| | | obj.value=data.data[i-1]; |
| | | } |
| | | vm.station_name.push(obj); |
| | | } |
| | | vm.jfzd=0; |
| | | }else{ |
| | | vm.station_name=[]; |
| | | vm.station_name.push({ |
| | | value: '暂无管理的机房站点', |
| | | label: '暂无管理的机房站点' |
| | | }); |
| | | |
| | | } |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | |
| | | changeupx(){ |
| | | var b=this.upx?1:0; |
| | | for (var k in this.operatedata[0]){ |
| | | if(k=='warnsure'){this.operatedata[0].warnsure=b;} |
| | | } |
| | | |
| | | }, |
| | | changedownx(){ |
| | | var b=this.downx?1:0; |
| | | for (var k in this.operatedata[0]){ |
| | | if(k=='warnstoptime'){this.operatedata[0].warnstoptime=b;} |
| | | } |
| | | }, |
| | | getParmName(keywords){ |
| | | var name=""; |
| | | for(var i=0;i<this.warnparamstate.length;i++){ |
| | | if(this.warnparamstate[i].alm_id == keywords){ |
| | | name = this.warnparamstate[i].name; |
| | | break; |
| | | } |
| | | } |
| | | return name; |
| | | }, |
| | | getpageCurr(a){ |
| | | this.pageCurr=a; |
| | | this.creatTable(); |
| | | |
| | | }, |
| | | getpageSize(b){ |
| | | this.pageSize=b; |
| | | this.creatTable(); |
| | | }, |
| | | changedwhq(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.getalljfzd(); |
| | | this.creatTable(); |
| | | }, |
| | | changedjfzd(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | startSearch: function() { |
| | | var self = this; |
| | | this.timer.start(function() { |
| | | self.mockTableData1(); |
| | | // console.warn(self.operatedata ,555); |
| | | }, 8000); |
| | | }, |
| | | mockTableData1 () { |
| | | //console.warn('haha87686'); |
| | | var vm=this; |
| | | var searchcond={ |
| | | "dev_id":vm.whq, |
| | | "alm_id":vm.jfzd |
| | | } |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:"Dev_paramAction!serchByCondition", |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+JSON.stringify(searchcond), |
| | | success:function(data){ |
| | | var alldt = []; |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | |
| | | if(data.code==1 && data.data.length>0){ |
| | | var data2=data.data; |
| | | for(var i=0;i<=data2.length-1;i++){ |
| | | if(data2[i]){ |
| | | var oneobj={ |
| | | number:data2[i].note, //编号 |
| | | // number: i+1, |
| | | comname: vm.getParmName(data2[i].alm_id), //机房名称 |
| | | battname:data2[i].alm_id, //电池组名称 |
| | | warnname: data2[i].alm_high_coe, //告警名称 |
| | | singname:data2[i].alm_high_level.toString(), //单体编号 |
| | | warnsure:data2[i].alm_high_en, //告警确认 |
| | | |
| | | warnsuretime:data2[i].alm_low_coe, //告警确认时间 |
| | | warnstarttime:data2[i].alm_low_level.toString(), //告警开始时间 |
| | | |
| | | warnstoptime:data2[i].alm_low_en //告警结束时间 |
| | | } |
| | | oneobj.dev_id=data2[i].dev_id; |
| | | if(vm.num){if(oneobj.number==vm.num){oneobj._highlight=true;}} |
| | | alldt.push(oneobj); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | }else{ |
| | | |
| | | if(data.data.length == 1){ |
| | | vm.pageAll = data.data[0].page.pageAll; |
| | | } |
| | | |
| | | } |
| | | vm.tableData1 = alldt; |
| | | vm.timer.open(); |
| | | |
| | | |
| | | }, |
| | | error:function(){ |
| | | |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | creatTable(){ |
| | | var vm=this; |
| | | vm.tableData1 = vm.mockTableData1(); |
| | | }, |
| | | changed(){ |
| | | this.pageCurr=1; |
| | | this.pageSize=10; |
| | | this.pageAll=1; |
| | | this.creatTable(); |
| | | }, |
| | | |
| | | confirm () { |
| | | this.$Modal.info({ |
| | | title: '未选中表格数据项!', |
| | | content: '<p>请选择一行表格数据</p>' |
| | | |
| | | }); |
| | | }, |
| | | alertSure(){ |
| | | var vm=this; |
| | | vm.showmodal = true |
| | | }, |
| | | selectonedata(val){ |
| | | // console.warn(val,'单选111'); |
| | | var vm=this; |
| | | // if(vm.operatedata.length>0){vm.operatedata=[]}; |
| | | vm.$set(vm.operatedata,''+0, val); |
| | | if(vm.operatedata[0].warnsure==1){vm.upx=true;}else{vm.upx=false;} |
| | | if(vm.operatedata[0].warnstoptime==1){vm.downx=true;}else{vm.downx=false;} |
| | | // vm.operatedata.push(val); |
| | | vm.num=vm.operatedata[0].number; |
| | | |
| | | |
| | | }, |
| | | surewarn(){ |
| | | var vm=this; |
| | | if(!vm.operatedata[0].number){vm.confirm();} |
| | | else{ |
| | | vm.alertSure(); |
| | | } |
| | | }, |
| | | endalert(){ |
| | | var vm=this; |
| | | var tit=''; |
| | | |
| | | tit='确认修改'+vm.operatedata[0].comname+'参数吗?' |
| | | this.$Modal.confirm({ |
| | | title: tit, |
| | | content: '<p>敏感操作请谨慎处理!</p>', |
| | | onOk: () => { |
| | | vm.allnum=[]; |
| | | vm.num=0; |
| | | vm.ajaxdata(); |
| | | }, |
| | | onCancel: () => { |
| | | vm.showmodal = false; |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | ajaxdata(){ |
| | | var vm=this; |
| | | var narr={ |
| | | alm_name:vm.operatedata[0].comname, |
| | | alm_id:vm.operatedata[0].battname, |
| | | alm_high_coe:vm.operatedata[0].warnname, |
| | | alm_high_level:vm.operatedata[0].singname, |
| | | alm_low_coe:vm.operatedata[0].warnsuretime, |
| | | alm_low_level:vm.operatedata[0].warnstarttime, |
| | | alm_high_en:vm.operatedata[0].warnsure, |
| | | alm_low_en:vm.operatedata[0].warnstoptime, |
| | | note:vm.operatedata[0].number, |
| | | dev_id: vm.operatedata[0].dev_id |
| | | }; |
| | | |
| | | |
| | | |
| | | var url="Dev_paramAction!update"; |
| | | var js=JSON.stringify(narr).toString(); |
| | | vm.num=0; |
| | | |
| | | ajax({ |
| | | type:"post", |
| | | url:url, |
| | | async: true, |
| | | dataType: 'json', |
| | | data: "json="+js, |
| | | success:function(data){ |
| | | data=data.result; |
| | | data=eval("("+data+")"); |
| | | if(data.code==1){ |
| | | vm.mockTableData1(); |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.$Message.success('操作成功'); |
| | | }else{ |
| | | vm.$Message.error('操作失败'); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | | }, |
| | | cancel () { |
| | | var vm=this; |
| | | vm.operatedata=[{number:null,comname:'',battname:'',warnname:'',singname:'',warnsure:'',warnsuretime:'',warnstarttime:'',warnstoptime:''}]; |
| | | vm.num=0; |
| | | vm.mockTableData1(); |
| | | }, |
| | | |
| | | |
| | | }, |
| | | mounted: function() { |
| | | var vm=this; |
| | | vm.num=0; |
| | | vm.allnum=[]; |
| | | vm.getallwhq(); |
| | | this.tableHeight = window.innerHeight - this.$refs.table.$el.offsetTop - 160; |
| | | this.startSearch(); |
| | | }, |
| | | |
| | | destroyed: function() { |
| | | clearTimeout($.ti); |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .view-layout { |
| | | height: 100%; |
| | | } |
| | | .view-layout-left { |
| | | float: left; |
| | | width: 360px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .view-layout-right { |
| | | margin-left: 370px; |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | </style> |
New file |
| | |
| | | /* |
| | | inspired by https://www.npmjs.com/package/react-csv-downloader |
| | | now removed from Github |
| | | */ |
| | | |
| | | const newLine = '\r\n'; |
| | | const appendLine = (content, row, { separator, quoted }) => { |
| | | const line = row.map(data => { |
| | | if (!quoted) return data; |
| | | // quote data |
| | | data = typeof data === 'string' ? data.replace(/"/g, '"') : data; |
| | | return `"${data}"`; |
| | | }); |
| | | content.push(line.join(separator)); |
| | | }; |
| | | |
| | | const defaults = { |
| | | separator: ',', |
| | | quoted: false |
| | | }; |
| | | |
| | | export default function csv(columns, datas, options, noHeader = false) { |
| | | options = Object.assign({}, defaults, options); |
| | | let columnOrder; |
| | | const content = []; |
| | | const column = []; |
| | | |
| | | if (columns) { |
| | | columnOrder = columns.map(v => { |
| | | if (typeof v === 'string') return v; |
| | | if (!noHeader) { |
| | | column.push(typeof v.title !== 'undefined' ? v.title : v.key); |
| | | } |
| | | return v.key; |
| | | }); |
| | | if (column.length > 0) appendLine(content, column, options); |
| | | } else { |
| | | columnOrder = []; |
| | | datas.forEach(v => { |
| | | if (!Array.isArray(v)) { |
| | | columnOrder = columnOrder.concat(Object.keys(v)); |
| | | } |
| | | }); |
| | | if (columnOrder.length > 0) { |
| | | columnOrder = columnOrder.filter((value, index, self) => self.indexOf(value) === index); |
| | | if (!noHeader) appendLine(content, columnOrder, options); |
| | | } |
| | | } |
| | | |
| | | if (Array.isArray(datas)) { |
| | | datas.forEach(row => { |
| | | if (!Array.isArray(row)) { |
| | | row = columnOrder.map(k => (typeof row[k] !== 'undefined' ? row[k] : '')); |
| | | } |
| | | appendLine(content, row, options); |
| | | }); |
| | | } |
| | | return content.join(newLine); |
| | | } |
New file |
| | |
| | | function has (browser) { |
| | | const ua = navigator.userAgent; |
| | | if (browser === 'ie') { |
| | | const isIE = ua.indexOf('compatible') > -1 && ua.indexOf('MSIE') > -1; |
| | | if (isIE) { |
| | | const reIE = new RegExp('MSIE (\\d+\\.\\d+);'); |
| | | reIE.test(ua); |
| | | return parseFloat(RegExp['$1']); |
| | | } else { |
| | | return false; |
| | | } |
| | | } else { |
| | | return ua.indexOf(browser) > -1; |
| | | } |
| | | } |
| | | |
| | | const csv = { |
| | | _isIE11 () { |
| | | let iev = 0; |
| | | const ieold = (/MSIE (\d+\.\d+);/.test(navigator.userAgent)); |
| | | const trident = !!navigator.userAgent.match(/Trident\/7.0/); |
| | | const rv = navigator.userAgent.indexOf('rv:11.0'); |
| | | |
| | | if (ieold) { |
| | | iev = Number(RegExp.$1); |
| | | } |
| | | if (navigator.appVersion.indexOf('MSIE 10') !== -1) { |
| | | iev = 10; |
| | | } |
| | | if (trident && rv !== -1) { |
| | | iev = 11; |
| | | } |
| | | |
| | | return iev === 11; |
| | | }, |
| | | |
| | | _isEdge () { |
| | | return /Edge/.test(navigator.userAgent); |
| | | }, |
| | | |
| | | _getDownloadUrl (text) { |
| | | const BOM = '\uFEFF'; |
| | | // Add BOM to text for open in excel correctly |
| | | if (window.Blob && window.URL && window.URL.createObjectURL) { |
| | | const csvData = new Blob([BOM + text], { type: 'text/xls' }); |
| | | return URL.createObjectURL(csvData); |
| | | } else { |
| | | return 'data:attachment/xls;charset=utf-8,' + BOM + encodeURIComponent(text); |
| | | } |
| | | }, |
| | | |
| | | download (filename, text) { |
| | | if (has('ie') && has('ie') < 10) { |
| | | // has module unable identify ie11 and Edge |
| | | const oWin = window.top.open('about:blank', '_blank'); |
| | | oWin.document.charset = 'utf-8'; |
| | | oWin.document.write(text); |
| | | oWin.document.close(); |
| | | oWin.document.execCommand('SaveAs', filename); |
| | | oWin.close(); |
| | | } else if (has('ie') === 10 || this._isIE11() || this._isEdge()) { |
| | | const BOM = '\uFEFF'; |
| | | const csvData = new Blob([BOM + text], { type: 'text/xls' }); |
| | | navigator.msSaveBlob(csvData, filename); |
| | | } else { |
| | | const link = document.createElement('a'); |
| | | link.download = filename; |
| | | link.href = this._getDownloadUrl(text); |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | document.body.removeChild(link); |
| | | } |
| | | } |
| | | }; |
| | | |
| | | export default csv; |