diff --git a/package.json b/package.json index f913dd4..f53bc1e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "", "private": true, "scripts": { - "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.151.43", + "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.0.247", "start": "npm run dev", "unit": "jest --config test/unit/jest.conf.js --coverage", "e2e": "node test/e2e/runner.js", @@ -27,7 +27,7 @@ "md5": "^2.3.0", "moment": "^2.29.3", "motion": "^10.16.4", - "mqtt": "^4.2.1", + "mqtt": "4.2.1", "nprogress": "^0.2.0", "relation-graph": "^1.1.0", "v-viewer": "^1.6.3", diff --git a/src/views/firefighting/fireUtilReport/components/fireRecord.vue b/src/views/firefighting/fireUtilReport/components/fireRecord.vue index 541eb93..9e35016 100644 --- a/src/views/firefighting/fireUtilReport/components/fireRecord.vue +++ b/src/views/firefighting/fireUtilReport/components/fireRecord.vue @@ -282,7 +282,7 @@ export default { }, goDetail(id, FIRE_RECORD_ID) { - this.setActiveName('RecordInfo') + this.setActiveName('RecordList') const info = this.getInfo() info.FIRE_CHECK_ID = id info.FIRE_RECORD_ID = FIRE_RECORD_ID diff --git a/src/views/firefighting/fireUtilReport/components/recordInfo.vue b/src/views/firefighting/fireUtilReport/components/recordInfo.vue index f5ab0a5..9de9304 100644 --- a/src/views/firefighting/fireUtilReport/components/recordInfo.vue +++ b/src/views/firefighting/fireUtilReport/components/recordInfo.vue @@ -243,8 +243,8 @@ export default { created() { this.FIRE_CHECK_ID = this.getInfo().FIRE_CHECK_ID this.FIRE_RECORD_ID = this.getInfo().FIRE_RECORD_ID - this.SHOW_OR_EDIT = this.$parent.SHOW_OR_EDIT - this.recordBase = Object.assign({}, this.$parent.row) + this.SHOW_OR_EDIT = this.getInfo().SHOW_OR_EDIT + this.recordBase = Object.assign({}, this.getInfo().row) this.getData() this.getSignImgs(this.FIRE_RECORD_ID) }, @@ -310,7 +310,7 @@ export default { this.$refs.information.init(id) }, back() { - this.$parent.activeName = 'RecordList' + this.setActiveName('RecordList') }, // 获取详情 getData() { diff --git a/src/views/firefighting/fireUtilReport/components/recordList.vue b/src/views/firefighting/fireUtilReport/components/recordList.vue index c10fe85..c7620a0 100644 --- a/src/views/firefighting/fireUtilReport/components/recordList.vue +++ b/src/views/firefighting/fireUtilReport/components/recordList.vue @@ -125,6 +125,7 @@ export default { this.getList() this.hasButton() }, + inject: ['setActiveName', 'getInfo', 'setInfo'], methods: { getRowKey(row) { return row.CHECKRECORD_ID @@ -142,7 +143,7 @@ export default { { STARTTIME: this.dates[0], ENDTIME: this.dates[1], - FIRE_CHECK_ID: this.$parent.FIRE_CHECK_ID, + FIRE_CHECK_ID: this.getInfo().FIRE_CHECK_ID, KEYWORDS: this.KEYWORDS, STATUS: this.STATUS } @@ -198,15 +199,17 @@ export default { }, // 检查记录 goCheck(row, id, FIRE_RECORD_ID) { - this.$parent.FIRE_CHECK_ID = id - this.$parent.FIRE_RECORD_ID = FIRE_RECORD_ID - this.$parent.SHOW_OR_EDIT = 'SHOW' - this.$parent.row = row - this.$parent.activeName = 'RecordInfo' + const info = this.getInfo() + info.FIRE_CHECK_ID = id + info.FIRE_RECORD_ID = FIRE_RECORD_ID + info.SHOW_OR_EDIT = 'SHOW' + info.row = row + this.setInfo(info) + this.setActiveName('RecordInfo') }, // 返回 back() { - this.$parent.activeName = 'List' + this.setActiveName('FireRecord') }, hasButton: function() { var keys = 'checkrecord:add,checkrecord:del,checkrecord:edit,toExcel' diff --git a/src/views/firefighting/fireUtilReport/index.vue b/src/views/firefighting/fireUtilReport/index.vue index 5a49d71..ddde339 100644 --- a/src/views/firefighting/fireUtilReport/index.vue +++ b/src/views/firefighting/fireUtilReport/index.vue @@ -6,9 +6,10 @@ import List from './components/list' import FireRecord from './components/fireRecord.vue' import FireList from './components/fireList.vue' import RecordInfo from './components/recordInfo.vue' +import RecordList from './components/recordList.vue' export default { components: { - List, FireRecord, FireList, RecordInfo + List, FireRecord, FireList, RecordInfo, RecordList }, data() { return { diff --git a/src/views/hidden/zczb/components/hidden.vue b/src/views/hidden/zczb/components/hidden.vue index fab3363..02b1c91 100644 --- a/src/views/hidden/zczb/components/hidden.vue +++ b/src/views/hidden/zczb/components/hidden.vue @@ -378,7 +378,7 @@ export default { this.checkList = data.checkList this.hImgs = data.hImgs this.rImgs = data.rImgs - this.cImgs = data.cImgs + this.cImgs = data.cImgs || data.checkList[0].cImgs this.sImgs = data.sImgs console.log(this.hImgs) this.$nextTick(() => { diff --git a/src/views/keyprojects/outsourced/components/edit.vue b/src/views/keyprojects/outsourced/components/edit.vue index cfabc0a..001ea36 100644 --- a/src/views/keyprojects/outsourced/components/edit.vue +++ b/src/views/keyprojects/outsourced/components/edit.vue @@ -801,6 +801,21 @@ export default { // 保存 confirm() { for (let i = 0; i < this.inspectorList.length; i++) { + requestFN( + '/outsourced/checkDepartment', + { + departmentId: this.form.JURISDICTION_UNIT + } + ).then((data) => { + if (data.data.errInfo === 'fail') { + this.$message({ + message: '勿选其他公司部门!', + type: 'error' + }) + } + resolve(true) + }).catch((e) => { + }); if (this.inspectorList[i].INSPECTION_USER_ID == '') { this.$message.warning('第' + (i + 1) + '行必须添加处罚人') return diff --git a/src/views/map/dialog/index.vue b/src/views/map/dialog/index.vue index 3f011a6..8851b63 100644 --- a/src/views/map/dialog/index.vue +++ b/src/views/map/dialog/index.vue @@ -47,7 +47,7 @@ - + diff --git a/src/views/map/dialog/peoplePositionCmt.vue b/src/views/map/dialog/peoplePositionCmt.vue index d2c0a0c..03107c5 100644 --- a/src/views/map/dialog/peoplePositionCmt.vue +++ b/src/views/map/dialog/peoplePositionCmt.vue @@ -25,7 +25,6 @@

八项作业

- diff --git a/src/views/map/index.vue b/src/views/map/index.vue index 01370cc..f98c4e7 100644 --- a/src/views/map/index.vue +++ b/src/views/map/index.vue @@ -290,7 +290,9 @@ import axios from 'axios' import md5 from 'md5' const imosPlayer = window.imosPlayer - +var PI = 3.1415926535897932384626 +var a = 6378245.0 // 卫星椭球坐标投影到平面地图坐标系的投影因子。 +var ee = 0.00669342162296594323 // 椭球的偏心率。//判断是否在国内,在中国国内的经纬度才需要做偏移 const iframeObj = null export default { components: { @@ -1084,6 +1086,7 @@ export default { ], pointBoxNine: [], ninePerLocArr: [], + cmtPerArr: [], /* 曹妃甸使用参数结束*/ /* 一公司人员定位*/ @@ -1404,8 +1407,18 @@ export default { this.dialog.infoname = infoname return } - if (this.gangkouActive === '00005' && point_id.substring(0, 1) !== '1') { - // if (this.gangkouActive === '00004' && point_type.indexOf('标记点') !== -1 && point_id.substring(0, 1) === '0' || point_id.substring(0, 1) === '5') { + if (this.gangkouActive === '00005' && point_type === 'peoplePositionCmt') { + const { label, point_type, id, corpInfoId, name, infoname } = pick.id._monitoItems.data + this.dialog.visible = true + this.dialog.title = label + this.dialog.type = point_type + this.dialog.id = id + this.dialog.name = name + this.dialog.infoname = infoname + this.dialog.corpInfoId = corpInfoId + }else if (this.gangkouActive === '00005' && point_id.substring(0, 1) !== '1' && point_id !== '6aa255d41602497fa0f934a822820df4') { + console.log(point_type) + console.log(point_id) const { label, point_type, data_id, infoname, name, code } = pick.id._monitoItems.data this.dialog.visible = true this.dialog.title = label @@ -1414,7 +1427,6 @@ export default { this.dialog.name = name this.dialog.id = point_type.substring(3) === 'CAMERA' ? code : point_type.substring(3) === 'platcamera' ? code : data_id this.dialog.infoname = infoname - console.log(this.dialog) return } if (point_type.indexOf('标记点') !== -1) { @@ -1937,6 +1949,21 @@ export default { this.clearMqttPoint('czksperson') } } + if (this.gangkouActive === '00005' && urlType === 'peoplePosition') { + if (this.timer) { + clearInterval(this.timer) + } + this.bottomOptionsList[pindex].list[index].check = false + this.clearCmtMqttPoint('person') + if (this.fwebsocket && this.fwebsocket.url) { + this.perLocArr = [] + this.cmtPerArr = [] + this.ninePerLocArr = [] + this.carLocArr = [] + this.fwebsocket.close() + this.fwebsocket = {} + } + } // 人员定位关闭实时获取定位websocket 并关闭人员对比定时器(曹妃甸使用) if (this.gangkouActive === '00004' && urlType === 'peoplePosition') { // if (this.fwebsocket) { @@ -1983,6 +2010,10 @@ export default { this.czksPeoplePosition() return } + if (this.gangkouActive === '00005' && urlType === 'peoplePosition') { + this.cmtPosition() + return + } if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') { !this.connecting ? this.createConnection(this.CORP_INFO_ID) : this.doSubscribe() } else { @@ -2088,6 +2119,7 @@ export default { ry_drag.getPosition(this.perLocArr[i]) } else { ry_drag.addEntity(this.perLocArr[i]) + this.mqttPoint['cfdrydw' + this.perLocArr[i].cardNo] = this.perLocArr[i].cardNo } } @@ -2263,6 +2295,115 @@ export default { this.connecting = false this.subscribeSuccess = false }, + // 曹煤炭人员定位websocket + cmtPosition() { + const _this = this + console.info(config.cmtPositionUrl) + if (window.WebSocket) { + this.fwebsocket = new WebSocket(encodeURI('ws://' + config.cmtPositionUrl)) // oladress在main.jsp页面定义 + this.fwebsocket.onopen = () => { + console.info('人员定位监听成功') + } + this.fwebsocket.onerror = function() { + console.info('连接失败') + } + this.fwebsocket.onclose = function() { + console.info('onclose') + } + this.fwebsocket.onmessage = function(message) { + const mockData = JSON.parse(message.data) + console.log(mockData) + + // 将地图上的点与最新的定位人员点进行对比 删除地图上多的点 + const cmtPer = _this.cmtPerArr + .filter(item => { + const index = mockData.findIndex(item1 => { + return item.id.toString() === item1.cardno.toString() + }) + return index !== -1 + }) + + // 将地图上剩余的点与最新的定位人员点进行对比 更新地图上已存在的点 新增地图上之前没有的点 + for (const item of mockData) { + const wgs84 = _this.gcj02towgs84(parseFloat(item.longitude), parseFloat(item.latitude)) + item.longitude = wgs84[0] + item.latitude = wgs84[1] + const index = cmtPer.findIndex(item1 => { + return item1.id.toString() === item.cardno.toString() + }) + + const pointColor = _this.isPointxyWithinTheArea(_this.pointBox, item.longitude, item.latitude) + if (index !== -1) { + cmtPer[index].x = item.longitude + cmtPer[index].y = item.latitude + cmtPer[index].icon_type = 'img4_0' + pointColor + ry_drag.getPosition(cmtPer[index]) + } else { + const perLoc = { + id: item.cardno, + name: item.name, + x: item.longitude, + y: item.latitude, + point_type: 'peoplePositionCmt', + icon_type: 'img4_0' + pointColor + } + cmtPer.push(perLoc) + ry_drag.delEntity(perLoc) + ry_drag.addEntity(perLoc) + var qianzhui = 'person' + _this.allOrientationPoint[qianzhui + item.cardno] = item.cardno + // qianzhui 前缀是点位的前缀,用于区分不同类型的点(如一公司人员、二公司人员),删除时,可根据点位前缀进行删除点 + } + } + // 最后更新ninePerLocArr + _this.cmtPerArr = cmtPer + } + } + }, + beforeDestroy() { + if (this.timer) { + clearInterval(this.timer) + } + if (this.fwebsocket && this.fwebsocket.url) { + this.fwebsocket.close() + } + }, + out_of_china(lng, lat) { + return (lng < 72.004 || lng > 137.8347 || (lat < 0.8293 || lat > 55.8271 || false)) + }, + // 转化经度 + transformlng(lng, lat) { + var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng)) + ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0 + ret += ((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) / 3.0 + ret += ((150.0 * Math.sin((lng / 12.0) * PI) + 300.0 * Math.sin((lng / 30.0) * PI)) * 2.0) / 3.0 + return ret + }, + // 转化纬度 + transformlat(lng, lat) { + var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng)) + ret += ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0) / 3.0 + ret += ((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) / 3.0 + ret += ((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) * 2.0) / 3.0 + return ret + }, + gcj02towgs84(lng, lat) { + if (this.out_of_china(lng, lat)) { + return [lng, lat] + } else { + var dlat = this.transformlat(lng - 105.0, lat - 35.0) + var dlng = this.transformlng(lng - 105.0, lat - 35.0) + var radlat = lat / 180.0 * PI + var magic = Math.sin(radlat) + magic = 1 - ee * magic * magic + var sqrtmagic = Math.sqrt(magic) + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI) + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI) + const mglat = lat + dlat + const mglng = lng + dlng + return [lng * 2 - mglng, lat * 2 - mglat] + } + }, // 沧州矿石人员定位 czksPeoplePosition() { const _this = this @@ -2416,6 +2557,14 @@ export default { delete this.mqttPoint[key] } }, + // 删除人员定位点 + clearCmtMqttPoint(prefix) { + for (const mqttPointKey in this.allOrientationPoint) { + const key = prefix ? prefix + this.allOrientationPoint[mqttPointKey] : mqttPointKey + viewer.entities.removeById(this.allOrientationPoint[key]) + delete this.allOrientationPoint[key] + } + }, // 订阅 doSubscribe() { const { topic, qos } = this.subscription diff --git a/src/views/map/js/dragentity.js b/src/views/map/js/dragentity.js index 9445d96..144e46c 100644 --- a/src/views/map/js/dragentity.js +++ b/src/views/map/js/dragentity.js @@ -291,5 +291,9 @@ export default class DragEntity { this.viewer.entities.add(target) } } + + delEntity(point) { + this.viewer.entities.remove(point) + } } diff --git a/src/views/risk/corpinfo/components/point.vue b/src/views/risk/corpinfo/components/point.vue index 148fe39..4b9a41f 100644 --- a/src/views/risk/corpinfo/components/point.vue +++ b/src/views/risk/corpinfo/components/point.vue @@ -67,7 +67,7 @@ - +