Compare commits

...

12 Commits

Author SHA1 Message Date
5180dfaf60 添加redis缓存刷新 2025-11-12 14:50:21 +08:00
guanj
6a1a7eb218 添加已发短信查询接口 2025-11-12 14:35:16 +08:00
guanj
80ed66a2b0 修改责任计算参数问题 2025-11-10 11:34:24 +08:00
stt
7d86bbb6c2 添加调取stationMap的方法 2025-11-07 16:19:15 +08:00
guanj
2631f43623 修改页面样式 2025-11-07 14:58:50 +08:00
stt
b396686b61 无锡大屏添加变电站名称绑定 2025-11-04 14:06:39 +08:00
stt
1a0a42c5a5 导出报表,时分秒可选 2025-10-30 10:24:34 +08:00
guanj
980d5a22b3 修改现场返回问题 2025-10-30 10:08:30 +08:00
guanj
0ffc0cd01e Merge branch 'master' of http://192.168.1.22:3000/Web/bigscreenWeb 2025-10-27 15:38:01 +08:00
guanj
079263ed38 修改 接线图第一次加载问题 2025-10-27 15:37:54 +08:00
stt
859d890434 地图的时候不展示表格 2025-10-27 15:08:43 +08:00
guanj
1c365c0585 提交地图文件 2025-10-27 14:13:43 +08:00
96 changed files with 20256 additions and 290 deletions

2
.gitignore vendored
View File

