diff --git a/src/config/route.js b/src/config/route.js index 91e6486b..3af263f7 100644 --- a/src/config/route.js +++ b/src/config/route.js @@ -59,31 +59,17 @@ const routes = [ }, "component": "bigScreen" }, - - // { - // "path": "/bigScreen", - // "name": "bigScreen", - // "meta": { - // "title": "驾驶舱", - // "icon": "el-icon-position", - // "perms": ["bigScreen"], - // "type": "link", - // "fullpage": true, - // }, - // "component": "bigScreen" - // }, - // { - // "path": "/bigScreen", - // "name": "bigScreens", - // "meta": { - // "title": "bigScreens", - // "icon": "el-icon-position", - // "perms": ["bigScreen"], - // "fullpage": true, - // "hidden":true, - // }, - // "component": "bigScreen" - // }, + { + "path": "/track", + "name": "track", + "meta": { + "title": "轨迹追踪", + "icon": "el-icon-position", + "fullpage": true, + "hidden": true, + }, + "component": "bigScreen/track" + }, { "name": "userCenter", "path": "/usercenter", diff --git a/src/utils/checkIdent.js b/src/utils/checkIdent.js new file mode 100644 index 00000000..7bfc9cec --- /dev/null +++ b/src/utils/checkIdent.js @@ -0,0 +1,130 @@ +const validateIdent = { + aIdentityCode_City: { // 城市代码列表 + 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", + 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", + 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", + 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", + 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " + }, + IdentityCode_isCardNo(card) {//检查号码是否符合规范,包括长度,类型 + var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X + if (reg.test(card) === false) { + return false; + } + return true; + }, + IdentityCode_checkProvince(card) { //取身份证前两位,校验省份 + var province = card.substr(0, 2); + if (validateIdent.aIdentityCode_City[province] == undefined) { + return false; + } + return true; + }, + IdentityCode_checkBirthday(card) { //检查生日是否正确,15位以'19'年份来进行补齐。 + var len = card.length; + //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字 + if (len == '15') { + var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/; + var arr_data = card.match(re_fifteen); // 正则取号码内所含出年月日数据 + var year = arr_data[2]; + var month = arr_data[3]; + var day = arr_data[4]; + var birthday = new Date('19' + year + '/' + month + '/' + day); + return validateIdent.IdentityCode_verifyBirthday('19' + year, month, day, birthday); + } + //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X + if (len == '18') { + var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/; + var arr_data = card.match(re_eighteen); // 正则取号码内所含出年月日数据 + var year = arr_data[2]; + var month = arr_data[3]; + var day = arr_data[4]; + var birthday = new Date(year + '/' + month + '/' + day); + return validateIdent.IdentityCode_verifyBirthday(year, month, day, birthday); + } + return false; + }, + IdentityCode_verifyBirthday(year, month, day, birthday) {//校验日期 ,15位以'19'年份来进行补齐。 + var now = new Date(); + var now_year = now.getFullYear(); + //年月日是否合理 + if (birthday.getFullYear() == year + && (birthday.getMonth() + 1) == month + && birthday.getDate() == day) { + //判断年份的范围(3岁到150岁之间) + var time = now_year - year; + if (time >= 3 && time <= 150) { + return true; + } + return false; + } + return false; + }, + IdentityCode_checkParity(card) { //校验位的检测 + card = validateIdent.IdentityCode_changeFivteenToEighteen(card); // 15位转18位 + var len = card.length; + if (len == '18') { + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); + var cardTemp = 0, i, valnum; + for (i = 0; i < 17; i++) { + cardTemp += card.substr(i, 1) * arrInt[i]; + } + valnum = arrCh[cardTemp % 11]; + if (valnum == card.substr(17, 1)) { + return true; + } + return false; + } + return false; + }, + IdentityCode_changeFivteenToEighteen(card) { //15位转18位身份证号 + if (card.length == '15') { + var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); + var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); + var cardTemp = 0, i; + card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6); + for (i = 0; i < 17; i++) { + cardTemp += card.substr(i, 1) * arrInt[i]; + } + card += arrCh[cardTemp % 11]; + return card; + } + return card; + }, + IdentityCodeValid(card) {// 身份证号码检验主入口 + let pass = true; + let sex = '' + //是否为空 + if (pass && card === '') + pass = false; + //校验长度,类型 + if (pass && validateIdent.IdentityCode_isCardNo(card) === false) + pass = false; + //检查省份 + if (pass && validateIdent.IdentityCode_checkProvince(card) === false) + pass = false; + //校验生日 + if (pass && validateIdent.IdentityCode_checkBirthday(card) === false) + pass = false; + //检验位的检测 + // if (pass && validateIdent.IdentityCode_checkParity(card) === false) + // pass = false; + if (pass) { + var iCard = validateIdent.IdentityCode_changeFivteenToEighteen(card); + if (parseInt(iCard.charAt(16)) % 2 == 0) { + sex = "0"; // 女生 + } else { + sex = "1"; // 男生 + } + return true + } else { + return false + } + } +} + + + + +export default validateIdent.IdentityCodeValid //导出 diff --git a/src/views/bigScreen/index.vue b/src/views/bigScreen/index.vue index 5c50bd58..8f9cbb15 100644 --- a/src/views/bigScreen/index.vue +++ b/src/views/bigScreen/index.vue @@ -271,7 +271,7 @@ - + @@ -559,6 +559,19 @@ >{{ item.cate_name }} +
+
监控设备
+
+
+ {{ item.name }} + +
+
该作业没有选择监控设备
@@ -982,14 +995,13 @@ export default { newEle2.autoplay = true; newEle2.id = item.markers[0].id + 'videoPlayer'; newEle2.name = item.markers[0].id + 'videoPlayer'; - newEle2.setAttribute("style", "width: 327px;height:183px;background:url('/img/v_mask.png') no-repeat;background-size: 100% 100%;"); + // newEle2.setAttribute("style", "width: 327px;height:183px;background:url('/img/v_mask.png') no-repeat;background-size: 100% 100%;"); // 在对应dom 下追加创建的dom otest.appendChild(newEle); otest.appendChild(newEle2); let flvPlayer = null,URLS=null; - newEle2.onclick = () => { - newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;"); - this.$API.am.video.item.req(this.params).then(res => { + newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;"); + this.$API.am.video.item.req(this.params).then(res => { console.log(res); this.url = res.url; URLS = res.url.replace('192.168.10.253',sysConfig.VUE_APP_VIDEOHOST); @@ -1014,7 +1026,6 @@ export default { flvPlayer.play(); } }) - }; close.onclick = () => { let nodeMark = document.getElementById(item.markers[0].id); nodeMark.remove(); @@ -1028,7 +1039,6 @@ export default { //人员 that.screenUserItem = item.properties.get("employee"); that.screenUser = true; - // debugger; window.map.flyToMarker(that.userMarker[that.screenUserItem.mac], { duration: 1000, range: 200 @@ -1037,7 +1047,6 @@ export default { } } else if (type === 'Symbol(polygonmarker)') { //危险作业 - debugger; console.log(item) let workId = item.properties.get("workId"); if(workId){ @@ -1072,7 +1081,6 @@ export default { let height1 = document.getElementsByClassName('cockpit-count')[0].clientHeight; let height2 = document.getElementsByClassName('cockpit-alarm')[0].clientHeight; let height3 = document.getElementsByClassName('area-simple-title')[0].clientHeight; - // debugger; let domHeight = pageHeight - height1 - 310 - 84; let areaTableHeight = domHeight - height3 - 50; this.areaTableHeight = areaTableHeight; @@ -1099,7 +1107,6 @@ export default { }, methods: { loadScript(id, url, callback) { - debugger; let that = this; //如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作 if (document.querySelector(`#${id}`)) { @@ -1398,7 +1405,6 @@ export default { }, areaDetailClose(){ let that = this; - debugger; that.areaDetail = false; if(that.singleAreaMaskerLayer){ that.singleAreaMaskerLayer.show = false; @@ -1464,11 +1470,9 @@ export default { //点击区域下的作业 areaOperationRowClick(row){ let that = this; - debugger; console.log(row); that.screenJobItem = row; that.$API.opm.opl.list.req({ operation: row.id}).then((res) => { - debugger; console.log(res) that.screenJobItem.cates_ = res.results; that.screenOperation = true; @@ -1586,7 +1590,6 @@ export default { } else { that.dangerList = res.results; - debugger; that.showPolygonMarkers(that.dangerList); } }) @@ -1978,7 +1981,6 @@ export default { showPolygonMarkers(data) { let that = this; if(data.length>0){ - debugger; data.forEach(item => { let polygonMarker = null; let areaWork = that.areaList.filter(area=>{ @@ -2244,100 +2246,113 @@ export default { }, //人员轨迹 userLineTrack(){ + debugger; let that = this; - that.lineTracking = true; - that.userMaskerLayer.show = false; - let nowTime = new Date().getTime(); - let preTime = nowTime-60*60 * 1000; - let params = { - url:"/api/datacenter/user/historypathV2", - method:"post", - json:{ - mac: that.screenUserItem.mac, - startTime: preTime, - endTime: nowTime, - locationType: "real" - } - }; - let points0 = []; - that.$API.third.blt.xunxiCommon.req(params).then(res => { - if (res.err_msg) { } else { - let points = []; - res.forEach(item=>{ - item.points.forEach(poi=>{ - points.push(poi) - }) - }) - points.forEach(item=>{ - let obj=new Object(); - obj.x=item.longitude; - obj.y=item.latitude; - obj.z=item.z; - points0.push(obj); - }); - if(points0.length>0){ - that.line1 = null; - if (that.line1==null) { - that.line1 = new jsmap.JSLineMarker({ - position: points0, - floorId: 1, - lineType: jsmap.JSLineType.ARROW, - color: '#0000ff', - width: 10, - depthTest: true - }); - window.map.addMarker(that.line1); - } - that.trackMarker = new jsmap.JSIconTextMarker({ - id: '1', - position: points0[0], - image: "/img/visitor.png", - rotation: { - rx: 0, - ry: 0, - rz: -90 - }, - text: that.screenUserItem.name, - fontColor: '#0000ff', - font: '14px 微软雅黑', - backgroundColor: 'rgba(112,253,147,0.5)', - backgroundRadius: 5, - textOffsetInMeter: 1.6, - backgroundStrokeColor: 'rgb(255,255,255)', - modelAnimate: { - multiplier: 2, - }, - scale: 1, - properties: { - name: 'trackMarker' - }, - callback: (marker) => { - window.map.trackMarker(marker, { - range: 100, - tilt: 60, - rotate: 310 - }); - for (let i = 1; i < points0.length; i++) { - setTimeout(() => { - window.map.updateMarkerPosition(marker, { - position: points0[i], - animate: { - duration: 1000, - update: (pos) => { - that.line1.trace(pos) - } - } - }); - }, i * 1000); - } - } - }); - window.map.addMarker(that.trackMarker); - }else{ - that.$message.error('暂无运动痕迹'); - } - } - }) + let obj = {}; + obj.id=that.screenUserItem.id; + obj.mac=that.screenUserItem.mac; + obj.name=that.screenUserItem.name; + obj.type=that.screenUserItem.type; + obj.floorNo=that.screenUserItem.location.xx_detail.floorNo; + obj.longitude=that.screenUserItem.location.xx_detail.longitude; + obj.latitude=that.screenUserItem.location.xx_detail.latitude; + localStorage.setItem('trackItem',JSON.stringify(obj)) + this.$router.push({ + name: "track" + }); + // that.lineTracking = true; + // that.userMaskerLayer.show = false; + // let nowTime = new Date().getTime(); + // let preTime = nowTime-60*60 * 1000; + // let params = { + // url:"/api/datacenter/user/historypathV2", + // method:"post", + // json:{ + // mac: that.screenUserItem.mac, + // startTime: preTime, + // endTime: nowTime, + // locationType: "real" + // } + // }; + // let points0 = []; + // that.$API.third.blt.xunxiCommon.req(params).then(res => { + // if (res.err_msg) { } else { + // let points = []; + // res.forEach(item=>{ + // item.points.forEach(poi=>{ + // points.push(poi) + // }) + // }) + // points.forEach(item=>{ + // let obj=new Object(); + // obj.x=item.longitude; + // obj.y=item.latitude; + // obj.z=item.z; + // points0.push(obj); + // }); + // if(points0.length>0){ + // that.line1 = null; + // if (that.line1==null) { + // that.line1 = new jsmap.JSLineMarker({ + // position: points0, + // floorId: 1, + // lineType: jsmap.JSLineType.ARROW, + // color: '#0000ff', + // width: 10, + // depthTest: true + // }); + // window.map.addMarker(that.line1); + // } + // that.trackMarker = new jsmap.JSIconTextMarker({ + // id: '1', + // position: points0[0], + // image: "/img/visitor.png", + // rotation: { + // rx: 0, + // ry: 0, + // rz: -90 + // }, + // text: that.screenUserItem.name, + // fontColor: '#0000ff', + // font: '14px 微软雅黑', + // backgroundColor: 'rgba(112,253,147,0.5)', + // backgroundRadius: 5, + // textOffsetInMeter: 1.6, + // backgroundStrokeColor: 'rgb(255,255,255)', + // modelAnimate: { + // multiplier: 2, + // }, + // scale: 1, + // properties: { + // name: 'trackMarker' + // }, + // callback: (marker) => { + // window.map.trackMarker(marker, { + // range: 100, + // tilt: 60, + // rotate: 310 + // }); + // for (let i = 1; i < points0.length; i++) { + // setTimeout(() => { + // window.map.updateMarkerPosition(marker, { + // position: points0[i], + // animate: { + // duration: 1000, + // update: (pos) => { + // that.line1.trace(pos) + // } + // } + // }); + // }, i * 1000); + // } + // } + // }); + // window.map.addMarker(that.trackMarker); + // }else{ + // that.$message.error('暂无运动痕迹'); + // } + // } + // }) }, userLineTrackCancel(){ window.location.reload(); @@ -2382,7 +2397,7 @@ export default { //查看监控 showVchannel(item){ let that = this; - debugger; + // debugger; console.log(item) that.channelCode = item.code; that.channelName = item.name; diff --git a/src/views/bigScreen/index_old.vue b/src/views/bigScreen/index_old.vue new file mode 100644 index 00000000..4ed83d90 --- /dev/null +++ b/src/views/bigScreen/index_old.vue @@ -0,0 +1,4048 @@ + + + + + diff --git a/src/views/bigScreen/track.vue b/src/views/bigScreen/track.vue new file mode 100644 index 00000000..ce20ba0d --- /dev/null +++ b/src/views/bigScreen/track.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/src/views/hrm/ep_form.vue b/src/views/hrm/ep_form.vue index eb5b186b..01226d40 100644 --- a/src/views/hrm/ep_form.vue +++ b/src/views/hrm/ep_form.vue @@ -150,6 +150,7 @@