Commit e056acf7 by 夏新然

解决冲突

2 parents 42273f29 b7b9eada
Showing 55 changed files with 1516 additions and 431 deletions
No preview for this file type
<?xml version="1.0" encoding="UTF-8"?>
<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>51CE9DB1-4C55-40A4-B61F-9CD23023C54F</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-291.000000, -367.000000)">
<g id="信息存储" transform="translate(291.000000, 367.000000)">
<rect id="矩形备份-3" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="35" height="35"></rect>
<g id="存储" transform="translate(7.000000, 6.000000)" fill="#3BB7FF" fill-rule="nonzero">
<path d="M7.56277015,5.04166667 C7.56277015,4.40916667 8.0551511,3.89583333 8.66277015,3.89583333 C9.2703892,3.89583333 9.76277015,4.40916667 9.76277015,5.04166667 C9.76277015,5.67416667 9.2703892,6.1875 8.66277015,6.1875 C8.0551511,6.1875 7.56277015,5.67416667 7.56277015,5.04166667 Z M17.6000042,17.6458333 C17.6000042,18.2783333 17.1076232,18.7916667 16.5000042,18.7916667 L5.50000415,18.7916667 C4.8923851,18.7916667 4.40000415,18.2783333 4.40000415,17.6458333 C4.40000415,17.0133333 4.8923851,16.5 5.50000415,16.5 L16.5000042,16.5 C17.1076232,16.5 17.6000042,17.0133333 17.6000042,17.6458333 Z M17.6000042,13.0625 C17.6000042,13.695 17.1076232,14.2083333 16.5000042,14.2083333 L5.50000415,14.2083333 C4.8923851,14.2083333 4.40000415,13.695 4.40000415,13.0625 C4.40000415,12.43 4.8923851,11.9166667 5.50000415,11.9166667 L16.5000042,11.9166667 C17.1076232,11.9166667 17.6000042,12.43 17.6000042,13.0625 Z M19.8000042,19.9375 C19.8000042,20.57 19.3076232,21.0833333 18.7000042,21.0833333 L3.30000415,21.0833333 C2.6923851,21.0833333 2.20000415,20.57 2.20000415,19.9375 L2.20000415,8.52958781 C2.20000415,8.37719198 2.25867082,8.23167114 2.36028987,8.12510864 L4.40000415,6.00073364 L4.40000415,7.33333781 C4.40000415,8.59948364 5.38476606,9.62500448 6.60000415,9.62500448 L15.4000042,9.62500448 C16.6152422,9.62500448 17.6000042,8.59948364 17.6000042,7.33333781 L17.6000042,2.75000448 L18.7000042,2.75000448 C19.3076232,2.75000448 19.8000042,3.26333781 19.8000042,3.89583781 L19.8000042,19.9375045 L19.8000042,19.9375 Z M6.60000415,3.70905355 L7.36057558,2.91728271 L7.36057562,2.91728267 C7.46561396,2.80960634 7.60423299,2.74977974 7.74819467,2.74999045 L15.4000083,2.74999045 L15.4000083,6.18749101 C15.4000083,6.81999101 14.9076273,7.33332434 14.3000083,7.33332434 L7.70000829,7.33332434 C7.09238924,7.33332434 6.60000415,6.81999101 6.60000415,6.18749101 L6.60000415,3.70904455 L6.60000415,3.70905355 Z M19.8000042,0.458333333 L7.07143272,0.458333333 C6.78019463,0.458333333 6.50152796,0.578645833 6.29619463,0.792916667 L0.325809583,6.99760417 L0.325809524,6.99760423 C0.120877232,7.20801705 0.00417615327,7.50142401 0.00314285714,7.80885423 L0,21.0833334 C0,22.3483334 0.984761905,23.3750001 2.19895647,23.3750001 L19.8,23.3750001 C21.0152381,23.3750001 22,22.3494792 22,21.0833334 L22,2.75000006 C22,1.48385423 21.0152381,0.458333333 19.8,0.458333333 L19.8000042,0.458333333 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>7ED4EC4C-2CDC-4CAD-8439-035274EB51E0</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-291.000000, -148.000000)">
<g id="分析资源" transform="translate(291.000000, 148.000000)">
<rect id="矩形" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="35" height="35"></rect>
<path d="M15.1586307,26.1703695 C14.1114494,26.1276036 13.0830595,25.8703911 12.1335892,25.4137706 C10.7422325,24.725194 9.84480738,23.6237101 9.46682212,22.1558606 L9.67784456,22.1558606 C9.8892508,22.1564175 10.0849936,22.0412172 10.1917529,21.8534106 C10.2985122,21.665604 10.3001775,21.4335322 10.196125,21.2441231 L8.65635681,18.5327783 C8.54970665,18.3437338 8.35336611,18.2273943 8.14097507,18.2273943 C7.92858404,18.2273943 7.7322435,18.3437338 7.62559334,18.5327783 L6.07886841,21.2465099 C5.97314646,21.435962 5.97375139,21.6690974 6.08045499,21.8579656 C6.18715859,22.0468338 6.38372123,22.16269 6.59598934,22.1618275 L7.0284694,22.1618275 C7.58037425,25.2717591 9.54102782,26.8386587 11.0923906,27.6024178 C12.3674975,28.2174452 13.7511472,28.5581447 15.1586307,28.6036637 C15.8134528,28.6056408 16.3462057,28.0615784 16.3494119,27.3876106 C16.3508024,27.0639357 16.2254119,26.7533369 16.001561,26.5259948 C15.7776334,26.296919 15.4743483,26.1689656 15.1586307,26.1703695 L15.1586307,26.1703695 Z M28.9272654,13.7592838 C28.8218868,13.5659554 28.6232009,13.4463613 28.4078255,13.4466199 L27.9753454,13.4466199 C27.4234406,10.3366882 25.4616276,8.76978867 23.9114242,8.00244943 C22.636339,7.38735846 21.2526763,7.04665575 19.8451841,7.00120896 C19.4144602,6.98731612 19.0105505,7.21589327 18.7911975,7.59767207 C18.5718444,7.97945087 18.5718444,8.45386912 18.7911975,8.83564792 C19.0105505,9.21742672 19.4144602,9.44600386 19.8451841,9.43211103 C20.8923308,9.47785302 21.9205411,9.73492211 22.8713851,10.1887099 C24.2627418,10.8784799 25.1601669,11.9787703 25.5381522,13.4466199 L25.3271297,13.4466199 C25.112234,13.4427422 24.9120853,13.5587182 24.8038487,13.7498345 C24.6956122,13.9409509 24.6961944,14.1773552 24.805371,14.3679043 L26.3439796,17.0792492 C26.4506298,17.2682937 26.6469703,17.3846332 26.8593614,17.3846332 C27.0717524,17.3846332 27.2680929,17.2682937 27.3747431,17.0792492 L28.9110329,14.3714845 C29.0235545,14.1854373 29.0297608,13.9513704 28.9272654,13.7592838 L28.9272654,13.7592838 Z M26.6442808,17.7952656 L18.9535563,17.7952656 C18.1480604,17.7926287 17.4924648,18.4615257 17.4879939,19.2905705 L17.4879939,27.1107479 C17.4924648,27.9397927 18.1480604,28.6086897 18.9535563,28.6060528 L26.6442808,28.6060528 C27.4497767,28.6086897 28.1053724,27.9397927 28.1098433,27.1107479 L28.1098433,19.2905705 C28.1053724,18.4615257 27.4497767,17.7926287 26.6442808,17.7952656 L26.6442808,17.7952656 Z M25.7329421,20.2273688 L25.7329421,26.1703695 L19.8695328,26.1703695 L19.8695328,20.2273688 L25.7329421,20.2273688 Z M17.500748,8.49531273 C17.4962771,7.66626788 16.8406814,6.99737089 16.0351855,7.00000777 L8.34098261,7.00000777 C7.53593873,6.99802998 6.88104978,7.66673496 6.87657962,8.49531273 L6.87657962,16.3154901 C6.87719386,16.7144904 7.03186114,17.0968799 7.30652357,17.3784559 C7.581186,17.660032 7.95332048,17.8177046 8.34098261,17.8167773 L16.0317071,17.8167773 C16.4201712,17.8189759 16.7934991,17.6618651 17.0691662,17.3801512 C17.3448334,17.0984373 17.5001373,16.7153208 17.500748,16.3154901 L17.500748,8.49531273 Z M15.119209,9.43211103 L15.119209,15.3798852 L9.25811861,15.3798852 L9.25811861,9.43211103 L15.119209,9.43211103 Z" id="形状" fill="#3BB7FF" fill-rule="nonzero"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="12px" height="16px" viewBox="0 0 12 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>DB87ED2D-0B60-4F5D-9360-22CED3FFCE03</title>
<desc>Created with Sketch.</desc>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="操作" transform="translate(-47.000000, -2.000000)" fill="#F2284F" fill-rule="nonzero">
<g transform="translate(32.000000, 1.000000)" id="删-除">
<g transform="translate(15.000000, 1.000000)">
<path d="M10.2654594,1.95458005 L1.46202698,1.95458005 C0.656740486,1.95458005 0,2.61132054 0,3.42442621 L0,3.90916163 L11.7274803,3.90916163 L11.7274803,3.41660703 C11.7274803,2.61132054 11.0707414,1.95458005 10.2654533,1.95458005 L10.2654594,1.95458005 Z M7.70104479,0.977290026 L7.91995727,2.51750571 L3.8075261,2.51750571 L4.02643857,0.977290026 L7.70105396,0.977290026 L7.70104479,0.977290026 Z M7.81832876,0 L3.90916866,0 C3.50261583,0 3.12733664,0.328370243 3.07260852,0.727103902 L2.7833311,2.7755049 C2.72860283,3.17424008 3.01006275,3.5026088 3.41661559,3.5026088 L8.30306572,3.5026088 C8.70961855,3.5026088 8.99107832,3.17423855 8.9363502,2.7755049 L8.64707278,0.727103902 C8.60016277,0.328368715 8.22488313,0 7.81833029,0 L7.81832876,0 Z M10.5078334,4.88645013 L1.21966706,4.88645013 C0.680203514,4.88645013 0.281468328,5.32427661 0.328378799,5.86374016 L1.12584764,14.6671726 C1.17275766,15.1988185 1.65749354,15.6444626 2.18913944,15.6444626 L9.52272575,15.6444626 C10.0621893,15.6444626 10.5391071,15.2066362 10.5860175,14.6671726 L11.391304,5.86374016 C11.4460323,5.32427661 11.0472985,4.88645013 10.5078334,4.88645013 L10.5078334,4.88645013 Z M3.90917019,13.6820604 L2.43932556,13.6820604 L1.95459014,6.84103018 L3.90917019,6.84103018 L3.90917019,13.6820604 L3.90917019,13.6820604 Z M6.84104027,13.6820604 L4.88646021,13.6820604 L4.88646021,6.84103018 L6.84104027,6.84103018 L6.84104027,13.6820604 Z M9.28817645,13.6820604 L7.81833182,13.6820604 L7.81833182,6.84103018 L9.77291187,6.84103018 L9.28817645,13.6820604 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="38px" height="38px" viewBox="0 0 38 38" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>8B55E524-C630-41D6-B823-8B461209158F</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-1181.000000, -820.000000)">
<g id="危险品" transform="translate(1181.000000, 820.000000)">
<rect id="矩形备份-4" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="38" height="38"></rect>
<g id="危险品车" transform="translate(6.000000, 7.000000)" fill="#3BB7FF" fill-rule="nonzero">
<path d="M26.923109,20.2461458 L24.7692606,20.2461458 C24.5000298,18.3674972 22.9250299,16.921345 21.0000174,16.921345 C19.0750174,16.921345 17.486554,18.3810137 17.2307741,20.2461458 L12.92309,20.2461458 C12.3307831,20.2461458 11.8461674,19.7595896 11.8461674,19.1513943 L11.8461674,5.64945935 L13.6634761,5.64945935 L13.6634761,18.408034 L15.8846311,18.408034 C16.7865557,16.4347793 18.7654029,15.0832332 21.0000079,15.0832332 C23.2346255,15.0832332 25.2134822,16.4347793 26.1153847,18.408034 L26.1961539,18.408034 L26.1961539,5.64945935 L28,5.64945935 L28,19.1513943 C28,19.7460731 27.5153844,20.2461458 26.9230774,20.2461458 L26.923109,20.2461458 Z M24.5673374,11.596247 C24.8634915,11.596247 25.0654157,11.7584324 25.173107,12.0692867 C25.1865685,12.1368638 25.2000301,12.2044413 25.2000301,12.285534 C25.2000301,12.677481 24.9577223,12.8937293 24.459644,12.9207591 C24.6615672,13.1234909 24.7557981,13.3397391 24.7557981,13.5289544 C24.7557981,13.7316862 24.6481059,13.9073881 24.4461827,14.056057 C24.3115671,14.1371497 24.2038749,14.1641805 24.082721,14.1641805 C23.6923372,14.1641805 23.4231042,13.8398096 23.2615656,13.1640382 L20.0577073,11.9611641 L16.8538489,13.1640382 C16.6923104,13.8262963 16.4230805,14.1641805 16.0461562,14.1641805 C15.9250023,14.1641805 15.8038484,14.1236341 15.6692319,14.056057 C15.4673087,13.9073871 15.3730778,13.7452017 15.3730778,13.5289544 C15.3730778,13.3262226 15.4673087,13.1234909 15.6692319,12.9207591 C15.1711536,12.8937282 14.9153832,12.677481 14.9153832,12.285534 C14.9153832,12.2044413 14.9288479,12.1368642 14.9423095,12.0692867 C15.0634634,11.7584314 15.2653866,11.596247 15.5615416,11.596247 C15.8038495,11.596247 16.0865419,11.717886 16.409619,11.9476476 L18.2538497,11.2718762 L16.3826938,10.5690717 C16.0730784,10.7718035 15.7769243,10.8799269 15.5211538,10.8799269 C15.2384614,10.8799269 15.0500008,10.7177415 14.9423063,10.4068872 C14.9288448,10.3393101 14.9153832,10.2717326 14.9153832,10.1906399 C14.9153832,9.79869292 15.1711527,9.58244466 15.6692287,9.55541481 C15.4673055,9.35268305 15.3730746,9.13643479 15.3730746,8.94721954 C15.3730746,8.74448778 15.4673055,8.56878587 15.6692287,8.42011697 C15.776921,8.36605507 15.8980749,8.3390211 16.0057684,8.3390211 C16.4096148,8.3390211 16.6788446,8.69042493 16.8269237,9.3797129 L20.0442226,10.5825869 L23.2615215,9.35267989 C23.4095984,8.67690842 23.6788304,8.3390211 24.0826768,8.3390211 C24.2038307,8.3390211 24.311523,8.36605199 24.4192165,8.42011381 C24.6346013,8.56878366 24.7288319,8.74448462 24.7288319,8.94721637 C24.7288319,9.14994813 24.6211397,9.35267989 24.4326778,9.55541164 C24.9307561,9.58244253 25.1730639,9.79868975 25.1730639,10.1906368 C25.1730639,10.2582139 25.1596023,10.3393066 25.1461408,10.4068841 C25.0519099,10.7177393 24.8634484,10.8799238 24.5672933,10.8799238 C24.2980625,10.8799238 24.015371,10.7718003 23.7057533,10.5690685 L21.84806,11.271873 L23.6788313,11.961161 C24.0288304,11.7178829 24.3249855,11.5962438 24.5672933,11.5962438 L24.5673374,11.596247 Z M22.1173372,8.24442583 L22.1173372,8.40661124 C22.1173372,8.67692014 22.0365679,8.89316745 21.8615677,9.06886937 C21.6865675,9.24457033 21.471184,9.35269383 21.2154135,9.37972462 C20.9731057,9.39324008 20.7846451,9.35269373 20.6500286,9.25808557 C20.4615671,9.40675542 20.2461823,9.47433288 20.017337,9.47433288 C19.7750292,9.47433288 19.546184,9.39324018 19.3442608,9.24457033 C19.2096453,9.35269383 19.0211837,9.40675573 18.7519539,9.37972494 C18.4961844,9.36620948 18.2808008,9.25808588 18.1057997,9.08238492 C17.9307995,8.90668396 17.8500302,8.67692141 17.8500302,8.42012679 L17.8500302,8.20387948 C16.9346462,7.93357058 16.2211821,7.501075 15.7231071,6.90639624 C15.2250288,6.31171747 14.9692616,5.60891299 14.9692616,4.82501581 C14.9692616,4.64931485 14.9827231,4.46009865 15.0231079,4.25736689 C15.1981081,3.04097635 15.7365687,2.04083407 16.6250307,1.24342039 C17.56734,0.405463514 18.7115692,0 20.0711969,0 C21.4308119,0 22.5750444,0.41898002 23.5173631,1.25693689 C24.4192877,2.04083407 24.9577474,3.04097635 25.1327485,4.25736689 C25.1731332,4.46009865 25.1865948,4.6493139 25.1865948,4.82501581 C25.1865948,5.63594284 24.9308254,6.33874732 24.4058241,6.93342608 C23.8673613,7.52810485 23.1000532,7.97411471 22.1173624,8.24442583 L22.1173372,8.24442583 Z M18.8865663,3.23020427 C18.6173355,2.90583346 18.2807967,2.74364806 17.9038724,2.74364806 C17.5134886,2.74364806 17.1904115,2.90583346 16.9211785,3.23020427 C16.6519477,3.55457508 16.5038696,3.94652209 16.5038696,4.41956497 C16.5038696,4.87909134 16.6384851,5.28455485 16.9211785,5.60892566 C17.1904093,5.93329648 17.5269481,6.09548188 17.9038724,6.09548188 C18.2942562,6.09548188 18.6173333,5.93329648 18.8865663,5.60892566 C19.1557971,5.28455485 19.3038752,4.89260785 19.3038752,4.41956497 C19.3038752,3.94652526 19.1557983,3.55457508 18.8865663,3.23020427 Z M20.4346451,6.51445873 C20.3134912,6.31172698 20.1923372,6.21711872 20.0711833,6.21711872 C19.9365678,6.21711872 19.8154139,6.31172698 19.6807996,6.48742762 C19.546184,6.66312858 19.4788764,6.83882828 19.4788764,7.02804669 C19.4788764,7.13617019 19.5057995,7.23077845 19.5731073,7.31187115 C19.6807996,7.43351021 19.8557998,7.48757212 20.084645,7.48757212 C20.4346441,7.48757212 20.6096453,7.35241751 20.6096453,7.0821086 C20.5961837,6.8928924 20.5423376,6.70367493 20.4346451,6.51445968 L20.4346451,6.51445873 Z M23.1000311,3.23020427 C22.8308003,2.90583346 22.4942615,2.74364806 22.1038778,2.74364806 C21.7269534,2.74364806 21.3904169,2.90583346 21.1211839,3.23020427 C20.8519531,3.55457508 20.7173375,3.94652209 20.7173375,4.41956497 C20.7173375,4.87909134 20.8519531,5.28455485 21.1211839,5.60892566 C21.3904147,5.93329648 21.7134908,6.09548188 22.1038778,6.09548188 C22.4942615,6.09548188 22.8308012,5.93329648 23.1000311,5.60892566 C23.3692619,5.28455485 23.5038774,4.89260785 23.5038774,4.41956497 C23.517339,3.94652526 23.3692619,3.55457508 23.1000311,3.23020427 Z M9.69233172,20.2461458 C9.42310091,18.3674972 7.84810103,16.921345 5.92308845,16.921345 C3.99808849,16.921345 2.40962507,18.3810137 2.15384518,20.2461458 L1.07692259,20.2461458 C0.484615639,20.2461458 0,19.7595896 0,19.1513943 L0,13.7046573 C0,12.677482 0.82115533,11.5016378 0.82115533,11.5016378 L3.23077093,8.25792967 C3.72884917,7.6632509 4.05192626,7.16317818 4.84615639,7.16317818 L9.69231279,7.16317818 C10.2846197,7.16317818 10.7692354,7.6497344 10.7692354,8.25792967 L10.7692354,19.1513722 C10.7692354,19.7460509 10.2846197,20.2326072 9.69231279,20.2461458 L9.69233172,20.2461458 Z M8.95194566,9.0012805 L4.98077921,9.0012805 C4.91347159,9.0823732 4.81924067,9.1904967 4.73847139,9.28510496 L4.65770212,9.39322846 L2.28847116,12.5828642 C2.04616334,12.9477814 1.80385552,13.4884004 1.80385552,13.7046455 L1.8577018,14.1641719 L8.95194566,14.0965948 L8.95194566,9.0012805 L8.95194566,9.0012805 Z M5.89617588,17.9214778 C7.44425467,17.9214778 8.70963784,19.2054445 8.70963784,20.7732389 C8.70963784,22.3410301 7.44425151,23.625 5.89617588,23.625 C4.34809709,23.625 3.08271391,22.3410333 3.08271391,20.7732389 C3.08271391,19.2054477 4.34810024,17.9214778 5.89617588,17.9214778 Z M21.0538867,17.9214778 C22.6019655,17.9214778 23.8673486,19.2054445 23.8673486,20.7732389 C23.8673486,22.3410301 22.6019623,23.625 21.0538867,23.625 C19.5058079,23.625 18.2404247,22.3410333 18.2404247,20.7732389 C18.2404247,19.1919312 19.505811,17.9214778 21.0538867,17.9214778 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="13px" height="16px" viewBox="0 0 13 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>F641DF01-F6EB-4FBF-A6E0-29E9E9E6C104</title>
<desc>Created with Sketch.</desc>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="操作" transform="translate(-8.000000, -2.000000)" fill="#799AF4" fill-rule="nonzero">
<g id="定位-位置" transform="translate(8.000000, 2.000000)">
<path d="M6.49998464,0 C2.91013004,0 0,2.96659375 0,6.62776563 C0,8.45740625 0.727991126,10.113875 1.90356175,11.313875 L6.49998464,16 L11.0963921,11.313875 L11.0963919,11.3138752 C12.3184024,10.0691611 13.0030522,8.38373455 12.9999795,6.6277658 C12.9999795,2.96659392 10.0898237,0 6.49998447,0 L6.49998464,0 Z M6.49998464,9.57176563 L6.49998473,9.57176563 C4.89994274,9.56762328 3.60617992,8.24956719 3.61025543,6.6278125 C3.61025543,6.62716884 3.61025543,6.62652518 3.61025543,6.62588153 L3.61025543,6.62588559 C3.60564982,5.00463559 4.89857624,3.68657309 6.4980941,3.68188069 C6.49872234,3.68188069 6.49935058,3.68188069 6.49997881,3.68188069 L6.49997894,3.68188069 C8.10002093,3.68603178 9.39378374,5.00409475 9.38969293,6.62584944 C9.38969293,6.6264879 9.38969293,6.62712637 9.38969293,6.62776483 L9.38969293,6.62777913 C9.39479926,8.24901351 8.10228009,9.56749788 6.50276377,9.57270871 C6.50183282,9.57270871 6.50090186,9.57270871 6.49997091,9.57270871 L6.49998464,9.57176563 Z" id="形状"></path>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>9B89F789-2EB4-44CD-9EE4-4DAB323DB55B</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-291.000000, -294.000000)">
<g id="运行异常" transform="translate(291.000000, 294.000000)">
<rect id="矩形备份-2" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="35" height="35"></rect>
<g id="异常提醒设置" transform="translate(4.000000, 5.000000)" fill="#3BB7FF" fill-rule="nonzero">
<rect id="矩形" opacity="0" x="0" y="0" width="26" height="26"></rect>
<path d="M23.8041134,22.2924511 L3.19619575,22.2924511 C2.16544234,22.2924511 1.61926404,21.092376 2.30459956,20.334063 L2.39865444,20.2299915 C4.67247224,17.714929 5.31325543,14.7434695 6.12564754,10.9806325 C6.23675329,10.4673213 6.35005917,9.94208518 6.46996539,9.40546626 C7.32030944,5.61390122 10.5522769,4.26259719 13.294169,4.26259719 C13.3706229,4.26259719 13.4360763,4.26368128 13.488879,4.26584943 C13.5427818,4.26422331 13.6076852,4.26259719 13.6835891,4.26259719 C16.4254812,4.26259719 19.6579987,5.61390122 20.5083427,9.40546626 C20.706903,10.2906165 20.8708115,11.1437864 21.0292197,11.9687702 C21.6810035,15.3651886 22.1958302,18.0477411 24.4960493,20.1454333 L24.6143055,20.2527571 C25.4118467,20.9801739 24.8898697,22.2924511 23.8041134,22.2924511 Z M5.8143314,19.8153314 L20.9731168,19.8153314 C19.5523932,17.5994746 19.066718,15.0686931 18.5590417,12.4289616 C18.4050337,11.6224071 18.2449755,10.7882086 18.0546656,9.93991703 C17.407282,7.05193154 14.7830961,6.7397169 13.6841391,6.7397169 C13.623636,6.7397169 13.5752335,6.74080098 13.5389316,6.7424271 L13.489429,6.74459525 L13.4399265,6.7424271 C13.4047247,6.74134302 13.3552221,6.7397169 13.2941689,6.7397169 C12.1963121,6.7397169 9.57212609,7.05193154 8.92474255,9.93991703 C8.8059364,10.4700315 8.69428061,10.9887631 8.58427492,11.4961119 C7.92039051,14.5759793 7.32635973,17.328997 5.8143314,19.8153314 Z M8.52762197,23.5223383 L18.873658,23.5223383 L18.873658,26 L8.52762197,26 L8.52762197,23.5223383 Z M13.2776681,6.07788689 C11.57753,6.07788689 10.1942082,4.71465801 10.1942082,3.03867243 C10.1936583,1.36322888 11.57753,0 13.2776681,0 C14.9778062,0 16.3611278,1.36322888 16.3611278,3.03867243 C16.3611278,4.71465799 14.9778062,6.07788689 13.2776681,6.07788689 Z M13.2776681,1.7480768 C12.5554807,1.7480768 11.9675002,2.3269748 11.9675002,3.03921446 C11.9675002,3.75145412 12.5549306,4.33035212 13.2776681,4.33035212 C14.0004055,4.33035212 14.587836,3.75145412 14.587836,3.03921446 C14.587836,2.32643276 13.9998555,1.7480768 13.2776681,1.7480768 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="35px" height="35px" viewBox="0 0 35 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>A5CE73EC-0B68-4295-B8EB-18B19B4FFA15</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-291.000000, -221.000000)">
<g id="运行路数" transform="translate(291.000000, 221.000000)">
<rect id="矩形备份" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="35" height="35"></rect>
<g id="分析" transform="translate(5.000000, 8.000000)" fill="#3BB7FF" fill-rule="nonzero">
<path d="M22.533308,0 C20.6197047,0 19.0666459,1.56001695 19.0666459,3.48260639 L19.0666457,3.48276429 C19.0658237,4.47443901 19.4844285,5.41823595 20.2150958,6.0720914 L16.7198376,12.3837237 C16.5465044,12.3545401 16.3653715,12.3395061 16.1781708,12.3395061 C15.5134379,12.3395061 14.8920383,12.5499821 14.3867763,12.9054924 L9.75011384,8.77821134 C9.93818065,8.40766664 10.0387131,7.98760008 10.0387131,7.54453824 C10.0387131,6.02168218 8.81151367,4.78800908 7.29484719,4.78800908 C5.77818071,4.78800908 4.55000321,6.02246248 4.55000321,7.54442936 C4.55000321,8.2775579 4.83860244,8.95231996 5.30833645,9.44578557 L3.14167259,12.5286436 L3.14167238,12.5286436 C2.89697194,12.4464142 2.64096647,12.4046173 2.38333914,12.4048342 C1.06860534,12.4048342 0,13.4784386 0,14.7987777 C0,16.1191168 1.0686,17.1927212 2.38333914,17.1927212 C3.69807294,17.1927212 4.76667827,16.1191168 4.76667827,14.7987777 C4.76667827,14.3274164 4.62974497,13.8852401 4.39141248,13.5146972 L6.68807439,10.2364011 L6.6880743,10.2364011 C7.3564368,10.3839147 8.05457258,10.277969 8.65193409,9.93837352 L13.3614025,14.1240138 C13.1733357,14.5308171 13.0650034,14.9800687 13.0650034,15.4523138 C13.0650034,17.171497 14.4586039,18.5714286 16.1702675,18.5714286 C17.8819346,18.5714286 19.2764029,17.171497 19.2764029,15.4523138 C19.2764029,14.4874832 18.8430701,13.6234711 18.1566697,13.0504039 L21.6016715,6.83340574 C21.8980706,6.92095672 22.2083374,6.96429007 22.5333378,6.96429007 C24.4469412,6.96429007 26,5.40428989 26,3.48170044 C26,1.56000199 24.4469341,0 22.5333378,0 L22.533308,0 Z" id="路径"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="38px" height="38px" viewBox="0 0 38 38" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61 (89581) - https://sketch.com -->
<title>C10C01C0-1D85-4F01-9CBF-A7DF53A52BEE</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="交通首页" transform="translate(-1181.000000, -890.000000)">
<g id="重型罐式" transform="translate(1181.000000, 890.000000)">
<rect id="矩形备份-5" fill="#B3E5FC" opacity="0.209999993" x="0" y="0" width="38" height="38"></rect>
<g id="危险品车" transform="translate(6.000000, 7.000000)" fill="#3BB7FF" fill-rule="nonzero">
<path d="M27.0085306,4.17837474 L25.5101555,1.12346042 C25.2661612,0.622703374 24.6874568,0.350101902 24.1181369,0.462698162 L15.7847938,2.11608535 L15.7879219,2.12497453 C13.74838,2.62573158 12.2468767,4.38282585 12.25,6.47178277 C12.2562611,8.93704826 14.4396971,10.9697071 17.0423028,10.9371134 C17.8868984,10.9252612 18.6783157,10.7059948 19.3633766,10.3267231 L19.3696328,10.3445015 L26.5831047,5.65694142 C27.0867339,5.32804182 27.2650374,4.70283627 27.0085306,4.17837474 L27.0085306,4.17837474 Z" id="路径"></path>
<path d="M9.42535215,13.4173193 L9.42535215,6.95989825 C9.42535215,6.25689821 8.88234023,5.6875 8.2119177,5.6875 L6.90747566,5.6875 C5.98526548,5.6875 5.09642474,6.05649549 4.41993503,6.71814258 L0.770530917,10.2967626 L0.770530878,10.2967627 C0.279317443,10.777303 0.000285157096,11.4500295 0,12.1544641 L0,20.1610301 C0,20.8640301 0.543011918,21.4334283 1.21343445,21.4334283 L1.82925244,21.4334283 C1.82925244,19.1812834 3.57053088,17.34903 5.72134345,17.34903 C7.87215601,17.34903 9.61040087,19.1749214 9.61040087,21.4302473 C9.61040087,21.4334283 17.7555796,21.4366093 17.7555796,21.4334283 C17.7555796,19.1812834 19.4968581,17.34903 21.6446371,17.34903 C23.792416,17.34903 25.5336945,19.1844644 25.5336945,21.4366093 C25.5336945,21.4397903 26.7865655,21.4334283 26.7865655,21.4334283 C27.4569881,21.4334283 28,20.8640301 28,20.1610301 L28,15.9621159 C28,15.2591158 27.4569881,14.6897176 26.7865655,14.6897176 L10.6387866,14.6897176 C9.96836403,14.6897176 9.42535211,14.1203194 9.42535211,13.4173194 L9.42535215,13.4173193 Z" id="路径"></path>
<path d="M2.625,20.6895039 L2.625,20.6895043 C2.625,22.0691103 3.72720765,23.1875 5.08685209,23.1875 C6.44649653,23.1875 7.54870419,22.0691103 7.54870419,20.6895043 L7.54870419,20.6895043 C7.54870419,19.3098982 6.44649653,18.1915085 5.08685209,18.1915085 C3.72720765,18.1915085 2.625,19.3098982 2.625,20.6895043 L2.625,20.6895039 Z M18.5814488,20.6895039 L18.5814488,20.6895043 C18.5814488,22.0691103 19.6836564,23.1875 21.0433009,23.1875 C22.4029453,23.1875 23.5051529,22.0691103 23.5051529,20.6895043 L23.5051529,20.6895043 C23.5051529,19.3098982 22.4029453,18.1915085 21.0433009,18.1915085 C19.6836564,18.1915085 18.5814488,19.3098982 18.5814488,20.6895043 L18.5814488,20.6895039 Z M27.1249937,7.80169619 C27.1280266,6.81174973 26.0399488,6.22271617 25.2314887,6.77474239 L20.0859139,10.2811883 C18.3079096,11.3914086 16.9037421,11.3482334 15.9493945,11.1878682 C13.4358739,10.7653677 12.1532794,9.30049364 11.5028642,7.7955283 C10.6852861,5.8989019 10.8737242,8.79781055 10.8737242,8.79781055 L10.8737242,10.5988346 C10.8737242,11.2803866 11.4177631,11.8324128 12.0894536,11.8324128 L25.9001399,11.8324128 C26.5718304,11.8324128 27.11283,11.2834705 27.1158693,10.6019186 L27.1249937,7.80169619 L27.1249937,7.80169619 Z" id="形状"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file \ No newline at end of file
No preview for this file type
...@@ -18,4 +18,117 @@ ...@@ -18,4 +18,117 @@
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
</body> </body>
<script>
function connectCamera(szDeviceIp, szUser, szPass, camType) {
var i = 0;
camType = 'ball'
switch (camType) {
case "0":
//console.log("");
break;
case "-1":
// console.log("未找到目标相机");
break;
case "rifle":
//console.log("枪机无云台操作");
break;
case "ball":
i = VionVideo.PtzRegistDev(szDeviceIp, szUser, szPass);
if (i == 1) {
console.log('云台连接成功')
return true;
} else {
//showMessagerInfo("连接云台失败");
return false;
}
break;
default:
i = VionVideo.PtzRegistDev(szDeviceIp, szUser, szPass);
if (i == 1) {
return true;
} else {
//showMessagerInfo("连接云台失败");
return false;
}
break;
}
}
</script>
<script language="javascript" event="VideoCoreEvent(EventType,nParam1,nParam2,szParam3)" for="VionVideo">
if (EventType == 1) {
if (nParam2 != 0) {
//alert("播放失败!");
} else {
}
}
//播放窗口改变事件调用云台控制事件
else if (EventType == 3) {
var curVideoIndex = VionVideo.GetCurSelWnd();
console.log('当前窗口' + curVideoIndex)
var videoInfo = JSON.parse(localStorage.getItem('video' + curVideoIndex));
console.log('相机信息' + videoInfo);
ve.videovid = videoInfo;
//根据树信息返回地址IP 用户名 密码
if (videoInfo) {
var szDeviceIp = videoInfo.vchan_prop.ip,
szUser = videoInfo.vchan_prop.user_name,
szPass = videoInfo.vchan_prop.password;
var camType = '';
if (videoInfo.vchan_prop.is_demo) {
camType = 'ball'
}
var state = connectCamera(szDeviceIp, szUser, szPass, camType);
console.log(state);
}
} else if (EventType == 4) {
//openManualCapture(szParam3);
} else if (EventType == 2) {
//setCamIcon(szParam3, 1);
} else if (EventType == 12) {
jianPanKongzhi(nParam1);
} else if (EventType == 10) {
videoEventHandle.Screenshot(szParam3);
//alert("wwww");
}
//ocx播放窗格切换
else if (EventType == 8) {
//根据拼接定义获取当前窗格数
var tmpArr = szParam3.split(':');
if (tmpArr.length > 0) {
var windowSum = tmpArr[0];
//alert("切换窗格数:" + windowSum);
var ownDefine = tmpArr.length > 1 ? tmpArr[1] : "";
//需要使用子码流播放
if (windowSum >= subNum) {
//alert("当前应使用子码流播放");
//从主码流切换至子码流
if (realVideoNum < subNum) {
//alert("从主码流切换至子码流");
realVideoNum = windowSum;
reSetHasPlayVideos(windowSum, ownDefine, 'SUB');
} else {
realVideoNum = windowSum;
}
}
//需要使用主码流播放
else {
//alert("当前应使用主码流播放");
//从子码流切换至主码流
if (realVideoNum >= subNum) {
//alert("从子码流切换至主码流");
realVideoNum = windowSum;
reSetHasPlayVideos(windowSum, ownDefine, 'MAIN');
} else {
realVideoNum = windowSum;
}
}
}
}
</script>
</html> </html>
{
"development":"http://192.168.9.133:20080", //测试环境
"pre":"http://192.168.9.133:20080", //预上线环境
"production":"http://192.168.9.133:20080" //生产环境
}
...@@ -10,6 +10,16 @@ export default { ...@@ -10,6 +10,16 @@ export default {
} }
}, },
created(){
let menus = JSON.parse(localStorage.getItem('menu'))
if(menus) {
this.$store.dispatch('GetMenuRole',menus).then(res => {})
}
},
mounted(){
}
} }
</script> </script>
<style lang="scss"> <style lang="scss">
......
let baseUrl = "/api"; // 本地代理 let baseUrl = "/api"; // 本地代理
import axios from "axios";
console.log(process.env.NODE_ENV); console.log(process.env.NODE_ENV);
switch (process.env.NODE_ENV) { switch (process.env.NODE_ENV) {
case "development": case "development":
baseUrl = "http://192.168.9.133:20080"; // 测试环境url baseUrl = "http://vion-panda.51vip.biz:52510"; // 测试环境url
// baseUrl = "http://192.168.9.61:8086"; // baseUrl = "http://192.168.9.61:8086";
break; break;
case "pre": case "pre":
......
...@@ -2,7 +2,6 @@ import api from "../index"; ...@@ -2,7 +2,6 @@ import api from "../index";
import baseUrl from "../baseUrl"; import baseUrl from "../baseUrl";
export default { export default {
getDev(params) { getDev(params) {
//重点车辆
return api.get(`${baseUrl}/api/v1/devconf_fx/devs`); return api.get(`${baseUrl}/api/v1/devconf_fx/devs`);
}, },
getGlobalWs(uid, clientid) { getGlobalWs(uid, clientid) {
...@@ -10,5 +9,29 @@ export default { ...@@ -10,5 +9,29 @@ export default {
}, },
getConfParam(params) { getConfParam(params) {
return api.get(`${baseUrl}/api/v1/devconf_fx/conf_param/types`, params); //获取类型 return api.get(`${baseUrl}/api/v1/devconf_fx/conf_param/types`, params); //获取类型
},
getDevtree(devuid, devname, params) {
let url = "";
switch (devname) {
case "外部设备":
url = "/vchan_struct?vchan_type=extern";
break;
case "内部设备":
url = "/vchan_struct?vchan_type=camera";
break;
case "短视频":
url = "/vchans?vchan_type=vfile";
break;
}
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${devuid}${url}`, params);
},
getFxStream(devuid, refid) {
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/${devuid}/vchans/${refid}`); //获取分析流
},
sipSet(devid, userid) {
return api.get(`${baseUrl}/devconf_fx/devs/${devid}/${userid}/sip_server`)
},
getStore(params) {
return api.get(`${baseUrl}/api/v1/devconf_fx/store_confs`, params)
} }
}; };
...@@ -33,6 +33,14 @@ export default { ...@@ -33,6 +33,14 @@ export default {
} }
return instance.put(url, params, options); return instance.put(url, params, options);
}, },
post2(url, params, headers) {
let options = {};
if (headers) {
options.headers = headers;
}
return instance.post(url, params, options);
},
delete(url, params, headers) { delete(url, params, headers) {
let options = {}; let options = {};
......
...@@ -35,5 +35,9 @@ export default { ...@@ -35,5 +35,9 @@ export default {
getBehaviorHour(params) { getBehaviorHour(params) {
//今日事件趋势 //今日事件趋势
return api.get(`${baseUrl}/api/v1/datahandle/statistics/behavior/hour`, params); return api.get(`${baseUrl}/api/v1/datahandle/statistics/behavior/hour`, params);
},
getDevList(devid) {
// 获取设备信息
return api.get(`${baseUrl}/api/v1/devconf_fx/devs/9cb6e39adc5176b81879f6c22f1d962/vchan_struct?typea=1&s=1578967233185&limit=1000000`);
} }
}; }
\ No newline at end of file \ No newline at end of file
...@@ -6,9 +6,15 @@ export default { ...@@ -6,9 +6,15 @@ export default {
getTask(params, id) { getTask(params, id) {
return api.get(urls.getTask, params); return api.get(urls.getTask, params);
}, },
addTask(params, headers) {
return api.post2(urls.getTask, params, headers)
},
editTask(params, taskid) { editTask(params, taskid) {
return api.post(urls.editTask(taskid), params); return api.post(urls.editTask(taskid), params);
}, },
editSubTask(taskid, params) {
return api.post2(urls.setSubTask(taskid), params)
},
editRoi(taskid, subtaskid, params) { editRoi(taskid, subtaskid, params) {
return api.post(urls.editroi(taskid, subtaskid), params); return api.post(urls.editroi(taskid, subtaskid), params);
}, },
...@@ -35,5 +41,11 @@ export default { ...@@ -35,5 +41,11 @@ export default {
}, },
deleteTask(taskid) { deleteTask(taskid) {
return api.delete(urls.deleteTask(taskid)); return api.delete(urls.deleteTask(taskid));
},
deleteSubTask(taskid, subtaskid) {
return api.delete(urls.deleteSubTask(taskid, subtaskid));
},
setTaskStatus(taskid, params) {
return api.post(urls.changeTask(taskid), params);
} }
}; };
...@@ -3,12 +3,12 @@ function gitTimer() { ...@@ -3,12 +3,12 @@ function gitTimer() {
return new Date().getTime(); return new Date().getTime();
} }
export default { export default {
getTask: `${baseUrl}/api/v1/devconf_fx/tasks?s=${gitTimer()}`, getTask: `${baseUrl}/api/v1/devconf_fx/tasks`,
editTask: taskid => { editTask: taskid => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}`; return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}`;
}, },
editroi: (taskid, subtaskid) => { editroi: (taskid, subtaskid) => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtasks/${subtaskid}?s=${gitTimer()}`; // ROI设置 return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtasks/${subtaskid}}`; // ROI设置
}, },
alternatestate: (taskid, subtaskid) => { alternatestate: (taskid, subtaskid) => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}/suspend_alternate_task?s=${gitTimer()}`; return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}/suspend_alternate_task?s=${gitTimer()}`;
...@@ -17,7 +17,10 @@ export default { ...@@ -17,7 +17,10 @@ export default {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}/suspend_algorithm?s=${gitTimer()}`; return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}/suspend_algorithm?s=${gitTimer()}`;
}, },
getSubTask: id => { getSubTask: id => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${id}/subtasks?s=${gitTimer()}`; return `${baseUrl}/api/v1/devconf_fx/tasks/${id}/subtasks`;
},
setSubTask: id => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${id}/subtask`;
}, },
getstream: (devid, vrefid) => { getstream: (devid, vrefid) => {
return `${baseUrl}/api/v1/stream/devs/${devid}/vchans/${vrefid}/live/is_sending?s=${gitTimer()}`; return `${baseUrl}/api/v1/stream/devs/${devid}/vchans/${vrefid}/live/is_sending?s=${gitTimer()}`;
...@@ -35,7 +38,7 @@ export default { ...@@ -35,7 +38,7 @@ export default {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}?s=${gitTimer()}`; // 删除子任务 return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}?s=${gitTimer()}`; // 删除子任务
}, },
deleteSubTask: (taskid, subtaskid) => { deleteSubTask: (taskid, subtaskid) => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}?s=${gitTimer()}`; // 删除子任务 return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/subtask/${subtaskid}`; // 删除子任务
}, },
changeTask: taskid => { changeTask: taskid => {
return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/start_or_stop?s=${gitTimer()}`; // 切换任务 return `${baseUrl}/api/v1/devconf_fx/tasks/${taskid}/start_or_stop?s=${gitTimer()}`; // 切换任务
......
...@@ -158,3 +158,43 @@ html,body{ ...@@ -158,3 +158,43 @@ html,body{
right: .5em; right: .5em;
top:auto!important; top:auto!important;
} }
.nav-tag-box {
line-height: 40px;
}
.nav-tag-box .el-tag{
border-radius: 0;
border: 0;
border-right: 1px solid #ccc;
padding-right: 10px;
padding-left: 10px;
line-height: 25px;
background: none;
cursor: pointer;
color: #888888;
}
.nav-tag-box .el-tag .el-icon-close{
color: #888888;
cursor: pointer;
}
.nav-tag-box .el-tag .el-icon-close:hover{
background: none;
cursor: pointer;
color: #3BB7FF;
}
.alarm-event-box .el-table__body tr{
background: #fff!important;
}
.alarm-event-box .el-table .el-table__header th{
background:rgba(248,249,250,1);
box-shadow:0px 1px 0px 0px rgba(0,0,0,0.09);
}
.img-box img{
height: 20vh;
width:20vw;
height: 100%;
width: 100%;
}
.ol-popup img{
height :100%;
width :100%;
}
\ No newline at end of file \ No newline at end of file
import Vue from "vue"; import Vue from "vue";
Vue.prototype.dev_unid = "2cb6e39adc5176b81879f6c22f1d9e1c";
/** /**
* 图片上传限制 * @param {unid} 设备id
*/ */
Vue.prototype.uploadImgCondition = function(file) { Vue.prototype.setDevunid = function(devuid) {
const isJPG = file.type === "image/jpeg"; Vue.prototype.dev_unid = devuid;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error("上传头像图片只能是 JPG 格式!");
}
if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!");
}
return isJPG && isLt2M;
}; };
/** /**
* tar文件上传设置 * tar文件上传设置
*/ */
...@@ -34,3 +26,252 @@ Vue.prototype.uploadFile = function(file, type, size) { ...@@ -34,3 +26,252 @@ Vue.prototype.uploadFile = function(file, type, size) {
return isType && isSize; return isType && isSize;
}; };
Vue.prototype.globalWs = null; Vue.prototype.globalWs = null;
Vue.prototype.getCode = function(codeName, code) {
var name = window.localStorage.getItem(codeName + "-" + code);
name = name ? name : "";
return name;
};
/**
* @param {src} 图片路径
* 图片放大
*/
Vue.prototype.zoomImg = function(data) {
store.commit("setImgsrc", data);
};
Vue.filter("sexfn", function(value) {
if (!value) return;
var str = "";
if (value == 1) str = "男";
if (value == 2) str = "女";
return str;
});
Vue.filter("dbnamefn", function(value) {
let dbData = store.state.initinfo.facedbdata,
dbname = "";
dbData.forEach(ele => {
if (ele.code == value) {
dbname = ele.name;
}
});
return dbname;
});
Vue.filter("filterDeployType", function(value) {
let dbData = store.state.alarmtype,
dbname = "";
dbData.forEach(ele => {
if (ele.type == value) {
dbname = ele.name;
}
});
return dbname;
});
/**
* @param {provenceid} 省份id
* @param {cityid} 城市id
*/
Vue.prototype.showCity = function(provenceid, cityid) {
this.cData = this.$store.state.initinfo.province;
var province = provenceid;
var provinceNmae = "";
var cityName = "";
var curProvince = "";
var city = cityid;
if (province) {
this.cData.forEach(function(ele) {
if (ele.code == province) {
if (ele.cities) curProvince = ele.cities;
provinceNmae = ele.name;
}
}, this);
if (city) {
if (curProvince)
curProvince.list_data.forEach(function(ele) {
if (ele.code == city) {
cityName = ele.name;
}
});
}
} else {
provinceNmae = "--";
cityName = "--";
}
return provinceNmae + "-" + cityName;
};
/**
* @param {obj}
* 格式化时间
*/
Vue.prototype.timeForm = function(obj) {
var nowY = obj.getFullYear();
var nowM =
obj.getMonth() + 1 < 10 ? "0" + (obj.getMonth() + 1) : obj.getMonth() + 1;
var nowD = obj.getDate() < 10 ? "0" + obj.getDate() : obj.getDate();
var nowH = obj.getHours() < 10 ? "0" + obj.getHours() : obj.getHours();
var nowMi = obj.getMinutes() < 10 ? "0" + obj.getMinutes() : obj.getMinutes();
var nowS = obj.getSeconds() < 10 ? "0" + obj.getSeconds() : obj.getSeconds();
var timeNow =
nowY + "-" + nowM + "-" + nowD + " " + nowH + ":" + nowMi + ":" + nowS;
return timeNow;
};
/**
* @param {obj}
* UTC时间处理
*/
Vue.prototype.setUtcTime = function(obj) {
if (obj && obj != "") {
let num = new Date(obj).getTime();
let offset = Math.abs(new Date().getTimezoneOffset());
let time;
if (isNaN(num)) {
let ary = obj.split(":");
let h = parseInt(ary[0]) - offset / 60;
if (h < 0) {
h += 24;
}
if (h < 10) {
h = "0" + h;
}
time = h + ":" + ary[1] + ":" + ary[2];
} else {
time = this.timeForm(new Date(new Date(obj).getTime() - offset * 60000));
}
return time;
}
};
/**IE
* 检查浏览器
*/
function checkIE() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE =
userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
var isIE11 =
userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1;
if (isIE || isEdge || isIE11) {
return true;
} else {
return false;
}
}
Vue.prototype.showLocalTime = function(obj) {
if (obj == undefined) return;
let dt = "",
ndt = "";
if (checkIE()) {
dt = obj.replace(/-/g, "/");
ndt = String(dt).split(".")[0];
} else {
ndt = obj;
}
let num = new Date(ndt).getTime();
let offset = Math.abs(new Date().getTimezoneOffset());
let time;
if (isNaN(num)) {
let ary = obj.split(":");
let h = Number(ary[0]) + offset / 60;
if (h >= 24) {
h -= 24;
}
if (h < 10) {
h = "0" + h;
}
time = h + ":" + ary[1] + ":" + ary[2];
} else {
time = this.timeForm(new Date(new Date(ndt).getTime() + offset * 60000));
}
return time;
};
/**
* 本地存储相机信息
*/
Vue.prototype.setCameralocalStor = function(key, val) {
if (window.localStorage) {
localStorage[key] = val;
} else {
alert("浏览器不支持本地存储");
}
};
/**
* @param {key}
* 获取本地存储相机信息
*/
Vue.prototype.getCameralocalStor = function(key) {
var val = "";
if (window.localStorage) {
val = localStorage[key];
} else {
alert("浏览器不支持本地存储");
}
return val;
};
/**
* 图片上传限制
*/
Vue.prototype.uploadImgCondition = function(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error("上传头像图片只能是 JPG 格式!");
}
if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!");
}
return isJPG && isLt2M;
};
/**
* base64图片
*/
Vue.prototype.base64Img = function(file) {
// eslint-disable-next-line no-redeclare
var file = file.file;
return new Promise((resolve, reject) => {
var srcs = "";
var reader = new FileReader();
if (file) {
reader.readAsDataURL(file);
}
reader.onloadend = function(evt) {
srcs = reader.result.split(",")[1];
let data = {
pic_base64: srcs,
format: file.type.split("/")[1],
ofilename: file.name,
t_format: "jpg"
};
data.src = evt.target.result;
resolve(data);
};
});
};
/**
* code操作
*/
var codeNation = 1004; //民族
var codeCulture = 1005; //文化程度
var codeBlood = 1006; //血型
var codeRelationTOhead = 1009; //与户主关系
var codePersonType = 1012; //人员类别
var profession = 1013; //职业
var faith = 1020; //宗教信仰
var army = 1021; //服兵役情况
var personType = 1067; //关注人员类型
var marriage = 1007; //婚姻状况
// 获取code编码
Vue.prototype.getCode = (codeName, code) => {
var name = localStorage.getItem(codeName + "-" + code);
name = name ? name : "";
return name;
};
...@@ -24,7 +24,6 @@ Vue.use(ElementUI, { size: "small", zIndex: 3000 }); ...@@ -24,7 +24,6 @@ Vue.use(ElementUI, { size: "small", zIndex: 3000 });
Vue.use(resetCss); Vue.use(resetCss);
Vue.config.productionTip = false; Vue.config.productionTip = false;
new Vue({ new Vue({
router, router,
store, store,
......
...@@ -8,6 +8,7 @@ export const constantRouterMap = [ ...@@ -8,6 +8,7 @@ export const constantRouterMap = [
path: "/", path: "/",
name: "首页", name: "首页",
component: resolve => require(["../views/Layout/index.vue"], resolve), component: resolve => require(["../views/Layout/index.vue"], resolve),
redirect: "/trficcshow",
children: [ children: [
{ {
path: "/trficcshow", path: "/trficcshow",
...@@ -42,31 +43,34 @@ export const constantRouterMap = [ ...@@ -42,31 +43,34 @@ export const constantRouterMap = [
]; ];
export const asyncRouterMap = [ export const asyncRouterMap = [
{ {
path: "/", path: "/video_task",
name: "tanskmanage", name: "任务管理",
component: resolve => require(["../views/Layout/index.vue"], resolve), component: resolve => require(["../views/Layout/index.vue"], resolve),
meta: { meta: {
icon: "el-icon-location" icon: "el-icon-location"
}, },
children: [ children: [
{ {
path: "/task/sceneSet", path: "/video_task/config",
name: "场景设置", name: "场景设置",
meta: { meta: {
icon: "el-icon-location" icon: "el-icon-location"
}, },
component: resolve => require(["../views/sceneManage/index.vue"], resolve) component: resolve =>
require(["../views/sceneManage/index.vue"], resolve)
}, },
{ {
path: "/task/taskSet", path: "/video_task/manage",
name: "任务设置", name: "任务设置",
meta: { meta: {
icon: "el-icon-location" icon: "el-icon-location"
}, },
component: resolve => require(["../views/taskManage/index.vue"], resolve) component: resolve =>
require(["../views/taskManage/index.vue"], resolve)
} }
] ]
},{ },
{
path: "/search", path: "/search",
name: "智能检索", name: "智能检索",
component: resolve => require(["../views/Layout/index.vue"], resolve), component: resolve => require(["../views/Layout/index.vue"], resolve),
...@@ -97,7 +101,8 @@ export const asyncRouterMap = [ ...@@ -97,7 +101,8 @@ export const asyncRouterMap = [
meta: { meta: {
icon: "el-icon-location" icon: "el-icon-location"
}, },
component: resolve => require(["../views/search/pedestrian.vue"], resolve) component: resolve =>
require(["../views/search/pedestrian.vue"], resolve)
}, },
{ {
path: "/search/event", path: "/search/event",
...@@ -131,7 +136,8 @@ export const asyncRouterMap = [ ...@@ -131,7 +136,8 @@ export const asyncRouterMap = [
component: resolve => require(["../views/search/publicFlow.vue"], resolve), component: resolve => require(["../views/search/publicFlow.vue"], resolve),
} }
] ]
},{ },
{
path: "/resource", path: "/resource",
name: "资源管理", name: "资源管理",
component: resolve => require(["../views/Layout/index.vue"], resolve), component: resolve => require(["../views/Layout/index.vue"], resolve),
......
<<<<<<< HEAD
<template> <template>
<div class="home" @keyup.esc="KeyUpF11"> <div>
<el-container class="home-box">
<el-header class="headers">
<img class="logoImg" src="../assets/img/home/logo.png" alt="">
<div class="headRight">
<span>2019-11-15 16:50 星期一</span>
<img src="../assets/img/home/user.png" alt="">
<span class="exit">退出<i class="el-icon-arrow-down"></i></span>
</div>
</el-header>
<el-container style="min-height:calc(100vh - 64px);">
<el-aside :width="menuwidth">
<el-menu default-active="/trficcshow" class="el-menu-vertical-demo" :collapse="isCollapse" @select="handleSelect">
<el-submenu index="1">
<template slot="title">
<i class="el-icon-location"></i>
<span slot="title">首页</span>
</template>
<el-menu-item index="/trficcshow"> <i class="el-icon-location"></i>交通展示</el-menu-item>
<el-menu-item index="/behaviorshow"> <i class="el-icon-location"></i>综治展示</el-menu-item>
</el-submenu>
<el-submenu index="2">
<template slot="title">
<i class="el-icon-location"></i>
<span slot="title">任务管理</span>
</template>
<el-menu-item index="/task/sceneSet"> <i class="el-icon-location"></i>场景配置</el-menu-item>
<el-menu-item index="/task/taskSet"> <i class="el-icon-location"></i>任务配置</el-menu-item>
</el-submenu>
<el-submenu index="3">
<template slot="title">
<i class="el-icon-document"></i>
<span slot="title">智能检索</span>
</template>
<el-menu-item index="/search/vehicleSearch"> <i class="el-icon-location"></i>过车记录检索</el-menu-item>
<el-menu-item index="/search/xcycle"> <i class="el-icon-location"></i>非机动车检索</el-menu-item>
<el-menu-item index="/search/pedestrian"> <i class="el-icon-location"></i>行人检索</el-menu-item>
<el-menu-item index="/search/event"> <i class="el-icon-location"></i>事件查询</el-menu-item>
<el-menu-item index="/search/illegal"> <i class="el-icon-location"></i>违法记录查询</el-menu-item>
<el-menu-item index="/search/publicFlow"> <i class="el-icon-location"></i>公共客流</el-menu-item>
<el-menu-item index="/search/traficflow"> <i class="el-icon-location"></i>交通流量</el-menu-item>
</el-submenu>
<el-submenu index="4">
<template slot="title">
<i class="el-icon-document"></i>
<span slot="title">资源管理</span>
</template>
<el-menu-item index="/resource/videoEquipment"> <i class="el-icon-location"></i>视频设备</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<div class="nav"></div>
<router-view></router-view>
</el-main>
</el-container>
</el-container>
</div> </div>
</template> </template>
<script> <script>
// import HelloWorld from "@/components/HelloWorld.vue";
export default { export default {
name: "home", data() {
data(){ return {
return{
isCollapse: false,
conHeight:0,
menuwidth:"254px",
full:false
};
},
created(){
this.$router.push('/trficcshow')
},
mounted(){
this.conHeight=window.innerHeight-65;
console.log(this.conHeight)
document.addEventListener("keydown", (event)=>{
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==122 ){ // 按 Esc
if(this.full) {
this.menuwidth = "254px";
this.full = false
return
}
this.menuwidth = 0
this.full = true
}
});
},
components: {
// HelloWorld
},
methods:{
handleSelect(key, keyPath) {
this.$router.push(key)
console.log(key, keyPath);
} }
},
created(){
alert(1)
} }
}; }
</script> </script>
<style lang="stylus" scoped>
</style>
\ No newline at end of file \ No newline at end of file
<style>
</style>>
\ No newline at end of file \ No newline at end of file
...@@ -11,10 +11,22 @@ ...@@ -11,10 +11,22 @@
</el-header> </el-header>
<el-container style="min-height:calc(100vh - 64px);"> <el-container style="min-height:calc(100vh - 64px);">
<el-aside :width="menuwidth"> <el-aside :width="menuwidth">
<menus></menus> <menus @setTopBar="setTopBar" ref="leftmenu"></menus>
</el-aside> </el-aside>
<el-main> <el-main>
<div class="nav"></div> <div class="nav">
<div class="nav-tag-box">
<el-tag
v-for="(tag,index) in topbarArr" :key="index"
closable
@close="closetag(tag,index)"
@click="toPath(tag)"
>
<i :class="tag.icon"></i>
{{tag.name}}
</el-tag>
</div>
</div>
<router-view></router-view> <router-view></router-view>
</el-main> </el-main>
</el-container> </el-container>
...@@ -26,18 +38,51 @@ ...@@ -26,18 +38,51 @@
// import HelloWorld from "@/components/HelloWorld.vue"; // import HelloWorld from "@/components/HelloWorld.vue";
import menus from './menu' import menus from './menu'
export default { export default {
name: "home", name: "x",
data(){ data(){
return{ return{
isCollapse: false, isCollapse: false,
conHeight:0, conHeight:0,
menuwidth:"254px", menuwidth:"254px",
full:false, full:false,
topbarArr:[]
}; };
}, },
methods:{
setTopBar(data){
if(this.topbarArr.length < 1) {
this.topbarArr.push(data)
}
let hasBar = false;
for(let i = 0; i < this.topbarArr.length; i++) {
if(this.topbarArr[i].path == data.path){
hasBar = true
}
}
if(!hasBar) {
this.topbarArr.push(data)
}
},
toPath(data){
this.$refs.leftmenu.handleSelect(data.path)
},
closetag(data,index){
this.topbarArr.splice(index,1)
}
},
created(){ created(){
this.$api.device.getDev().then(m => {
if(m.length < 1) {
// this.infoFun('未发现运维服务,请联系相关人员')
this.$message({
message: '未发现运维服务,请联系相关人员',
type: 'error'
});
this.setDevunid('9cb6e39adc5176b81879f6c22f1d963')
return
}
this.setDevunid(m[0].dev_unid)
})
}, },
components:{ components:{
menus menus
......
...@@ -39,14 +39,15 @@ export default { ...@@ -39,14 +39,15 @@ export default {
return { return {
full: false, full: false,
isCollapse: false, isCollapse: false,
activemenu: "/search/vehicleSearch" activemenu: "/",
topbar:[]
}; };
}, },
methods: { methods: {
handleSelect(key, keyPath) { handleSelect(key, keyPath) {
this.$router.push(key); this.$router.push(key);
localStorage.setItem("curmenu", key); localStorage.setItem("curmenu", key);
console.log(key, keyPath); this.activemenu = key
} }
}, },
computed: { computed: {
...@@ -54,17 +55,23 @@ export default { ...@@ -54,17 +55,23 @@ export default {
}, },
created() { created() {
let activemenu = localStorage.getItem("curmenu"); let activemenu = localStorage.getItem("curmenu");
let menus = JSON.parse(localStorage.getItem('menu'))
if(menus) {
this.$store.dispatch('GetMenuRole',menus).then(res => {
if (activemenu) { if (activemenu) {
this.activemenu = activemenu; this.activemenu = activemenu;
this.$router.push(activemenu);
} else { } else {
this.$router.push("/"); this.$router.push('/');
this.activemenu = '/';
} }
}) },
watch:{
$route(t, f){
let obj = {
name:f.name,
path:f.path,
icon:f.meta.icon
}
this.$emit("setTopBar",obj)
} }
} }
}; };
</script> </script>
......
...@@ -166,7 +166,6 @@ export default { ...@@ -166,7 +166,6 @@ export default {
} else if (data.type == "response") { } else if (data.type == "response") {
console.log("请求任务推送成功"); console.log("请求任务推送成功");
} else if (data.event_cate) { } else if (data.event_cate) {
debugger
if (data.event_cate != "flow") { if (data.event_cate != "flow") {
try { try {
data.picsEmpty = data.pics.length == 0 ? true : false; data.picsEmpty = data.pics.length == 0 ? true : false;
......
...@@ -2,12 +2,30 @@ ...@@ -2,12 +2,30 @@
<div> <div>
<el-table :data="tableData"> <el-table :data="tableData">
<el-table-column type="index" align="center" label="#"></el-table-column> <el-table-column type="index" align="center" label="#"></el-table-column>
<el-table-column align="center" prop="eventType" label="事件地点" :formatter="eventFormatter"></el-table-column> <el-table-column
<el-table-column align="center" prop="locationName" label="抓拍类型"></el-table-column> align="center"
<el-table-column align="center" prop="startDt" label="发生时间"></el-table-column> prop="eventType"
label="事件地点"
:formatter="eventFormatter"
></el-table-column>
<el-table-column
align="center"
prop="locationName"
label="抓拍类型"
></el-table-column>
<el-table-column
align="center"
prop="startDt"
label="发生时间"
></el-table-column>
<el-table-column align="center" prop="operation" label="操作"> <el-table-column align="center" prop="operation" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip content="详情及审核" placement="bottom" effect="light" :visible-arrow="false"> <el-tooltip
content="详情及审核"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<img <img
src="../../assets/img/home/look.png" src="../../assets/img/home/look.png"
alt alt
...@@ -16,7 +34,12 @@ ...@@ -16,7 +34,12 @@
/> />
</el-tooltip> </el-tooltip>
<span class="tableSpanBorder"></span> <span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow="false"> <el-tooltip
content="删除"
placement="bottom"
effect="light"
:visible-arrow="false"
>
<img <img
src="../../assets/img/home/del.png" src="../../assets/img/home/del.png"
alt alt
...@@ -34,104 +57,104 @@ ...@@ -34,104 +57,104 @@
export default { export default {
data() { data() {
return { return {
tableData:[] tableData: []
} };
}, },
methods:{ methods: {
delFun(index, rows) { delFun(index, rows) {
rows.splice(index, 1); rows.splice(index, 1);
}, },
eventFormatter(row, column, cellValue, index){ eventFormatter(row, column, cellValue, index) {
let value='' let value = "";
this.eventTypeList.forEach(item=>{ this.eventTypeList.forEach(item => {
if(item.code==cellValue){ if (item.code == cellValue) {
value=item.name; value = item.name;
} }
}) });
return value; return value;
}
}, },
}, beforeMount() {
beforeMount(){ try {
let that = this; let that = this;
this.connect_id = new Date().getTime() this.connect_id = new Date().getTime();
// this.cws = new WebSocket('ws://'+ this.API.IP +'/websocket/v1/integrated/connects/' + this.connect_id) // this.cws = new WebSocket('ws://'+ this.API.IP +'/websocket/v1/integrated/connects/' + this.connect_id)
this.cws = new WebSocket(`ws://${this.$api.wsIP}/websocket/api/v1/integrated/connects/${this.connect_id}`) this.cws = new WebSocket(
`ws://${this.$api.wsIP}/websocket/api/v1/integrated/connects/${this.connect_id}`
);
this.cws.onopen = () =>{ this.cws.onopen = () => {
console.log('ws事件推送服务连接成功') console.log("ws事件推送服务连接成功");
} };
//事件断开 //事件断开
this.cws.onclose = () =>{ this.cws.onclose = () => {
window.clearTimeout(that.keepAlive) window.clearTimeout(that.keepAlive);
console.log('ws事件推送服务断开') console.log("ws事件推送服务断开");
that.connect_id = new Date().getTime() that.connect_id = new Date().getTime();
that.cws = new WebSocket(`ws://${this.$api.wsIP}/websocket/api/v1/integrated/connects/${this.connect_id}`) that.cws = new WebSocket(
`ws://${this.$api.wsIP}/websocket/api/v1/integrated/connects/${this.connect_id}`
);
that.keepAlive = setInterval(() => { that.keepAlive = setInterval(() => {
let message = { let message = {
type: 'request', type: "request",
id: new Date().getTime(), id: new Date().getTime(),
mts: new Date().getTime(), mts: new Date().getTime(),
command:'get /websocket/v1/recv_data/connects/' + this.connect_id +'/keep_alive' command:
} "get /websocket/v1/recv_data/connects/" +
this.cws.send(JSON.stringify(message)) this.connect_id +
"/keep_alive"
};
this.cws.send(JSON.stringify(message));
}, 20000); }, 20000);
} };
//事件推送信息 //事件推送信息
this.cws.onmessage = (evt) =>{ this.cws.onmessage = evt => {
let data = JSON.parse(evt.data) let data = JSON.parse(evt.data);
try { try {
if(data.event_cate == 'behavior'){ if (data.event_cate == "behavior") {
let illame = this.getCode('安防事件',data.event_type); let illame = this.getCode("安防事件", data.event_type);
let camername = data.event_data.device?data.event_data.device.name:'' let camername = data.event_data.device
let addressname = data.event_data.location?data.event_data.location.name:'' ? data.event_data.device.name
let dt = this.setUtcTime(data.event_dt).split(' ')[1]; : "";
let pics = 'data:image/jpeg;base64,'+data.pics[0].pic_base64 let addressname = data.event_data.location
let obj = { ? data.event_data.location.name
illame:illame, : "";
illdt:dt, let dt = this.showLocalTime(data.event_dt).split(" ")[1];
addressname:addressname, let pics = "data:image/jpeg;base64," + data.pics[0].pic_base64;
camername:camername,
pics:pics
}
that.tableData.unshift(obj)
} else if(data.event_data.illegal.state == 1){
let illame = this.getCode('违法类型',data.event_data.illegal.code);
let camername = data.event_data.location.name
let dt = this.setUtcTime(data.event_dt).split(' ')[1];
let pics = 'data:image/jpeg;base64,'+data.pics[0].pic_base64
let obj = { let obj = {
illame:illame, illame: illame,
illdt:dt, illdt: dt,
camername:camername, addressname: addressname,
pics:pics camername: camername,
} pics: pics
};
that.list.unshift(obj) that.tableData.unshift(obj);
}
} catch (error) {
}
if(data.command){
console.log('推送服务连接正常')
} else if(data.type =='response'){
console.log('请求任务推送成功')
} }
} catch (error) {}
if (data.command) {
console.log("推送服务连接正常");
} else if (data.type == "response") {
console.log("请求任务推送成功");
} }
};
this.keepAlive = setInterval(() => { this.keepAlive = setInterval(() => {
let message = { let message = {
type: 'request', type: "request",
id: new Date().getTime(), id: new Date().getTime(),
mts: new Date().getTime(), mts: new Date().getTime(),
command:'get /websocket/v1/recv_data/connects/' + this.connect_id +'/keep_alive' command:
} "get /websocket/v1/recv_data/connects/" +
this.cws.send(JSON.stringify(message)) this.connect_id +
"/keep_alive"
};
this.cws.send(JSON.stringify(message));
}, 50000); }, 50000);
} catch (err) {
console.log(err);
}
} }
}; };
</script> </script>
<style>
</style>>
\ No newline at end of file \ No newline at end of file
<style></style>>
<template>
<div class="devinfo-box">
<div class="item-box">
<div class="icon el-icon-cpu"></div>
<div class="item-info-box">
<div>分析资源</div>
<div><span>64</span></div>
</div>
</div>
<div class="item-box">
<div class="icon el-icon-view"></div>
<div class="item-info-box">
<div>运行路数</div>
<div> <span>47</span></div>
</div>
</div>
<div class="item-box">
<div class="icon el-icon-bell"></div>
<div class="item-info-box">
<div>运行异常资源</div>
<div><span>6</span></div>
</div>
</div>
<div class="item-box">
<div class="icon el-icon-s-order"></div>
<div class="item-info-box">
<div>信息存储量</div>
<div> <span>1.2</span> T</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {};
}
};
</script>
<style scoped="scoped" lang="stylus">
.devinfo-box {
width: 8vw;
height: 28vh;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.19);
overflow hidden
.item-box{
margin-top 2vh
overflow hidden
}
.item-box:first-child{
margin-top 2vh
}
}
.icon{
margin-left .6vw
width 1.7vw
height 3.5vh
float left
font-size 28px
line-height 3.5vh
text-align center
color #3BB7FF
background:rgba(179,229,252,.21);
}
.item-info-box{
float left
margin-left 1vw
width 4vw
div:first-child{
color:rgba(102,102,102,1)
}
div:last-child span{
color:rgba(68,68,68,1);
font-size 20px
line-height 2.5vh
letter-spacing 20
}
}
</style>
\ No newline at end of file \ No newline at end of file
...@@ -101,6 +101,7 @@ ...@@ -101,6 +101,7 @@
try { try {
if(val == 0){ if(val == 0){
this.isShow = false this.isShow = false
document.getElementById("VionVideo").StartPlay(1);
} else { } else {
this.isShow = true this.isShow = true
document.getElementById("VionVideo").StartPlay(0); document.getElementById("VionVideo").StartPlay(0);
......
<template>
<div class="item">
<div class="player">
<div class="ocx-box">
<object id="VionVideo" classid="clsid:96DFBBAF-4220-4978-9681-4ABA534A7718"
width="98%" height="550" style="margin-left:.9%">
</object>
</div>
</div>
</div>
</template>
<script>
import {mapState} from 'vuex'
export default {
data() {
return {};
},
props: ['playurl', 'type'],
methods: {
videoPlay: function () {
this.urlFlag = false
if (!this.playurl.sip_serv_ip) {
let url = this.playurl.rtsp_url
let ocxPlayRes = document.getElementById('VionVideo').StartPlay(url, 0);
console.log('video Ocx播放rtsp流返回值:', ocxPlayRes);
if (ocxPlayRes != 0) {
alert('播放失败!');
}
} else {
let OcxResponse = document.getElementById('VionVideo').StartPlaySip(this.playurl.sip_serv_id, this.playurl.sip_serv_ip,
this.playurl.sip_serv_port, this.playurl.sip_unid, this.playurl.sip_password, this.playurl.devId, 0)
console.log('video Ocx播放sip流返回值:', OcxResponse);
if (OcxResponse != 0 && OcxResponse != 200) {
alert('播放失败!');
}
}
},
initocx(){
VionVideo.Init(0, 'Null', 4);
},
downloadOCx() {
if (navigator.userAgent.indexOf('Trident') > -1) {
this.axios.get(IP + "/api/v1/device/dlfile", {
params: {
file_type: "video_ocx"
}
})
.then(response => {
location.href = response.data.file_url;
});
} else {
this.$message.error("视频控件加载失败请用IE10及以上版本打开!");
}
},
checkIE() {
var agent = navigator.userAgent.toLowerCase();
if (/(msie\s|trident.*rv:)([\w.]+)/.test(agent) && document.documentMode < 10) {
this.$message.error("IE 版本过低请升级到IE10级以上版本!");
}
}
},
created() {
this.checkIE();
},
mounted() {
VionVideo.Init(0, 'Null', 4);
try {
if (document.getElementById("VionVideo").GetVersion()) {
}
} catch (error) {
this.downloadOCx();
}
},
computed: {
...mapState(['ocxstate'])
},
watch: {
},
beforeDestroy: function () {
if (this.videoplayer.techName_ == "Flash" && this.videoplayer.pause) {
this.videoplayer.pause();
}
}
};
</script>
<style lang="stylus" scoped>
</style>
...@@ -259,8 +259,8 @@ export default { ...@@ -259,8 +259,8 @@ export default {
overflow hidden overflow hidden
} }
.subtask{ .subtask{
margin-bottom 10px margin-bottom 5px
width 100% width 15vw
height 30px height 30px
padding-left 30px padding-left 30px
line-height 30px line-height 30px
......
...@@ -70,10 +70,10 @@ ...@@ -70,10 +70,10 @@
scRTEngineCalcBaseon6Points, scRTEngineCalcBaseon6Points,
CalcCarOutline, CalcCarOutline,
changeModelData changeModelData
} from "../../../assets/javscript/CalibrationCalc.js" } from "../../../assets/js/CalibrationCalc.js"
import { import {
configxml configxml
} from '../../../assets/javscript/configxml.js' } from '../../../assets/js/configxml.js'
export default { export default {
data() { data() {
return { return {
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
</el-table> </el-table>
<div class="setting-box"> <div class="setting-box">
<div class="set-header ">基础操作</div> <div class="set-header ">基础操作</div>
<div class="set-item">场景添加 <span class="set-icon el-icon-circle-plus"></span> </div> <div class="set-item" @click="setsounces">场景添加 <span class="set-icon el-icon-circle-plus"></span> </div>
<div class="set-item">轮询播放 <span class="set-icon"> <div class="set-item">轮询播放 <span class="set-icon">
<el-switch <el-switch
:width="25" :width="25"
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<handleparam ref="handleparam"></handleparam> <handleparam ref="handleparam"></handleparam>
</div> </div>
<div class="yt-box"> <div class="yt-box">
<ytconfig></ytconfig> <ytconfig ref="yt"></ytconfig>
</div> </div>
<div> <div>
<parameter ref="parameter"></parameter> <parameter ref="parameter"></parameter>
...@@ -163,6 +163,9 @@ export default { ...@@ -163,6 +163,9 @@ export default {
handleparam(type){ handleparam(type){
this.$refs.handleparam.show(type) this.$refs.handleparam.show(type)
}, },
setsounces(){
this.$refs.yt.openyt()
},
getTaskParams(){ getTaskParams(){
this.$api.task.getTaskParams(this.taskid,this.subtaskid).then(data => { this.$api.task.getTaskParams(this.taskid,this.subtaskid).then(data => {
this.taskInfo = data this.taskInfo = data
...@@ -337,13 +340,7 @@ export default { ...@@ -337,13 +340,7 @@ export default {
margin-right 20px margin-right 20px
} }
.yt-box{ .yt-box{
position absolute
top 0
left 0
right 0
margin auto
color #333
z-index 100
} }
.settimertype,.sel-box{ .settimertype,.sel-box{
display flex display flex
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<iframe <iframe
id="iframe" id="iframe"
ref="iframe" ref="iframe"
src="/dynamicParameters.html" src="./dynamicParameters.html"
frameborder="0" frameborder="0"
width="100%" width="100%"
height="415" height="415"
......
<template> <template>
<div class="yt-box" v-show="showyt"> <div class="control-box" v-show="showyt">
<div class="control-let-box">
<div>
<span
@mousedown="Ytontroller('36')"
@mouseup="stopYtontroller('36')"
class="control-btn el-icon-top-left"
></span>
<span
@mousedown="Ytontroller('38')"
@mouseup="stopYtontroller('38')"
class="control-btn el-icon-top"
></span>
<span
@mousedown="Ytontroller('33')"
@mouseup="stopYtontroller('33')"
class="control-btn el-icon-top-right"
></span>
</div>
<div>
<span
@mousedown="Ytontroller('37')"
@mouseup="stopYtontroller('37')"
class="control-btn el-icon-back"
></span>
<span
@mousedown="Ytontroller('12')"
@mouseup="stopYtontroller('12')"
class="control-btn el-icon-refresh"
></span>
<span
@mousedown="Ytontroller('39')"
@mouseup="stopYtontroller('39')"
class="control-btn el-icon-right"
></span>
</div>
<div>
<span class="control-btn el-icon-bottom-left"></span>
<span class="control-btn el-icon-bottom"></span>
<span class="control-btn el-icon-bottom-right"></span>
</div>
</div>
<div class="control-right-box">
<div class="slider-box">
<span class="title">光圈</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">光倍</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">焦距</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
</div>
<div class="slider-box">
<span class="title">速度</span>
<el-slider class="slider-item" v-model="value" show-input></el-slider>
</div>
<div class="right-bottom-box">
<div class="setyzw item-box">
<el-input placeholder="预置位编号"></el-input>
</div>
<div class="subbtn item-box">
<el-button @click="subset">确定</el-button>
</div>
<div class="closebtn item-box">
<el-button @click="closeyt">关闭</el-button>
</div>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import {
StopControlCamera,
controlDevice,
getControlParam,
setCameraSpeed,
connectCamera
} from "../../../assets/js/YtContronByVionVideo.js";
import { CameraController } from "../../../assets/js/positionOperateByVido.js";
const optionController = new CameraController();
export default { export default {
data() { data() {
return { return {
showyt:false showyt: false,
} value: ""
};
}, },
} methods: {
openyt() {
this.showyt = true;
},
closeyt() {
this.showyt = false;
},
/**
* 控制云台
* @param {code}
*/
Ytontroller(code) {
var param = getControlParam(code);
setCameraSpeed(this.ballspeed);
// VionVideo.PtzSendCmd(param, pvalue, "");
controlDevice(param);
},
/**
* 停止云台控制
* @param {code}
*/
stopYtontroller(code) {
StopControlCamera();
},
subset() {
let mtasks = this.allMask.mtasks;
this.allMask.mtasks.forEach(ele => {
ele.scenes[this.curindex].algo_type = this.algo_type;
ele.scenes[this.curindex].position_name = this.position_name;
ele.scenes[this.curindex].position_num = this.position_num;
});
let reqObj = {
subtask_id: this.curentSubTaskId,
mtasks: this.allMask.mtasks
};
this.$api.task
.editRoi(this.curentTaskId, this.curentSubTaskId, reqObj)
.then(res => {
if (data.ecode == "200") {
this.closeyt();
}
});
}
}
};
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.yt-box{ .control-box {
height 30vh position: absolute;
width 31vw top: 0;
background blue left: 0;
right: 0;
margin: auto;
color: #333;
z-index: 100;
height: 24vh;
width: 31vw;
margin-top: 0.5vh;
background: #ffffff;
box-shadow: 1px 0px 4px 3px rgba(74, 74, 74, 0.14);
}
.control-let-box {
float: left;
width: 12vw;
.control-btn {
height: 5vh;
margin-top: 2vh;
width: 3.5vw;
overflow: hidden;
font-size: 30px;
text-align: center;
color: #cccccc;
font-weight: 600;
} }
}
.control-right-box {
float: left;
width: 18.5vw;
}
.slider-box {
overflow: hidden;
.title {
float: left;
width: 2vw;
line-height: 35px;
}
.slider-item {
float: left;
width: 16vw;
}
}
.item-box {
float: left;
margin-top: 1vh;
}
.item-box:nth-child(1) {
margin-left: 0;
}
.setyzw {
width: 6vw;
}
.subbtn {
margin: 1vh 0.3vw 0 2vw;
}
</style> </style>
\ No newline at end of file \ No newline at end of file
...@@ -25,9 +25,8 @@ ...@@ -25,9 +25,8 @@
videoPlay: function () { videoPlay: function () {
this.urlFlag = false this.urlFlag = false
if (!this.playulr.sip_serv_ip) { if (!this.playulr.sip_serv_ip) {
debugger
let url = this.playulr.rtsp_url let url = this.playulr.rtsp_url
let ocxPlayRes = document.getElementById('VionVideo').StartPlay(url, 0); let ocxPlayRes = VionVideo.PlayRealVideo(url, "0", "xxx", '',undefined);
console.log('video Ocx播放rtsp流返回值:', ocxPlayRes); console.log('video Ocx播放rtsp流返回值:', ocxPlayRes);
if (ocxPlayRes != 0) { if (ocxPlayRes != 0) {
alert('播放失败!'); alert('播放失败!');
...@@ -59,7 +58,7 @@ ...@@ -59,7 +58,7 @@
}); });
}, },
initocx() { initocx() {
// VionVideo.Init(0, 'Null', 4); VionVideo.Init(0, 'Null', 1);
}, },
downloadOCx() { downloadOCx() {
// if (navigator.userAgent.indexOf('Trident') > -1) { // if (navigator.userAgent.indexOf('Trident') > -1) {
...@@ -90,7 +89,7 @@ ...@@ -90,7 +89,7 @@
// this.initocx(); // this.initocx();
}, },
mounted() { mounted() {
// VionVideo.Init(0, 'Null', 4); this.initocx();
// try { // try {
// if (document.getElementById("VionVideo").GetVersion()) { // if (document.getElementById("VionVideo").GetVersion()) {
// } // }
......
...@@ -4,72 +4,76 @@ ...@@ -4,72 +4,76 @@
title="任务配置修改" title="任务配置修改"
:visible.sync="setvisible" :visible.sync="setvisible"
width="450px" width="450px"
:before-close="handleClose"> :before-close="handleClose"
>
<div> <div>
<el-form label-position="left" label-width="80px" :model="formData"> <el-form label-position="left" label-width="80px" :model="formData">
<el-form-item label="任务名称"> <el-form-item label="任务名称">
<el-input v-model="formData.task_name" placeholder="请输入任务名称"></el-input> <el-input
v-model="formData.task_name"
placeholder="请输入任务名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="算法类型"> <el-form-item label="算法类型">
<el-select v-model="formData.type" placeholder="请选择" :popper-append-to-body=false> <el-select
<el-option v-model="formData.task_algo_type"
key="1" placeholder="请选择"
label="全部" :popper-append-to-body="false"
value=""> >
</el-option> <el-option value label="--"></el-option>
<el-option <el-option value="0" label="交通"></el-option>
key="2" <el-option value="1" label="客流"></el-option>
label="222" <el-option value="2" label="行为分析"></el-option>
value="2"> <el-option value="5" label="交通行人"></el-option>
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="场景占用"> <el-form-item label="场景占用">
<el-select v-model="formData.type" placeholder="请选择" :popper-append-to-body=false> <el-select
<el-option v-model="formData.type"
key="1" placeholder="请选择"
label="全部" :popper-append-to-body="false"
value=""> >
</el-option> <el-option key="1" label="全部" value></el-option>
<el-option <el-option key="2" label="222" value="2"></el-option>
key="2"
label="222"
value="2">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间计划"> <el-form-item label="时间计划">
<el-input v-model="formData.type"></el-input> <el-input v-model="formData.type"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="时间"> <el-form-item label="时间">
<el-input v-model="formData.type"></el-input> <el-date-picker
style="width:100%"
v-model="formData.timer"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="存储配置"> <el-form-item label="存储配置">
<el-select v-model="formData.type" placeholder="请选择" :popper-append-to-body=false> <el-select
v-model="formData.store_conf.unid"
placeholder="请选择"
:popper-append-to-body="false"
>
<el-option <el-option
key="1" :value="store.unid"
label="全部" :label="store.name"
value=""> v-for="store in store_confs"
</el-option> :key="store.unid"
<el-option ></el-option>
key="2"
label="222"
value="2">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="优先级"> <el-form-item label="优先级">
<el-select v-model="formData.type" placeholder="请选择" :popper-append-to-body=false> <el-select
<el-option v-model="formData.priority"
key="1" placeholder="请选择"
label="全部" :popper-append-to-body="false"
value=""> >
</el-option> <el-option value="high" label="高"></el-option>
<el-option <el-option value="normal" selected label="中"></el-option>
key="2" <el-option value="low" label="低"></el-option>
label="222"
value="2">
</el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -83,54 +87,141 @@ ...@@ -83,54 +87,141 @@
</template> </template>
<script> <script>
export default{ export default {
data(){ data() {
return{ return {
formData:{}, setvisible: false,
sessionData:{} formData: {
task_name: "",
task_algo_type: "",
timer: "",
store_conf: {
unid: ""
},
priority: ""
},
vchanAry: [],
sessionData: {},
store_confs: []
};
},
props: {
pedittype: {
type: String,
default: "add"
} }
}, },
props:{ watch: {},
setvisible:{ mounted() {
type:Boolean, console.log("mounted", this.formData);
default:false },
methods: {
initData(type, pdata) {
debugger;
this.setvisible = true;
if (type == "add") {
this.formData = {
task_name: "",
task_algo_type: "",
timer: "",
store_conf: {
unid: ""
}, },
parentData:{ priority: ""
type:Object, };
default: function () {
return {}
} }
if (type == "edit") {
pdata.timer = [pdata.start_dt, pdata.end_dt];
this.formData = pdata;
this.$api.task.getSubTask(pdata.task_id).then(res => {
let ary = [];
let data = res.list_data;
for (let i in data) {
if (data[i].vchan) {
data[i].vchan.subtask_id = data[i].subtask_id;
data[i].vchan.refid = data[i].vchan.vchan_refid;
} else {
data.vchan = {
subtask_id: data[i].subtask_id,
refid: "",
vchan_name: data[i].subtask_name
};
} }
}, ary.push(data[i].vchan);
watch:{ }
parentData(nval, oval){ // this.$refs.edit.editData = confile;
console.log(nval, oval) // this.$refs.edit.vchanAry = ary;
this.sessionData=JSON.parse(JSON.stringify(nval)); this.vchanAry = ary;
this.formData=nval; });
console.log(this.formData)
} }
}, },
mounted(){ handleClose() {
console.log('mounted',this.formData) this.setvisible = false;
}, },
methods:{ closeVisible() {
handleClose(){ for (var key in this.sessionData) {
this.$emit('update:setvisible',false) this.formData[key] = this.sessionData[key];
}
this.setvisible = false;
}, },
closeVisible(){ save() {
for(var key in this.sessionData){ this.sessionData = JSON.parse(JSON.stringify(this.formData));
this.formData[key]=this.sessionData[key] this.setvisible = false;
//
let postData = {
task_name: this.formData.task_name,
task_algo_type: this.formData.task_algo_type,
source_type: "pull_video_stream",
dev_unid: this.dev_unid,
node_count: 0,
start_dt: this.setUtcTime(this.formData.timer[0]),
end_dt: this.setUtcTime(this.formData.timer[1]),
priority: this.formData.priority,
store_conf_unid: this.formData.store_conf.unid,
task_type: "normal"
// algo_comb_unid: this.formData.store_conf,
};
let formData = new FormData();
for (let i in postData) {
formData.append(i, postData[i]);
}
if (this.pedittype == "add") {
this.addTask(formData);
}
if (this.pedittype == "edit") {
this.editTask(formData);
} }
this.$emit('update:setvisible',false)
}, },
save(){ addTask(data) {
this.sessionData=JSON.parse(JSON.stringify(this.formData)); this.$api.task
this.$emit('update:parentData',this.formData); .addTask(data, {
this.$emit('update:setvisible',false) "content-type": "multipart/form-data"
})
.then(res => {
console.log(res);
this.$emit("refresh");
});
}, },
editTask(data) {
this.$api.task.editTask(data, this.formData.task_id).then(res => {
this.$emit("refresh");
});
},
getStore() {
let params = {
offset: 0,
limit: ""
};
this.$api.device.getStore(params).then(res => {
this.store_confs = res.list_data;
});
} }
},
created() {
this.getStore();
} }
};
</script> </script>
<style> <style></style>
</style>
...@@ -51,10 +51,10 @@ ...@@ -51,10 +51,10 @@
</span> </span>
<el-button type="primary" style="position: relative;top: -2px;" @click="query">查询</el-button> <el-button type="primary" style="position: relative;top: -2px;" @click="query">查询</el-button>
<span style="float: right;"> <span style="float: right;">
<el-button type="info" icon="el-icon-search">新建任务</el-button> <el-button type="info" icon="el-icon-plus" @click="editTask('add')">新建任务</el-button>
</span> </span>
</div> </div>
<div style="padding: 0 15px 20px 23px;"> <div style="padding: 0 23px 20px 23px;width:99%">
<el-table <el-table
height="574" height="574"
:data="tableData" :data="tableData"
...@@ -123,15 +123,15 @@ ...@@ -123,15 +123,15 @@
</el-tooltip> </el-tooltip>
<span class="tableSpanBorder"></span> <span class="tableSpanBorder"></span>
<el-tooltip content="修改任务源配置" placement="bottom" effect="light" :visible-arrow=false> <el-tooltip content="修改任务源配置" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-xiugai editIcon2" @click="editTask(scope.$index, scope.row)"></span> <span class="iconfont icon-xiugai editIcon2" @click="editTask('edit',scope.$index, scope.row)"></span>
</el-tooltip> </el-tooltip>
<span class="tableSpanBorder"></span> <span class="tableSpanBorder"></span>
<el-tooltip content="启动" placement="bottom" effect="light" :visible-arrow=false> <el-tooltip content="启动" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-bofang playIcon" @click="playFun(scope.$index, scope.row)"></span> <span class="iconfont icon-bofang playIcon" @click="setTaskStatus(scope.row,'start')"></span>
</el-tooltip> </el-tooltip>
<span class="tableSpanBorder"></span> <span class="tableSpanBorder"></span>
<el-tooltip content="暂停" placement="bottom" effect="light" :visible-arrow=false> <el-tooltip content="暂停" placement="bottom" effect="light" :visible-arrow=false>
<span class="iconfont icon-zanting pauseIcon" @click="pauseFun(scope.$index, scope.row)"></span> <span class="iconfont icon-zanting pauseIcon" @click="setTaskStatus(scope.row,'stop')"></span>
</el-tooltip> </el-tooltip>
<span class="tableSpanBorder"></span> <span class="tableSpanBorder"></span>
<el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false> <el-tooltip content="删除" placement="bottom" effect="light" :visible-arrow=false>
...@@ -157,8 +157,8 @@ ...@@ -157,8 +157,8 @@
</div> </div>
</div> </div>
<editset :setvisible.sync="setShow" :parentData="editForm"></editset> <editset ref="editset" :pedittype="pedittype" @refresh="getTaskList"></editset>
<editvideo :setvisible.sync="videoShow"></editvideo> <editvideo ref="editvideo" :parentData="curtask" :pedittype="pedittype" @refresh="getTaskList"></editvideo>
</div> </div>
</div> </div>
</template> </template>
...@@ -169,6 +169,7 @@ ...@@ -169,6 +169,7 @@
data(){ data(){
return{ return{
task_name:'', task_name:'',
curtask:'',
task_algo_type:'', task_algo_type:'',
total:0, total:0,
page:1, page:1,
...@@ -176,7 +177,8 @@ ...@@ -176,7 +177,8 @@
setShow:false, setShow:false,
videoShow:false, videoShow:false,
editForm:{}, editForm:{},
tableData: [] tableData: [],
pedittype:'add'
} }
}, },
components:{ components:{
...@@ -285,24 +287,44 @@ ...@@ -285,24 +287,44 @@
}) })
}, },
editVideo(index,row){ editVideo(index,row){
this.videoShow=true; this.$refs.editvideo.showModal(row)
console.log(row)
}, },
editTask(index,row){ editTask(type,index,row){
this.setShow=true; this.$refs.editset.initData(type,row)
this.pedittype = type
this.$nextTick(() => { this.$nextTick(() => {
this.editForm=row; this.editForm=row;
}) })
}, },
playFun(index,row){ setTaskStatus(data,type){
console.log(row) this.$api.task.setTaskStatus(data.task_id,{start_stop_status:type}).then(res =>{
}, this.$message({
pauseFun(index,row){ type: res.ecode=='200'?'success':'error',
console.log(row) message: res.enote
})
if(res.ecode=='200') {
this.getTaskList();
}
})
}, },
delFun(index,row){ delFun(index, data){
console.log(row) this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$api.task.deleteTask(data.task_id).then(res => {
this.$message({
type: res.ecode=='200'?'success':'error',
message: res.enote
})
if (res.ecode == '200'){
this.getTaskList();
}
})
})
} }
}, },
} }
......
<template> <template>
<div> <div class="alarm-event-box">
<el-table :data="tableData" height="30vh"> <el-table :data="tableData" height="30vh">
<el-table-column type="index" align="center" label="#"></el-table-column> <el-table-column type="index" align="center" label="#"></el-table-column>
<el-table-column align="center" prop="eventType" label="事件地点"></el-table-column> <el-table-column align="center" prop="camername" label="事件地点"></el-table-column>
<el-table-column align="center" prop="locationName" label="抓拍类型"></el-table-column> <el-table-column align="center" prop="illname" label="抓拍类型"></el-table-column>
<el-table-column align="center" prop="startDt" label="发生时间"></el-table-column> <el-table-column align="center" prop="illdt" label="发生时间"></el-table-column>
<el-table-column align="center" prop="operation" label="操作"> <el-table-column align="center" prop="operation" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tooltip content="查看" placement="bottom" effect="light" :visible-arrow="false"> <el-tooltip content="查看" placement="bottom" effect="light" :visible-arrow="false">
...@@ -71,19 +71,23 @@ export default { ...@@ -71,19 +71,23 @@ export default {
}, 20000); }, 20000);
} }
//事件推送信息 //事件推送信息
let _this = this;
this.cws.onmessage = (evt) =>{ this.cws.onmessage = (evt) =>{
let data = JSON.parse(evt.data) let data = JSON.parse(evt.data)
try { try {
if(data.event_data.illegal.state == 1){ if(data.event_data.illegal.state == 1){
let illame = this.getCode('违法类型',data.event_data.illegal.code); let illname = _this.getCode('违法类型',data.event_data.illegal.code) || '';
let camername = data.event_data.location.name let camername = data.event_data.location.name
let dt = this.setUtcTime(data.event_dt).split(' ')[1]; let dt = this.showLocalTime(data.event_dt).split(' ')[1];
let pics = 'data:image/jpeg;base64,'+ data.pics[0].pic_base64 console.log(data.pics[0].src_url)
let pics = data.pics[0].src_url
let pos = data.event_data.location.pos
let obj = { let obj = {
illame:illame, illname:illname,
illdt:dt, illdt:dt,
camername:camername, camername:camername,
pics:pics pics:pics,
pos:pos
} }
if(that.tableData.length > 40) { if(that.tableData.length > 40) {
that.tableData.pop(obj) that.tableData.pop(obj)
...@@ -93,11 +97,6 @@ export default { ...@@ -93,11 +97,6 @@ export default {
that.tableData.unshift(obj) that.tableData.unshift(obj)
} else{ } else{
if(that.tableData.length > 40) {
that.tableData.pop(data)
} else {
that.tableData.unshift(data)
}
} }
} catch (error) { } catch (error) {
......
...@@ -4,35 +4,33 @@ ...@@ -4,35 +4,33 @@
<el-col :span="5" class="header-title">违法事件趋势</el-col> <el-col :span="5" class="header-title">违法事件趋势</el-col>
<span class="header-label">违法</span> <span class="header-label">违法</span>
<div class="header-select"> <div class="header-select">
<el-select v-model="illtype"> <el-select v-model="illtype" @change="getTrafficHour">
<el-option <el-option
v-for="item in illageList" v-for="item in illageList"
:key="item.value" :key="item.value"
:label="item.name" :label="item.name"
:value="item.code"> :value="item.code"
</el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<span class="header-label">事件</span> <span class="header-label">事件</span>
<div class="header-select"> <div class="header-select">
<el-select v-model="illtype"> <el-select v-model="eventtype" @change="getTrafficHour">
<el-option <el-option
v-for="item in options" v-for="item in eventList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.name"
:value="item.code"> :value="item.code"
</el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<span class="header-label">重点车辆</span> <span class="header-label">重点车辆</span>
<div class="header-select"> <div class="header-select">
<el-select v-model="illtype"> <el-select v-model="special_type" @change="getTrafficHour">
<el-option <el-option value label="全部"></el-option>
v-for="item in illageList" <el-option value="1" label="车辆运输车"></el-option>
:key="item.value" <el-option value="2" label="危险品运输车"></el-option>
:label="item.name" <el-option value="3" label="救护车"></el-option>
:value="item.code">
</el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -44,15 +42,46 @@ ...@@ -44,15 +42,46 @@
export default { export default {
data() { data() {
return { return {
illtype:'', illtype: "",
options:[], eventtype: "",
special_type: "",
options: [],
illageList: [], illageList: [],
eventList: []
}; };
}, },
methods: { methods: {
initchart(cdata) { initchart(cdata) {
let xData = ["00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"] let xData = [
let maychart = this.$echarts.init(document.getElementById("illtrendchart")); "00",
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24"
];
let maychart = this.$echarts.init(
document.getElementById("illtrendchart")
);
let option = { let option = {
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
...@@ -72,7 +101,7 @@ export default { ...@@ -72,7 +101,7 @@ export default {
itemHeight: 10 itemHeight: 10
}, },
grid: { grid: {
top:"10%", top: "10%",
left: "3%", left: "3%",
right: "10%", right: "10%",
bottom: "10%", bottom: "10%",
...@@ -81,7 +110,7 @@ export default { ...@@ -81,7 +110,7 @@ export default {
xAxis: [ xAxis: [
{ {
type: "category", type: "category",
data:xData, data: xData,
axisLine: { axisLine: {
show: true, show: true,
lineStyle: { lineStyle: {
...@@ -120,7 +149,7 @@ export default { ...@@ -120,7 +149,7 @@ export default {
show: true, show: true,
lineStyle: { lineStyle: {
color: "#D9D9D9", color: "#D9D9D9",
width:1, width: 1,
type: "solid" type: "solid"
} }
}, },
...@@ -139,16 +168,16 @@ export default { ...@@ -139,16 +168,16 @@ export default {
name: "违法", name: "违法",
type: "line", type: "line",
data: (function() { data: (function() {
let d = [] let d = [];
cdata.illegal.map(ele => { cdata.illegal.map(ele => {
for(let i = 0; i < xData.length; i++) { for (let i = 0; i < xData.length; i++) {
if(ele.hour == xData[i]){ if (ele.hour == xData[i]) {
d.push(ele.total_num) d.push(ele.total_num);
} else { } else {
d.push(0) d.push(0);
} }
} }
}) });
return d; return d;
})(), })(),
itemStyle: { itemStyle: {
...@@ -169,16 +198,16 @@ export default { ...@@ -169,16 +198,16 @@ export default {
name: "事件", name: "事件",
type: "line", type: "line",
data: (function() { data: (function() {
let d = [] let d = [];
cdata.event_type.map(ele => { cdata.event_type.map(ele => {
for(let i = 0; i < xData.length; i++) { for (let i = 0; i < xData.length; i++) {
if(ele.hour == xData[i]){ if (ele.hour == xData[i]) {
d.push(ele.total_num) d.push(ele.total_num);
} else { } else {
d.push(0) d.push(0);
} }
} }
}) });
return d; return d;
})(), })(),
itemStyle: { itemStyle: {
...@@ -199,16 +228,16 @@ export default { ...@@ -199,16 +228,16 @@ export default {
name: "重点车辆", name: "重点车辆",
type: "line", type: "line",
data: (function() { data: (function() {
let d = [] let d = [];
cdata.key_vehicle.map(ele => { cdata.key_vehicle.map(ele => {
for(let i = 0; i < xData.length; i++) { for (let i = 0; i < xData.length; i++) {
if(ele.hour == xData[i]){ if (ele.hour == xData[i]) {
d.push(ele.total_num) d.push(ele.total_num);
} else { } else {
d.push(0) d.push(0);
} }
} }
}) });
return d; return d;
})(), })(),
itemStyle: { itemStyle: {
...@@ -224,53 +253,65 @@ export default { ...@@ -224,53 +253,65 @@ export default {
shadowOffsetY: 10 shadowOffsetY: 10
} }
} }
}, }
] ]
}; };
maychart.setOption(option) maychart.setOption(option);
}, },
getillageList(){ getillageList() {
this.illageList = JSON.parse(localStorage.getItem('违法类型')) ; this.illageList = JSON.parse(localStorage.getItem("违法类型"));
}, },
getTrafficHour(){ getTrafficHour() {
this.$api.show.getTrafficHour().then(res => { let data = {
this.initchart(res) illegal_type: this.illtype,
}) event_type: this.eventtype,
} key_vehicle_type: this.special_type
}, };
created(){ this.$api.show.getTrafficHour(data).then(res => {
this.initchart(res);
});
}, },
mounted() {
this.getillageList()
this.getTrafficHour()
getEvents() {
this.$api.show.getEventType().then(res => {
this.eventList = res.list_data;
});
}
}, },
created() {},
mounted() {
this.getillageList();
this.getTrafficHour();
this.getEvents();
}
}; };
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
.chart-header-box{ .chart-header-box {
height 3vh height: 3vh;
overflow hidden overflow: hidden;
font-size 14px font-size: 14px;
} }
.header-title { .header-title {
line-height 3vh line-height: 3vh;
}
.illtrendchart{
height 22vh
width 30vw
} }
.header-label{
font-size 12px .illtrendchart {
line-height 3vh height: 22vh;
float left width: 30vw;
} }
.header-select{
width 4.5vw .header-label {
margin .2vh .5vw 0 .2vw font-size: 12px;
float left line-height: 3vh;
float: left;
} }
.header-select {
width: 4.5vw;
margin: 0.2vh 0.5vw 0 0.2vw;
float: left;
}
</style> </style>
\ No newline at end of file \ No newline at end of file
This diff could not be displayed because it is too large.
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!