@@ -11,6 +11,8 @@ node_modules
dist
offline
# tiles
# tiles1
dist-ssr
*.local
# Editor directories and files

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('clayer', 'z.extend(nb.prototype,{cl:{},Bj:[],Pu:"",jq:"",MG:"",dl:s,Jg:s,Ig:s,Hg:[],LG:0,pz:u(),lz:u(),Ku:u(),Sd:function(){this.UG()},na:function(a,b){Mc.prototype.na.call(this,a,b);this.cl={};this.Bj=[];this.B=a;this.UG()},zt:ca(q),remove:function(){Mc.prototype.remove.call(this);this.fU()},UG:function(){var a=this,b=a.B;b&&(this.pz=function(b){a.yT(b)},this.lz=function(b){a.XS(b)},this.Ku=function(b){a.WS(b)},b.addEventListener("mousemove",this.pz),b.addEventListener("onhotspotover",this.lz),b.addEventListener("onhotspotout", this.Ku),b.addEventListener("onzoomstart",this.Ku))},fU:function(){var a=this.B;a&&(a.removeEventListener("mousemove",this.pz),a.removeEventListener("onhotspotover",this.lz),a.removeEventListener("onhotspotout",this.Ku))},yT:function(a){var b=this,c=b.B,e=c.oa();if(c.fa()<this.gc||c.Sb())b.xB();else if(a=e.wm().kh(a.point),e=e.$c(),a=new Q(Math.floor(a.x*Math.pow(2,c.fa()-18)),Math.floor(a.y*Math.pow(2,c.fa()-18))),e=new Q(Math.floor(a.x/e),Math.floor(a.y/e)),this.jq=c=e.x+"_"+e.y+"_"+c.fa(),this.cl[c]){if(this.Pu!= c){b.xB();b.TG(this.cl[c]);this.Pu=c;for(var e=-1,a=0,f=this.Bj.length;a<f;a++)if(c==this.Bj[a]){e=a;break}0<=e&&(this.Bj.splice(e,e),this.Bj.push(c))}}else if(this.MG!=c){this.MG=c;e=Wc[parseInt(Math.random()*Wc.length)];a=b.ub;c=e+"/data?grids="+c+"&q="+a.Wm+"&tags="+a.pu+"&filter="+a.filter+"&sortby="+a.Vy+"&ak="+a.Vl+"&page_size="+a.ON+"&age="+a.Gw;b.Cf?c+="&geotable_id="+b.Cf:b.Rn&&(c+="&databox_id="+b.Rn);var g=(1E5*Math.random()).toFixed(0);!B._rd&&(B._rd={});B._rd["_cbk"+g]=function(a){b.PS(a); delete B._rd["_cbk"+g]};oa(c+("&callback=BMap._rd._cbk"+g))}},PS:function(a){var b=this.B,c=a.content;if(!(a.status!=this.LG||!c||1>c.length)){for(var a=[],e=c[0].data,b=b.oa().wm(),f=0,g=e.length;f<g;f++){var i=e[f][2].replace(nb.tU,"").split(","),i=b.nh(new J(i[0],i[1]));a.push({pt:i,userdata:{name:e[f][0]||"name",size:e[f][4]?e[f][4].split("|"):[10,13],uid:e[f][1]||"",BO:e[f][3]||"sid1"}})}c=c[0].grid.join("_");this.cl[c]=a;this.Bj.push(c);30<this.Bj.length&&(c=this.Bj.shift(),delete this.cl[c], delete c);this.Pu!=this.jq&&(this.xB(),this.cl[this.jq]&&(this.TG(this.cl[this.jq]),this.Pu=this.jq))}},TG:function(a){for(var b=this.B,c=0,e=a.length;c<e;c++){var f=a[c].userdata.size,g=f[0]/2,f=f[1]/2,g=new ib(a[c].pt,{offsets:[f,g,f,g],userData:a[c].userdata});b.Cw(g,this.ub.Fk)}},xB:function(){this.B.dm(this.ub.Fk)},XS:function(a){if(a.spots&&!(1>a.spots.length||a.spots[0].tag!=this.ub.Fk)){this.Hg=a.spots;var b=this,a=this.Hg[0].getUserData().size[0],c="",e=b.B,f="",g=b.ub.eZ;0<this.Hg.length&& (c=this.Hg[0].getUserData().name);if(this.Jg)this.Jg.sa(this.Hg[0].ga()),this.Ig.dd(c),this.Ig.Ze(new O(a,0)),this.Jg.show(),c?this.Ig.show():this.Ig.U();else{var i=this.Hg[0].getUserData().size,f=this.Hg[0].getUserData().BO,k=this.Cf||this.Rn;this.dl=new qc(G.qa+"blank.gif",new O(i[0],i[1]),{anchor:new O(i[0]/2+1,i[1]/2+1)});this.GS(k,f,function(){b.Jg&&b.Jg.Rb(b.dl)});this.Jg=new U(this.Hg[0].ga(),{icon:this.dl,enableMassClear:t});e.Ga(this.Jg);this.Ig=new uc(c,{offset:new O(a,0)});this.Ig.Md({backgroundColor:g.backgroundColor, borderColor:g.borderColor});this.Jg.dn(this.Ig);c?this.Ig.show():this.Ig.U();this.Jg.addEventListener("onclick",function(){if(!(b.Hg.length<1)&&b.Hg[0].getUserData().uid){var a=b.ub,c=a.BY;if(b.Cf)c=a.CY;a=c+b.Hg[0].getUserData().uid+"?scope=2&ak="+a.Vl;b.Cf&&(a=a+("&geotable_id="+b.Cf));var e=(Math.random()*1E5).toFixed(0);!B._rd&&(B._rd={});B._rd["_cbk"+e]=function(a){b.FS(a);delete B._rd["_cbk"+e]};oa(a+("&callback=BMap._rd._cbk"+e))}})}}},FS:function(a){var b=a.content;this.Cf&&(b=a.contents[0]); if(a&&a.status==this.LG&&b){var a={poiId:b.uid||"",databoxId:b.databox_id||"",title:this.Cf?b.title:b.name,address:this.Cf?b.address:b.addr,phoneNumber:b.tel||"",postcode:b.zip||"",provinceCode:1*b.province_id||-1,province:b.province||"",cityCode:1*b.city_id||-1,city:b.city||"",districtCode:1*b.district_id||-1,district:b.district||"",point:this.Cf?new J(b.location[0],b.location[1]):new J(b.longitude,b.latitude),tags:b.tag&&b.tag.replace(nb.wU,"").split(nb.uU),typeId:1*b.cla||-1,extendedData:b.ext|| {}},c=new z.lang.Ju("onhotspotclick");c.customPoi=a;c.content=b;this.dispatchEvent(c)}},WS:function(){this.Jg&&this.Jg.U();this.Ig&&this.Ig.U()},GS:function(a,b,c){var e=this,f=Xc+"?method=getstyle&databox="+a+"&sid="+b,g=(1E5*Math.random()).toFixed(0);if(!e.dl||!(e.dl.databoxid==a&&e.dl.sid==b))!B._rd&&(B._rd={}),B._rd["_cbk"+g]=function(a){var b="";0==a.status&&(b="data:image/png;base64,"+a.content.sid1);0<b.length&&(e.dl.mO(b),c&&c(a));delete B._rd["_cbk"+g]},oa(f+("&callback=BMap._rd._cbk"+g))}}); ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('common', 'z.cookie=z.cookie||{};z.cookie.oI=function(a){return RegExp(\'^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$\').test(a)};z.cookie.cY=function(a){return z.cookie.oI(a)&&(a=RegExp("(^| )"+a+"=([^;]*)(;|$)").exec(document.cookie))?a[2]||s:s};z.cookie.get=function(a){a=z.cookie.cY(a);return"string"==typeof a?a=decodeURIComponent(a):s}; z.cookie.vO=function(a,b,c){if(z.cookie.oI(a)){var c=c||{},e=c.qx;"number"==typeof c.qx&&(e=new Date,e.setTime(e.getTime()+c.qx));document.cookie=a+"="+b+(c.path?"; path="+c.path:"")+(e?"; expires="+e.toGMTString():"")+(c.domain?"; domain="+c.domain:"")+(c.i5?"; secure":"")}};z.cookie.set=function(a,b,c){z.cookie.vO(a,encodeURIComponent(b),c)};z.cookie.remove=function(a,b){b=b||{};b.qx=new Date(0);z.cookie.vO(a,"",b)};z.xt=function(a){return/\\d{11}/.test(a)};z.TY=function(a){return/\\d{4}/.test(a)}; z.is=function(){function a(a){a=a.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,function(a,b,c,e){return b+b+c+c+e+e});return(a=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(a))?"rgb("+parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)+")":s}var b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887", cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3", deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6", lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee", mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6", purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}, c={hex:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,rgb:/rgb\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*\\)/,rgba:/rgba\\(\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(\\d|\\d\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\s*,\\s*(0|1|0\\.[1-9])\\s*\\)/};return{cK:function(a){if(c.hex.test(a))return a;if(c.rgb.test(a))return a=a.match(c.rgb),"#"+("0"+parseInt(a[1],10).toString(16)).slice(-2)+("0"+parseInt(a[2],10).toString(16)).slice(-2)+ ("0"+parseInt(a[3],10).toString(16)).slice(-2);if(b[a])return b[a]},S3:a,x2:function(a){return c.hex.test(a)?a:b[a]?b[a]:"#000"},AC:function(e,f){f===l&&(f=1);if(c.rgba.test(e))return e;"undefined"!=typeof b[e.toLowerCase()]&&(e=b[e.toLowerCase()]);c.hex.test(e)&&(e=a(e));c.rgb.test(e)?(e=e.replace(/rgb/g,"rgba"),e=e.replace(/\\)/,","+f+")")):e="rgba(0,0,0,1)";return e}}}(); ');

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('convertor', 'z.extend(lc.prototype,{qQ:function(){for(var a=0,b=this.Pa.length;a<b;a++){var c=this.Pa[a];this[c.method].apply(this,c.arguments)}delete this.Pa},translate:function(a,b,c,e){b=b||1;c=c||5;if(10<a.length)e&&e({status:25});else{var f=B.Wc+"geoconv/v1/?coords=";z.Fb(a,function(a){f+=a.lng+","+a.lat+";"});f=f.replace(/;$/gi,"");f=f+"&from="+b+"&to="+c+"&ak="+qa;oa(f,function(a){if(0===a.status){var b=[];z.Fb(a.result,function(a){b.push(new B.Point(a.x,a.y))});delete a.result;a.points=b}e&&e(a)})}}}); ');

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('coordtransutils', 'z.extend(eb,{AV:function(a,b,c){var e=S.Eb(a),a=b.fc,e=kc.ZD(b.Ub||"bj",e),e=new J(e.x,e.y),f=b.fa(),f=b.oa().dc(f),b=b.cb(),b=new Q(Math.round((e.lng-a.lng)/f+b.width/2),Math.round((a.lat-e.lat)/f+b.height/2));c&&c(b)},zV:function(a,b,c){var e=b.fa(),e=b.oa().dc(e),f=b.cb(),g=b.fc,b=b.Ub,a=new J(g.lng+e*(a.x-f.width/2),g.lat-e*(a.y-f.height/2)),a=kc.XD(b||"bj",a),a=new J(a.lng,a.lat),a=S.Tb(a);c&&c(a)}}); ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('copyrightctrl', 'z.extend($b.prototype,{zf:function(){this.B&&this.He(this.B)},initialize:function(a){Vb.prototype.initialize.call(this,a);this.Aa();this.uo();this.ba(a);return this.C},ba:function(a){var b=this;a.addEventListener("load",function(){b.uo()});a.addEventListener("moveend",function(){b.uo()});a.addEventListener("zoomend",function(){b.uo()});a.addEventListener("maptypechange",function(){b.C&&(b.C.style.color=b.B.oa().zm())})},Aa:function(){Vb.prototype.Aa.call(this);z.D.Ua(this.C,"BMap_cpyCtrl");var a= this.C.style;a.cursor="default";a.whiteSpace="nowrap";a.MozUserSelect="none";a.color=this.B.oa().zm();a.background="none";a.font="11px/15px "+G.fontFamily;Vb.prototype.Nr.call(this)},uo:function(){if(this.B&&this.C&&0!=this.cc.length)for(var a=0,b=this.cc.length;a<b;a++){this.B.fa();var c=this.B.xb({x:0,y:0}),e=this.B.xb({x:this.B.width,y:this.B.height}),c=new fb(c,e);if(this.cc[a].bounds&&c.ot(this.cc[a].bounds)==s){if(this.C)for(e=0;e<this.C.children.length;e++)if(this.C.children[e].getAttribute("_cid")== this.cc[a].id&&"none"!=this.C.children[e].style.display){this.C.children[e].style.display="none";return}}else if(this.C){for(var c=t,e=0,f=this.C.children.length;e<f;e++)if(this.C.children[e].getAttribute("_cid")==this.cc[a].id){c=q;this.C.children[e].style.display="inline";this.C.children[e].innerHTML!=this.cc[a].content&&(this.C.children[e].innerHTML=this.cc[a].content);break}c||this.Uq(this.cc[a])}}},Bw:function(a){if(a&&Wa(a.id)&&!isNaN(a.id)){var b={bounds:s,content:""},c;for(c in a)b[c]=a[c]; if(a=this.pm(a.id))for(var e in b)a[e]=b[e];else this.cc.push(b);this.uo()}},pm:function(a){for(var b=0,c=this.cc.length;b<c;b++)if(this.cc[b].id==a)return this.cc[b]},PD:w("cc"),qF:function(a){for(var b,c=0,e=this.cc.length;c<e;c++)this.cc[c].id==a&&(b=this.cc.splice(c,1),c--,e=this.cc.length);(a=this.Jd(a))&&a.parentNode&&a.parentNode.removeChild(a);this.uo();return b},Uq:function(a){this.C&&(this.C.innerHTML+="<span _cid=\'"+a.id+"\'>"+a.content+"</span>")},Jd:function(a){var b=Vb.prototype.Jd.call(this); if(Hb(a)){if(b)for(var c=0,e=b.children.length;c<e;c++)if(b.children[c].getAttribute("_cid")==a)return b.children[c]}else return b}});T(wf,{addCopyright:wf.Bw,removeCopyright:wf.qF,getCopyright:wf.pm,getCopyrightCollection:wf.PD}); ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('draw', 'function Ag(){}var Bg=Ag.prototype;Bg.IF=u();Bg.Ao=function(){aa("addLine\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.setAttribute=function(){aa("setAttribute\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.ke=function(){aa("setPath\\u63a5\\u53e3\\u6ca1\\u6709\\u5b9e\\u73b0")};Bg.ip=w("Mb");B.jz=Ag; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('drawbycanvas', 'function Gg(a){this.B=a;this.NQ={strokeweight:"lineWidth",strokecolor:"strokeStyle",fillcolor:"fillStyle",strokeopacity:"globalAlpha",fillopacity:"globalAlpha"};this.Mb="canvas"}Gg.prototype=new B.jz;var Hg=Gg.prototype;Hg.Ao=function(){if(!this.canvas||this.canvas&&!zb(this.canvas)){var a=this.canvas=L("canvas");this.B.Tf().Et.appendChild(a);a.style.position="absolute";a=a.getContext("2d");a.lineCap="round";a.lineJoin="round";a.save();this.zU(this.canvas)}return this.canvas}; Hg.ke=function(a,b,c){if(a&&0!==b[0].length){var e=a.getContext("2d");this.sa(a);var f=parseInt(a.style.top),g=parseInt(a.style.left);e.beginPath();z.mc.Fb(b,function(a){if(0!==a.length){e.moveTo(a[0].x-g,a[0].y-f);for(var b=1,c=a.length;b<c;b++)e.lineTo(a[b].x-g,a[b].y-f)}});this.FR(a,c);"dashed"===c.strokeStyle&&this.HR(e,b,g,f,c)}}; Hg.HR=function(a,b,c,e,f){var g=this;a.beginPath();z.mc.Fb(b,function(b){if(0!==b.length){for(var k=[],m=0,n=b.length;m<n;m++)k.push({x:b[m].x-c,y:b[m].y-e});a.strokeStyle=f.strokeColor||"#3a6bdb";g.GR(a,k,{lineWidth:f.rc||5,interval:2*f.rc||10,lineLength:2*f.rc||10,strokeStyle:g.JS(a.strokeStyle,f.td)})}})}; Hg.GR=function(a,b,c){for(var c=c||{},e=c.Wx||10,f=c.lineWidth||5,g=c.m4||10,c=c.strokeStyle||"#3a6bdb",i=b.length-1,k=0,m=g+e,n=0,o=0;o<i;o++)var p=b[o].x,v=b[o].y,x=b[o+1].x,y=b[o+1].y,n=n+Math.sqrt((x-p)*(x-p)+(y-v)*(y-v));if(n<g)a.strokeStyle=c,a.lineWidth=f,a.lineJoin="round",a.lineCap="round",a.beginPath(),a.moveTo(b[0].x,b[0].y),a.lineTo(b[i].x,b[i].y),a.stroke();else for(n=0;n<i;n++){var p=b[n].x,v=b[n].y,x=b[n+1].x,y=b[n+1].y,o=Math.sqrt((x-p)*(x-p)+(y-v)*(y-v))+k+g,A=m-Math.abs(k);if(k<= m){var E=parseInt(o/m),C=e*(x-p)/o,F=e*(y-v)/o;xMove=g*(x-p)/o;yMove=g*(y-v)/o;startX=p+A*(x-p)/o;startY=v+A*(y-v)/o;tailX=p+(g-Math.abs(k))*(x-p)/o;tailY=v+(g-Math.abs(k))*(y-v)/o;a.beginPath();a.strokeStyle=c;a.lineJoin="round";a.lineCap="round";a.lineWidth=f;D?a.moveTo(D,I):a.moveTo(p,v);0>=k&&a.lineTo(p,v);a.lineTo(tailX,tailY);a.moveTo(startX,startY);D=0;for(I=2*E;D<I;D++)if(D%2)startX+=C,startY+=F,a.moveTo(startX,startY);else{startX+=xMove;startY+=yMove;if(0>(x-startX)*xMove)break;a.lineTo(startX, startY)}a.stroke()}var k=parseInt(o-m*E)-g,D=x-Math.abs(k)*(x-p)/o,I=y-Math.abs(k)*(y-v)/o;n===i-1&&0<k&&(a.beginPath(),a.strokeStyle=c,p=x-k*(x-p)/o,leftY=y-k*(y-v)/o,k<=g?(a.moveTo(p,leftY),a.lineTo(x,y)):(a.moveTo(p,leftY),a.moveTo(p+xMove,leftY+yMove)),a.stroke())}}; Hg.JS=function(a,b){if(4===a.length)var c=parseInt(a.substr(1,1)+a.substr(1,1),16),e=parseInt(a.substr(2,1)+a.substr(2,1),16),f=parseInt(a.substr(3,1)+a.substr(3,1),16);else c=parseInt(a.substr(1,2),16),e=parseInt(a.substr(3,2),16),f=parseInt(a.substr(5,2),16);return c="rgba("+c+","+e+","+f+","+b+")"};Hg.setAttribute=function(a,b,c){if(a){var e=a.getContext("2d"),f=this.Wq(b);try{e[f]=c}catch(g){}a.setAttribute("_"+b,c||"");e.save()}};Hg.Wq=function(a){return this.NQ[a]||a}; Hg.zU=function(a){var b=this.B,c=b.K.lx,e=b.width+2*c,f=b.height+2*c,g=-b.offsetX-c,b=-b.offsetY-c,c=a.getContext("2d"),i={strokeStyle:c.strokeStyle,fillStyle:c.fillStyle,globalAlpha:c.globalAlpha,lineWidth:c.lineWidth,lineCap:"round",lineJoin:"round"};a.setAttribute("width",e);a.setAttribute("height",f);for(var k in i)c[k]=i[k];c.save();a=a.style;a.top=b+"px";a.left=g+"px"};Hg.XQ=function(a){a.clearRect(0,0,9999,9999)}; Hg.FR=function(a,b){var c=a.getContext("2d");c.globalAlpha=a.getAttribute("_fillopacity");0!==c.globalAlpha&&a.getAttribute("_fillcolor")&&c.fill();c.globalAlpha=a.getAttribute("_strokeopacity");0!==c.globalAlpha&&(a.getAttribute("_strokecolor")&&"dashed"!==b.strokeStyle)&&c.stroke()};Hg.sa=function(a){var b=this.B,c=b.K.lx,e=-b.offsetX-c,a=a.style;a.top=-b.offsetY-c+"px";a.left=e+"px"};B.zP=Gg; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('drawbysvg', 'function Cg(a){this.B=a;this.NG="http://www.w3.org/2000/svg";this.TU={strokeweight:"stroke-width",strokecolor:"stroke",fillcolor:"fill",strokeopacity:"stroke-opacity",fillopacity:"fill-opacity",strokestyle:"stroke-dasharray"};this.hf=this.Zz();this.Mb="svg"}Cg.prototype=new B.jz;var Dg=Cg.prototype; Dg.Zz=function(){var a=this.hf=L("svg",{},this.NG);a.setAttribute("version","1.1");a.setAttribute("type","system");a.style.position="absolute";this.IF();this.B.Tf().Et.appendChild(a);z.M(a,H()?"touchstart":"mousedown",Cb);return a}; Dg.IF=function(){if(this.hf){var a=this.hf,b=this.B,c=b.K.lx,e=b.width+2*c,f=b.height+2*c,g=-b.offsetX-c,b=-b.offsetY-c;this.setAttribute(a,"x",e+"px");this.setAttribute(a,"y",f+"px");this.setAttribute(a,"viewBox",g+" "+b+" "+e+" "+f);a=a.style;a.top=b+"px";a.left=g+"px";a.width=e+"px";a.height=f+"px"}};Dg.H3=w("hf");Dg.setAttribute=function(a,b,c,e){if(a)return"strokestyle"==b&&(c="solid"==c?0:2*e),a.setAttributeNS(s,this.Wq(b),c||"none"),a};Dg.Wq=function(a){return this.TU[a]||a}; Dg.Ao=function(){var a=L("path",{},this.NG);this.setAttribute(a,"stroke-linejoin","round");this.setAttribute(a,"stroke-linecap","round");this.setAttribute(a,"fill-rule","evenodd");this.hf.appendChild(a);return a};Dg.ke=function(a,b){var c=this.tA(b)||"M -9999,-9999";this.setAttribute(a,"d",c)};Dg.tA=function(a){if(0==a.length)return"";var b=[];z.mc.Fb(a,function(a){if(!(2>a.length)){b.push("M "+a[0].x+" "+a[0].y+" L");for(var e=1,f=a.length;e<f;e++)b.push(a[e].x),b.push(a[e].y)}});return b.join(" ")}; B.ZP=Cg; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('drawbyvml', 'function Eg(a){this.B=a;this.dV={strokeweight:"weight",strokecolor:"color",fillcolor:"color",strokeopacity:"opacity",fillopacity:"opacity",strokestyle:"dashstyle"};this.Mb="vml"}Eg.zK={orange:"#ffa500"};Eg.prototype=new B.jz;var Fg=Eg.prototype; Fg.setAttribute=function(a,b,c){a&&(0==b.indexOf("stroke")?a=a.getElementsByTagName("stroke")[0]:0==b.indexOf("fill")&&(a=a.getElementsByTagName("fill")[0]),0<b.indexOf("color")&&(c?(a.on=q,Eg.zK[c]&&(c=Eg.zK[c])):a.on=t),"strokestyle"==b&&(c="solid"==c?"solid":"4 2 1 2"),"strokeweight"==b&&(c+="px"),a[this.Wq(b)]=c||"")};Fg.Wq=function(a){return this.dV[a]||a};Fg.Ao=function(){return Ab(this.B.Tf().Et,\'<v:shape style="behavior:url(#default#VML);z-index:1;width:1px;height:1px;position:absolute;left:0;top:0;"coordsize="1,1" coordorigin="0,0" filled="t" fillcolor="white"><v:stroke style="behavior:url(#default#VML);" endcap="round" oned="true" /><v:fill style="behavior:url(#default#VML)" /></v:shape>\')}; Fg.ke=function(a,b){this.setAttribute(a,"path",this.tA(b));6==z.ca.ia&&(a.style.display="none",a.style.display="")};Fg.tA=function(a){if(0==a.length)return"";var b=[];z.mc.Fb(a,function(a){if(!(2>a.length)){b.push("m "+a[0].x+" "+a[0].y+" l");for(var e=1,f=a.length;e<f;e++)b.push(a[e].x),b.push(a[e].y);b.push("e")}});return b.join(" ")||" "};B.bQ=Eg; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('geoctrl', 'z.extend(Zb.prototype,{initialize:function(a){var b=this;Vb.prototype.initialize.call(b,a);b.Aa();b.pr={"default":B.ka+"images/geolocation-control/mobile/default-40x40.png",loading:B.ka+"images/geolocation-control/mobile/loading-40x40.gif",success:B.ka+"images/geolocation-control/mobile/success-40x40.png",fail:B.ka+"images/geolocation-control/mobile/fail-40x40.png"};b.ij=b.C.children[0];b.FD=b.ij.children[0];b.Xo=b.FD.children[0];b.DD=b.ij.children[1];b.vL=b.DD.children[0].children[0];var c;b.B.addEventListener("moveend", function(){if(c){var a=b.B.Ka();a.lng===c.lng&&a.lat===c.lat?b.Lr(b.pr.success):(b.Lr(b.pr["default"]),b.VQ())}});z.M(b.Xo,"click",function(){b.Lr(b.pr.loading);(new Geolocation({timeout:1E4})).getCurrentPosition(function(e){b.Lr(b.pr.success);if(e.address&&b.j.O_){var f="";e.address.city?f+=e.address.city:e.address.province&&(f+=e.address.province);e.address.district&&(f+=e.address.district);e.address.street&&(f+=e.address.street);e.address.street_number&&(f+=e.address.street_number);b.xU(f)}var f= new J(e.longitude,e.latitude),g=new U(f,{icon:b.j.bN?b.j.bN:new qc(B.ka+"images/geolocation-control/point/position-icon-14x14.png",new O(14,14))});c=f;b.GD=f;a.Ga(g);a.Fd(f,15);e.address&&(b.ds={province:e.address.province||"",city:e.address.city||"",district:e.address.district||"",street:e.address.street||"",streetNumber:e.address.street_number||""},Ra(7001,{longitude:e.longitude,latitude:e.latitude,accuracy:e.accuracy}));e=new P("locationSuccess");e.point=b.GD;e.addressComponent=b.ds;b.dispatchEvent(e)}, function(a){b.Lr(b.pr.fail);var c=new P("locationError");c.code=a.errorCode;c.message=a.uk;b.dispatchEvent(c)})});return b.C},location:function(){var a=this;a.I0.push({});(new Geolocation({timeout:1E4})).getCurrentPosition(function(b){a.GD=new J(b.longitude,b.latitude);b.address&&(a.ds={province:b.address.province||"",city:b.address.city||"",district:b.address.district||"",street:b.address.street||"",streetNumber:b.address.street_number||""});b=new P("locationSuccess");b.point=a.GD;b.addressComponent= a.ds;a.dispatchEvent(b)},function(b){var c=new P("locationError");c.code=b.errorCode;c.message=b.uk;a.dispatchEvent(c)})},xX:function(){return this.ds?this.ds:s},sQ:function(){this.B?this.He(this.B):this.map&&this.He(this.map)},Aa:function(){Vb.prototype.Aa.call(this);this.C.style.cssText="height: 32px;";this.C.innerHTML=this.Vq()},Vq:function(){return[\'<div class="BMap_geolocationContainer" style="height: 32px; margin: 0px; box-sizing: border-box; border: 1px solid #d9d7d5; border-radius: 3px; -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2); overflow: hidden;">\', \'<div class="BMap_geolocationIconBackground" style="float: left; width: 32px; height: 32px; background-image: url(\\\'\'+B.ka+"images/geolocation-control/mobile/gradient-bg-1x64.png\'); background-size: 1px 32px; background-repeat: repeat-x;\\">",\'<div class="BMap_geolocationIcon" style="width: 32px; height: 32px; cursor: pointer; background-image: url(\\\'\'+B.ka+"images/geolocation-control/mobile/default-40x40.png\'); background-size: 20px 20px; background-repeat: no-repeat; background-position: center center;\\"></div>", "</div>",\'<div class="BMap_geolocationAddress" style="display: none; float: left; min-width: 50px; padding-left: 10px; padding-right: 10px; border-left: 1px solid #d9d7d5; background-image: url(\'+B.ka+\'images/geolocation-control/mobile/gradient-bg-1x64.png); background-size: 1px 32px; background-repeat: repeat-x;">\',\'<div style="height: 32px; display: table-cell; vertical-align: middle;"><div class="BMap_geolocationAddressText" style="font-size: 12px; color: #666666; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; display: block; min-width: 50px; max-width: 200px;"></div></div></div></div>\'].join("")}, Lr:function(a){this.Xo.style.backgroundImage="url(\'"+a+"\')"},xU:function(a){this.DD.style.display="block";this.vL.textContent=a},VQ:function(){this.vL.textContent="";this.DD.style.display="none"}});Zb.prototype.location=Zb.prototype.location;Zb.prototype.getAddressComponent=Zb.prototype.xX; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('groundoverlay', 'z.extend(vc.prototype,{ib:function(){if(this.map){this.V||this.Ej();var a=this.map.fa();if(a<this.z.Bs||a>this.z.As)this.U();else{var b=this.z.bb.Ve(),c=this.z.bb.Rf(),a=this.map.Xe(b).x,e=this.map.Xe(c).y,c=this.map.Xe(c).x,b=this.map.Xe(b).y;this.V.style.left=a+"px";this.V.style.top=e+"px";this.V.style.width=c-a+"px";this.V.style.height=b-e+"px";this.show()}}},draw:function(){this.ib()},Ej:function(){if(!this.V){this.V=document.createElement("div");var a=this.V.style;a.cssText="position: absolute; -moz-user-select: none; overflow: hidden;"; a.zIndex=mc.Ck(this.z.bb.Ve().lat);this.z.opacity&&(a.opacity=this.z.opacity,a.filter="alpha(opacity="+100*parseInt(this.z.opacity,10)+")");this.Og=document.createElement("img");this.Og.style.width="100%";this.z.X_&&(this.Og.style.height="100%");this.V.appendChild(this.Og);var b=this;this.Og.onload=function(){b.P1=b.Og.naturalWidth||b.Og.width;b.O1=b.Og.naturalHeight||b.Og.height};this.z.Gm&&(this.Og.src=this.z.Gm);this.map.Tf().KE.appendChild(this.V);b=this;z.M(this.V,"click",function(a){b.dispatchEvent(new P("click"), a)});z.M(this.V,"dblclick",function(a){b.dispatchEvent(new P("dblclick"),a)})}},s_:function(a){this.z.bb=a;this.map&&this.ib();this.V.style.zIndex=mc.Ck(this.z.bb.Ve().lat)},ve:function(){return this.z.bb},HF:function(a){this.z.opacity=a;this.V.style.opacity=a;this.V.style.filter="alpha(opacity="+100*parseInt(a,10)+")"},XX:function(){return this.z.opacity},x_:function(a){this.z.Gm=a;this.Og&&(this.Og.src=a)},KX:function(){return this.z.Gm},p5:function(a){this.z.Bs=a},r3:function(){return this.z.Bs}, o5:function(a){this.z.As=a},q3:function(){return this.z.As}});vc.prototype.setBounds=vc.prototype.s_;vc.prototype.getBounds=vc.prototype.ve;vc.prototype.setOpacity=vc.prototype.HF;vc.prototype.getOpacity=vc.prototype.XX;vc.prototype.setImageURL=vc.prototype.x_;vc.prototype.getImageURL=vc.prototype.KX;vc.prototype.setDispalyOnMinLevel=vc.prototype.n5;vc.prototype.setDispalyOnMaxLevel=vc.prototype.m5; ');

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('hotspot', 'B.Ye(function(a){function b(a){var b=this.R;b.Qe=[];if(this.Jh)for(var c in this.Jh)if(!(0==c.indexOf("vector_")&&!this.Sb()||0==c.indexOf("tile_")&&this.Sb())){var i=this.Jh[c],k;for(k in i){var m=i[k];if(!(m.Lh>this.fa()||m.Hf<this.fa())){var n=this.$b(m.ga());n.x<this.width&&n.y<this.height&&a.offsetX<n.x+m.Jv[1]&&(a.offsetX>n.x-m.Jv[3]&&a.offsetY>n.y-m.Jv[0]&&a.offsetY<n.y+m.Jv[2])&&b.Qe.push(m)}}}}function c(){a.R.XK&&0<a.R.Qe.length?(a.platform.style.cursor="pointer",a.R.XK=t):(a.R.Qe=[],a.platform.style.cursor= a.K.Vb)}a.R.ju=new uc("",{za:new O(15,-3),Wp:{border:"1px solid #aaa",background:"#fffec2",whiteSpace:"nowrap",font:"12px "+G.fontFamily,mozBoxShadow:"1px 2px 6px #666",webkitBoxShadow:"1px 2px 6px #666",boxShadow:"1px 2px 6px #666",padding:"2px 4px"}});a.addEventListener("mousemove",function(c){if(!(c.fb&&!(c.fb instanceof oc)||c.zb)){var f=this.R,g=f.Qe.slice(0);b.call(this,c);for(var i=f.Qe.slice(0),k=0;k<g.length;k++)for(var m=0;m<i.length;m++)g[k]===i[m]&&(g.splice(k,1),k--,i.splice(m,1),m--); if(0<g.length){var n=new P("onhotspotout");n.spots=g.slice(0);this.dispatchEvent(n)}if(0==f.Qe.length&&!f.$x)this.platform.style.cursor!=this.K.Vb&&(this.platform.style.cursor=this.K.Vb),f.Up&&(clearTimeout(f.Up),f.Up=s),f.QF=setTimeout(function(){f.ju.U()},400);else if(0<i.length&&(this.platform.style.cursor="pointer",n=new P("onhotspotover"),n.spots=i.slice(0),this.dispatchEvent(n),f.Up&&(clearTimeout(f.Up),f.Up=s),f.QF&&(clearTimeout(f.QF),f.QF=s),n.spots[0].eE()))f.Up=setTimeout(function(){f.ju.dd(n.spots[0].eE()); f.ju.sa(c.point);f.ju.show();a.Ga(f.ju)},400)}});a.addEventListener("clickex",function(a){var c=this.R;a.overlay||(0==c.Qe.length&&b.call(this,a),0<c.Qe.length&&(a=new P("onhotspotclick"),a.spots=c.Qe.slice(0),a.spots.sort(function(a,b){return a.ga().lat-b.ga().lat}),this.dispatchEvent(a),c.Qe.length=0))});a.addEventListener("load",c);a.addEventListener("moveend",c);a.addEventListener("zoomend",c);a.addEventListener("dragend",function(){this.R.XK=q})}); ');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('markeranimation', 'Ic[1]={options:{duration:400},Cm:[{Zb:0,translate:[0,-500],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[0,-20],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}],du:[{Zb:0,translate:[375,-375],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[15,-15],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]}; Ic[2]={options:{duration:700,loop:vb},Cm:[{Zb:0,translate:[0,0],jc:"ease-out"},{Zb:0.5,translate:[0,-20],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}],du:[{Zb:0,translate:[0,0],jc:"ease-out"},{Zb:0.5,translate:[15,-15],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]};Ic[3]={options:{duration:200,fP:q},Cm:[{Zb:0,translate:[0,0],jc:"ease-in"},{Zb:1,translate:[0,-20],jc:"ease-out"}],du:[{Zb:0,translate:[0,0],jc:"ease-in"},{Zb:1,translate:[15,-15],jc:"ease-out"}]}; Ic[4]={options:{duration:500,fP:q},Cm:[{Zb:0,translate:[0,-20],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[0,-10],jc:"ease-in"},{Zb:1,translate:[0,-0.0],jc:"ease-out"}],du:[{Zb:0,translate:[15,-15],jc:"ease-in"},{Zb:0.5,translate:[0,0],jc:"ease-out"},{Zb:0.75,translate:[8,-8],jc:"ease-in"},{Zb:1,translate:[0,0],jc:"ease-out"}]}; ');

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
_jsload2&&_jsload2('vmlcontext', 'var hg=10,ig=hg/2; function jg(a){this.li=[[1,0,0],[0,1,0],[0,0,1]];this.cN=[];this.TJ=[];this.qk=[];this.lineWidth=1;this.miterLimit=1*hg;this.canvas=a;var b=L("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.position="absolute";a.appendChild(b);this.fL=b;this.TM=this.Iw=this.Hw=1;document.styleSheets.canvas_style||(a=document.createStyleSheet(),a.owningElement.id="canvas_style",a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\\\:shape,g_vml_\\\\:fill,g_vml_\\\\:stroke{behavior:url(#default#VML)}")} function kg(a,b){for(var c=[[1,0,0],[0,1,0],[0,0,1]],e=0;3>e;e++)for(var f=0;3>f;f++){for(var g=0,i=0;3>i;i++)g+=a[e][i]*b[i][f];c[e][f]=g}return c}var lg=jg.prototype;lg.clearRect=function(){this.fL.innerHTML=""};lg.beginPath=function(){this.qk=[]};lg.moveTo=function(a,b){var c=this.fi(a,b);this.qk.push({type:"moveTo",x:c.x,y:c.y});this.rs=c.x;this.ss=c.y};lg.lineTo=function(a,b){var c=this.fi(a,b);this.qk.push({type:"lineTo",x:c.x,y:c.y});this.rs=c.x;this.ss=c.y}; lg.bezierCurveTo=function(a,b,c,e,f,g){mg(this,this.fi(a,b),this.fi(c,e),this.fi(f,g))};function mg(a,b,c,e){a.qk.push({type:"bezierCurveTo",oW:b.x,pW:b.y,qW:c.x,rW:c.y,x:e.x,y:e.y});a.rs=e.x;a.ss=e.y}lg.quadraticCurveTo=function(a,b,c,e){a=this.fi(a,b);c=this.fi(c,e);e={x:this.rs+2/3*(a.x-this.rs),y:this.ss+2/3*(a.y-this.ss)};mg(this,e,{x:e.x+(c.x-this.rs)/3,y:e.y+(c.y-this.ss)/3},c)}; lg.arc=function(a,b,c,e,f,g){var c=c*hg,i=a+Math.cos(e)*c-ig,k=b+Math.sin(e)*c-ig,e=a+Math.cos(f)*c-ig,f=b+Math.sin(f)*c-ig;i==e&&!g&&(i+=0.125);a=this.fi(a,b);i=this.fi(i,k);e=this.fi(e,f);this.qk.push({type:g?"at":"wa",x:a.x,y:a.y,wa:c,X0:i.x,Z0:i.y,W0:e.x,Y0:e.y})};lg.rect=function(a,b,c,e){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+e);this.lineTo(a,b+e);this.closePath()}; lg.stroke=function(a){var b=[],c=a?this.fillStyle:this.strokeStyle,e=c.color,c=c.alpha;b.push("<g_vml_:shape",\' filled="\',!!a,\'"\',\' style="position:absolute;width:\',10,"px;height:",10,\'px;"\',\' coordorigin="0 0" coordsize="\',10*hg," ",10*hg,\'"\',\' stroked="\',!a,\'"\',\' path="\');for(var f=s,g=s,i=s,k=s,m=0;m<this.qk.length;m++){var n=this.qk[m];switch(n.type){case "moveTo":b.push(" m ",Math.round(n.x),",",Math.round(n.y));break;case "lineTo":b.push(" l ",Math.round(n.x),",",Math.round(n.y));break;case "close":b.push(" x "); n=s;break;case "bezierCurveTo":b.push(" c ",Math.round(n.oW),",",Math.round(n.pW),",",Math.round(n.qW),",",Math.round(n.rW),",",Math.round(n.x),",",Math.round(n.y));break;case "at":case "wa":b.push(" ",n.type," ",Math.round(n.x-this.Hw*n.wa),",",Math.round(n.y-this.Iw*n.wa)," ",Math.round(n.x+this.Hw*n.wa),",",Math.round(n.y+this.Iw*n.wa)," ",Math.round(n.X0),",",Math.round(n.Z0)," ",Math.round(n.W0),",",Math.round(n.Y0))}if(n){if(f==s||n.x<f)f=n.x;if(i==s||n.x>i)i=n.x;if(g==s||n.y<g)g=n.y;if(k== s||n.y>k)k=n.y}}b.push(\' ">\');a?b.push(\'<g_vml_:fill color="\',e,\'" opacity="\',c,\'" />\'):(a=this.TM*this.lineWidth,1>a&&(c*=a),b.push("<g_vml_:stroke",\' opacity="\',c,\'"\',\' joinstyle="\',this.lineJoin,\'"\',\' miterlimit="\',this.miterLimit,\'"\',\' endcap="\',"square",\'"\',\' weight="\',a,\'px"\',\' color="\',e,\'" />\'));b.push("</g_vml_:shape>");this.fL.insertAdjacentHTML("beforeEnd",b.join(""))};lg.fill=function(){this.stroke(q)};lg.closePath=function(){this.qk.push({type:"close"})}; lg.fi=function(a,b){var c=this.li;return{x:hg*(a*c[0][0]+b*c[1][0]+c[2][0])-ig,y:hg*(a*c[0][1]+b*c[1][1]+c[2][1])-ig}};lg.save=function(){var a={};copyState(this,a);this.TJ.push(a);this.cN.push(this.li);this.li=kg(createMatrixIdentity(),this.li)};lg.restore=function(){copyState(this.TJ.pop(),this);this.li=this.cN.pop()}; function ng(a,b,c){var e;a:{for(e=0;3>e;e++)for(var f=0;2>f;f++)if(!isFinite(b[e][f])||isNaN(b[e][f])){e=t;break a}e=q}e&&(a.li=b,c&&(a.TM=Math.sqrt(Math.abs(b[0][0]*b[1][1]-b[0][1]*b[1][0]))))}lg.translate=function(a,b){ng(this,kg([[1,0,0],[0,1,0],[a,b,1]],this.li),t)};lg.rotate=function(a){var b=Math.cos(a),a=Math.sin(a);ng(this,kg([[b,a,0],[-a,b,0],[0,0,1]],this.li),t)};lg.scale=function(a,b){this.Hw*=a;this.Iw*=b;ng(this,kg([[a,0,0],[0,b,0],[0,0,1]],this.li),q)}; lg.transform=function(a,b,c,e,f,g){ng(this,kg([[a,b,0],[c,e,0],[f,g,1]],this.li),q)};lg.setTransform=function(a,b,c,e,f,g){ng(this,[[a,b,0],[c,e,0],[f,g,1]],q)};B.aQ=jg; ');

View File

@@ -90,6 +90,15 @@ export function msgHandle(data: object) {
data,
});
}
//刷新redis缓存
export function refreshRedis() {
return service({
url: "/accept/refreshIdCache",
method: "get",
});
}
// 地图统计数量
export function mapCount(data: object) {
return service({
@@ -303,3 +312,12 @@ export function exportLineData() {
responseType: "blob",
});
}
// 无锡地图查询
export function stationMap(data: object) {
return service({
url: "/scale/stationMap",
method: "post",
data,
});
}

BIN
src/assets/bdz.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -58,11 +58,13 @@ const emit = defineEmits(["timeChangeInfo"]);
interface Props {
nextFlag?: boolean;
theCurrentTime?: boolean;
setWatch?: boolean;
}
const props = withDefaults(defineProps<Props>(), {
nextFlag: false,
theCurrentTime: true,
setWatch: true,
});
const interval = ref(3);
@@ -573,8 +575,10 @@ function formatDate(date: Date): string {
}
watch(timeValue, async (newVal) => {
await store.dispatch("setTimeType", { type: interval, value: newVal });
await emit("timeChangeInfo");
if (props.setWatch) {
await store.dispatch("setTimeType", { type: interval, value: newVal });
await emit("timeChangeInfo");
}
});
defineExpose({

View File

@@ -58,7 +58,6 @@ export default createStore({
state.count++;
},
[Mutations.SET_STATE](state: State, data: any) {
console.log("🚀 ~ data:", data)
state[data.key] = data.value;
},
[Mutations.SET_TOKEN](state: State, data: any) {

View File

@@ -5,7 +5,7 @@ import store from "@/store/index";
const service = axios.create({
baseURL: "/api",
timeout: 60 * 1000,
timeout: 60 * 1000 * 3,
headers: { "Content-Type": "application/json;charset=utf-8" },
});

View File

@@ -10,7 +10,7 @@ class HttpRequest {
getInsideConfig() {
const config = {
baseURL: this.baseUrl, // 所有的请求地址前缀部分(没有后端请求不用写)
timeout: 80000, // 请求超时时间(毫秒)
timeout: 60 * 1000 * 3, // 请求超时时间(毫秒)
};
return config;
}

View File

@@ -2,16 +2,16 @@
<div v-loading="loading" element-loading-background="#343849c7">
<div class="iconBox">
<div class="div">
<img src="@/assets/jcd.png" alt="" />
<img src="@/assets/bdz.png" alt="" />
<span>变电站</span>
</div>
<div class="div">
<!-- <div class="div">
<img src="@/assets/img/txzcwzj.png" alt="" />
<span>监测点</span>
</div>
</div> -->
</div>
<div class="bmSelect">
<!-- <div class="bmSelect">
<el-select
v-model="value"
@change="setIcon"
@@ -28,7 +28,7 @@
:value="item.stationName"
/>
</el-select>
</div>
</div> -->
<div>
<baidu-map
@@ -45,26 +45,26 @@
:double-click-zoom="false"
>
<!-- 线-->
<div v-if="zoom > 13">
<!-- <div v-if="zoom > 13">
<bm-polyline
:path="path"
v-for="(path, index) in polyline"
:key="index"
></bm-polyline>
</div>
</div> -->
<!-- 变电站-->
<template v-if="zoom > 13">
<template>
<bm-marker
:position="path"
v-for="path in siteList"
:key="path.subId"
:icon="path.icon"
@click="markerClick(path)"
@click="pointClick(path)"
></bm-marker>
</template>
<!-- -->
<div maxZoom="12">
<!-- <div maxZoom="12">
<bm-marker
:position="path"
v-for="path in areaLineInfo"
@@ -72,7 +72,7 @@
:icon="path.icon"
@click="pointClick(path)"
></bm-marker>
</div>
</div> -->
<bm-marker
:position="infoWindowPoint"
:icon="{ url: '1', size: { width: 0, height: 0 } }"
@@ -89,7 +89,7 @@
</template>
<script setup lang="ts">
import { ref, reactive, nextTick, onMounted } from "vue";
import { substationCount } from "@/api/statistics/index";
import { stationMap } from "@/api/statistics/index";
import { useStore } from "vuex";
// import { BmlMarkerClusterer } from "vue-baidu-map-3x";
const emit = defineEmits(["pointClick"]);
@@ -129,7 +129,7 @@ const handler = async ({ BMap, map }: any) => {
const markerClick = (e: any) => {
zoom.value = 15;
infoWindowPoint.value = e;
infoWindowPoint.value.show = true;
// infoWindowPoint.value.show = true;
center.value.lng = 120.124367;
center.value.lat = 31.555421;
@@ -150,87 +150,87 @@ const init = () => {
polyline.value = [];
dataList.value = [];
areaLineInfo.value = [];
// substationCount({
// deptId: store.state.deptId,
// type: store.state.timeType,
// startTime: store.state.timeValue[0],
// endTime: store.state.timeValue[1],
// }).then((res: any) => {
// dataList.value = res.data;
dataList.value = [
{
stationId: 156,
stationName: "110kV北京电视台变",
gdName: "检修分公司",
longitude: 120.33,
latitude: 31.52,
lineCount: 1,
eventCount: 1,
lineEventDetails: [
{
gdName: "检修分公司",
pictureId: "5debb8bd0ce26527675eedffd74a3198",
pictureName: "无锡线上",
},
{
gdName: "检修分公司",
pictureId: "35b1301833e3fdfc872b1a27a17c7245",
pictureName: "无锡修改1011--工程部",
},
],
},
];
stationMap({
deptId: store.state.deptId,
type: store.state.timeType,
startTime: store.state.timeValue[0],
endTime: store.state.timeValue[1],
}).then((res: any) => {
dataList.value = res.data;
// dataList.value = [
// {
// stationId: 156,
// stationName: "110kV北京电视台变",
// gdName: "检修分公司",
// longitude: 120.33,
// latitude: 31.52,
// lineCount: 1,
// eventCount: 1,
// lineEventDetails: [
// // {
// // gdName: "检修分公司",
// // pictureId: "5debb8bd0ce26527675eedffd74a3198",
// // pictureName: "无锡线上",
// // },
// {
// gdName: "检修分公司",
// pictureId: "35b1301833e3fdfc872b1a27a17c7245",
// pictureName: "无锡修改1011--工程部",
// },
// ],
// },
// ];
let data = dataList.value;
let r = 0.0035;
let list = data.filter((item: any) => item.latitude != 0);
let list = data.filter((item: any) => item.lat != 0);
list.forEach((item: any) => {
// 变电站图标
item.icon = {
url: new URL("@/assets/jcd.png", import.meta.url).href,
url: new URL("@/assets/bdz.png", import.meta.url).href,
size: {
width: 40,
height: 40,
},
};
if (
item.lineEventDetails?.length > 10 &&
item.lineEventDetails?.length < 100
) {
r = 0.0055;
} else if (item.lineEventDetails.length >= 100) {
r = 0.01055;
}
item.lng = item.longitude;
item.lat = item.latitude;
item.lineEventDetails.forEach((val: any, i: number) => {
val.lng =
item.longitude +
r * Math.cos((2 * Math.PI * i) / item.lineEventDetails.length);
val.lat =
item.latitude +
r * Math.sin((2 * Math.PI * i) / item.lineEventDetails.length);
// 监测点图标
val.icon = {
url: new URL("@/assets/img/txzcwzj.png", import.meta.url).href,
size: {
width: 40,
height: 40,
},
};
// if (
// item.lineEventDetails?.length > 10 &&
// item.lineEventDetails?.length < 100
// ) {
// r = 0.0055;
// } else if (item.lineEventDetails.length >= 100) {
// r = 0.01055;
// }
// item.lng = item.longitude;
// item.lat = item.latitude;
// item.lineEventDetails.forEach((val: any, i: number) => {
// val.lng =
// item.longitude +
// r * Math.cos((2 * Math.PI * i) / item.lineEventDetails.length);
// val.lat =
// item.latitude +
// r * Math.sin((2 * Math.PI * i) / item.lineEventDetails.length);
// // 监测点图标
// val.icon = {
// url: new URL("@/assets/img/txzcwzj.png", import.meta.url).href,
// size: {
// width: 40,
// height: 40,
// },
// };
polyline.value.push([
{
lng: item.lng,
lat: item.lat,
},
{
lng: val.lng,
lat: val.lat,
},
]);
});
// polyline.value.push([
// {
// lng: item.lng,
// lat: item.lat,
// },
// {
// lng: val.lng,
// lat: val.lat,
// },
// ]);
// });
areaLineInfo.value.push(...item.lineEventDetails);
// areaLineInfo.value.push(...item.lineEventDetails);
});
siteList.value = list;
@@ -239,7 +239,7 @@ const init = () => {
setTimeout(() => {
loading.value = false;
}, 0);
// });
});
};
const moveenFlag = ref(true);
@@ -268,11 +268,11 @@ const checkMapData = () => {
console.warn("当前区域无离线地图数据,将返回默认位置");
// 使用正确的BMap.Point创建方式
const point = new BMapInstance.value.Point(116.404367, 39.915421);
const point = new BMapInstance.value.Point(120.124367,31.555421);
// 平滑移动并设置合适缩放级别
mapInstance.value.panTo(point);
mapInstance.value.setZoom(12);
mapInstance.value.setZoom(11);
// zoom.value = 12;
}
} catch (error) {
@@ -344,6 +344,7 @@ onMounted(() => {
defineExpose({
setIcon,
init
});
</script>
<style lang="scss" scoped>
@@ -362,9 +363,9 @@ defineExpose({
position: absolute;
bottom: 10px;
left: 10px;
z-index: 2000;
z-index: 1;
width: 110px;
height: 70px;
height: 40px;
padding: 10px;
background: #ffffff10 !important;
border: 1px solid #ccc;

View File

@@ -494,8 +494,8 @@ const generateFn = async () => {
loading1.value = true;
await getDynamicData({
lineId: dotList.value.id,
searchBeginTime: tabList.value[activeName.value].time[0],
searchEndTime: tabList.value[activeName.value].time[1],
searchBeginTime: time.value[0],
searchEndTime: time.value[1],
time: tabList.value[activeName.value].key,
type: form.type,
userDataId: form.loadDataId,

View File

@@ -623,6 +623,7 @@ watch(flag, (newVal) => {
setTimeout(() => {
if (flag.value == 0) {
initHasEventList();
// flag 变化后重新绑定事件
bindRankingClickEvent();
}
@@ -635,6 +636,29 @@ watch(flag, (newVal) => {
}
}, 100);
});
watch(
() => store.state.showMap,
(newVal) => {
if (newVal) {
return;
}
setTimeout(() => {
if (flag.value == 0) {
initHasEventList();
// flag 变化后重新绑定事件
bindRankingClickEvent();
}
if (flag.value == 2) {
renderChart2();
initHasUpEventList();
}
if (flag.value == 1) {
callHarmOneImageApi(getFirstTableData.value, getTimes.value);
}
}, 100);
}
);
// 暂降记录个数
const initialData = () => {
@@ -688,11 +712,9 @@ const initialAggregation = () => {
tableData.splice(0, tableData.length);
});
};
const interval = ref(null);
// 提取发送消息到iframe的公共方法
const sendMessageToIframe = (type: string, payload: any) => {
// console.log(123,store.state.iframeLoad);
// window.parent.postMessage(
// {
// type,
@@ -701,6 +723,10 @@ const sendMessageToIframe = (type: string, payload: any) => {
// "*"
// );
// 如果 iframe 已加载完成,直接发送消息
if (store.state.showMap) {
return;
}
if (store.state.iframeLoad) {
window.parent.postMessage(
{
@@ -711,9 +737,13 @@ const sendMessageToIframe = (type: string, payload: any) => {
);
return;
}
if (interval.value) {
clearInterval(interval.value);
interval.value = null;
}
// 如果未加载完成,每 1 秒尝试发送一次
const interval = setInterval(() => {
interval.value = setInterval(() => {
console.log("等待 iframe 加载1 秒后重试...");
if (store.state.iframeLoad) {
// 加载完成后发送消息并清除定时器
@@ -724,7 +754,7 @@ const sendMessageToIframe = (type: string, payload: any) => {
},
"*" // 建议替换为具体域名
);
clearInterval(interval);
clearInterval(interval.value);
}
}, 1000);
};
@@ -937,7 +967,7 @@ const initialResponsibilityList = () => {
// 根据实际字段进行拼接,示例:
const content = `${item.lineName || ""}进行${
item.dataTimes || ""
}次谐波电压溯源,溯源对象:${item.userDataName || ""}`.trim();
}次谐波电压溯源,溯源对象:${item.userDataName || "系统测点"}`.trim();
return {
...item,
content: content,
@@ -1267,7 +1297,7 @@ const handleChildClose = () => {
const init = () => {
initialData();
initialAggregation();
initHasEventList();
// initHasEventList();
initialResponsibilityList();
// getInfoListAmplify();
tableInfoAmplify();

View File

@@ -20,6 +20,7 @@
v-model="form.userList"
:data="dataTree"
multiple
filterable
show-checkbox
ref="treeRef"
@@ -46,6 +47,7 @@
v-model="form.index"
filterable
multiple
:multiple-limit="5"
collapse-tags
collapse-tags-tooltip
@@ -553,11 +555,13 @@ const generateFn = async () => {
return ElMessage.warning("请选择用采用户");
}
loading1.value = true;
console.log("🚀 ~ generateFn ~ dotList.value:", dotList.value.id, tabList.value);
await getDynamicData({
userDataId: "123",
lineId: dotList.value.id,
searchBeginTime: tabList.value[activeName.value].time[0],
searchEndTime: tabList.value[activeName.value].time[1],
searchBeginTime: time.value[0],
searchEndTime: time.value[1],
time: tabList.value[activeName.value].key,
type: form.type,
userList: form.userList,

View File

@@ -1,6 +1,6 @@
<template>
<!-- 项目管理弹框 -->
<el-dialog v-model="dialogVisible" title="项目管理" width="1600px">
<el-dialog v-model="dialogVisible" title="项目管理" width="1600px" @close="handleDialogClose">
<!-- <el-card class="transparent-card"> -->
<div style="display: flex; justify-content: space-between">
<div>
@@ -65,22 +65,9 @@
<Edit @click="editd(item)" />
</el-icon>
</el-tooltip>
<!-- <el-tooltip
class="item"
effect="dark"
content="修改项目"
placement="top"
>
<Edit
style="margin-left: 5px; width: 16px"
class="xiaoshou color"
@click="editd(item)"
/> </el-tooltip
> -->
</span>
<div style="display: flex; justify-content: end">
<el-button
<!-- <el-button
v-if="item.active == 0"
class="color"
:icon="Compass"
@@ -95,7 +82,7 @@
style="padding: 3px 0; color: #82bd51"
type="text"
>已激活</el-button
>
> -->
<el-button
class="color"
:icon="Share"
@@ -145,7 +132,7 @@
</div>
</el-dialog>
<!-- 新增弹框 -->
<el-dialog v-model="innerVisible" :title="dialogTitle" width="500px">
<el-dialog v-model="innerVisible" :title="dialogTitle" width="500px" >
<el-form
ref="ruleFormRef"
:model="ruleForm"
@@ -163,17 +150,22 @@
placeholder="请输入项目名称"
/>
</el-form-item>
<!-- <el-form-item label="工程项目" prop="projectIds">
<el-form-item label="变电站名称">
<el-select
v-model="ruleForm.projectIds"
v-model="ruleForm.substionIds"
placeholder="请选择"
:popper-append-to-body="false"
popper-class="custom-select-dropdown"
multiple
:teleported="false"
>
<el-option label="Zone one111" value="shanghai" />
<el-option label="Zone two" value="beijing" />
<el-option
v-for="item in dataList"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.bindFlag == true && !setDisabled?.includes(item.id)"
/>
</el-select>
</el-form-item> -->
</el-form-item>
<el-form-item label="项目排序" prop="orderBy">
<el-input v-model="ruleForm.orderBy" placeholder="请输入" />
</el-form-item>
@@ -218,11 +210,15 @@ import {
active,
getActive,
} from "@/api/manage_wx/index";
import { stationMap } from "@/api/statistics/index";
import { useStore } from "vuex";
const emit = defineEmits<{
(e: "project-change", project: { id: string; name: string }): void;
(e: "station-map-updated"): void;
}>();
const store = useStore();
const projectData = ref([]);
// 系统配置弹框
@@ -240,6 +236,10 @@ const firstForm = ref({
id: "",
});
const dataList = ref([]); //变电站
const setDisabled = ref([]);
const params = reactive({
pageNum: 1,
pageSize: 10,
@@ -251,6 +251,7 @@ interface RuleForm {
projectIds: [];
orderBy: string;
remark: string;
substionIds: [];
}
const formSize = ref("default");
@@ -260,17 +261,18 @@ const ruleForm = reactive<RuleForm>({
projectIds: [],
orderBy: "100",
remark: "",
substionIds: [],
});
const rules = reactive<FormRules<RuleForm>>({
name: [{ required: true, message: "请输入项目名称", trigger: "blur" }],
projectIds: [
{
required: true,
message: "请选择",
trigger: "change",
},
],
// projectIds: [
// {
// required: true,
// message: "请选择",
// trigger: "change",
// },
// ],
orderBy: [
{
required: true,
@@ -280,6 +282,21 @@ const rules = reactive<FormRules<RuleForm>>({
],
});
const handleDialogClose = () => {
emit('station-map-updated');
};
const init = () => {
stationMap({
deptId: store.state.deptId,
type: store.state.timeType,
startTime: store.state.timeValue[0],
endTime: store.state.timeValue[1],
}).then((res: any) => {
dataList.value = res.data;
});
};
onMounted(() => {
fetachData();
});
@@ -334,6 +351,8 @@ const onReset = () => {
const onSubmitadd = () => {
innerVisible.value = true;
dialogTitle.value = "新增项目";
init();
setDisabled.value = [];
// Object.assign(ruleForm, {}); 不生效
Object.assign(ruleForm, {
//生效,但是一个个赋值,麻烦
@@ -342,6 +361,7 @@ const onSubmitadd = () => {
orderBy: "100",
projectIds: ["1dd1b076e104f15459ac401fc1b902c4"],
remark: "",
substionIds: [],
});
//Object.keys(ruleForm).forEach((key) => delete ruleForm[key]); //生效,但是有默认值的,一进去会直接报校验
};
@@ -352,6 +372,8 @@ const querdata = (e: any) => {};
const editd = (row: any) => {
innerVisible.value = true;
dialogTitle.value = "修改项目";
init();
setDisabled.value = JSON.parse(JSON.stringify(row.substionIds));
// Object.assign(ruleForm, row);
Object.assign(ruleForm, {
id: row.id,
@@ -359,6 +381,7 @@ const editd = (row: any) => {
orderBy: row.orderBy,
projectIds: row.projectIds,
remark: row.remark,
substionIds: row.substionIds,
});
};
@@ -371,6 +394,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
} else {
getEdit();
}
init();
emit('station-map-updated');
console.log("submit!");
} else {
console.log("error submit!", fields);
@@ -410,6 +435,7 @@ const getEdit = async () => {
const resetForm = () => {
innerVisible.value = false;
emit('station-map-updated')
};
const onTableSizeChange = (size: number) => {

View File

@@ -6,7 +6,7 @@
type="primary"
color="#223772"
@click="showDetailClick"
v-if="iframeLoaded"
v-if="iframeLoaded && !store.state.showMap"
>
<span v-if="props.currentFlag == 0">暂降溯源</span>
<span v-if="props.currentFlag == 1">谐波溯源</span>
@@ -422,7 +422,13 @@
align="center"
label="责任对象"
show-overflow-tooltip
/>
>
<template #default="scope">
<span>{{
scope.row.userDataName==null? '系统测点':scope.row.userDataName
}}</span>
</template>
</el-table-column>
<el-table-column
prop="updateTime"
align="center"

View File

@@ -5,6 +5,7 @@
width="100%"
height="100%"
@pointClick="pointClick"
ref="bdMapRef"
></bdMap>
<!-- 添加加载事件监听 -->
@@ -16,9 +17,15 @@
frameborder="0"
scrolling="no"
id="iframeLeft"
:key="keyof"
@load="onIframeLoad"
></iframe>
<el-button class="backButton" @click="backButton" size="small" :icon="Back"
<el-button
v-if="!store.state.showMap"
class="backButton"
@click="backButton"
size="small"
:icon="Back"
>返回</el-button
>
</div>
@@ -34,8 +41,10 @@ const props = defineProps<{
project: { id: string; name: string } | null;
}>();
const iframeSrc = ref("");
const bdMapRef = ref(null)
const iframeSrc = ref("");
const keyof = ref(0);
// 监听 props 变化
watch(
() => props.project,
@@ -56,7 +65,8 @@ watch(
);
// 点击监测点传入 接线图id
const pointClick = (row: any) => {
setUrl(row.pictureId, row.pictureName);
setUrl(row.configId, row.configName);
keyof.value += 1;
};
onMounted(() => {
@@ -71,8 +81,8 @@ onMounted(() => {
});
const setUrl = (url: string, nam: string) => {
iframeSrc.value =
// window.location.origin +
"http://192.168.1.179:4001" +
window.location.origin +
// "http://192.168.1.179:4001" +
`/zutai/?id=${url}&&name=${encodeURIComponent(
nam
)}&&preview=true&&display=true&&graphicDisplay=wx#/preview`;
@@ -133,9 +143,23 @@ const sendKeysToIframe = (keyList: string[]) => {
};
// 返回地图
const backButton = () => {
window.removeEventListener("message", handleMessage);
store.dispatch("setStateKey", { key: "iframeLoad", value: false });
store.dispatch("setStateKey", { key: "showMap", value: true });
// window.removeEventListener("message", handleMessage);
};
// 监听 station-map-updated 事件并转发给 bdMap 组件
const handleStationMapUpdated = () => {
if (bdMapRef.value && typeof bdMapRef.value.init === 'function') {
bdMapRef.value.init()
}
}
// 暴露方法给父组件调用
defineExpose({
handleStationMapUpdated
})
</script>
<style lang="scss" scoped>
.plan {

View File

@@ -87,13 +87,14 @@
<Management
ref="createRef"
@project-change="onProjectChange"
@station-map-updated="handleStationMapUpdated"
></Management>
</div>
<div class="body-box">
<!-- 第三行数据 -->
<div class="content-box">
<dv-border-box-10 :color="color[0]" style="position: relative">
<Plan :project="currentProject" />
<Plan :project="currentProject" ref="planRef"/>
<!-- flag 值传递给 SecurityDetail 组件 -->
<!-- showDetail从SecurityDetail 组件传过来 -->
<SecurityDetail
@@ -235,6 +236,8 @@ const onProjectChange = (project: { id: string; name: string }) => {
currentProject.value = project;
};
const planRef = ref() // 添加对 Plan 组件的引用
const smsQueriesRef = ref(); // 短信查询组件引用
const smsConfigRef = ref(); // 短信查询组件引用
const sendRef = ref(); // 短信查询组件引用
@@ -380,6 +383,14 @@ const createRef = ref();
const openDialog = () => {
createRef.value.open();
};
// 处理 Management 组件发出的 station-map-updated 事件
const handleStationMapUpdated = () => {
// 通过 Plan 组件转发给 bdMap
if (planRef.value && typeof planRef.value.handleStationMapUpdated === 'function') {
planRef.value.handleStationMapUpdated()
}
}
</script>
<style lang="scss" scoped>

View File

@@ -113,7 +113,7 @@
v-for="(value, index) in infoWindowPoint.objName.split(
';'
)"
style="white-space: nowrap"
style="white-space: nowrap; font-size: 13px"
>
{{ value }}
</div>
@@ -198,8 +198,8 @@ const markerClick = (e: any) => {
zoom.value = 15;
infoWindowPoint.value = e;
infoWindowPoint.value.show = true;
center.value.lng = 116.404367;
center.value.lat = 39.915421;
center.value.lng = e.lng;
center.value.lat = e.lat+ 0.01000001;;
setTimeout(() => {
center.value.lng = e.lng;
@@ -285,41 +285,41 @@ const init = () => {
const moveenFlag = ref(true);
const checkMapData = () => {
if (!mapInstance.value || !BMapInstance.value || !moveenFlag.value) return;
// if (!mapInstance.value || !BMapInstance.value || !moveenFlag.value) return;
// 获取地图容器
const container = mapInstance.value.getContainer();
// // 获取地图容器
// const container = mapInstance.value.getContainer();
setTimeout(() => {
try {
// 1. 获取所有图片瓦片
const tiles = Array.from(container.querySelectorAll("img"));
// setTimeout(() => {
// try {
// // 1. 获取所有图片瓦片
// const tiles = Array.from(container.querySelectorAll("img"));
// 2. 检查是否有离线地图瓦片
const hasOfflineTiles = tiles.some((tile: any) => {
// 确保tile是有效的DOM元素
if (!tile || !tile.src) return false;
// // 2. 检查是否有离线地图瓦片
// const hasOfflineTiles = tiles.some((tile: any) => {
// // 确保tile是有效的DOM元素
// if (!tile || !tile.src) return false;
// 检查是否是离线瓦片
return tile.src.includes("/plugin/offline/tiles/");
});
// // 检查是否是离线瓦片
// return tile.src.includes("/plugin/offline/tiles/");
// });
// 3. 如果没有离线瓦片,回到默认位置
if (!hasOfflineTiles) {
console.warn("当前区域无离线地图数据,将返回默认位置");
// // 3. 如果没有离线瓦片,回到默认位置
// if (!hasOfflineTiles) {
// console.warn("当前区域无离线地图数据,将返回默认位置");
// 使用正确的BMap.Point创建方式
const point = new BMapInstance.value.Point(116.404367, 39.915421);
// // 使用正确的BMap.Point创建方式
// const point = new BMapInstance.value.Point(116.404367, 39.915421);
// 平滑移动并设置合适缩放级别
mapInstance.value.panTo(point);
mapInstance.value.setZoom(12);
// zoom.value = 12;
}
} catch (error) {
console.error("地图检测出错:", error);
}
}, 1000); // 适当缩短延迟时间
// // 平滑移动并设置合适缩放级别
// mapInstance.value.panTo(point);
// mapInstance.value.setZoom(12);
// // zoom.value = 12;
// }
// } catch (error) {/
// console.error("地图检测出错:", error);
// }
// }, 1000); // 适当缩短延迟时间
};
// 处理地图滚轮缩放修正scale导致的坐标偏移

View File

@@ -1,25 +1,56 @@
<!--报表导出-->
<template>
<el-dialog :close-on-click-modal="false" draggable v-model="machineVisible" :title="title" width="500">
<el-dialog
:close-on-click-modal="false"
draggable
v-model="machineVisible"
:title="title"
width="500"
>
<div>
<div class="smsConfig">
<el-form :model="form" inline label-width="auto" class=" ml30 mt10">
<el-form :model="form" inline label-width="auto" class="ml30 mt10">
<el-form-item label="时间">
<el-date-picker v-model="timeValue" size="small" type="daterange" :disabled-date="isFutureDate"
style="width: 250px; margin-right: 10px" unlink-panels :clearable="false" range-separator=""
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm:ss" />
<el-date-picker
v-model="timeValue"
size="small"
type="datetimerange"
:disabled-date="isFutureDate"
style="width: 250px; margin-right: 10px"
unlink-panels
:clearable="false"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item label="部门集合">
<el-select v-model="form.deptList" placeholder="请选择部门集合" style="width: 250px" size="small" multiple
collapse-tags collapse-tags-tooltip>
<el-select
v-model="form.deptList"
placeholder="请选择部门集合"
style="width: 250px"
size="small"
multiple
collapse-tags
collapse-tags-tooltip
>
<template #header>
<el-checkbox v-model="checkAll" :indeterminate="indeterminate" @change="handleCheckAll">
<el-checkbox
v-model="checkAll"
:indeterminate="indeterminate"
@change="handleCheckAll"
>
全部
</el-checkbox>
</template>
<el-option v-for="item in deptLists" :key="item.deptsIndex" :label="item.deptsname"
:value="item.deptsIndex" />
<el-option
v-for="item in deptLists"
:key="item.deptsIndex"
:label="item.deptsname"
:value="item.deptsIndex"
/>
</el-select>
</el-form-item>
</el-form>
@@ -32,7 +63,14 @@
</div>
<template #footer>
<el-button :icon="Close" @click="setUp" size="small">取消</el-button>
<el-button type="primary" :icon="Check" @click="save" size="small">确定</el-button>
<el-button
type="primary"
:icon="Check"
@click="save"
size="small"
:loading="loading"
>确定</el-button
>
</template>
</el-dialog>
</template>
@@ -41,17 +79,18 @@ import { ref, watch, inject, onMounted } from "vue";
import { ElMessage } from "element-plus";
import { Check, Close } from "@element-plus/icons-vue";
import { getDept, exportForms } from "@/api/statistics/index";
import type { CheckboxValueType } from 'element-plus'
import type { CheckboxValueType } from "element-plus";
import { useStore } from "vuex";
const store = useStore();
const machineVisible = ref(false);
const title = ref("报表导出");
const timeValue = ref([]);
const deptLists = ref();
const loading = ref(false);
//form表单校验规则
const emit = defineEmits(["flushed"]);
const checkAll = ref(false)
const indeterminate = ref(false)
const checkAll = ref(false);
const indeterminate = ref(false);
const form = ref({
searchBeginTime: "",
searchEndTime: "",
@@ -88,28 +127,28 @@ const init = () => {
// }
// })
watch(
() => form.value.deptList, // 使用函数返回值的形式
() => form.value.deptList, // 使用函数返回值的形式
(val) => {
if (val.length == 0) {
checkAll.value = false
indeterminate.value = false
checkAll.value = false;
indeterminate.value = false;
} else if (val.length == deptLists.value.length) {
checkAll.value = true
indeterminate.value = false
checkAll.value = true;
indeterminate.value = false;
} else {
indeterminate.value = true
indeterminate.value = true;
}
},
{ deep: true } // 添加深度监听选项
)
{ deep: true } // 添加深度监听选项
);
const handleCheckAll = (val: CheckboxValueType) => {
indeterminate.value = false
indeterminate.value = false;
if (val) {
form.value.deptList = deptLists.value.map((_) => _.deptsIndex)
form.value.deptList = deptLists.value.map((_) => _.deptsIndex);
} else {
form.value.deptList = []
form.value.deptList = [];
}
}
};
const save = () => {
if (!timeValue.value[0]) {
ElMessage.warning("请选择时间!");
@@ -122,25 +161,29 @@ const save = () => {
(form.value.deptId = store.state.deptId),
(form.value.searchBeginTime = timeValue.value[0]),
(form.value.searchEndTime = timeValue.value[1]
? timeValue.value[1].split(" ")[0] + " 23:59:59"
: "");
exportForms(form.value).then((res: any) => {
let blob = new Blob([res], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8",
(form.value.searchEndTime = timeValue.value[1]);
exportForms(form.value)
.then((res: any) => {
let blob = new Blob([res], {
type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8",
});
// createObjectURL(blob); //创建下载的链接
const url = window.URL.createObjectURL(blob);
const link = document.createElement("a"); // 创建a标签
link.href = url;
link.download = "导出报表.docx"; // 设置下载的文件名
document.body.appendChild(link);
link.click(); //执行下载
document.body.removeChild(link);
machineVisible.value = false;
loading.value = false;
})
.catch((err) => {
loading.value = false;
});
// createObjectURL(blob); //创建下载的链接
const url = window.URL.createObjectURL(blob);
const link = document.createElement("a"); // 创建a标签
link.href = url;
link.download = "导出报表.docx"; // 设置下载的文件名
document.body.appendChild(link);
link.click(); //执行下载
document.body.removeChild(link);
machineVisible.value = false;
});
};
const isFutureDate = (time: any) => {

View File

@@ -1,10 +1,30 @@
<template>
<!--短信查询-->
<el-dialog :close-on-click-modal="false" draggable v-model="machineVisible" :title="title" width="1200px" :before-close="handleClose">
<el-dialog
:close-on-click-modal="false"
draggable
v-model="machineVisible"
:title="title"
width="1200px"
:before-close="handleClose"
>
<div class="formBox">
<div class="formLeft">
<datePicker ref="datePickerRef" />
<span>发送结果 </span>
<datePicker
:setWatch="false"
ref="datePickerRef"
style="width: 470px"
/>
<span>关键字搜索 </span>
<el-input
size="small"
v-model="searchValue"
placeholder="请输入关键字"
clearable
style="width: 130px"
></el-input>
<span class="ml20">发送结果 </span>
<el-select
size="small"
v-model="state"
@@ -32,7 +52,8 @@
</div>
<div class="tableBox">
<el-table
:scrollbar-always-on="true" :data="tableData"
:scrollbar-always-on="true"
:data="tableData"
height="500px"
size="small"
stripe
@@ -104,7 +125,7 @@ import { ElMessage } from "element-plus";
import datePicker from "@/components/datePicker/index.vue";
import { Search, Download } from "@element-plus/icons-vue";
import table2excel from "js-table2excel";
const emit= defineEmits(["close"]);
const emit = defineEmits(["close"]);
const machineVisible = ref(false);
const title = ref("已发送短信查询");
const datePickerRef = ref();
@@ -124,14 +145,15 @@ const inquire = () => {
searchBeginTime: datePickerRef.value.timeValue[0],
searchEndTime: datePickerRef.value.timeValue[1],
sendResult: state.value,
searchValue: searchValue.value,
}).then((res) => {
total.value = res.data.total;
tableData.value = res.data.records;
loading.value = false;
});
};
const searchValue = ref("");
const open = (text: string, data?: any) => {
machineVisible.value = true;
nextTick(() => {
inquire();
@@ -183,6 +205,7 @@ const exportTable = () => {
searchBeginTime: datePickerRef.value.timeValue[0],
searchEndTime: datePickerRef.value.timeValue[1],
sendResult: state.value,
searchValue: searchValue.value,
}).then((res) => {
setTimeout(() => {
table2excel(
@@ -197,7 +220,7 @@ const exportTable = () => {
};
const handleClose = () => {
emit("close", false);
}
};
defineExpose({ open });
</script>

View File

@@ -1,8 +1,8 @@
<template>
<div id="index" ref="appRef">
<div
class="bg"
:class="
class="bg"
:class="
store.state.screenNotic == 1
? pushFlag
? bottomTextRef?.urgentList.length > 0
@@ -23,53 +23,57 @@
>
</div>
<dv-decoration-10 class="dv-dec-10" :color="color[1]" />
<dv-decoration-10 class="dv-dec-10" :color="color[1]"/>
<div class="d-flex jc-center">
<dv-decoration-8 class="dv-dec-8" :color="color[2]" />
<dv-decoration-8 class="dv-dec-8" :color="color[2]"/>
<div class="title">
<span class="title-text">{{ title }}</span>
</div>
<dv-decoration-8
class="dv-dec-8"
:reverse="true"
:color="color[2]"
class="dv-dec-8"
:reverse="true"
:color="color[2]"
/>
</div>
<dv-decoration-10 class="dv-dec-10-s" :color="color[1]" />
<dv-decoration-10 class="dv-dec-10-s" :color="color[1]"/>
</div>
<div class="d-flex secondLine">
<div class="react-right mr-1">
<span class="text fw-b" style="display: flex">
<datePicker
ref="datePickerRef"
@timeChangeInfo="timeChangeInfo"
ref="datePickerRef"
@timeChangeInfo="timeChangeInfo"
/>
</span>
</div>
<el-dropdown placement="bottom">
<el-icon :size="22" :color="color[1][0]" class="mt-0.5 mt5">
<Menu />
<Menu/>
</el-icon>
<template #dropdown>
<el-dropdown-menu>
<!-- <el-dropdown-item @click="handleClick('1')"
>已发送短信查询</el-dropdown-item
>
<el-dropdown-item @click="handleClick('2')"
<!-- <el-dropdown-item @click="handleClick('2')"
>模拟短信发送</el-dropdown-item
> -->
<el-dropdown-item @click="handleClick('3')"
>系统配置</el-dropdown-item
>
<el-dropdown-item @click="handleClick('4')"
>报表导出</el-dropdown-item
>
<el-dropdown-item @click="handleClick('5')"
>台账导出</el-dropdown-item
>
<el-dropdown-item @click="handleClick('3')">
系统配置
</el-dropdown-item>
<el-dropdown-item @click="handleClick('4')">
报表导出
</el-dropdown-item>
<el-dropdown-item @click="handleClick('5')">
台账导出
</el-dropdown-item>
<el-dropdown-item @click="handleClick('1')">
短信管理
</el-dropdown-item>
<el-dropdown-item @click="handleClick('6')">
缓存刷新
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
@@ -79,33 +83,33 @@
<!-- 第三行数据 -->
<div class="content-box">
<dv-border-box-13 :color="color[0]">
<eventStatistics ref="eventStatisticsRef" />
<eventStatistics ref="eventStatisticsRef"/>
</dv-border-box-13>
<dv-border-box-10 :color="color[0]">
<Map ref="mapRef" />
<Map ref="mapRef"/>
<!-- <center-left /> -->
</dv-border-box-10>
<dv-border-box-13 :color="color[0]">
<alarm ref="alarmRef" />
<alarm ref="alarmRef"/>
<!-- 紧急告警 -->
<div
class="icon"
v-if="!(bottomTextRef?.urgentList.length == 0)"
:color="color[0][1]"
:class="
class="icon"
v-if="!(bottomTextRef?.urgentList.length == 0)"
:color="color[0][1]"
:class="
bottomTextRef?.urgentList.length > 0
? 'animate-flash-red'
: ''
"
@click="drawerClick"
@click="drawerClick"
>
<!-- <WarnTriangleFilled /> -->
<span
class="iconfont icon-gaojing"
:style="{
class="iconfont icon-gaojing"
:style="{
color:
bottomTextRef?.urgentList.length > 0
? '#ff0000'
@@ -113,12 +117,12 @@
}"
></span>
<span
class="count"
v-if="bottomTextRef?.urgentList.length > 0"
>{{
class="count"
v-if="bottomTextRef?.urgentList.length > 0"
>{{
bottomTextRef?.urgentList.length > 99
? "99+"
: bottomTextRef?.urgentList.length
? "99+"
: bottomTextRef?.urgentList.length
}}</span
>
</div>
@@ -128,18 +132,18 @@
<!-- 第四行数据 -->
<div class="bototm-box">
<dv-border-box-13 :color="color[0]">
<endpointStatistics ref="endpointStatisticsRef" />
<endpointStatistics ref="endpointStatisticsRef"/>
<!-- <bottom-left /> -->
</dv-border-box-13>
<dv-border-box-13 :color="color[0]">
<informationTable
ref="informationTableRef"
@handleCurrentChange="handleCurrentChange"
ref="informationTableRef"
@handleCurrentChange="handleCurrentChange"
/>
</dv-border-box-13>
<dv-border-box-13 :color="color[0]">
<sendTrends ref="sendTrendsRef" />
<sendTrends ref="sendTrendsRef"/>
</dv-border-box-13>
</div>
<!-- 底部 -->
@@ -147,22 +151,22 @@
</div>
</div>
<bottomText
ref="bottomTextRef"
@handleCurrentChange="handleCurrentChange"
ref="bottomTextRef"
@handleCurrentChange="handleCurrentChange"
/>
<!-- 已发短信查询 -->
<smsQueries
ref="smsQueriesRef"
v-if="smsQueriesFlag"
@close="smsQueriesFlag = false"
ref="smsQueriesRef"
v-if="smsQueriesFlag"
@close="smsQueriesFlag = false"
/>
<!-- 系统配置 -->
<Config ref="ConfigRef" @flushed="inquire" />
<Config ref="ConfigRef" @flushed="inquire"/>
<!-- 报表导出 -->
<ReportForms ref="reportForms" />
<ReportForms ref="reportForms"/>
</div>
</template>
@@ -178,11 +182,11 @@ import {
watch,
} from "vue";
import { formatTime, getDateRange, stopSpeak } from "@/utils/index"; //引入封装好的
import {formatTime, getDateRange, stopSpeak} from "@/utils/index"; //引入封装好的
import useDraw from "@/utils/useDraw"; // 引入封装好的屏幕适配方法
import { WEEK, title, subtitle, moduleInfo, color } from "@/constant/index"; //引入封装的标题日期
import {WEEK, title, subtitle, moduleInfo, color} from "@/constant/index"; //引入封装的标题日期
import datePicker from "@/components/datePicker/index.vue";
import { Menu, BellFilled, WarnTriangleFilled } from "@element-plus/icons-vue";
import {Menu, BellFilled, WarnTriangleFilled} from "@element-plus/icons-vue";
//页面组件
import eventStatistics from "./components/eventStatistics.vue"; //统计事件
import endpointStatistics from "./components/endpointStatistics.vue"; //终端在线统计
@@ -193,10 +197,12 @@ import Map from "./components/bdMap.vue"; //地图
import smsQueries from "./components/smsQueries.vue"; // //短信查询
import bottomText from "./components/bottomText.vue"; //边框组件
import socketClient from "@/utils/webSocketClient";
import { useStore } from "vuex";
import {useStore} from "vuex";
import Config from "./components/config.vue";
import ReportForms from "./components/reportForms.vue";
import { exportLineData } from "@/api/statistics/index";
import {exportLineData,refreshRedis} from "@/api/statistics/index";
import {ElMessage} from "element-plus";
const store = useStore();
const smsQueriesRef = ref(); // 短信查询组件引用
const endpointStatisticsRef = ref(); // 终端在线统计组件引用
@@ -225,7 +231,7 @@ const timeInfo: any = reactive({
const timeType = ref(3);
const reportForms = ref();
// 适配处理
const { appRef, calcRate, windowDraw, unWindowDraw } = useDraw();
const {appRef, calcRate, windowDraw, unWindowDraw} = useDraw();
// 连接webSocket客户端
const init = () => {
if (!dataSocket.socketServe) {
@@ -292,6 +298,10 @@ const handleClick = (type: string) => {
smsQueriesFlag.value = true;
setTimeout(() => {
if (type === "1") {
smsQueriesRef.value.open("已发送短信查询");
}
if (type === "3") {
ConfigRef.value.open("系统配置");
}
@@ -312,6 +322,12 @@ const handleClick = (type: string) => {
document.body.removeChild(link);
});
}
if (type === "6") {
refreshRedis().then((res: any) => {
ElMessage.success("刷新缓存成功");
});
}
}, 100);
};
@@ -342,13 +358,13 @@ const inquire = async () => {
};
watch(
store.state,
(val) => {
timeChangeInfo();
},
{
deep: true,
}
store.state,
(val) => {
timeChangeInfo();
},
{
deep: true,
}
);
</script>