Commit 1dd20335 authored by 邓超's avatar 邓超

Merge branch 'master' of https://g.civnet.cn:8443/ReactWeb5/maintenance

Conflicts: src/routes/config.js
parents 6ff2eab7 787a7bda
Pipeline #35384 passed with stages
in 33 minutes 47 seconds
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<g>
<path class="st0" d="M0.783,7.674h-0.02C0.54,7.656,0.37,7.474,0.372,7.256c0.184-2.82,2.267-5.182,5.11-5.794
c0.221-0.05,0.442,0.084,0.493,0.298C6.027,1.975,5.89,2.189,5.669,2.239C5.665,2.24,5.662,2.241,5.659,2.241
C3.181,2.779,1.364,4.836,1.195,7.294C1.185,7.507,1.004,7.675,0.783,7.674L0.783,7.674z M6.893,14H6.853
c-1.769-0.008-3.459-0.714-4.68-1.957c-0.161-0.159-0.159-0.414,0.004-0.57c0.164-0.156,0.427-0.154,0.588,0.004
c0.005,0.005,0.01,0.01,0.015,0.015c1.071,1.082,2.546,1.698,4.092,1.71c0.895,0.003,1.779-0.191,2.585-0.57
c0.198-0.103,0.445-0.031,0.551,0.162c0.106,0.192,0.032,0.432-0.167,0.535c-0.004,0.002-0.009,0.004-0.013,0.006
C8.915,13.77,7.911,13.997,6.893,14L6.893,14L6.893,14z M12.727,9.859c-0.04,0.003-0.08-0.004-0.117-0.019
c-0.215-0.064-0.337-0.284-0.274-0.494c0.169-0.53,0.261-1.079,0.274-1.634c0.018-1.864-0.94-3.61-2.545-4.635
C9.876,2.957,9.823,2.71,9.947,2.526c0.124-0.184,0.379-0.235,0.568-0.114c1.833,1.182,2.924,3.184,2.898,5.319
c0.004,0.639-0.102,1.275-0.313,1.881C13.042,9.762,12.893,9.861,12.727,9.859L12.727,9.859z M12.727,9.859"/>
<path class="st0" d="M1.782,12.347C0.798,12.347,0,11.572,0,10.617c0-0.606,0.327-1.167,0.862-1.48
c0.28-0.176,0.607-0.268,0.94-0.266c0.986,0.013,1.779,0.791,1.781,1.748c0.006,0.618-0.34,1.188-0.901,1.482
C2.413,12.265,2.1,12.351,1.782,12.347L1.782,12.347z M1.782,9.688C1.254,9.681,0.818,10.087,0.803,10.6
c0.001,0.514,0.43,0.93,0.959,0.931c0.173,0.001,0.342-0.045,0.49-0.133c0.289-0.171,0.472-0.47,0.49-0.798
C2.74,10.094,2.315,9.686,1.793,9.688C1.79,9.688,1.786,9.688,1.782,9.688L1.782,9.688z M12.199,12.404
c-0.4,0.005-0.79-0.13-1.096-0.38c-0.777-0.589-0.914-1.678-0.306-2.431c0.338-0.419,0.855-0.664,1.403-0.665h0.02
c0.235-0.002,0.469,0.043,0.685,0.133c0.664,0.279,1.095,0.913,1.097,1.615C13.987,11.633,13.185,12.402,12.199,12.404
L12.199,12.404z M12.199,9.745c-0.532,0.002-0.961,0.421-0.959,0.937c0.001,0.287,0.138,0.558,0.372,0.734
c0.377,0.299,0.926,0.275,1.273-0.057c0.384-0.362,0.393-0.957,0.02-1.33c-0.089-0.089-0.196-0.16-0.314-0.209
C12.467,9.768,12.333,9.742,12.199,9.745L12.199,9.745z M6.931,3.476C6,3.475,5.226,2.781,5.15,1.881V1.729
C5.153,0.775,5.949,0.003,6.931,0h0.02C7.93,0.005,8.719,0.779,8.713,1.728c0,0.007,0,0.013,0,0.02v0.133
C8.651,2.787,7.868,3.488,6.931,3.476L6.931,3.476z M6.931,0.817c-0.53,0.001-0.959,0.417-0.96,0.931v0.076
c0.046,0.514,0.512,0.895,1.042,0.851C7.481,2.636,7.85,2.276,7.891,1.824V1.748c-0.002-0.247-0.1-0.485-0.274-0.665
C7.435,0.908,7.188,0.812,6.931,0.817L6.931,0.817z M6.931,0.817"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<g>
<path class="st0" d="M13.682,0H0.318C0.127,0,0,0.127,0,0.318v13.364C0,13.873,0.127,14,0.318,14h13.364
C13.873,14,14,13.873,14,13.682V0.318C14,0.127,13.873,0,13.682,0L13.682,0z M13.364,13.364H0.636V9.545h12.727V13.364z
M13.364,8.909H0.636V5.091h12.727V8.909z M13.364,4.455H0.636V0.636h12.727V4.455z M3.818,10.818H3.182v1.273h0.636V10.818z
M2.545,10.818H1.909v1.273h0.636V10.818z M12.409,11.136H9.864v0.636h2.546V11.136z M3.818,6.364H3.182v1.273h0.636V6.364z
M2.545,6.364H1.909v1.273h0.636V6.364z M12.409,6.682H9.864v0.636h2.546V6.682z M3.818,1.909H3.182v1.273h0.636V1.909z
M2.545,1.909H1.909v1.273h0.636V1.909z M12.409,2.227H9.864v0.636h2.546V2.227z M12.409,2.227"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<path class="st0" d="M13.041,10.451c0.018-0.583-0.203-1.159-0.611-1.582c-0.41-0.427-0.986-0.677-1.587-0.689
c-0.791,0.011-1.502,0.432-1.884,1.105C8.807,9.23,8.655,9.21,8.482,9.204c-0.703,0.02-1.274,0.56-1.332,1.243
c-0.6,0.332-0.977,0.952-0.988,1.633c-0.025,1.02,0.797,1.872,1.836,1.899h0.936c0.199,0,0.361-0.16,0.361-0.357
c0-0.197-0.162-0.356-0.361-0.356H8.003c-0.639-0.023-1.141-0.552-1.119-1.185c-0.008-0.486,0.297-0.935,0.751-1.114
c0.156-0.052,0.254-0.201,0.238-0.35v-0.078c-0.008-0.167,0.055-0.334,0.17-0.458C8.16,9.958,8.325,9.883,8.492,9.876
c0.001,0,0.002,0,0.003,0c0.139,0,0.273,0.048,0.369,0.13c0.035,0.035,0.08,0.059,0.122,0.071c0.188,0.066,0.389-0.034,0.457-0.219
c0.197-0.588,0.753-0.993,1.376-1.007c0.838,0.038,1.498,0.741,1.47,1.568l0.001,0.175c-0.016,0.159,0.079,0.313,0.23,0.371
c0.461,0.179,0.767,0.627,0.758,1.124c0.016,0.307-0.09,0.601-0.301,0.827c-0.208,0.225-0.505,0.359-0.809,0.369h-2.042
c-0.199,0-0.361,0.16-0.361,0.357C9.765,13.84,9.927,14,10.126,14h2.044h0.002c0.497-0.014,0.979-0.227,1.319-0.586
c0.346-0.363,0.527-0.838,0.508-1.332C13.993,11.409,13.628,10.791,13.041,10.451z"/>
<path class="st0" d="M7.576,0.714c0.199,0,0.361-0.16,0.361-0.357c0-0.145-0.087-0.275-0.224-0.33
C7.579-0.028,7.424,0.003,7.321,0.104c-0.104,0.102-0.135,0.255-0.079,0.39C7.299,0.628,7.431,0.714,7.576,0.714z"/>
<path class="st0" d="M1.646,12.59H1.31c-0.322-0.005-0.586-0.265-0.588-0.579V9.679C0.72,9.525,0.781,9.375,0.89,9.264
c0.1-0.103,0.233-0.157,0.375-0.169l0.024,0.004c0.018,0.003,0.037,0.005,0.055,0.005c0.025,0,0.048-0.013,0.072-0.018h5.567
c0.141,0.033,0.292-0.019,0.378-0.138c0.091-0.125,0.091-0.292,0-0.416C7.275,8.412,7.123,8.361,6.983,8.393H1.309
C0.985,8.391,0.722,8.131,0.722,7.814V5.487c0.007-0.309,0.27-0.561,0.586-0.561h9.961c0.316,0,0.579,0.252,0.585,0.558v1.867
c0,0.197,0.162,0.357,0.362,0.357c0.199,0,0.361-0.16,0.361-0.357V5.484c0-0.344-0.136-0.668-0.384-0.911
c-0.006-0.006-0.015-0.008-0.022-0.014c0.008-0.008,0.02-0.011,0.028-0.019c0.244-0.244,0.381-0.581,0.377-0.922v-2.33
C12.576,0.578,11.99,0,11.268,0H8.522C8.324,0,8.162,0.16,8.162,0.357s0.162,0.357,0.361,0.357h2.746
c0.322,0,0.585,0.258,0.585,0.574v2.347c0.002,0.154-0.059,0.298-0.169,0.407c-0.101,0.1-0.234,0.153-0.376,0.163
c-0.014,0-0.026-0.008-0.041-0.008H1.308c-0.157,0-0.306-0.06-0.417-0.17c-0.11-0.109-0.17-0.254-0.169-0.409v-2.33
c0-0.316,0.263-0.574,0.586-0.574h5.324C6.826,0.71,6.985,0.55,6.985,0.357S6.826,0.005,6.629,0H1.308C0.587,0,0,0.578,0,1.288
v2.328c-0.005,0.343,0.133,0.68,0.377,0.924c0.008,0.008,0.02,0.011,0.029,0.019C0.158,4.794,0,5.12,0,5.484v2.331
c0.005,0.367,0.179,0.688,0.436,0.92C0.421,8.75,0.4,8.755,0.384,8.77C0.14,9.009,0,9.341,0,9.681v2.329
c0,0.71,0.587,1.288,1.308,1.288h0.33c0.015,0.002,0.03,0.003,0.045,0.003c0.121,0,0.235-0.06,0.301-0.162
c0.079-0.118,0.079-0.272,0.001-0.389C1.908,12.633,1.766,12.575,1.646,12.59z"/>
<path class="st0" d="M2.729,12.611c-0.135-0.053-0.29-0.023-0.393,0.081c-0.104,0.105-0.132,0.259-0.073,0.394
c0.059,0.13,0.187,0.212,0.329,0.212c0.003,0,0.007,0,0.011,0c0.194-0.005,0.352-0.165,0.352-0.357
C2.954,12.795,2.865,12.665,2.729,12.611z"/>
<path class="st0" d="M5.338,12.59l-1.775,0.001c-0.14-0.015-0.28,0.041-0.355,0.158c-0.079,0.118-0.079,0.272,0,0.389
c0.068,0.104,0.183,0.164,0.292,0.164c0.015,0,0.031-0.001,0.046-0.004H5.33c0.14,0.018,0.272-0.045,0.346-0.159
c0.079-0.118,0.079-0.272,0-0.389C5.6,12.633,5.461,12.573,5.338,12.59z"/>
<path class="st0" d="M9.798,2.816l0.056-0.001c0.195-0.004,0.353-0.165,0.353-0.359c-0.002-0.093-0.038-0.181-0.112-0.258
C9.949,2.075,9.74,2.076,9.587,2.206C9.522,2.274,9.487,2.362,9.485,2.458c0,0.095,0.039,0.188,0.106,0.251
c0.054,0.052,0.123,0.085,0.197,0.096L9.798,2.816z"/>
<path class="st0" d="M8.9,2.809c0.09,0,0.177-0.034,0.248-0.095C9.219,2.646,9.258,2.55,9.252,2.477
c0.022-0.138-0.04-0.277-0.16-0.354c-0.119-0.076-0.272-0.076-0.391,0C8.58,2.199,8.518,2.338,8.538,2.458
c0,0.095,0.039,0.188,0.106,0.251c0.066,0.064,0.156,0.1,0.248,0.1C8.896,2.809,8.898,2.809,8.9,2.809z"/>
<path class="st0" d="M10.797,2.809c0.095,0,0.187-0.038,0.254-0.106c0.066-0.067,0.103-0.16,0.102-0.255
c-0.003-0.093-0.039-0.181-0.109-0.253c-0.141-0.129-0.363-0.13-0.509,0.006c-0.064,0.066-0.101,0.154-0.104,0.251
c0,0.095,0.037,0.185,0.108,0.257c0.068,0.063,0.157,0.099,0.25,0.1H10.797z"/>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#27DA99;}
</style>
<g>
<g>
<path class="st0" d="M7,0C5.143,0,3.363,0.738,2.05,2.05C0.738,3.363,0,5.143,0,7c0,3.866,3.134,7,7,7c3.866,0,7-3.134,7-7
C14,3.134,10.866,0,7,0L7,0z M10.443,5.285L7.151,9.726c-0.229,0.31-0.761,0.532-1.139,0.271L3.645,8.363
c-0.361-0.25-0.551-0.648-0.3-1.037c0.208-0.324,0.778-0.522,1.141-0.271L6.232,8.26c0.924-1.247,1.847-2.493,2.771-3.739
C9.599,3.716,11.045,4.473,10.443,5.285L10.443,5.285z M10.443,5.285"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<path class="st0" d="M7.028,14c-0.261,0-0.508-0.108-0.692-0.3L4.69,12.01H1.892c-0.537,0-1.019-0.199-1.362-0.559
C0.188,11.09,0,10.581,0,10.015V2.094C0,1.52,0.188,0.992,0.529,0.609C0.878,0.215,1.363,0,1.892,0h10.22
c0.529,0,1.012,0.217,1.361,0.609C13.814,0.992,14,1.52,14,2.094v7.922c0,0.565-0.188,1.075-0.529,1.435
c-0.341,0.36-0.823,0.559-1.359,0.559H9.34l-1.616,1.686C7.536,13.892,7.289,14,7.028,14L7.028,14z M1.892,1.036
c-0.537,0-0.912,0.435-0.912,1.058v7.922c0,0.601,0.341,0.959,0.912,0.959h2.996c0.127,0,0.251,0.052,0.341,0.147l1.792,1.839
c0.002,0.002,0.004,0.004,0.006,0.004h0.002c0.002,0,0.006-0.002,0.008-0.006l1.759-1.835c0.092-0.095,0.216-0.149,0.345-0.149
h2.972c0.569,0,0.908-0.358,0.908-0.959V2.094c0-0.623-0.373-1.058-0.908-1.058H1.892z M1.892,1.036"/>
<path class="st0" d="M3.803,5.316c-0.474,0-0.861,0.406-0.861,0.909c0,0.501,0.384,0.909,0.861,0.909
c0.474,0,0.861-0.406,0.861-0.909C4.664,5.722,4.278,5.316,3.803,5.316L3.803,5.316z M6.868,5.316
c-0.474,0-0.861,0.406-0.861,0.909c0,0.501,0.384,0.909,0.861,0.909c0.475,0,0.861-0.406,0.861-0.909
C7.728,5.722,7.342,5.316,6.868,5.316L6.868,5.316z M6.007,6.223v0.224V6.223z M9.912,5.304c-0.474,0-0.861,0.406-0.861,0.909
c0,0.501,0.384,0.909,0.861,0.909c0.474,0,0.861-0.406,0.861-0.909S10.387,5.304,9.912,5.304L9.912,5.304z M9.912,5.304"/>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<path class="st0" d="M7,0C3.118,0,0,3.118,0,7c0,3.882,3.118,7,7,7c3.882,0,7-3.118,7-7C14,3.118,10.882,0,7,0L7,0z M10.5,1.686
v0.223c0,0.668-0.064,1.305-0.191,1.941C9.864,3.946,9.545,4.327,9.545,4.773c0,0.255,0.095,0.509,0.286,0.668
C9.609,5.95,9.386,6.459,9.068,6.936C7.891,5.6,7.064,3.914,6.777,2.036c0.732-0.445,1.527-0.795,2.355-1.018
C9.609,1.177,10.086,1.4,10.5,1.686L10.5,1.686z M9.164,7.955c0.573,0.541,1.177,1.018,1.845,1.4
c-0.668,0.127-1.368,0.191-2.1,0.191c-0.318,0-0.636-0.032-0.955-0.032c0-0.064,0-0.127-0.032-0.191
C8.368,8.909,8.782,8.432,9.164,7.955L9.164,7.955z M7,0.636c0.35,0,0.7,0.032,1.05,0.095C7.605,0.923,7.159,1.114,6.714,1.336
C6.682,1.114,6.682,0.891,6.682,0.668C6.777,0.636,6.905,0.636,7,0.636L7,0.636z M8.718,7.477c-0.35,0.477-0.732,0.891-1.145,1.305
C7.414,8.655,7.223,8.591,7,8.591c-0.414,0-0.764,0.255-0.891,0.636C4.836,8.909,3.627,8.432,2.545,7.764
c0.286-1.082,0.764-2.1,1.368-2.991c0.064,0,0.127,0.032,0.223,0.032c0.541,0,0.955-0.414,0.955-0.955
c0-0.127-0.032-0.255-0.064-0.382c0.382-0.382,0.764-0.7,1.177-1.018C6.555,4.359,7.445,6.077,8.718,7.477L8.718,7.477z
M1.591,10.341C1.018,9.386,0.668,8.305,0.636,7.127C1.018,7.446,1.4,7.764,1.814,8.018c-0.127,0.7-0.223,1.432-0.223,2.164V10.341
z M2.005,7.382C1.527,7.064,1.114,6.714,0.7,6.332c0.318-2.864,2.545-5.155,5.377-5.6c0,0.35,0.032,0.668,0.064,1.018
C5.604,2.128,5.094,2.543,4.614,2.991C4.455,2.895,4.295,2.864,4.136,2.864c-0.541,0-0.955,0.414-0.955,0.955
c0,0.223,0.095,0.414,0.223,0.605C2.768,5.314,2.291,6.3,2.005,7.382L2.005,7.382z M2.291,11.264
c-0.032-0.35-0.064-0.7-0.064-1.082c0-0.605,0.064-1.209,0.191-1.782c1.145,0.668,2.386,1.177,3.691,1.464
c0,0.032,0,0.032,0.032,0.064c-1.114,0.732-2.386,1.209-3.755,1.432C2.323,11.327,2.323,11.296,2.291,11.264L2.291,11.264z
M7,13.364c-1.559,0-2.959-0.573-4.073-1.495c1.336-0.255,2.545-0.764,3.627-1.495C6.682,10.468,6.841,10.5,7,10.5
c0.318,0,0.573-0.159,0.764-0.382c0.382,0.032,0.764,0.064,1.145,0.064c1.018,0,2.005-0.127,2.959-0.35
c0.223,0.095,0.445,0.223,0.668,0.286C11.455,12.059,9.386,13.364,7,13.364L7,13.364z M11.932,9.164
c-0.891-0.445-1.718-1.05-2.418-1.75c0.35-0.541,0.636-1.114,0.891-1.686H10.5c0.541,0,0.955-0.414,0.955-0.955
c0-0.382-0.223-0.7-0.541-0.859c0.127-0.573,0.191-1.145,0.191-1.75C12.473,3.341,13.332,5.059,13.332,7
c0,0.636-0.095,1.209-0.255,1.782C12.727,8.941,12.345,9.068,11.932,9.164L11.932,9.164z M11.932,9.164"/>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<g>
<path class="st0" d="M13.925,4.661L14,4.839l-1.539,1.821c-0.15,0.179-0.15,0.464,0,0.643L14,9.054l-0.075,0.179
c-0.263,0.786-0.676,1.5-1.239,2.143l-0.15,0.179l-2.365-0.357c-0.225-0.036-0.488,0.107-0.563,0.321l-0.826,2.286l-0.188,0.036
c-1.051,0.214-2.139,0.214-3.153,0l-0.225-0.036l-0.751-2.25c-0.075-0.214-0.338-0.357-0.563-0.321l-2.44,0.357l-0.15-0.143
c-0.263-0.286-0.488-0.607-0.676-0.929c-0.225-0.393-0.413-0.786-0.563-1.214L0,9.125l1.576-1.786c0.15-0.179,0.15-0.464,0-0.643
L0,4.875l0.075-0.179c0.3-0.786,0.713-1.536,1.276-2.179l0.15-0.143l2.365,0.357c0.225,0.036,0.488-0.107,0.601-0.321l0.826-2.214
L5.48,0.161c1.013-0.214,2.064-0.214,3.115,0L8.82,0.196l0.751,2.143c0.075,0.214,0.338,0.393,0.563,0.357l2.402-0.286l0.15,0.143
c0.263,0.286,0.488,0.607,0.676,0.929C13.587,3.839,13.775,4.232,13.925,4.661L13.925,4.661z M12.686,3.804
c-0.15-0.25-0.3-0.464-0.488-0.679l-1.989,0.25C9.609,3.446,9.008,3.089,8.82,2.554l-0.638-1.75c-0.788-0.143-1.576-0.143-2.365,0
L5.142,2.625C4.954,3.161,4.316,3.518,3.716,3.411L1.802,3.125c-0.413,0.5-0.713,1.036-0.938,1.607l1.314,1.5
c0.375,0.429,0.375,1.107,0,1.571L0.863,9.268c0.113,0.321,0.263,0.607,0.45,0.893c0.15,0.25,0.3,0.464,0.488,0.679l2.027-0.286
c0.601-0.071,1.201,0.286,1.389,0.821l0.638,1.821c0.788,0.143,1.614,0.143,2.44,0l0.676-1.893
c0.188-0.536,0.826-0.893,1.389-0.786l1.914,0.286c0.375-0.464,0.676-1,0.901-1.571l-1.276-1.429
c-0.375-0.429-0.413-1.107-0.038-1.571l1.276-1.536C13.024,4.411,12.874,4.089,12.686,3.804L12.686,3.804z M7.019,9.446
c-1.464,0-2.627-1.107-2.627-2.5c0-1.393,1.164-2.5,2.627-2.5c1.464,0,2.627,1.107,2.627,2.5C9.646,8.339,8.483,9.446,7.019,9.446
L7.019,9.446z M7.019,8.732c1.051,0,1.877-0.786,1.877-1.786S8.07,5.161,7.019,5.161c-1.051,0-1.877,0.786-1.877,1.786
S5.968,8.732,7.019,8.732L7.019,8.732z M7.019,8.732"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14 14" style="enable-background:new 0 0 14 14;" xml:space="preserve">
<style type="text/css">
.st0{fill:#1685FF;}
</style>
<g>
<g>
<path class="st0" d="M13.491,3.216H11.47V2.964c0-0.663-0.437-1.2-0.976-1.2H4.706c-0.037,0-0.067-0.037-0.067-0.083V1.06
c0-0.185-0.121-0.335-0.272-0.335H3.351c-0.034,0-0.062-0.034-0.062-0.076V0.328C3.289,0.147,3.17,0,3.023,0H0.89
C0.398-0.001,0,0.489,0,1.093v12.199C0,13.683,0.258,14,0.576,14h10.45c0.226,0,0.424-0.171,0.488-0.42l2.464-9.613
C14.075,3.592,13.83,3.216,13.491,3.216L13.491,3.216z M0.675,1.509c0-0.375,0.248-0.68,0.553-0.68h1.216
c0.094,0,0.17,0.093,0.17,0.209v0.306c0,0.116,0.076,0.209,0.17,0.209h1.009c0.094,0,0.17,0.093,0.17,0.209v0.62
c0,0.116,0.076,0.209,0.17,0.209h6.36c0.165,0,0.301,0.167,0.301,0.37v0.252H3.047c-0.226,0-0.424,0.171-0.488,0.42l-1.884,7.349
V1.509z M13.177,4.334l-1.707,6.659l-0.557,2.176H0.845c-0.008,0-0.014-0.001-0.022-0.002l2.269-8.855
c0.041-0.16,0.162-0.269,0.298-0.269h9.614C13.126,4.045,13.214,4.191,13.177,4.334L13.177,4.334z M13.177,4.334"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 14.067 14.013" style="enable-background:new 0 0 14.067 14.013;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g>
<path class="st0" d="M13.921,8.208c0.3-1.892-0.1-3.585-1.202-5.178c-1.302-1.992-4.706-3.485-6.208-2.888
c0.1,0.398,0.1,0.598,0.2,0.996c3.605,0,5.908,2.589,6.108,5.278c0.3,2.589-1.202,5.278-3.404,6.075V9.9
c0-0.398-0.2-0.498-0.401-0.498c-0.501,0-0.701,0.199-0.501,0.797c0.2,0.996,0.1,1.992,0,2.988c0,0.498,0.3,0.498,0.901,0.498
h2.203c1.101,0,1.302,0.199,1.302-0.498c0-0.398-0.1-0.498-0.501-0.498h-1.001C12.72,11.593,13.621,10.1,13.921,8.208
L13.921,8.208z M1.005,7.013c0-2.191,1.502-4.88,3.004-5.079v2.091c0,0.498,0.1,0.498,0.501,0.498c0.501,0.1,0.601,0,0.601-0.498
V0.739c0-0.498-0.1-0.498-0.501-0.498H1.305c-0.401,0-0.501,0.1-0.501,0.498c0,0.498,0,0.498,0.501,0.498h1.402
c-3.104,2.689-3.304,6.672-1.702,9.361c1.502,2.589,4.506,3.585,6.308,3.386c-0.1-0.398-0.1-0.598-0.2-0.996
C3.308,13.087,1.005,9.9,1.005,7.013L1.005,7.013z"/>
</g>
</g>
</svg>
This diff is collapsed.
import React, { useState, useEffect } from 'react';
import styles from './maintenance.less'
import {
Form,
Card,
Space,
Table,
Popconfirm,
Spin,
Tooltip,
notification,
Tree,
Button,
} from 'antd';
import {
DoubleLeftOutlined,
DoubleRightOutlined,
PlusSquareFilled,
RightOutlined,
EditTwoTone,
DeleteOutlined,
OrderedListOutlined,
ApartmentOutlined,
DesktopOutlined,
PlusOutlined
} from '@ant-design/icons';
import AddModal from './AddModal'
const maintenance = () => {
const [addVisible, setAddVisible] = useState(false)
const [type, setType] = useState('')
const [formObj, setFormObj] = useState('')
const [tableData, setTableData] = useState([])
const columns = [
{
title: '业务名称',
dataIndex: 'businessName',
key: 'businessName',
width: 100,
align:'center',
},
{
title: '业务类型',
dataIndex: 'businessType',
key: 'businessType',
width: 100,
ellipsis: true,
align:'center',
},
{
title: '执行周期',
dataIndex: 'docycle',
key: 'docycle',
width: 100,
align:'center',
},
{
title: '台账名称',
dataIndex: 'accountName',
key: 'accountName',
width: 200,
ellipsis: true,
align:'center',
},
{
title: '反馈名称',
dataIndex: 'feedbackName',
key: 'feedbackName',
width: 200,
align:'center',
},
{
title: '台账过滤条件',
dataIndex: 'filterCondition',
key: 'filterCondition',
width: 200,
ellipsis: true,
align:'center',
},
{
title: '是否送审',
dataIndex: 'isSubmit',
key: 'isSubmit',
width: 100,
align:'center',
},
{
title: '执行角色',
dataIndex: 'doRole',
key: 'doRole',
width: 200,
ellipsis: true,
align:'center',
},
{
title: '预生成天数',
dataIndex: 'produceDays',
key: 'produceDays',
width: 100,
align:'center',
},
{
title: '在线任务量',
dataIndex: 'onLines',
key: 'onLines',
width: 100,
ellipsis: true,
align:'center',
},
{
title: '启停',
dataIndex: 'doNot',
key: 'doNot',
width: 100,
align:'center',
},
{
title: '操作',
key: 'action',
align:'center',
rener: record =>{
<Space size="middle">
<Tooltip title="修改">
<EditTwoTone
onClick={() => editEventType(record)}
style={{ fontSize: '16px' }}
/>
</Tooltip>
<Tooltip title="删除">
<Popconfirm
placement="bottomRight"
title={
<p>
是否确认删除?
</p>
}
okText="确认"
cancelText="取消"
onConfirm={() => deleteEventType(record)}
>
<DeleteOutlined style={{ fontSize: '16px', color: '#e86060' }} />
</Popconfirm>
</Tooltip>
</Space>
}
}
]
const add =()=>{
setAddVisible(true)
setType('add')
}
const editEventType =record=>{
setAddVisible(true)
setType('edit')
setFormObj(record);
}
const deleteEventType =record=>{
}
const onSubmit =()=>{
setAddVisible(false)
}
return (
<div className={styles.maintenanceContainer}>
<div className={styles.contentContainers}>
<div style={{ height: '50px', backgroundColor: 'white' }}>
<span style={{ float: 'right', marginRight: '10px' }}>
<Button icon={<PlusOutlined className={styles.icon} />} onClick={add} style={{ marginLeft: '30px', verticalAlign: 'middle', marginTop: '10px' }}>
添加
</Button>
</span>
</div>
<Table
// rowClassName={setRowClassName}
size="small"
rowKey='ID'
bordered
onRow={record => {
return {
onDoubleClick: event => { event.stopPropagation(); editEventType(record) }, //双击
};
}}
columns={columns}
dataSource={tableData}
scroll={{ y: 'calc(100vh - 155px)' }}
pagination={{
showTotal: (total, range) =>
`第${range[0]}-${range[1]} 条/共 ${total} 条`,
pageSizeOptions: [10, 20, 50, 100],
defaultPageSize: 20,
showQuickJumper: true,
showSizeChanger: true,
}}
/>
{/* 添加事件 */}
<AddModal
visible={addVisible}
type={type}
onCancel={() => setAddVisible(false)}
callBackSubmit={onSubmit}
formObj={formObj}
/>
</div>
</div>
)
};
export default maintenance
\ No newline at end of file
.maintenanceContainer{
.ant-card-body {
padding: 12px 24px 24px 24px;
}
.linkDrowp{
position: absolute;
top: 0px;
left: 92.5%;
width: 1rem;
height: 100%;
display: flex;
align-items: center;
}
.listItem{
display: flex;
justify-content: space-between;
font-size: 14px;
font-weight: 400;
color: #414E65;
cursor: pointer;
line-height: 28px;
align-items: center;
padding: 8px 14px;
}
.ant-btn .anticon.anticon-plus > svg, .ant-btn .anticon.anticon-minus > svg {
margin-top: -5px;
}
.pickItem{
background-color: #F5F6F9;
}
}
.formData{
height: 38rem;
overflow-y: scroll;
.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before{
display: none;
}
.formData_label{
display: flex;
align-items: center;
}
.filed_listItem{
display: flex;
height: 3.6rem;
.ant-btn-icon-only {
width: 32px;
height: 32px;
/* padding: 2.4px 0; */
font-size: 16px;
border-radius: 2px;
display: flex;
align-items: center;
justify-content: center;
}
}
}
\ No newline at end of file
......@@ -651,7 +651,7 @@ const AddModal = props => {
{
validator: (rule, value) => {
if (form.getFieldsValue().BusinessType == '') {
return Promise.reject('摘要字段必选')
return Promise.reject('业务类型必填')
}
return Promise.resolve();
}
......
......@@ -214,7 +214,7 @@ const incident = () => {
{
title: '操作',
key: 'action',
aligin: 'center',
align: 'center',
render: record => (
<Space size="middle">
......
......@@ -9,5 +9,6 @@
width: 100%;
height: 20px;
margin-bottom: 10px;
}
}
\ No newline at end of file
import React, { useState, useEffect } from 'react'
import { Button, Descriptions, Input } from 'antd'
import { Button, Descriptions, Input, Card, Divider, Row, Col } from 'antd'
import styles from './BaseConfig.less'
import { S_GetDataBaseConfig, GetTCPConfigInfo, GetDataBaseConfig, GetBasicInfo } from '@/services/platform/hostmanager'
import { VerticalAlignBottomOutlined } from '@ant-design/icons'
import servie from '../../../../assets/images/icons/服务器管理.svg'
import configuration from '../../../../assets/images/icons/站点配置.svg'
const BaseConfig = () => {
const [currentDataBase, setCurrentDataBase] = useState({userName:"",password:"",dbName:"",ip:""});
const [currentDataBase, setCurrentDataBase] = useState({ userName: "", password: "", dbName: "", ip: "" });
const [currentSiteInfo, setcurrentSiteInfo] = useState("");
......@@ -37,61 +39,91 @@ const BaseConfig = () => {
}
)
}
// return (
// <div className={styles.base_container}>
// <Card title="数据库连接" style={{ width: 300 }}>
// <Card type="inner" title="服务器IP" style={{ margin: 10 }}>
// {currentDataBase.ip}
// </Card>
// <Card type="inner" title="数据库名称" style={{ margin: 10 }}>
// {currentDataBase.dbName}
// </Card>
// </Card>
// <Card title="权限验证" style={{ width: 300, marginLeft: 15 }}>
// <Card type="inner" title="登录名" style={{ margin: 10 }}>
// {currentDataBase.userName}
// </Card>
// <Card type="inner" title="密码" style={{ margin: 10 }}>
// {currentDataBase.password}
// </Card>
// </Card>
// <Card title="站点信息" style={{ width: 300, marginLeft: 15 }}>
// <Card type="inner" title="站点编号" style={{ margin: 10 }}>
// {currentSiteInfo}
// </Card>
// </Card>
// </div>
// )
const encrypt = (word) => {
let encryptStr = ""
for(let i = 0;i < word.length;i++){
for (let i = 0; i < word.length; i++) {
encryptStr += "*"
}
return encryptStr
}
return (
<div className={styles.base_container}>
<div style={{ backgroundColor: "white", padding: "10px", width: "100%" }}>
<Descriptions title="" bordered >
<Descriptions.Item label="站点编号" span={3}>
<Card style={{ width: '100%', height: 'calc(100vh - 130px)' }}>
<div style={{display:'flex', alignItems:'center', marginTop:'10px'}}>
<img src={configuration} style={{ height: '16px'}}/><span style={{ marginLeft: '10px', fontWeight:'bold' }}>站点配置</span>
</div>
<Divider />
<Row>
<Col span={3}>
<span style={{ marginLeft: '27px', lineHeight: '32px', color: 'gray' }}>站点编号</span>
</Col>
<Col span={21}>
{
currentSiteInfo?<Input value={currentSiteInfo} disabled={true} style={{with:"200px"}}/>:<div>
<Input value={currentSiteInfo} style={{width:"200px"}} />
<Button style={{marginLeft:"10px"}}>生成编号</Button>
</div>
currentSiteInfo ? <Input value={currentSiteInfo} disabled={true} style={{width:'80%'}}/>
: <div>
<Input value={currentSiteInfo} style={{width:'80%'}} />
<Button style={{ marginLeft: "10px" }}>生成编号</Button>
</div>
}
</Descriptions.Item>
<Descriptions.Item label="服务器IP" span={3}>{currentDataBase.ip}</Descriptions.Item>
<Descriptions.Item label="数据库名称" span={3}>{currentDataBase.dbName}</Descriptions.Item>
<Descriptions.Item label="登录名" span={1}>{currentDataBase.userName}</Descriptions.Item>
<Descriptions.Item label="密码" span={1}>{encrypt(currentDataBase.password)}</Descriptions.Item>
</Descriptions>
</div>
</Col>
</Row>
<div style={{ marginTop: '50px', display:'flex', alignItems:'center'}}>
<img src={servie} style={{ height: '16px'}} alt="" /><span style={{ marginLeft: '10px', fontWeight:'bold' }}>服务器链接</span>
</div>
<Divider />
<Row gutter={[8, 16]} >
<Col span={3}>
<span style={{ marginLeft: '27px', lineHeight: '32px', color: 'gray' }}>服务器IP</span>
</Col>
<Col span={21}>
<span style={{ lineHeight: '32px' }}>{currentDataBase.ip}</span>
</Col>
<Col span={3}>
<span style={{ marginLeft: '27px', lineHeight: '32px', color: 'gray' }}>数据库名称</span>
</Col>
<Col span={21}>
<span style={{ lineHeight: '32px' }}>{currentDataBase.dbName}</span>
</Col>
<Col span={3}>
<span style={{ marginLeft: '27px', lineHeight: '32px', color: 'gray' }}>登录名</span>
</Col>
<Col span={21}>
<span style={{ lineHeight: '32px' }}>{currentDataBase.userName}</span>
</Col>
<Col span={3}>
<span style={{ marginLeft: '27px', lineHeight: '32px', color: 'gray' }}>密码</span>
</Col>
<Col span={21}>
<span style={{ lineHeight: '32px' }}>{encrypt(currentDataBase.password)}</span>
</Col>
</Row>
</Card>
</div>
)
// return (
// <div className={styles.base_container}>
// <div style={{ backgroundColor: "white", padding: "10px", width: "100%" }}>
// <Descriptions title="" bordered >
// <Descriptions.Item label="站点编号" span={3}>
// {
// currentSiteInfo?<Input value={currentSiteInfo} disabled={true} style={{with:"200px"}}/>:<div>
// <Input value={currentSiteInfo} style={{width:"200px"}} />
// <Button style={{marginLeft:"10px"}}>生成编号</Button>
// </div>
// }
// </Descriptions.Item>
// <Descriptions.Item label="服务器IP" span={3}>{currentDataBase.ip}</Descriptions.Item>
// <Descriptions.Item label="数据库名称" span={3}>{currentDataBase.dbName}</Descriptions.Item>
// <Descriptions.Item label="登录名" span={1}>{currentDataBase.userName}</Descriptions.Item>
// <Descriptions.Item label="密码" span={1}>{encrypt(currentDataBase.password)}</Descriptions.Item>
// </Descriptions>
// </div>
// </div>
// )
}
export default BaseConfig
import React, { useEffect, useState } from 'react'
import { Card, Form, Input, Button, Select, message } from 'antd'
import { Card, Form, Input, Button, Select, message, Divider, Spin } from 'antd'
import styles from './messageConfig.less';
import { GetMessageConfigInfo, SaveSystemInfo, ConnectMessPlatform, GetBasicInfo, GetDataBaseConfig } from '@/services/platform/hostmanager'
import message11 from '../../../../assets/images/icons/消息.svg'
const layout = {
labelCol: { span: 8 },
wrapperCol: { span: 16 },
labelCol: { span: 3 },
wrapperCol: { span: 21 },
};
const tailLayout = {
wrapperCol: { offset: 8, span: 16 },
wrapperCol: { offset: 11, span: 13 },
};
const MessageConfig = () => {
const [loading, setLoading] = useState(false); // 加载
const [currentAddress, setCurrentAddress] = useState("")
const [currentDataBase, setCurrentDataBase] = useState({});
const [currentSiteInfo, setcurrentSiteInfo] = useState("");
......@@ -24,6 +24,7 @@ const MessageConfig = () => {
const onFinish = (values) => {
//先测试连接再保存
//1.测试链接
setLoading(true)
ConnectMessPlatform({
messAddress: values.messageAddress,
sqlServerIP: currentDataBase.ip,
......@@ -32,6 +33,7 @@ const MessageConfig = () => {
sqlName: currentDataBase.dbName,
siteCode: currentSiteInfo
}).then(res => {
setLoading(false)
if (res.code === 0) {
//2.保存连接
SaveSystemInfo({
......@@ -42,12 +44,12 @@ const MessageConfig = () => {
if (res.code === 0) {
message.info("配置保存成功")
} else {
message.errorInfo(res.msg)
message.error(res.msg)
}
}
)
} else {
message.errorInfo(res.msg)
message.error(res.msg)
}
})
......@@ -93,8 +95,8 @@ const MessageConfig = () => {
return (
<div className={styles.message_container}>
<Card title={`消息平台`} style={{ width: "100%" }}>
<Card style={{ width: "100%", height: 'calc(100vh - 130px)' }}>
<Spin spinning={loading} tip="loading">
<Form
{...layout}
form={form}
......@@ -103,13 +105,16 @@ const MessageConfig = () => {
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<div style={{marginTop:'10px', display: 'flex', alignItems: 'center', marginLeft:'15px' }}>
<img src={message11} style={{ height: '16px' }} alt="" /><span style={{ marginLeft: '10px', fontWeight: 'bold' }}>消息平台</span>
</div>
<Divider />
<Form.Item
label="服务地址(平台)"
label="服务地址(平台)"
name="messageAddress"
rules={[{ required: true, message: '请输入域名(IP):端口,例如:192.168.19.102:8131' }]}
rules={[{ required: true, pattern: new RegExp(/^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(:\d*)$/, "g"), message: '请输入正确的IP例如:192.168.12.231:8231' }]}
>
<Input />
<Input style={{width:'94%'}}/>
</Form.Item>
<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit" disabled={currentSiteInfo.length > 0 ? false : true}>
......@@ -117,6 +122,7 @@ const MessageConfig = () => {
</Button>
</Form.Item>
</Form>
</Spin>
</Card>
</div>
)
......
import React, { useEffect, useState } from 'react'
import { Card, Form, Input, Button, Switch, message } from 'antd'
import { Card, Form, Input, Button, Switch, message, Divider, Row, Col, Spin } from 'antd'
import styles from './ProxyConfig.less'
import { GetNginxConfigInfo, InsertNginxConfig, StartNginx, StopNginx, ReloadNginx, NginxCache, NginxLog } from '@/services/platform/hostmanager'
import { ReloadOutlined } from '@ant-design/icons';
import configuration from '../../../../assets/images/icons/消息.svg'
const layout = {
labelCol: { span: 8 },
wrapperCol: { span: 16 },
labelCol: { span: 2 },
wrapperCol: { span: 22 },
};
const tailLayout = {
wrapperCol: { offset: 8, span: 16 },
wrapperCol: { offset: 11, span: 13 },
};
const ProxyConfig = () => {
const [loading, setLoading] = useState(false); // 加载
const [form] = Form.useForm();
const [flag, setFlag] = useState(1)
......@@ -30,12 +31,13 @@ const ProxyConfig = () => {
})
const onFinish = (values) => {
setLoading(true)
InsertNginxConfig({
port: values.NginxPort,
iisLocation: values.IISIPProt,
emqLocation: values.EMQIPPort
}).then(
res => {
}).then(res => {
setLoading(false)
if (res.code === 0) {
message.success("保存成功")
} else {
......@@ -178,7 +180,8 @@ const ProxyConfig = () => {
return (
<div className={styles.proxy_container}>
<Card title="配置文件管理" style={{ width: '45%' }}>
<Card style={{ width: '100%', height: 'calc(100vh - 130px)' }}>
<Spin spinning={loading} tip="loading">
<Form
{...layout}
form={form}
......@@ -187,31 +190,33 @@ const ProxyConfig = () => {
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<div style={{ display: 'flex', alignItems: 'center', marginTop: '10px' }}>
<img src={configuration} style={{ height: '16px' }} /><span style={{ marginLeft: '10px', fontWeight: 'bold' }}>配置文件管理</span>
</div>
<Divider />
<Form.Item
label="端口(ngnix)"
name="NginxPort"
rules={[{ required: true,pattern: new RegExp(/^[1-9]\d*$/,'g'), message: '请输入ngnix端口,例如:8091' }]}
rules={[{ required: true, pattern: new RegExp(/^[1-9]\d*$/, 'g'), message: '请输入ngnix端口,例如:8091' }]}
>
<Input />
<Input style={{marginLeft:'30px', width:'98%'}}/>
</Form.Item>
<Form.Item
label="地址(IIS)"
name="IISIPProt"
rules={[{ required: true, message: '请输入服务器地址!' }]}
rules={[{ required: true, pattern: new RegExp(/^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(:\d*)$/, "g"), message: '请输入正确的IP例如:192.168.12.231:8231' }]}
hasFeedback
>
<Input />
<Input style={{marginLeft:'30px', width:'98%'}}/>
</Form.Item>
<Form.Item
label="地址(EMQ)"
name="EMQIPPort"
hasFeedback
rules={[{ required: true, message: '请选择是否!' }]}
rules={[{ required: true, pattern: new RegExp(/^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(:\d*)$/, "g"), message: '请输入正确的IP例如:192.168.12.231:8231' }]}
>
<Input />
<Input style={{marginLeft:'30px', width:'98%'}}/>
</Form.Item>
<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit" disabled={currentConfig.NginxPort.length > 0 ? 0 : 1}>
......@@ -219,28 +224,40 @@ const ProxyConfig = () => {
</Button>
</Form.Item>
</Form>
</Card>
<Card title="服务器管理" style={{ width: "45%", marginLeft: 15 }}>
<div style={{ display: 'flex', alignItems: 'center', marginTop: '40px' }}>
<img src={configuration} style={{ height: '16px' }} /><span style={{ marginLeft: '10px', fontWeight: 'bold' }}>服务管理</span>
</div>
<Divider />
<div className={styles.operate_container}>
<div className={styles.operate_item}>
<div>服务器运行</div>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginx} onChange={OperateNginx} />
</div>
<div className={styles.operate_item}>
<div>服务器日志</div>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginxLog} onChange={OperateNginxLog} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1}/>
</div>
<div className={styles.operate_item}>
<div>服务器缓存</div>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginxCache} onChange={OperateNginxCache} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1}/>
</div>
<div className={styles.operate_item}>
<div>服务器重载</div>
<Button type="primary" icon={<ReloadOutlined />} onClick={OperateReloadNginx} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1}>重载</Button>
</div>
<Row gutter={[20, 25]} style={{display:'flex', alignItems:'center'}}>
<Col span={2}>
<div style={{display:'flex', justifyContent:'flex-end', marginRight:'-10px'}}>服务运行</div>
</Col>
<Col span={22}>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginx} onChange={OperateNginx} style={{marginLeft:'30px'}}/>
</Col>
<Col span={2}>
<div style={{display:'flex', justifyContent:'flex-end', marginRight:'-10px'}}>服务日志</div>
</Col>
<Col span={22}>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginxLog} onChange={OperateNginxLog} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1} style={{marginLeft:'30px'}}/>
</Col>
<Col span={2}>
<div style={{display:'flex', justifyContent:'flex-end', marginRight:'-10px'}}>服务缓存</div>
</Col>
<Col span={22}>
<Switch checkedChildren='开启' unCheckedChildren='关闭' checked={currentConfig.IsStartNginxCache} onChange={OperateNginxCache} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1} style={{marginLeft:'30px'}}/>
</Col>
<Col span={2}>
<div style={{display:'flex', justifyContent:'flex-end', marginRight:'-10px'}}>服务重载</div>
</Col>
<Col span={22}>
<Button type="primary" icon={<ReloadOutlined style={{marginTop:'-10px'}}/>} onClick={OperateReloadNginx} disabled={currentConfig.IsStartNginx > 0 ? 0 : 1} style={{marginLeft:'30px'}}>重载</Button>
</Col>
</Row>
</div>
</Spin>
</Card>
</div>
)
......
......@@ -13,12 +13,14 @@
.operate_item{
display: flex;
flex-direction: row;
justify-content: space-between;
justify-content:flex-start;
align-items: center;
height: 50px;
border-width: 1px;
border-color: #EEEEEE;
border-bottom-style: solid;
margin-left:25px;
}
}
}
\ No newline at end of file
}
.anticon svg {
margin-top:-5px;
}
......@@ -4,26 +4,6 @@ import { Form, Modal, Row, Col, Input, Select, notification } from 'antd';
const VideoModal = props => {
const { callBackSubmit = () => { }, visible, onCancel, obj } = props;
// useEffect(()=>{
// getData()
// },[visible])
// const getData =()=>{
// var url = `http://127.0.0.1:8085/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${obj.Name}&disk=${obj.RecorderName}&site=null`
// let bodyHtml = `<iframe style= {{ border: 0, width: "100%", height: 630,}} src="${url}"/>`;
// let y=document.getElementsByClassName("pp")
// console.log(y)
// let x=document.getElementsByClassName("pp").innerHTML=bodyHtml
// console.log(x)
// // var url = `http://127.0.0.1:8085/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${obj.Name}&disk=${obj.RecorderName}&site=null`
// // var x = document.getElementsByClassName("pp")
// // var iframe = document.createElement('iframe');
// // console.log(url)
// // iframe.src=url
// // x.appendChild(iframe);
// }
return (
<Modal
visible={visible}
......@@ -35,7 +15,7 @@ const VideoModal = props => {
footer={[]}
>
<div className="pp">
< iframe style= {{ border: 0, width: "100%", height: 630,} } src={"http://127.0.0.1:8085"+`/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${obj.Name}&disk=${obj.RecorderName}&site=null`}/>
< iframe style={{ border: 0, width: "100%", height: 630, }} src={window.location.origin + `/web4/video/indexAll.html?ID=${obj.EquipmentCode}&skipCheck=true&name=${obj.Name}&disk=${obj.RecorderName}&site=null`} />
</div>
</Modal>
)
......
......@@ -75,7 +75,7 @@ const videoManager = () => {
width: 150,
align: 'center',
title: (
<div>录入时间<Tooltip title="升序"><CaretUpFilled style={{display:show1,color:'#1890ff',marginTop: '-18px', marginLeft: '60%'}} onClick={()=> shengxu()}/></Tooltip><Tooltip title="降序"><CaretDownFilled style={{display:show2,color:'#1890ff',marginTop: '-18px', marginLeft: '60%'}} onClick={()=> jiangxu()}/></Tooltip></div>
<div>录入时间<Tooltip title="点击降序"><CaretUpFilled style={{display:show1,color:'#1890ff',marginTop: '-18px', marginLeft: '60%'}} onClick={()=> shengxu()}/></Tooltip><Tooltip title="点击升序"><CaretDownFilled style={{display:show2,color:'#1890ff',marginTop: '-18px', marginLeft: '60%'}} onClick={()=> jiangxu()}/></Tooltip></div>
)
}, {
title: '操作',
......
......@@ -51,6 +51,7 @@ import TableManager from '@/pages/platformCenter/bsmanager/tablemanager';
import StandingBook from '@/pages/platformCenter/standingBook/standingBook';
import FiledConfig from '@/pages/platformCenter/filedConfig/filedConfig';
import Incident from '@/pages/platformCenter/bsmanager/workOrder/incident';
import Maintenance from '@/pages/platformCenter/bsmanager/maintenance/maintenance';
import Flow from '@/pages/platformCenter/bsmanager/workFlow/flow';
import FlowNode from '@/pages/platformCenter/bsmanager/workFlow/flowNode/flowNode';
import Workflow from '@/pages/platformCenter/bsmanager/workflowEdit/Workflow';
......@@ -306,6 +307,11 @@ export default {
name: '工作流编辑',
component: Workflow,
},
{
path: '/platformCenter/bsmanger/maintenance',
name: '巡维保',
component: Maintenance,
},
// {
// path: '/platformCenter/bsmanger/standbookmanager',
// name: '台账配置',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment