显示页面 修订记录 反向链接 页面重命名 您载入了该文档旧的修订版! 如果您保存了它,您就会用这些数据创建一份新的修订版。 <pre class="brush:js;toolbar:false">import { Component, } from '@angular/core'; import { IonicPage, ViewController, ModalController, AlertController, ItemSliding, NavParams } from 'ionic-angular'; //import { ZequiplocEdit } from './ZequiplocEdit/ZequiplocEdit'; //import { ZEquipAL } from './ZEquipAL/ZEquipAL'; import { AITopoServer } from '../../../providers/aitopo.server'; import { GlobalFunction } from '../../GlobalFunction/GlobalFunction'; //import { WindEditPage } from "../../Tfeng/equipment/windEdit"; import { gMapGlobal } from '../../map/mapClass/gMapGlobal'; import { SystemSel } from '../../../providers/system.serve'; import { EquipsServe } from '../../../providers/strata/EquipsServe'; import { ZwarnServe } from '../../../providers/strata/ZwarnServe'; import { WorkInfo } from '../../../providers/ZworkInfo.serve'; @IonicPage() @Component({ selector: 'gs_Zequiploc', templateUrl: 'Zequiploc.html', providers: [GlobalFunction], }) export class Zequiploc { //枚举值处理 stat = [['0', '未使用'], ['1', '使用中'], ['2', '已废弃']];//状态 cstatus showData = []; nrid = '';//列表的下文读取 mZsearchValue = '';//搜索内容 option = { f: '', gridid: '', nrid: '' }//搜索框设置 isBusy = false;//忙碌 mZnextMsg = '';//下一页的标识内容 sOpt = [false, true, true, true, true, true, true, true, true, true];//是否显示搜索框 sData: Array<any> = []; addModal: any;//其他组件的调用 areaID: string;//区域id workID: string;//工作面id name: string = '';//区域名称 rootData;//原始数据 father;//宿主指针 globalStyle; sys; mZwideLevel = 0; Ptype = '0'; reSizeFun; firstRun = true; settings = { columns: { id: { title: 'ID' }, name: { title: 'Full Name' }, username: { title: 'User Name' }, email: { title: 'Email' } } }; constructor( navP: NavParams, system: SystemSel, private serve: AITopoServer, private modalCtrl: ModalController, private alertCtrl: AlertController, //用于超级用户的弹出框 private vCtrl: ViewController, private gF: GlobalFunction, private gMapGlobal: gMapGlobal, private equSer: EquipsServe, private warn: ZwarnServe, workInfo: WorkInfo ) { let data = navP.get('data'); if (!data) return; this.Ptype = data.p || '0'; this.father = system.globalComp.map; this.father.mCdFormComp = this; this.areaID = workInfo.nowAreaID; this.workID = workInfo.nowWorkID; this.name = workInfo.getWorkName(); this.mZsearchValue = data.filters; this.sys = data.t || 1; //建立窗口调整功能 this.gF.setLayerLevel([800, 600, 400, 200]); this.reSizeFun = () => { this.mZwideLevel = this.gF.reLayer(); } window.addEventListener("resize", this.reSizeFun); this.reSizeFun(); this.mZwideLevel = this.gF.reLayer(); this.fnZreload(); } helpDiv = 'unshowDiv'; showDiv() { this.helpDiv = 'showDiv'; } cancelDiv() { this.helpDiv = 'unshowDiv'; } /** * 设置设备的过滤内容,对外接口 * @param str 过滤值 */ setFilters(str) { str = str || ''; this.sOpt[0] = true; this.mZsearchValue = str; this.getItems('1'); } firstFilter() { if (this.mZsearchValue != undefined) { this.sOpt[0] = true; for (var k in this.rootData) { if (this.rootData.hasOwnProperty(k)) { let r = false; //坐标 if (this.sOpt[1] && this.rootData[k][25] == '') r = true; else if (this.sOpt[2] && this.rootData[k][25] != '') r = true; if (r == false) continue; //状态 r = false; if (this.sOpt[3] && this.rootData[k][16] == '0') r = true; else if (this.sOpt[4] && this.rootData[k][16] == '1') r = true; else if (this.sOpt[5] && this.rootData[k][16] == '2') r = true; if (r == false) continue; else this.sData.push(this.rootData[k]); } } this.getItems(undefined); }; this.firstRun = false; } changePos() { if (this.serve.gZlockPosition) this.serve.gZlockPosition = false; else this.serve.gZlockPosition = true; this.serve.fZsaveGlobal(); } //读取下一页 doInfinite(infiniteScroll?) { //如果其他通信进行中 if (this.isBusy == true) { this.serve.msgShow(1, 'high', '信息', '其他操作进行中,请稍后再试'); if (infiniteScroll) infiniteScroll.complete(); return; } //如果已经没有内容,说明不需要再次进行读取 if (this.option.nrid == '') { this.mZnextMsg = ''; if (infiniteScroll) infiniteScroll.complete(); return; } this.isBusy = true; this.mZnextMsg = '读取中'; this.fZread().then(() => { this.isBusy = false; if (infiniteScroll) infiniteScroll.complete(); }).catch((err) => { this.isBusy = false; if (infiniteScroll) infiniteScroll.complete(); this.mZnextMsg = err.msg; this.errorProcess(err); }); } //读取 fZread() { return this.equSer.get(this.areaID, this.workID).then(data => { this.rootData = data; this.reLoadData(); return Promise.resolve(); }).catch(err => Promise.reject(err)); } //删除 delete(item: string, items?) { if (this.isBusy == true) return this.serve.msgShow(1, 'high', '错误', '其他操作正在进行中!'); let ids = []; if (items != undefined) ids = items; else ids.push(item); this.equSer.del(this.areaID, ids).then(() => { this.reLoadData(); this.isBusy = false; this.serve.msgShow(1, 'high', '信息', '删除成功!'); this.serve.synCdInforInServer(this.areaID, '396', 'syn');//强制同步 if (this.father.equLocAUD) return this.father.equLocAUD(this.workID, 3, item); return; }).catch(err => this.errorProcess(err)); } //错误处理 errorProcess(err) { console.log(err); this.isBusy = false; if (err.errCode == '1002') return this.serve.msgShow(3, 'low', '错误', '超时或者账户在其他地点登陆!'); this.serve.msgShow(3, 'high', '错误', err.msg); } //仅仅高亮点击行 forcueLine(item1) { if (this.globalStyle && this.delAllItem == false) this.globalStyle[-1] = ''; if (this.delAllItem == false) this.globalStyle = item1; item1[-1] = 'selected'; } //是否处于全部删除的状态 delAllItem = false; delAllName = '删除'; delAll() { if (this.globalStyle) { this.globalStyle[-1] = ''; this.globalStyle = undefined; } if (this.delAllItem == false) { this.delAllItem = true; this.delAllName = '确认'; } else { let ids = []; this.delAllItem = false; this.delAllName = '删除'; for (let i = 0; i < this.showData.length; i++) { const e = this.showData[i].data; if (e[-1] == 'selected') ids.push(e[0]) } if (ids.length > 0) this.delete('', ids); } } /**添加批量数据 */ addSome() { this.addModal = this.modalCtrl.create('ZEquipAL', { areaID: this.areaID, workID: this.workID, t: this.sys, father: this.father }, { cssClass: 'Zequloc' }); this.addModal.onDidDismiss(() => this.fnZreload()); this.addModal.present(); } //添加或者编辑 fZaddEdit(item1: any, mZisData: boolean, slidingItem?: ItemSliding, ) { if (slidingItem) slidingItem.close(); if (this.isBusy == true) return this.serve.msgShow(1, '', '信息', '其他处理正在进行中,请稍后'); if (this.globalStyle) this.globalStyle[-1] = ''; this.globalStyle = item1; this.globalStyle[-1] = 'selected'; if (this.Ptype == '1') { this.addModal = this.modalCtrl.create('WindEditPage', { data: { typeName: item1[3], rid: this.areaID, hid: item1[0], gid: this.workID, father: this.father } }, { cssClass: 'Zequloc' }); this.addModal.onDidDismiss(() => this.fnZreload()); this.addModal.present(); return; } this.addModal = this.modalCtrl.create('ZequiplocEdit', { father: this.father, data: item1, isData: mZisData, areaID: this.areaID, workID: this.workID, allData: this.showData }, { cssClass: 'Zequloc' }); this.addModal.onDidDismiss(res => { if (!res) return; if (res.del == true) return this.delete(item1[0]); else { this.fnZreload(); } }); this.addModal.present(); } //过滤选项 showSearch(n) { let cell = ['', '无坐标信息', '有坐标信息', '未使用', '使用中', '已废弃',] let alertT = this.alertCtrl.create({ cssClass: 'Zequloc' }); alertT.setTitle('过滤选项:'); alertT.setMessage('请选择需要显示的仪表:'); for (let i = n; i < n + 3; i++) { if (cell[i] == '') continue; alertT.addInput({ type: 'checkbox', label: cell[i], value: i.toString(), checked: this.sOpt[i], }); } alertT.addButton({ text: '确定', handler: data => { for (let i = n; i < n + 3; i++)this.sOpt[i] = false; for (let i = 0; i < data.length; i++)this.sOpt[parseInt(data[i])] = true; this.creatFilter(); } }); alertT.present(); } creatFilter() { this.sData.splice(0, this.sData.length); for (var k in this.rootData) { if (this.rootData.hasOwnProperty(k)) { let r = false; //坐标 if (this.sOpt[1] && this.rootData[k][25] == '') r = true; else if (this.sOpt[2] && this.rootData[k][25] != '') r = true; if (r == false) continue; //状态 r = false; if (this.sOpt[3] && this.rootData[k][16] == '0') r = true; else if (this.sOpt[4] && this.rootData[k][16] == '1') r = true; else if (this.sOpt[5] && this.rootData[k][16] == '2') r = true; if (r == false) continue; else this.sData.push(this.rootData[k]); } } if (this.sOpt[0]) this.getItems('1'); else this.getItems(''); } //重新读取内容 async fnZreload() { if (this.isBusy == true) return; else this.isBusy = true; try { await this.fZread(); //this.creatFilter(); if (this.firstRun) this.firstFilter(); } catch (error) { this.mZnextMsg = error.msg; this.errorProcess(error); } this.isBusy = false; } findNoGoem() { this.showData = []; for (let k in this.rootData) { let t; if (this.rootData[k][25].length == 0) { if (this.Ptype == '0') { if ((this.gMapGlobal.mFPropHash[this.rootData[k][2]].type & 2) != 0) {//测点配置属性 if (this.rootData[k][25] == '' || this.rootData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.rootData[k], locat: t }); } } else if (this.Ptype == '1') { if ((this.gMapGlobal.mFPropHash[this.rootData[k][2]].type & 1) != 0) {//设备 if (this.rootData[k][25] == '' || this.rootData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.rootData[k], locat: t }); } } } } } //过滤 getItems($event) { this.showData = []; let ser = this.mZsearchValue.split(' '); if (ser && ser.length != 0) { for (let i = 0; i < ser.length;) { const e = ser[i]; if (e == '') ser.splice(i, 1); else i++ } } for (let k = 0; k < this.sData.length; k++) { let needJump = false; for (let i = 1; i < this.sData[k].length; i++) { //如果空,或者抖索框为空,那么全部添加 if ($event == '' || this.mZsearchValue == undefined || this.mZsearchValue == '') { let t; if (this.Ptype == '0') { if ((this.gMapGlobal.mFPropHash[this.sData[k][2]].type & 2) != 0) {//测点配置属性 if (this.sData[k][25] == '' || this.sData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.sData[k], locat: t }); } } else if (this.Ptype == '1') { if ((this.gMapGlobal.mFPropHash[this.sData[k][2]].type & 1) != 0) {//基本属性 if (this.sData[k][25] == '' || this.sData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.sData[k], locat: t }); } } break; } //不为空的话,进行逐个添加 for (let j = 0; j < ser.length; j++) { const e = ser[j]; if (e[0] == 't' && e[1] == '=') continue; let t; // console.log('查找信息', this.sData[k][i]); if (this.sData[k][i].indexOf(e) < 0) continue; //if (this.sData[k][25] == '' || this.sData[k][25] == 'null') t = false; //else t = true; //this.currentItems.push({ data: this.sData[k], locat: t }); if (this.Ptype == '0') { if ((this.gMapGlobal.mFPropHash[this.sData[k][2]].type & 2) != 0) {//测点配置属性 if (this.sData[k][25] == '' || this.sData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.sData[k], locat: t }); } } else if (this.Ptype == '1') { if ((this.gMapGlobal.mFPropHash[this.sData[k][2]].type & 1) != 0) {//基本设备 if (this.sData[k][25] == '' || this.sData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.sData[k], locat: t }); } } needJump = true; break; } if (needJump == true) break; } } //通信地址过滤 let decs = []; for (let j = 0; j < ser.length; j++) { const e = ser[j]; if (e[0] == 't' && e[1] == '=') { decs.push(e.replace(/t\=/g, '')) } } if (decs && decs.length != 0) { for (let i = 0; i < decs.length; i++) decs[i] = decs[i].replace(/t\=/g, ''); //console.log('过滤', decs); for (let i = 0; i < this.showData.length;) { let needDel = true; const e = this.showData[i].data; //每个过滤关键字 for (let k = 0; k < decs.length; k++) { needDel = true; const f = decs[k]; //通信地址判断 if (e[5].indexOf(f) < 0) continue; else { needDel = false; break; } } if (needDel) this.showData.splice(i, 1); else i++; } } //this.equSer.equs this.sortData(); } sortData() { this.showData.sort((a, b) => { let [aNum, bNum] = [Number(a.data[16]), Number(b.data[16])]; if (aNum != 1 && bNum == 1) return 1; else if (aNum == 1 && bNum != 1) return -1; if (a.data[2] > b.data[2]) return 1; else if (a.data[2] < b.data[2]) return -1; if (this.getNumber(a.data[15]) > this.getNumber(b.data[15])) return 1; return -1 }); } getNumber(t: string) { let res: any = t.match(/[0-9]+/); if (res) res = res[0]; else return t; return Number(res); } reLoadData() { this.showData = [];//.splice(0, this.showData.length); let t; for (var k in this.rootData) { if (this.Ptype == '0') { if ((this.gMapGlobal.mFPropHash[this.rootData[k][2]].type & 2) != 0) {//测点配置属性 if (this.rootData[k][25] == '' || this.rootData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.rootData[k], locat: t }); } } else if (this.Ptype == '1') { if ((this.gMapGlobal.mFPropHash[this.rootData[k][2]].type & 1) != 0) {//基本属性 if (this.rootData[k][25] == '' || this.rootData[k][25] == 'null') t = false; else t = true; this.showData.push({ data: this.rootData[k], locat: t }); } } } this.sortData(); if (this.sOpt[0]) { this.creatFilter(); this.getItems('1'); } } cancel() { this.vCtrl.dismiss(); } locat(item) { if (this.father.equLocPosition) this.father.equLocPosition(item); } ngOnDestroy() { window.removeEventListener("resize", this.reSizeFun); if (this.globalStyle && this.delAllItem == false) this.globalStyle[-1] = ''; if (this.addModal != undefined) this.addModal.dismiss(); if (this.father) this.father.onCompDismiss(4); } //将工作面设备配置默认值 //theAreaTitle = "1301胶带"; intevalTime; addNum = 0; addCont = 1;//50 areaCont = 1; //1 深 2 浅 3 综 organizedData() { console.log("全部的值", this.showData); let arr = []; for (let i = 0; i < this.showData.length; i++) { arr[i] = this.showData[i]; } //冒泡排序 // for(let i=0;i<this.currentItems.length;i++){ // arr[i]=this.currentItems[i]; // } // for(var a=0;a<arr.length;a++){ // for(var b=0;b<arr.length;b++){ // var c; // var t = arr[a]["data"][18].split("‖"); // var k = arr[b]["data"][18].split("‖"); // if(t[2]<k[2]){ // c = arr[a]; // arr[a] = arr[b]; // arr[b] = c; // } // } // } this.editAlert("轮询区域名称", [{ name: "name", type: 'text', placeholder: "区域名" }, //{name:"start",type: 'text',placeholder:"距工作面起点"}, //{name:"end",type: 'text',placeholder:"距工作面终点"} ], arr); } isbusyAdd = false; tianjiafangfa(resText) { if (this.isbusyAdd) return; this.isbusyAdd = true; console.log("添加结果", resText); this.equSer.update(this.areaID, resText).then((data) => { console.log("添加结果", data); this.isbusyAdd = false; this.addNum++; this.addCont++; // // //this.serve.synCdInforInServer(this.areaID, '396', 'syn');//强制同步 // // //this.viewCtrl.dismiss({ w: this.workID, g: this.form.get('geom').value, i: this.form.get('cid').value }); }) } organizedAlarmPlan() { console.log("全部的值", this.showData); let arr = []; for (let i = 0; i < this.showData.length; i++) { arr[i] = this.showData[i]; } this.warn.get().then(v => { console.log("预案解果", v); let brr = []; for (let i = 0; i < v.length; i++) { brr.push({ name: "name", type: 'radio', label: v[i][1], value: v[i][0] }); } //brr.push({name:"type",type: 'radio',label:"深孔",value:"sk"}); //brr.push({name:"type",type: 'radio',label:"浅孔",value:"qk"}); this.editAlert("报警预案设置", brr, arr); }); } /** * 仪表修改弹框 */ editAlert(title, content, arr) { console.log(title, content); let alert = this.alertCtrl.create({ title: title, inputs: content, buttons: [ { text: '取消', }, { text: '确定', handler: data => { switch (title) { case "报警预案设置": this.addPlanInfo(arr, data); break; case "轮询区域名称": this.addAreaInfo(arr, data); break; case "按距离筛选": this.selectEquipment(arr, data); break; case "按深浅孔筛选": this.selectType(arr, data); break; } } } ] }); alert.present(); } /** * 添加预案信息 */ addPlanInfo(arr, data) { console.log("调整后的全部的值", arr); this.intevalTime = setInterval(() => { if (!arr[this.addNum]) { clearInterval(this.intevalTime); this.serve.synCdInforInServer(this.areaID, '396', 'syn');//强制同步 return; } let brr = arr[this.addNum]["data"]; brr[26] = "1$" + data; this.tianjiafangfa(brr) }, 500); } addAreaInfo(arr, data) { this.intevalTime = setInterval(() => { if (!arr[this.addNum]) { clearInterval(this.intevalTime); this.serve.synCdInforInServer(this.areaID, '396', 'syn');//强制同步 return; } let brr = arr[this.addNum]["data"]; brr[14] = data["name"]; this.tianjiafangfa(brr) }, 500); } /** * 设备的筛选 * 目前只有按照工作面距离筛选 */ selectEquip() { let arr = []; for (let i = 0; i < this.showData.length; i++) { arr[i] = this.showData[i]; } this.editAlert("按距离筛选", [{ name: "start", type: 'text', placeholder: "起始距离" }, { name: "end", type: 'text', placeholder: "结束距离" }], arr); } selectEquipment(arr, data) { console.log("选择条件", data); let b = []; for (let i = 0; i < arr.length; i++) { let a = arr[i]["data"][18].split("‖"); console.log(a[2], a[2] >= Number(data["start"]), a[2] < Number(data["end"]), a[2]); if (a[2] >= Number(data["start"]) && a[2] < Number(data["end"])) { b.push(arr[i]); } } if (!data["start"] || !data["end"]) { b = this.showData; } this.showData = b; this.editAlert("按深浅孔筛选", [{ name: "type", type: 'radio', label: "深孔", value: "sk" }, { name: "type", type: 'radio', label: "浅孔", value: "qk" }], b); } selectType(arr, data) { console.log(data); let s = []; let q = []; for (let i = 0; i < arr.length; i++) { let b = arr[i]["data"][18].split("‖"); if (b[0] <= 10) {//浅孔 q.push(arr[i]); } else { s.push(arr[i]); } } if (data == "sk") { this.showData = s; } if (data == "qk") { this.showData = q; } } }</pre><p><br/></p> 保存 预览 取消 编辑摘要 当您选择开始编辑本页,即寓示你同意将你贡献的内容按下列许可协议发布: CC Attribution-Share Alike 4.0 International