✨ login page
BIN
src/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2
Normal file
BIN
src/assets/images/login-back.png
Normal file
After Width: | Height: | Size: 55 KiB |
@@ -4,12 +4,30 @@ body {
|
||||
position: relative;
|
||||
transition: background-color 0.3s,
|
||||
color 0.3s;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
@include useTheme {
|
||||
background-color: getModeVar('bgColor');
|
||||
color: getModeVar('infoColor');
|
||||
background-color: getModeVar('bgColor') !important;
|
||||
color: getModeVar('infoColor') !important;
|
||||
}
|
||||
}
|
||||
|
||||
#app {
|
||||
@include useTheme {
|
||||
background-color: getModeVar('bgColor') !important;
|
||||
color: getModeVar('infoColor') !important;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
#nprogress .bar {
|
||||
background: #48c453 !important; //自定义颜色
|
||||
}
|
||||
|
1
src/assets/svgs/dinosaur-comfort.svg
Normal file
After Width: | Height: | Size: 75 KiB |
1
src/assets/svgs/dinosaur-contemplation.svg
Normal file
After Width: | Height: | Size: 66 KiB |
1
src/assets/svgs/dinosaur-excited.svg
Normal file
After Width: | Height: | Size: 91 KiB |
1
src/assets/svgs/dinosaur-glad.svg
Normal file
After Width: | Height: | Size: 67 KiB |
352
src/assets/svgs/dinosaur-greet.svg
Normal file
@@ -0,0 +1,352 @@
|
||||
<svg xml:space="preserve" style="enable-background:new 0 0 1024 1024;" viewBox="0 0 1024 1024" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="图层_1" version="1.1">
|
||||
<style type="text/css">
|
||||
.st0{fill:#FFC156;}
|
||||
.st1{fill:#FFD9BF;}
|
||||
.st2{fill:#FFA246;}
|
||||
.st3{fill:#FE6048;}
|
||||
.st4{fill:#DF615D;}
|
||||
.st5{fill:#F4C5A9;}
|
||||
.st6{fill:#F88B79;}
|
||||
.st7{fill:#B14F59;}
|
||||
.st8{fill:#A7343F;}
|
||||
.st9{fill:#63344A;}
|
||||
.st10{fill:#760906;}
|
||||
.st11{fill:#C33935;}
|
||||
.st12{fill:#CF4847;}
|
||||
.st13{fill:#FFA490;}
|
||||
.st14{fill:#FFBCA9;}
|
||||
.st15{fill:#6C3D4F;}
|
||||
.st16{fill:#FEF2E1;}
|
||||
.st17{fill:#E54A3E;}
|
||||
.st18{fill:#FEE09C;}
|
||||
.st19{fill:#7D434D;}
|
||||
.st20{fill:#FF8F53;}
|
||||
.st21{fill:#FF8044;}
|
||||
.st22{fill:#958A9C;}
|
||||
.st23{fill:#E2917E;}
|
||||
.st24{fill:#F6F7F9;}
|
||||
.st25{fill:#F0D1CD;}
|
||||
.st26{fill:#FBB2B1;}
|
||||
</style>
|
||||
<title>8</title>
|
||||
<g>
|
||||
<path d="M621.9,280.8c0.3,3.4-1.6,6.5-5,7.8c-0.3,0-0.3,0.3-0.3,0.5c0,0.3,0,0.5,0,0.8c0,0.5,0.5,0.8,0.8,0.8h0.3
|
||||
c1.8-0.5,3.6-1,5.5-1.8c1.6-0.5,3.4-1,5.2-1c13.6-0.8,26.8-2.6,39.9-5.5c2.6-0.8,5.5,0.8,6.5,3.4c0.8,8.3-0.8,16.7-4.4,24.2
|
||||
c-6,12-13.6,23.5-22.4,33.6c-0.5,0.5-0.5,1.3,0.3,1.8c0.3,0.3,0.5,0.3,0.8,0.3l2.1,0.3l-26.3,13.6L596.9,377c-0.8,0.3-1,1-0.5,1.8
|
||||
v0.3c0.3,0.3,0.5,0.8,1,0.8c-0.3,0.3-0.5,0.8-0.5,1.3c0,0.8-0.3,1-1,0.5L553.7,347c0.5-0.3,0.8-0.3,1.3-0.3c0.8,0,1-0.5,1-1
|
||||
c0-0.5-0.3-1-0.8-1.3c-13-10.7-27.1-20.1-42-27.9c-24.8-12.3-52.1-18.8-79.8-19c-10.4-0.3-20.6-0.5-30.2-0.5
|
||||
c-2.3,0-4.7,0.5-6.8,1.6c-3.9,1.8-5,0.8-3.4-3.1c2.6-5.7,6-11.2,10.4-15.9c3.6-4.2,3.6-14.1,4.4-18c2.6-10.9,8.3-20.9,16.4-28.7
|
||||
c2.1-1.8,5.2-2.1,7.3-0.3c3.9,3.4,8.1,6.8,12,9.9c8.3,6.8,17.7,10.7,27.4,15.9c12.3,6.5,18.2,14.1,26.1,25.5c0.5,1,1.6,1.6,2.6,2.1
|
||||
c0.5,0.3,1,0,1.3-0.8c0-0.3,0-0.3,0-0.5c-0.3-1.8-0.5-3.6,0-5.5c0.3-1.3,0.8-1.6,1.8-0.5c3.6,2.9,4.2,8.3,1.3,12
|
||||
c-0.5,0.8-0.3,1.8,0.5,2.1c0.3,0,0.3,0.3,0.5,0.3l0.8,0.3c0.5,0,0.8,0,1-0.5c3.9-8.3,9.4-20.1,16.2-26.1c0.8-0.5,1.6-0.5,2.3,0
|
||||
c4.4,3.1,7.8,7.3,10.4,12c0.3,0.5,1,0.8,1.6,0.5c0.3,0,0.5-0.3,0.5-0.5c5.2-10.2,14.3-19.5,25.5-21.6c7-1.3,13.6-3.6,19.8-7
|
||||
c2.9-1.6,6.3-0.5,7.8,2.3c2.9,5.5,3.9,11.5,3.4,17.7c0,1,0.5,1.8,1.6,2.1c2.9,0.8,5.7,1,8.6,0.8
|
||||
C611.5,271.9,619.3,273.5,621.9,280.8z" class="st0"></path>
|
||||
<path d="M350.3,313.4c-1-0.3-1.8,0.3-2.6,0.8c-0.5,0.5-1,1.6-1,2.3c-0.3,1.6-1,3.1-1.6,4.7l-7,4.4
|
||||
c-9.6,4.7-18.5,11.2-26.1,19c-0.3-0.3-0.3-0.8-0.5-1c0-0.5-0.5-1-1-1l0,0h-1l13.3-15.4c0.5-0.5,1-1,1.6-1c1.6-0.5,2.9-1.8,3.4-3.4
|
||||
c0.3-1,0-1.6-1-1.6h-5.2c-0.5,0-1-0.3-1.6-0.5c-3.9-3.1-8.3-6-12.8-8.6c-4.2-2.6-8.3-5.7-12-8.9c-2.9-2.6-7.6-3.6-9.6-8.3
|
||||
c-0.3-0.8-1-1-1.8-0.8c-0.5,0.3-0.8,0.5-0.8,0.8c-0.3,1-0.5,2.1-0.5,3.1c-1-6.5-0.8-13.3,0.5-19.8c0.3-1.6,1.6-2.9,3.4-2.9
|
||||
c9.9,0,19.8,2.1,29.2,6c2.1,0.8,4.4,0,5.2-2.1c0.3-0.3,0.3-0.8,0.3-1c0.5-7.3,7-12.8,14.6-12.3c0.5,0,1.3,0.3,1.8,0.3
|
||||
c7.8,1.8,15.1,4.7,22.2,8.3c9.6,5.2,16.4,14.3,22.4,23.5c1,1.6,0.5,3.4-0.8,4.4c-0.3,0.3-0.8,0.5-1,0.5
|
||||
C369.9,305.5,360,308.9,350.3,313.4z" class="st0"></path>
|
||||
<path d="M674.9,285.7c-0.8-2.6-3.6-4.2-6.5-3.4c-13,2.9-26.6,4.7-39.9,5.5c-1.8,0-3.6,0.5-5.2,1
|
||||
c-1.8,0.8-3.6,1.3-5.5,1.8c-0.5,0.3-1,0-1-0.5v-0.3c0-0.3,0-0.5,0-0.8s0.3-0.5,0.3-0.5c3.1-1.3,5-4.4,5-7.8c1,3.1,2.9,3.9,5.5,2.6
|
||||
c13.3-6,28.2-7,42-2.9C673,281.3,674.9,283.1,674.9,285.7z" class="st1"></path>
|
||||
<path d="M309.7,342.5c-1.8,1.3-3.4,3.1-4.7,5c-0.8,1-2.1,1-3.6-0.3c-9.9-14.6-16.2-31.5-18.2-49.3c0-1,0-2.1,0.5-3.1
|
||||
c0.3-0.8,1-1,1.8-0.8c0.5,0.3,0.8,0.5,0.8,0.8c2.1,4.7,6.8,5.7,9.6,8.3c3.6,3.4,7.8,6.3,12,8.9c4.4,2.6,8.6,5.5,12.8,8.6
|
||||
c0.5,0.3,1,0.5,1.6,0.5h5.2c1,0,1.3,0.5,1,1.6c-0.5,1.6-1.8,2.9-3.4,3.4c-0.8,0.3-1.3,0.5-1.6,1L309.7,342.5z" class="st2"></path>
|
||||
<path d="M575,690.3l2.1,0.3C576.3,690.5,575.8,690.3,575,690.3z" class="st3"></path>
|
||||
<path d="M685.8,640c-0.8,0-1.8,0-2.3-0.5c-6.5-3.9-12-9.6-15.9-16.2c-1.3-2.3-1-5.2,0.5-7.3l9.9-13.3
|
||||
c2.3-3.9,3.1-6.8,2.6-8.6c-0.3-0.5-0.3-1.3,0-1.8c0.5-1.3,0.5-2.9-0.3-4.2c-6.5,2.1-12.8,5.2-18,9.6c-0.5,0.3-1,0.3-1.6,0
|
||||
c-0.3-0.3-0.3-0.5-0.3-0.8c0-0.3,0-0.5,0.3-0.8c5.5-7.8,11.5-14.9,18.5-21.4c0.5-0.5,1.3-0.5,1.6,0l8.9,7.6
|
||||
c0.5,0.5,0.8,1.3,0.8,2.1c0,0.5-0.3,0.8-0.5,1.3c1.3-0.3,2.6-1,3.4-2.1c0.8-0.8,0.8-1.8,0-2.6l0,0c-0.3-0.3-0.3-0.8,0-1l0,0
|
||||
c0.8-0.8,1-1.8,0.8-2.9c-1-4.7-2.1-9.6-2.9-14.9c-0.3-0.8-0.5-1.8-1-2.3c-2.1-2.9-3.4-6.5-3.1-10.2c0-0.8-0.3-1.6-1-1.8l-0.8-0.5
|
||||
c-1-0.3-1.6-0.8-2.1-1.8c-2.6-5.5-4.4-11.2-5.7-16.9c-2.6-12.3-7.6-23.7-14.3-34.1c-0.5-1-1.8-3.1-3.6-6.5
|
||||
c-1.6-3.4-3.9-5.2-5.5-8.3c-2.1-4.4-5-8.3-8.6-11.5c-2.9-3.6-5.2-7.6-7-12c-7.3-22.2-17.5-43.3-30.2-62.8c-3.1-4.4-7-8.6-11.2-12.3
|
||||
c-0.3,0.3-0.5,0.8-0.5,1.3c0,0.8-0.3,1-1,0.5l-42.2-34.7c-11.5-8.6-23.5-16.4-36.2-23.2c-21.4-11.5-44.6-18.2-68.8-20.1l-33.9-2.6
|
||||
c-0.5,0-1.3,0.3-1.6,0.8c0.3,0.5,0.3,1,0,1.6c-0.3,0.8-0.3,1.6,0.3,2.3c0.8,1.8,0.5,3.9-0.8,5.5c-0.5,0.8-1.3,1.3-2.1,1.6
|
||||
c-1,0.3-1.8,0.8-2.6,1.6c-0.5,0.5-1.3,1-2.1,1.3l-7.3,1.8c-2.9,0.8-5.7-1-6.3-3.6c0-0.3,0-0.5-0.3-0.8c-0.3-1.8-0.8-3.4-2.1-4.4
|
||||
c-0.8-0.8-1-0.5-1,0.5c0,0.8,0.3,1.6,0.8,2.3c0.5,0.8,0.8,1.6,0.8,2.3v9.1c0,0.8,0.3,1.6,0.8,2.1c3.9,4.4,9.4,7,15.1,7.3
|
||||
c2.3,0.3,4.7-0.8,6.3-2.3c0.5-0.5,1-0.5,1.6-0.3c0.8,0.3,1.6,0.3,2.1-0.5c1.8-1.8,4.2-3.6,6.3-5.2c1.6-1,3.9-1,5.5,0
|
||||
c2.9,2.1,5.5,2.3,7.6,1l5-10.7c1.3-2.9,5-4.2,8.1-2.9c0,0,0,0,0.3,0c3.6,1.6,6.5,4.4,8.3,7.8c0.5,1,0.3,2.3-0.8,3.1
|
||||
c-0.3,0-0.3,0.3-0.5,0.3c-2.9,0.3-5.2,1.8-7,4.2c10.9,12.8,18,29.7,21.6,50.8c4.4,26.6,4.4,53.4,0,80c-0.5,3.6-1,7.3-1.3,10.7
|
||||
c1.3,0,2.1,0.3,2.3,0.5c0.5,1,0.5,2.3-0.5,3.4c-15.4,13-35.4,12-53.7,6.8c-1-0.3-2.1,0.3-2.6,1.3c-2.6,6.3-5,13.6-7.6,21.4
|
||||
c-1.3,4.4-3.4,8.9-5.7,13c-7.6,12.5-22.2,17.7-35.2,9.1c-9.9-6.5-15.9-16.4-18-29.7c0-0.8-0.8-1.3-1.6-1.3
|
||||
c-5.5,0.5-20.6-0.5-23.2-6.5c-0.8-0.5-1.6-1.6-2.1-2.3c-1.8-4.4-3.6-8.9-5.5-13c-1-2.1-1.6-4.4-2.1-6.8c-0.3-3.1-1-6.3-1.8-9.1
|
||||
c-1.6-4.2-2.9-8.3-3.4-12.8c-2.6-24.5-1-49,4.4-73c1.6-5.7,3.9-11.2,7-16.2c0.8-1.6,1.8-3.1,3.1-4.4c1-1.3,1.8-2.9,2.6-4.2
|
||||
c1.3-2.6,5-5.7,10.9-9.1c3.1-1.6,3.9-5,2.6-9.6c-9.6,4.7-18.5,11.2-26.1,19c-10.2,11.7-16.2,19.3-18.2,22.7
|
||||
c-10.7,19.3-19.5,39.6-25.8,60.7c-2.9,10.2-7.6,20.9-10.4,31.5c-1,4.2-3.1,8.1-5.5,11.7c-5.2,7.8-9.9,16.2-13.8,24.8
|
||||
c-1,2.3-1.8,5-2.3,7.6c-0.3,4.2-1.6,4.4-3.4,0.8c-2.9-5.7-0.3-1.3-0.3-3.9c-0.3,0.5-0.8,0.8-1.3,1l3.9,15.9c0.3-1.3,1-1.3,2.1,0
|
||||
c0.5,0.5,0.8,1,1,1.6c6.3,14.9,16.2,27.9,28.7,38.1c0.5,0.5,0.5,1.3,0.3,1.8l-0.3,0.3c-0.8,0.3-1.6,0.3-2.3,0
|
||||
c1.8,1.3,3.4,2.6,4.7,4.4c2.1,2.9,1.3,3.6-1.8,2.3c-1.8-1-4.2-1.6-6.3-1.6c-8.3,1-16.9,1.8-25.3,2.6c-2.6,0.3-5.2,0.8-7.8,1.8
|
||||
c-2.3,1-5,1.8-7.6,2.9c-1.6,2.6-3.4,5.2-5.5,7.8c-10.9,14.1-14.9,29.5-9.1,46.9c5.2,15.6,15.6,33.9,29.7,44.3
|
||||
c7.6,5.5,13,3.1,21.4,0.8c0.5,0,0.8,0,0.8,0.5c1,12,3.6,24,7.3,35.7c3.9,7,7,14.6,9.9,22.2c1,3.4,2.6,6.8,4.7,9.6
|
||||
c1.8,2.9,3.6,6,5.5,9.1c1,1.6,2.1,2.9,3.4,3.9c1.3,1.3,2.6,2.6,3.4,4.2c0.5,0.8,1,1.3,1.8,1.6c1.8,0.5,3.9,0.8,5.7,0.5
|
||||
c5.2-0.5,10.2-2.1,15.1-4.2c0.8-0.3,1.8-0.5,2.6-0.5c4.7,0,7.6-2.9,8.9-8.3c-9.9-6.5-18.8-14.3-26.1-23.7
|
||||
c-9.6-11.5-16.9-24.5-21.6-38.6c-2.3-6.8-3.4-13.8-3.1-20.9c0.3-7.6,6-11.2,10.7-15.9c6.5-6.8,9.4-15.6,8.1-26.6
|
||||
c0-0.8,0-1.6,0.5-2.3c5.5-9.1,5.5-20.3,0-29.5c-0.5-1-0.5-2.3-0.3-3.4c10.2-22.2,24.8-30,49.5-33.9c41.4-6.8,83.2-11.2,125.1-13.8
|
||||
c14.9-1.3,30,1.6,43.5,8.1c11.2,6.3,21.1,14.9,29.2,24.8c1.6-3.4,2.6-7,3.1-10.9c0.3-5,0.8-9.9,2.1-14.9c0.3-0.8,0.8-1.6,1.6-1.8
|
||||
c3.4-1.3,5.2-1,6,0.8c3.6-1.3,7.6-1.6,11.5-0.5c2.3,0.5,3.6,2.9,3.1,5.2c0,0.3-0.3,0.8-0.5,1c-5,8.6-12.5,6.5-19,1.6
|
||||
c-1.8,8.6-1.8,17.5-0.3,26.1l14.1-0.5c0.8,0,1.6,0.3,2.3,0.5l2.1,1c0.3-2.1,1.6-1.8,3.4,0.3c0.8,0.8,1.3,1.6,1.6,2.6
|
||||
c2.9,7,3.9,12.8,13,15.6c9.6,3.4,20.3,2.3,29.5-2.6c1-0.5,2.3-0.5,3.1,0.5c2.1,2.1,3.1,5,3.1,7.8c0,0.8,0.5,1.6,1.6,1.6
|
||||
c0.3,0,0.5,0,0.8-0.3c3.4-2.1,6.5-4.7,9.1-7.6c0.8-0.8,1.6-1.3,2.6-1.3c1-0.3,2.1,0.5,2.3,1.6c0.3,0.5,0,1.3-0.5,1.8
|
||||
c-10.2,11.7-21.1,18.8-33.1,21.4c-7.3,3.1-15.4,3.9-23.2,2.6c-3.4-1-6.5-2.6-9.4-4.7c-3.1-2.1-6.5-3.6-9.9-4.4l1,36.8
|
||||
c0,0.8-0.3,1.6-1,2.1c-1.6,1.3-3.9,2.9-6.8,5c-1.8,1.3-3.1,3.1-3.4,5.5c-1.8,9.9,1,19,9.1,27.1c2.9,1.3,5.5,3.1,7.8,5.5
|
||||
c1.8,0,3.6,0.3,5.2,1c-0.8-2.6-0.5-4.2,1-4.4c-9.4-1.6-15.4-6.8-17.5-15.6c-5.2-7.6-5-17.7,6.3-19.3c4.4-1,9.1,1,11.5,5
|
||||
c2.9,4.2,4.7,8.9,5.2,13.8c1-2.1,1.3-4.2,1.3-6.5c0-0.3,0-0.5,0.3,0c1.3,3.4,3.1,4.4,5.5,3.4c7.6-0.8,13.3,1.3,17.5,6.3
|
||||
c2.3,2.6,4.4,5.7,6,8.9c0.5-0.3,0.8-1.3,0.8-3.1c0-1,0.3-1,0.8-0.3c0.5,0.8,0.5,1.8,0,2.6c-0.3,0.5-0.3,1,0,1.6
|
||||
c0,0.3,0.3,0.5,0.5,0.3l0,0c1-0.5,2.1,0,2.6,1c0.3,0.3,0.3,0.8,0.3,1c-0.3,2.6-1.6,5-3.6,6.5c-0.8,0.5-1.3,1.3-1.6,2.3
|
||||
c-0.5,2.3-2.3,3.9-4.7,3.9c-0.8,0-1.6,0.5-2.3,1c-2.1,2.1-3.6,5-4.4,7.8c-0.3,1-1,1.8-1.8,2.1c-2.3,0.8-4.4,2.6-5.5,4.7
|
||||
c-0.3,0.5-0.3,0.8,0.5,0.5c0.5-0.3,0.8,0,1.3,0.3c0.3,0,0.5,0.5,0.5,1c0,0.3-0.3,0.3-0.3,0.3c-0.8,1-1.3,2.1-1.6,3.1
|
||||
c-0.3,0.8,0,1.3,1,1l6-1.3c1-0.3,1.6,0.3,1.6,1.3c0,0.3,0,0.8-0.3,1c-0.5,0.8-0.3,1,0.5,0.8l13.8-2.3c0.8,0,1.3-0.5,1.6-1.3
|
||||
l3.1-6.3c0.3-0.8,1-1.3,1.8-1.8l7.8-3.1c0.8-0.3,1.3-0.8,1.3-1.6c0.3-1.3,0.5-2.3,1-3.6c2.3-5.5,5-10.7,7.8-15.9
|
||||
c0.5-0.8,0.3-1.8-0.3-2.3c0,0-0.3,0-0.3-0.3c-0.5-0.3-1-0.8-1.3-1.6c-0.5-0.8-0.5-1.6,0.3-2.3c1.3-1.3,2.9-1.8,4.7-1.6
|
||||
c15.9-6.8,30.8-15.6,44.1-26.8c4.2-3.9,8.3-8.1,12-12.5C694.7,640.5,690.2,639.4,685.8,640z M262.8,501c-5.7-5.5-5.2-15.4,1-21.9
|
||||
c6.3-6.5,16.2-7.6,21.9-2.3c5.7,5.5,5.2,15.4-1,21.9C278.4,505.2,268.5,506.5,262.8,501z M281,644.4c-0.8,0.5-1.6,0.8-2.6,0.5
|
||||
c-3.1-0.5-6.3-1.8-8.6-3.9c-6-5.7-2.3-13.8,2.9-18.2c0.8-0.5,1.6-0.8,2.3-1l12-0.8c0.8,0,1.3,0.3,1.6,1
|
||||
C292.7,630.6,287.8,639.4,281,644.4z M286.7,613.9c-3.1,2.1-7.3,1-9.1-2.1c-0.5-1-1-2.1-1-3.1c-0.3-0.8,0-1.8,0.3-2.3
|
||||
c2.1-3.9,3.1-8.3,3.9-12.5c-2.9-1-5.5-2.3-8.3-3.6c-1.6-0.5-2.3-2.3-1.6-3.9c0-0.3,0.3-0.5,0.5-0.8c0.5-0.8,1.3-1,2.1-0.8
|
||||
c3.4,0.5,6.5,2.1,9.1,4.4c0.5,0.5,1.3,0.8,2.3,0.5c5-1,7.6,0.8,8.1,5.2C295.1,604,293.3,610.2,286.7,613.9L286.7,613.9z
|
||||
M295.3,459.6c-0.3,2.9-2.9,4.7-5.5,4.4c-5.7-0.5-11.2,0-16.9,1.6c-3.9,1-7,3.9-10.2,5c-4.4,1.3-5.7-0.3-3.9-5
|
||||
c1-2.3,2.9-4.2,5.2-5.2c2.1-1,4.2-1.6,6.5-1.6c3.1,0,6-1.8,7.6-4.4c0.5-0.8,1.3-1,2.1-1.3c3.1-0.5,6.5-0.5,9.9,0
|
||||
C294,453.6,295.9,455.9,295.3,459.6L295.3,459.6z M559.6,471.1c-3.1,14.1-16.2,19.5-29.7,17.2c-8.9-1.6-14.3-7.3-16.2-16.9
|
||||
c-0.5-2.6,0.8-5.5,3.1-6.8c7.6-4.7,15.9-7.6,24.8-8.3c0.8,0,1.6-0.5,2.3-1l5-4.2c0.5-0.5,1.6-0.8,2.3-0.8c1.3,0,2.6,0.8,3.4,1.8
|
||||
c0.5,0.5,1,1,1.6,1.3C561.2,456.2,560.7,466.4,559.6,471.1L559.6,471.1z M588.6,514.8c3.6-7.6,9.1-14.3,15.9-19.5
|
||||
c7.3-5.5,16.7-0.3,20.3,6.8c0.3,0.5,0.5,1,0.3,1.6c-0.3,1-0.8,1-1.6,0.5c-2.6-2.6-6.5-3.1-9.6-1.3c-4.7,2.3-8.9,5-13,8.1
|
||||
c-3.4,2.3-7,4.2-10.9,5.2c-0.5,0.3-1.3-0.3-1.3-0.8C588.3,515.4,588.3,515.1,588.6,514.8L588.6,514.8z M643.8,569.8l-1.3,0.3
|
||||
c-2.6,0.5-5.2-1.3-5.7-3.9l0,0c-1-5.7-3.1-11.2-6.3-16.2c-0.5-0.8-1.3-0.8-2.1-0.3c-0.3,0.3-0.5,0.5-0.5,0.8
|
||||
c-1.3,4.2-3.9,7.8-7.6,10.4c-3.4,2.3-7.6,3.4-11.7,2.9c-9.6-1-15.9-6.8-19-16.4c-1.3-3.1-0.5-7,2.1-9.1c3.6-3.4,8.9-4.2,13.3-2.1
|
||||
c0.8,0.3,1.6,0.3,2.3,0c3.9-1.8,7-4.2,9.9-7.3c1.8-1.8,2.9-4.4,2.3-7c-0.5-2.3-1.3-4.4-2.6-6.5c-0.5-1-0.3-2.3,0.8-2.9
|
||||
c0.5-0.3,1-0.3,1.3-0.3l8.1,1.6c1,0.3,2.1-0.3,2.6-1c0.8-0.8,1-2.1,1-3.1c0-2.6,0.8-2.9,2.1-0.5l10.2,19.8
|
||||
c4.2,8.3,6.8,19.3,7.3,33.1c0.5,3.9-2.1,7.3-6,7.8C644.1,569.8,643.8,570.1,643.8,569.8L643.8,569.8z" class="st3"></path>
|
||||
<path d="M412.9,302.1c0.3,0.5,0.3,1,0,1.6c-0.3,0.8-0.3,1.6,0.3,2.3c0.8,1.8,0.5,3.9-0.8,5.5c-0.5,0.8-1.3,1.3-2.1,1.6
|
||||
c-1,0.3-1.8,0.8-2.6,1.6c-0.5,0.5-1.3,1-2.1,1.3l-7.3,1.8c-2.9,0.8-5.7-1-6.3-3.6c0-0.3,0-0.5-0.3-0.8c-0.3-1.8-0.8-3.4-2.1-4.4
|
||||
c-0.8-0.8-1-0.5-1,0.5c0,0.8,0.3,1.6,0.8,2.3c0.5,0.8,0.8,1.6,0.8,2.3v9.1c0,0.8,0.3,1.6,0.8,2.1c3.9,4.4,9.4,7,15.1,7.3
|
||||
c2.3,0.3,4.7-0.8,6.3-2.3c0.5-0.5,1-0.5,1.6-0.3c0.8,0.3,1.6,0.3,2.1-0.5c1.8-1.8,4.2-3.6,6.3-5.2c1.6-1,3.9-1,5.5,0
|
||||
c2.9,2.1,5.5,2.3,7.6,1c3.6,2.9,8.6,3.4,13,1.8c10.9,12.8,18,29.7,21.6,50.8c4.4,26.6,4.4,53.4,0,80c-0.5,3.6-1,7.3-1.3,10.7
|
||||
c-15.4,16.4-42.7,11.7-61.3,3.1c-7.3-3.4-15.9-2.9-22.7,1.3c-11.7,6.8-23.5,15.6-37.5,15.9c-7.8,0.5-15.4-0.8-22.7-3.9
|
||||
c-0.5-0.3-1,0-1.6,0.3c-0.3,0.3-0.3,0.8-0.3,1c-0.8-0.5-1.6-1.6-2.1-2.3c-1.8-4.4-3.6-8.9-5.5-13c-1-2.1-1.6-4.4-2.1-6.8
|
||||
c-0.3-3.1-1-6.3-1.8-9.1c-1.6-4.2-2.9-8.3-3.4-12.8c-2.6-24.5-1-49,4.4-73c1.6-5.7,3.9-11.2,7-16.2c0.8-1.6,1.8-3.1,3.1-4.4
|
||||
c1-1.3,1.8-2.9,2.6-4.2c1.3-2.6,5-5.7,10.9-9.1c3.1-1.6,3.9-5,2.6-9.6l6.8-4.4c1,0.3,1.3,1,1,1.8c-1.8,4.7-0.8,7.8,3.9,9.4
|
||||
c1,0.3,2.1,0.3,3.1,0c4.4-1.6,9.1-1.6,13.3-0.3c1,0.3,2.1,0.3,2.9-0.3c3.6-2.1,7-5,5.7-9.9c-0.8-3.4-2.9-6-5.7-7.6
|
||||
c-0.8-0.3-1-1.3-1-2.1c0.3-0.8,0.5-1.6,1-2.3l15.9-4.4l6.5,0.8c0.8,0,1.6,0.5,2.1,1.3c0.8,1.3,1.3,2.6,1.6,4.2
|
||||
c0.3,2.1,2.1,3.6,4.2,3.6c0.3,0,0.5,0,1-0.3c6.5-2.1,9.6-5.5,9.9-10.2L412.9,302.1z M365.7,446.8c0-1.3-2.1-2.3-4.4-2.3
|
||||
s-4.4,1-4.4,2.3c0,1.3,2.1,2.3,4.4,2.3S365.7,448.1,365.7,446.8L365.7,446.8z" class="st4"></path>
|
||||
<path d="M410.6,305.5c-0.3,4.7-3.4,7.8-9.9,10.2c-2.1,0.8-4.2-0.3-5-2.3c0-0.3-0.3-0.5-0.3-1c-0.3-1.6-0.8-2.9-1.6-4.2
|
||||
c-0.5-0.8-1.3-1.3-2.1-1.3l-6.5-0.8c2.1-1.8,5-2.1,7.3-1c0.8,0.3,1.6,0.5,2.3,0.3c3.1-0.8,6.5-0.3,9.4,1.3
|
||||
C406.6,307.6,409.2,307.1,410.6,305.5z" class="st5"></path>
|
||||
<path d="M369.4,310.5c-0.5,0.5-1,1.3-1,2.3c-0.3,0.8,0.3,1.6,1,2.1c2.9,1.6,5.2,4.4,5.7,7.6c1,5-2.1,7.8-5.7,9.9
|
||||
c-0.8,0.5-2.1,0.5-2.9,0.3c-4.4-1.6-9.1-1.6-13.3,0.3c-1,0.3-2.1,0.3-3.1,0c-4.4-1.8-5.7-5-3.9-9.4c0.3-0.8,0-1.3-1-1.8
|
||||
c0.5-1.6,1-2.9,1.3-4.4c0.3-0.8,0.5-1.6,1-2.3c0.8-0.8,1.6-1,2.6-0.8c-1.3,2.1-0.3,3.1,3.4,2.9c1.3-0.3,2.6-0.5,3.6-1.3
|
||||
C361.3,313.1,365.5,311.5,369.4,310.5z" class="st6"></path>
|
||||
<path d="M448.3,326.9c-4.4,1.6-9.4,1-13-1.8l5-10.7c1.3-2.9,5-4.2,8.1-2.9c0,0,0,0,0.3,0c3.6,1.6,6.5,4.4,8.3,7.8
|
||||
c0.5,1,0.3,2.3-0.8,3.1c-0.3,0-0.3,0.3-0.5,0.3C452.5,323.3,449.9,324.6,448.3,326.9z" class="st6"></path>
|
||||
<path d="M682.9,339.7c-3.6,2.3-8.1,3.6-12.5,3.9c-5.2,0-10.7,0.5-16.7,1c7.8-3.6,15.9-6.3,24-8.1
|
||||
c1-0.3,2.1-0.3,3.1,0.3C682.4,337.1,682.9,338.4,682.9,339.7z" class="st6"></path>
|
||||
<path d="M682.9,339.7c1,2.3,1.8,5,2.3,7.6c-5,0.5-9.9,2.3-14.3,5c-0.8,0.3-1,1-0.8,1.8l3.6,10.9
|
||||
c0.5,1.8-0.5,3.4-2.1,4.2c-0.5,0.3-1,0.3-1.6,0c-2.9-0.5-5.7-1-8.6-1.3c-6.8-0.8-14.1-5.7-20.3-8.3c-0.5-0.3-1-0.3-1.6-0.3
|
||||
l-14.9,0.8l26.3-13.6c0.8-0.8,1.8-1.3,2.9-1.6c5.7-0.5,11.2-0.8,16.7-1C674.9,343.3,679.3,342,682.9,339.7z" class="st7"></path>
|
||||
<path d="M309.7,342.5h1c0.5,0,1,0.3,1,0.8l0,0c0,0.5,0.3,0.8,0.5,1c-10.2,11.7-16.2,19.3-18.2,22.7
|
||||
c-10.7,19.3-19.5,39.6-25.8,60.7c-2.9,10.2-7.6,20.9-10.4,31.5c-1,4.2-3.1,8.1-5.5,11.7c-5.2,7.8-9.9,16.2-13.8,24.8
|
||||
c-1,2.3-1.8,5-2.3,7.6c-0.3,4.2-1.6,4.4-3.4,0.8c-2.9-5.7-0.3-1.3-0.3-3.9c4.4-10.7,10.7-21.4,14.9-31.3c3.1-7.8,6.3-15.6,9.1-23.5
|
||||
c2.6-7,5-14.3,6.5-21.4c3.9-14.6,8.6-28.7,14.3-42.7c0.5-1.3,0.3-2.9-0.8-3.6c-4.4-4.4-9.4-8.1-14.9-10.9
|
||||
c-12-5.7-23.5-13-33.9-21.4c2.6,0,5.2,1,7.3,2.6s4.2,2.9,6.3,4.2c12.5,5.7,24.5,12.5,35.7,20.3c1.6,1,3.9,0.8,5.2-0.8l18.8-24.5
|
||||
c1.6,1.3,2.9,1.3,3.6,0.3C306.3,345.7,307.9,343.8,309.7,342.5z" class="st1"></path>
|
||||
<path d="M227.8,345.7c10.4,8.3,21.9,15.6,33.9,21.4c5.5,2.9,10.4,6.5,14.9,10.9c1,1,1.3,2.3,0.8,3.6
|
||||
c-5.7,13.8-10.7,28.2-14.3,42.5c-1.8,7.3-3.9,14.6-6.5,21.4c-3.1,8.1-6,15.9-9.1,23.5c-3.9,9.9-10.2,20.6-14.9,31.3
|
||||
c-0.3,0.5-0.8,0.8-1.3,1c-3.1-6-5-12.5-5.2-19.3c-0.3-3.1,1.8-6.3,6-8.9l9.4-31.3c0.3-0.8,0.8-1.6,1.3-2.1c2.3-2.3,3.4-5.2,3.6-8.3
|
||||
c0-1,0.3-1.8,0.8-2.6c3.1-4.7,4.7-10.2,4.4-15.9c0-1.3-0.8-2.1-2.1-2.3c-11.5-2.1-15.6-13-6-20.3c6-4.7,13.8-6.3,20.9-4.2
|
||||
c0.8,0.3,1.6,0,2.1-0.5l4.4-5.5c1.3-1.6,1-3.6-0.5-4.7c-0.8-0.5-1.6-0.8-2.6-0.8c-5.5,0.8-8.9-2.3-13.6-2.6
|
||||
c-5.2-0.3-10.7,0.5-15.6,2.3c-0.8,0.3-1.3,0.3-2.1,0.3c-0.8-0.3-1.6,0-2.3,0.3c-2.9,2.1-6.5,3.4-10.2,3.6c-0.8,0-1.6,0.3-2.3,0.8
|
||||
l-5.7,4.2c-0.8,0.5-1,1.3-1.3,2.1c-0.8,3.6-2.9,6.8-6,8.9C212.4,377.5,219,361.1,227.8,345.7z M247.9,439.3
|
||||
c2.1-2.3,3.4-5.2,3.6-8.3c0-1.3,0-1.3-0.8-0.3l-4.7,9.6c-0.5,1-0.3,1.3,0.8,0.8C247.6,440.8,247.9,440,247.9,439.3L247.9,439.3z" class="st8"></path>
|
||||
<path d="M685.3,347.2c3.6,16.2,7,34.4,9.6,55c1.3,7.6,0.5,15.4-2.6,22.7c-2.1,5-3.6,9.9-5.2,15.1
|
||||
c-0.3,0.5,0.3,1,0.8,1.3c0.3,0,0.3,0,0.5,0c9.6-2.3,19.5-2.3,29.2,0c4.2,0.8,7,4.2,6.8,8.3c0.8,15.6-0.5,31.5-4.2,46.9
|
||||
c-3.9,10.9-7.6,22.7-10.9,35.2c-3.1,11.7-10.9,16.7-23.7,14.9c-1-0.3-1.6-0.8-2.1-1.8c-2.6-5.5-4.4-11.2-5.7-16.9
|
||||
c0.3-7-1.6-14.1-5-20.3c-0.8-1.3-0.3-2.9,0.8-3.6c0.5-0.3,1-0.3,1.6-0.3c8.6-0.3,13.6-5.5,14.3-14.9c0.5-6.8-1-16.2-10.2-15.4
|
||||
c-3.6,0.3-7,1.3-10.4,2.6c-4.7,2.1-8.3,0.8-10.7-3.4c-0.3-0.5-0.8-0.8-1.3-0.8s-1-0.3-1.3-1.3c0-0.3,0-0.8,0.3-1
|
||||
c1.6-2.1,3.4-3.9,5.2-5.7c6-4.7,5.2-7.3-2.3-8.1c-4.7-0.5-11.5-0.5-19.8-0.5c-7.3-22.2-17.5-43.3-30.2-62.8
|
||||
c-3.1-4.4-7-8.6-11.2-12.3c-0.5-0.3-0.8-0.5-1-0.8c-0.5-0.5-0.3-1.6,0.3-1.8h0.3l27.9-17.5l14.9-0.8c0.5,0,1,0,1.6,0.3
|
||||
c6.3,2.6,13.6,7.6,20.3,8.3c2.9,0.3,5.7,0.8,8.6,1.3c1.8,0.3,3.4-0.8,3.9-2.6c0-0.5,0-1,0-1.6l-3.6-10.9c-0.3-0.8,0-1.6,0.8-1.8
|
||||
C675.4,349.3,680.1,347.8,685.3,347.2z M642.8,385.6c-0.5-0.5-1-1-1.8-1.3l-17.7-4.4c-1.8-0.5-3.6,0.8-4.2,2.3
|
||||
c-0.3,0.8,0,1.6,0.3,2.1l12.3,27.1c0.8,1.6,2.9,2.3,4.4,1.6c0.3,0,0.5-0.3,0.5-0.3l14.9-10.7c1.6-1,1.8-3.1,0.8-4.7l0,0
|
||||
L642.8,385.6z" class="st9"></path>
|
||||
<path d="M231.7,473.7c-3.1-0.5-6.3-1.3-9.4-2.3c-6.3-1.6-10.9-6.8-12-13.3c-1.3-6.8-2.6-13.3-3.9-20.1
|
||||
c-1.3-6.5-2.1-13.3-1.8-20.1c0.5-7.8,1.8-15.6,3.6-23.2c2.9-2.1,5.2-5.2,6-8.9c0.3-0.8,0.8-1.6,1.3-2.1l5.7-4.2
|
||||
c0.8-0.5,1.6-0.8,2.3-0.8c3.6-0.3,7.3-1.6,10.2-3.6c0.8-0.3,1.6-0.5,2.3-0.3c0.8,0,1.3,0,2.1-0.3c5-1.8,10.4-2.6,15.6-2.3
|
||||
c4.7,0.3,8.1,3.4,13.6,2.6c1.8-0.3,3.6,1,3.9,2.9c0,1-0.3,1.8-0.8,2.6l-4.4,5.5c-0.5,0.5-1.3,0.8-2.1,0.5
|
||||
c-7.3-2.1-15.1-0.5-21.1,4.2c-9.4,7.3-5.2,18.2,6,20.3c1.3,0,2.1,1,2.1,2.3c0.3,5.7-1.3,11.2-4.4,15.9c-0.5,0.8-0.8,1.6-0.8,2.6
|
||||
c0,3.1-1.3,6.3-3.6,8.3c-0.5,0.5-1,1.3-1.3,2.1L231.7,473.7z" class="st9"></path>
|
||||
<path d="M642.8,385.6l9.1,12c1,1.6,0.8,3.6-0.5,4.7l0,0l-14.9,10.7c-1.6,1-3.6,0.8-4.7-0.8c-0.3-0.3-0.3-0.5-0.3-0.5
|
||||
l-12.3-27.1c-0.8-1.6,0-3.6,1.6-4.4c0.8-0.3,1.6-0.3,2.1-0.3l17.7,4.4C641.8,384.5,642.3,385,642.8,385.6z" class="st7"></path>
|
||||
<path d="M503.1,410.1c9.9,4.7,15.6,26.3,14.9,37.3c0,2.3-1.8,3.9-4.2,3.9c-3.1,0-6-2.1-6.8-5.2
|
||||
c-2.9-11.2-5-22.7-6.3-34.1c-0.3-0.8,0.3-1.6,1.3-1.8C502.3,409.8,502.8,409.8,503.1,410.1z" class="st10"></path>
|
||||
<path d="M247.9,439.3c0,0.8-0.3,1.6-1,1.8c-1,0.5-1.3,0.3-0.8-0.8l5-9.6c0.5-1,0.8-1,0.8,0.3
|
||||
C251.3,434,250,436.9,247.9,439.3z" class="st11"></path>
|
||||
|
||||
<ellipse ry="4.4" rx="2.3" cy="446.9" cx="361.2" class="st8" transform="matrix(1.745299e-03 -1 1 1.745299e-03 -86.2693 807.2921)"></ellipse>
|
||||
<path d="M555.7,453.3c5.5,2.6,5,12.8,3.6,18c-3.1,14.1-16.2,19.5-29.7,17.2c-8.9-1.6-14.3-7.3-16.2-16.9
|
||||
c-0.5-2.6,0.5-5.5,3.1-6.8c7.6-4.7,15.9-7.6,24.8-8.3c0.8,0,1.6-0.5,2.3-1l5-4.2c0.5-0.5,1.6-0.8,2.3-0.8c1.3,0,2.6,0.8,3.4,1.8
|
||||
C554.7,452.5,555.2,453.1,555.7,453.3z" class="st6"></path>
|
||||
<path d="M258.8,465.6c1-2.3,2.9-4.2,5.2-5.2c2.1-1,4.2-1.6,6.5-1.6c3.1,0,6-1.8,7.6-4.4c0.5-0.8,1.3-1,2.1-1.3
|
||||
c3.1-0.5,6.5-0.5,9.9,0c4.2,0.8,6,3.1,5.5,6.8c-0.3,2.9-2.9,4.7-5.5,4.4c-5.7-0.5-11.2,0-16.9,1.6c-3.9,1-7,3.9-10.2,5
|
||||
C258.3,471.8,257,470.3,258.8,465.6z" class="st10"></path>
|
||||
<path d="M677.5,527.6c-2.6-12.3-7.6-23.7-14.3-34.1c-0.5-1-1.8-3.1-3.6-6.5c-1.6-3.4-3.9-5.2-5.5-8.3
|
||||
c-2.1-4.4-5-8.3-8.6-11.5c-2.9-3.6-5.2-7.6-7-12c8.3,0,15.1,0.3,19.8,0.5c7.6,0.8,8.3,3.4,2.3,8.1c-1.8,1.8-3.6,3.6-5.2,5.7
|
||||
c-0.3,0.3-0.3,0.8-0.3,1c0.3,0.8,0.5,1.3,1.3,1.3c0.5,0,1,0.3,1.3,0.8c2.3,4.2,6,5.2,10.7,3.1c3.4-1.3,6.8-2.3,10.4-2.6
|
||||
c9.1-0.8,10.9,8.6,10.2,15.4c-1,9.4-5.7,14.6-14.3,14.9c-1.6,0-2.6,1-2.6,2.6c0,0.5,0,1,0.3,1.6
|
||||
C676.2,513.5,677.7,520.6,677.5,527.6z" class="st12"></path>
|
||||
<path d="M468.4,468.4c1.3,0,2.1,0.3,2.3,0.5c0.5,1,0.5,2.3-0.5,3.4c-15.4,13-35.4,12-53.7,6.8c-1-0.3-2.1,0.3-2.6,1.3
|
||||
c-2.6,6.3-5,13.6-7.6,21.4c-1.3,4.4-3.4,8.9-5.7,13c-7.6,12.5-22.2,17.7-35.2,9.1c-9.9-6.5-15.9-16.4-18-29.7
|
||||
c0-0.8-0.8-1.3-1.6-1.3c-5.5,0.5-20.6-0.5-23.2-6.5c-0.3-0.3,0-0.5,0.3-1c0.5-0.5,1-0.5,1.6-0.3c7,3.1,14.9,4.4,22.7,3.9
|
||||
c14.1-0.3,25.8-9.4,37.5-15.9c6.8-4.2,15.4-4.7,22.7-1.3C425.4,480.2,452.8,485.1,468.4,468.4z M387.4,476
|
||||
c-10.4,5.5-20.9,12.8-32.3,16.9c-2.3,0.5-3.6,2.9-3.1,5c0,0,0,0,0,0.3c4.7,27.4,35.7,40.4,48.7,8.6c3.4-8.6,6.8-17.7,10.2-27.4
|
||||
c0.5-1,0-2.6-1-3.1c0,0,0,0-0.3,0C402.5,472.4,394.1,472.4,387.4,476z" class="st11"></path>
|
||||
<path d="M354.8,492.9c11.5-3.9,21.9-11.2,32.3-16.7c6.8-3.6,15.1-3.6,22.2,0c1.3,0.5,1.8,1.8,1.3,2.9c0,0,0,0,0,0.3
|
||||
c-3.1,9.6-6.5,18.8-10.2,27.4c-13,31.8-43.8,18.8-48.7-8.6C351.1,495.8,352.4,493.5,354.8,492.9L354.8,492.9z" class="st13"></path>
|
||||
|
||||
<ellipse ry="14.3" rx="16.7" cy="489" cx="274.3" class="st13" transform="matrix(0.6871 -0.7266 0.7266 0.6871 -269.4631 352.3323)"></ellipse>
|
||||
<path d="M600.6,511.2c-3.4,2.3-7,4.2-10.9,5.2c-0.5,0.3-1.3-0.3-1.3-0.8c0-0.3,0-0.5,0-0.8
|
||||
c3.6-7.6,9.1-14.3,15.9-19.5c7.3-5.5,16.7-0.3,20.3,6.8c0.3,0.5,0.5,1,0.3,1.6c-0.3,1-0.8,1-1.6,0.5c-2.6-2.6-6.5-3.1-9.6-1.3
|
||||
C609.2,505.2,604.7,508.1,600.6,511.2z" class="st14"></path>
|
||||
<path d="M720,496.3c4.2,3.9,7.6,8.6,10.4,13.6c19.5,36.8,13.8,84.2-5.5,119.9c-6.3,10.4-13.6,20.1-21.6,28.9
|
||||
c-3.4,3.9-6.3,8.6-7.8,13.6c-1.8,6-3.4,11.5-4.7,16.7c-0.3,1-0.8,2.1-1.8,2.9c-2.9,0-3.9-2.1-3.6-5.5c1.3-10.9,5-21.1,11.2-30.2
|
||||
c0.3-0.5,0.3-1,0.3-1.3c-0.3-0.5-0.3-1,0-1.6c0.5-1.6,0-1.8-1.3-1c-1.8,0.8-3.4,2.3-4.4,4.2c-2.3,5.2-6.8,9.1-12.3,10.7
|
||||
c-1,0.3-1.8,0.8-2.3,1.6c-1.8,1.6-3.9,2.9-6.3,3.6c-6.5,3.6-13.3,6.8-20.1,9.6c-2.9,1.3-6,2.1-9.4,2.3c-1.3,0.3-1.6-0.3-0.3-1
|
||||
c0.5-0.3,1-0.8,1.3-1.6c15.9-6.8,30.8-15.6,44.1-26.8c4.2-3.9,8.3-8.1,12-12.5c0.3,1.6,0,3.4-0.8,5c-0.3,0.3,0,0.8,0.3,1
|
||||
c0.3,0.3,0.5,0.3,0.5,0.5c0.5,0.3,1.3,0,1.8-0.5c4.7-6,7.3-13.6,7.3-21.4c0.3-12.5-2.3-25-8.1-36.2c-0.8-1.6-2.6-2.1-4.2-1.6
|
||||
c-0.3,0-0.3,0.3-0.5,0.3l-16.7,12.5c2.3-3.9,3.1-6.8,2.6-8.6c-0.3-0.5-0.3-1.3,0-1.8c0.5-1.3,0.5-2.9-0.3-4.2l9.4-2.6
|
||||
c1.3-0.3,2.6-1,3.4-2.1c0.8-0.8,0.8-1.8,0-2.6l0,0c-0.3-0.3-0.3-0.8,0-1l0,0c0.8-0.8,1-1.8,0.8-2.9c-1-4.7-2.1-9.6-2.9-14.9
|
||||
c-0.3-0.8-0.5-1.8-1-2.3c-2.1-2.9-3.4-6.5-3.1-10.2c0-0.8-0.3-1.6-1-1.8l-0.8-0.5c12.8,1.8,20.6-3.1,23.7-14.9
|
||||
C712.4,519,716,507.3,720,496.3z M720.7,553.4c2.3-2.6,2.6-6.5,0.8-9.6c-0.5-0.8-1.3-1.3-2.3-1.3l-7.8-0.3c-1,0-1.8,0.5-2.3,1.3
|
||||
c-1.8,4.2,0,9.4,4.2,11.2c0.8,0.3,1.6,0.5,2.1,0.5C717.6,556.3,719.7,555.2,720.7,553.4z" class="st11"></path>
|
||||
<path d="M591.4,538c3.6-3.4,8.9-4.2,13.3-2.1c0.8,0.3,1.6,0.3,2.3,0c3.9-1.8,7-4.2,9.9-7.3c1.8-1.8,2.9-4.4,2.3-7
|
||||
c-0.5-2.3-1.3-4.4-2.6-6.5c-0.5-1-0.3-2.3,0.8-2.9c0.5-0.3,1-0.3,1.3-0.3l8.1,1.6c1,0.3,2.1-0.3,2.6-1c0.8-0.8,1-2.1,1-3.1
|
||||
c0-2.6,0.8-2.9,2.1-0.5l10.2,19.8c4.2,8.3,6.8,19.3,7.3,33.1c0.5,3.9-2.3,7.3-6,7.8c0,0,0,0-0.3,0l-1.3,0.3
|
||||
c-2.6,0.5-5.2-1.3-5.7-3.9l0,0c-1-5.7-3.1-11.2-6.3-16.2c-0.5-0.8-1.3-0.8-2.1-0.3c-0.3,0.3-0.5,0.5-0.5,0.8
|
||||
c-1.3,4.2-3.9,7.8-7.6,10.4c-3.4,2.3-7.6,3.4-11.7,2.9c-9.6-1-15.9-6.8-19-16.4C588.3,544,589.1,540.4,591.4,538z" class="st15"></path>
|
||||
<path d="M264.6,559.7l-3.9-3.4c-10.2-9.9-22.4-24.5-25.8-38.6c0.3-1.3,1-1.3,2.1,0c0.5,0.5,0.8,1,1,1.6
|
||||
c6.3,14.9,16.2,27.9,28.7,38.1c0.5,0.5,0.5,1.3,0.3,1.8l-0.3,0.3C265.9,559.9,265.1,559.9,264.6,559.7z" class="st11"></path>
|
||||
<path d="M541.1,570.1c2.3,5.5,3.9,10.9,5,16.9c2.1,9.9,7.6,19,15.6,25.3l1,36.8c0,0.8-0.3,1.6-1,2.1
|
||||
c-1.6,1.3-3.9,2.9-6.8,5c-1.8,1.3-3.1,3.1-3.4,5.5c-1.8,9.9,1,19,9.1,27.1c-7,6.3-17.7,11.2-31.8,14.3
|
||||
c-62.3,14.6-120.9,21.9-175.9,22.2c-18,0-35.7-0.8-53.4-2.9c-9.6-11.5-16.9-24.5-21.6-38.6c-2.3-6.8-3.4-13.8-3.1-20.9
|
||||
c0.3-7.6,6-11.2,10.7-15.9c6.5-6.8,9.4-15.6,8.1-26.6c0-0.8,0-1.6,0.5-2.3c5.5-9.1,5.5-20.3,0-29.5c-0.5-1-0.5-2.3-0.3-3.4
|
||||
c10.2-22.2,24.8-30,49.5-33.9c41.4-6.8,83.2-11.2,125.1-13.8c14.9-1.3,30,1.6,43.5,8.1C523.2,551.6,533.1,559.9,541.1,570.1z
|
||||
M432.7,595.4c3.6-9.4-1.8-20.3-12-24.2c-10.2-3.9-21.4,0.5-25,9.9c-3.6,9.4,1.8,20.3,12,24.2C417.8,609.2,429.1,604.8,432.7,595.4
|
||||
z M389.7,643.9c10.4,13.6,26.3,28.4,42,15.6c1.8-1.6,3.4-3.4,4.7-5.5c5.2-7.6,9.6-12.3,12.8-21.1c0.8-2.1,2.9-3.4,5-3.1
|
||||
c16.7,1.8,31-3.1,35.7-20.6c0.3-0.5,0.8-0.8,1.3-0.8h0.3c13.8,8.3,24.5,5.7,32.3-7.8c2.1-2.9,2.6-6.8,1-10.2c-2.6-5.2-4.2-5-5,0.8
|
||||
s-6,14.3-12.8,15.1c-6.8,0.8-15.6-4.7-21.4-7.6c-0.5-0.3-1.6,0-1.8,0.5c0,0.3-0.3,0.3-0.3,0.5c-1,9.4-4.7,22.7-16.2,23.2
|
||||
c-6.8,0.5-13.6-1.3-19-5.5c-0.8-0.5-1.8-0.3-2.3,0.5c-0.3,0.3-0.3,0.5-0.3,0.8c-0.8,13.6-7.8,25.3-20.9,29.7c-6.3,2.1-13,2.1-19,0
|
||||
c-6.3-2.1-9.6-7-13-12c-0.8-1-2.3-1.3-3.4-0.5c-0.3,0.3-0.3,0.3-0.5,0.5c-0.5,0.5-0.8,1.3-0.8,2.1
|
||||
C387.9,640.2,388.4,642.3,389.7,643.9z M351.4,625.1c-2.9-0.3-5.7-0.8-8.6-1c-10.2-1-16.4-7-17.7-17.2c0-1-0.5-1.3-1.6-0.8
|
||||
c-0.5,0.3-0.8,0.8-0.8,1.3c-0.5,6.8,2.6,19.8,10.7,22.2c2.1,0.5,6.8,1.6,13.8,2.6c1.3,0.3,2.9-0.3,3.9-1c0.5-0.5,1.6-0.5,2.1,0
|
||||
c1.3,0.8,2.6,1,3.9,0.5c9.9,7.6,19.3,9.1,28.2,4.2c2.9-1.6,5-3.6,6.5-6.5s2.9-6,3.9-8.9c0.3-0.8,0.3-1.8,0-2.6
|
||||
c-5-12.3-14.1-20.9-27.6-20.1C353.2,598.3,348.5,612.6,351.4,625.1z" class="st16"></path>
|
||||
<path d="M554.2,543.3c-3.4,0.5-5.7,3.6-5.2,7l0,0c-1.8,8.6-1.8,17.5-0.3,26.1c-0.3,7.6,2.1,15.1,6.8,21.1
|
||||
c1.6,5,4.7,9.4,9.1,12.3c3.4,2.1,7.3,3.9,10.9,5.7c3.4,1.6,7.3,2.1,10.9,1.8c6-0.3,11.7,0.3,17.7,1.3c-7.3,3.1-15.4,3.9-23.2,2.6
|
||||
c-3.4-1-6.5-2.6-9.4-4.7c-3.1-2.1-6.5-3.6-9.9-4.4c-8.1-6.3-13.8-15.1-15.6-25.3c-1-5.7-2.6-11.5-5-16.9c1.6-3.4,2.6-7,3.1-10.9
|
||||
c0.3-5,0.8-9.9,2.1-14.9c0.3-0.8,0.8-1.6,1.6-1.8C551.6,541.2,553.4,541.4,554.2,543.3z" class="st11"></path>
|
||||
<path d="M549.2,550.6c-0.5-3.4,1.8-6.5,5.2-7l0,0c3.6-1.3,7.6-1.6,11.5-0.5c2.3,0.5,3.6,2.9,3.1,5.2
|
||||
c0,0.3-0.3,0.8-0.5,1C563.3,557.3,555.7,555.5,549.2,550.6z" class="st0"></path>
|
||||
<path d="M720.7,553.4c-1,1.8-3.1,2.9-5.2,2.1c-4.7-0.8-7.8-5-7-9.6c0-0.8,0.3-1.6,0.5-2.1c0.3-1,1.3-1.6,2.3-1.3
|
||||
l7.8,0.3c1,0,1.8,0.5,2.3,1.3C723.3,546.9,723.1,550.8,720.7,553.4z" class="st8"></path>
|
||||
<path d="M260.7,556.3l3.9,3.4c1.8,1.3,3.4,2.6,4.7,4.4c2.1,2.9,1.3,3.6-1.8,2.3c-1.8-1-4.2-1.6-6.3-1.6
|
||||
c-8.3,1-16.9,1.8-25.3,2.6c-2.6,0.3-5.2,0.8-7.8,1.8c-2.3,1-5,1.8-7.6,2.9c3.4-6.5,9.1-11.2,15.9-13.3c7.3-1.8,14.9-1.6,22.2,0.5
|
||||
c0.8,0.3,1.6,0,2.1-0.8C260.9,557.8,260.9,556.8,260.7,556.3z" class="st5"></path>
|
||||
|
||||
<ellipse ry="19.8" rx="18.2" cy="588.3" cx="414.3" class="st3" transform="matrix(0.3584 -0.9336 0.9336 0.3584 -283.446 764.2116)"></ellipse>
|
||||
<path d="M690,585l-9.4,2.6c-6.5,2.1-12.8,5.2-18,9.6c-0.5,0.3-1,0.3-1.6,0c-0.3-0.3-0.3-0.5-0.3-0.8
|
||||
c0-0.3,0-0.5,0.3-0.8c5.5-7.8,11.5-14.9,18.5-21.4c0.5-0.5,1.3-0.5,1.6,0l8.9,7.6c0.5,0.5,0.8,1.3,0.8,2.1
|
||||
C690.5,584.4,690.2,584.7,690,585z" class="st13"></path>
|
||||
<path d="M567.5,577.4c1.6,11.2-2.3,17.7-11.7,20.1c-4.7-6-7-13.6-6.8-21.1l14.1-0.5c0.8,0,1.6,0.3,2.3,0.5L567.5,577.4
|
||||
z" class="st2"></path>
|
||||
<path d="M604.2,618.6c-5.7-1-11.7-1.3-17.7-1.3c-3.6,0.3-7.6-0.5-10.9-1.8c-3.6-1.6-7.6-3.4-10.9-5.7
|
||||
c-4.4-2.9-7.6-7.3-9.1-12.3c9.4-2.3,13.3-8.9,11.7-20.1c0.3-2.1,1.6-1.8,3.4,0.3c0.8,0.8,1.3,1.6,1.6,2.6c2.9,7,3.9,12.8,13,15.6
|
||||
c9.6,3.4,20.3,2.3,29.5-2.6c1-0.5,2.3-0.5,3.1,0.5c2.1,2.1,3.1,5,3.1,7.8c0,0.8,0.5,1.6,1.6,1.6c0.3,0,0.5,0,0.8-0.3
|
||||
c3.4-2.1,6.5-4.7,9.1-7.6c0.8-0.8,1.6-1.3,2.6-1.3c1-0.3,2.1,0.5,2.3,1.6c0.3,0.5,0,1.3-0.5,1.8C627.4,608.9,616.2,616,604.2,618.6
|
||||
z" class="st17"></path>
|
||||
<path d="M292.7,594.9c-0.8,6.5-4.7,6.3-12-1c-2.9-1-5.5-2.3-8.3-3.6c-1.6-0.5-2.3-2.3-1.6-3.9c0-0.3,0.3-0.5,0.5-0.8
|
||||
c0.5-0.8,1.3-1,2.1-0.8c3.4,0.5,6.5,2.1,9.1,4.4c0.5,0.5,1.3,0.8,2.3,0.5C289.3,588.6,292.2,590.4,292.7,594.9z" class="st18"></path>
|
||||
<path d="M389.7,643.9c-1.3-1.6-1.8-3.4-1.6-5.5c0-0.8,0.3-1.3,0.8-2.1c0.8-1,2.3-1.3,3.4-0.5c0.3,0.3,0.3,0.3,0.5,0.5
|
||||
c3.6,5,6.8,9.9,13,12c6.3,2.1,13,2.1,19,0c13.3-4.4,20.1-15.9,20.9-29.7c0-1,1-1.6,1.8-1.6c0.3,0,0.5,0,0.8,0.3
|
||||
c5.5,4.2,12.3,6.3,19,5.5c11.5-0.5,15.1-13.8,16.2-23.2c0-0.8,0.8-1.3,1.6-1c0.3,0,0.3,0,0.5,0.3c5.5,2.9,14.9,8.3,21.4,7.6
|
||||
c6.5-0.8,12-9.6,12.8-15.1s2.3-6,5-0.8c1.6,3.4,1,7.3-1,10.2c-7.8,13.6-18.5,16.2-32.3,7.8c-0.5-0.3-1-0.3-1.3,0.3v0.3
|
||||
c-4.7,17.5-19,22.4-35.7,20.6c-2.1-0.3-4.2,1-5,3.1c-3.1,8.9-7.3,13.6-12.8,21.1c-1.3,2.1-2.9,3.9-4.7,5.5
|
||||
C415.8,672.3,400.1,657.2,389.7,643.9z" class="st5"></path>
|
||||
<path d="M698.1,642.8c-3.6-2.1-8.1-3.1-12.3-2.9c-0.8,0-1.8,0-2.3-0.5c-6.5-3.9-12-9.6-15.9-16.2
|
||||
c-1.3-2.3-1-5.2,0.5-7.3l9.9-13.3l16.7-12.5c1.3-1,3.4-0.8,4.4,0.5c0,0.3,0.3,0.3,0.3,0.5c5.5,11.2,8.3,23.7,8.1,36.2
|
||||
c0,7.8-2.6,15.4-7.3,21.4c-0.3,0.5-1,0.8-1.8,0.5c-0.3,0-0.5-0.3-0.5-0.5c-0.3-0.3-0.3-0.5-0.3-1
|
||||
C698.1,646.2,698.3,644.4,698.1,642.8z" class="st19"></path>
|
||||
<path d="M280.7,593.8c7.3,7,11.5,7.6,12,1c2.3,9.1,0.3,15.6-6,19c-3.1,2.1-7.3,1-9.1-2.1c-0.5-1-1-2.1-1-3.1
|
||||
c-0.3-0.8,0-1.8,0.3-2.3C278.9,602.4,280.2,598,280.7,593.8z" class="st20"></path>
|
||||
<path d="M357.1,631.4l-5.7-6.3c-2.9-12.5,1.6-26.8,16.7-27.6c13.6-0.8,22.9,7.8,27.6,20.1c0.3,0.8,0.3,1.8,0,2.6
|
||||
c-1.3,2.9-2.6,6-3.9,8.9c-1.3,2.9-3.6,5.2-6.5,6.5C376.4,640.5,367,639.2,357.1,631.4z" class="st3"></path>
|
||||
<path d="M351.4,625.1l5.7,6.3c-1.3,0.5-2.9,0.3-3.9-0.5c-0.5-0.5-1.6-0.5-2.1,0c-1,0.8-2.3,1.3-3.9,1
|
||||
c-7-1-11.5-2.1-13.8-2.6c-8.1-2.3-11.5-15.4-10.7-22.2c0-0.5,0.3-1,0.8-1.3c0.8-0.5,1.3-0.3,1.6,0.8c1.3,10.2,7.8,16.4,17.7,17.2
|
||||
C345.6,624.3,348.5,624.8,351.4,625.1z" class="st5"></path>
|
||||
<path d="M269.8,641.3c-6-5.7-2.3-13.8,2.9-18.2c0.8-0.5,1.6-0.8,2.3-1l12-0.8c0.8,0,1.3,0.3,1.6,1
|
||||
c3.9,8.3-1.3,17.2-7.8,22.4c-0.8,0.5-1.6,0.8-2.6,0.5C275.3,644.9,272.1,643.3,269.8,641.3z" class="st2"></path>
|
||||
<path d="M689.2,692.1c0.3,0.3,0,1-0.8,1.8c-2.3-1-3.9-0.8-4.7,0.8c-2.1,4.2-3.4,8.6-3.9,13c0.5-5-2.9-5.7-9.9-2.3
|
||||
c-7.3,3.4-14.3,7.3-20.9,12c-3.6,2.6-11.2,5.5-22.4,9.1c-5.7,1.8-11.5,3.9-17.2,6.5s-11.2,5-16.7,7.3c-5.2,2.1-12,2.6-17.2,5.5
|
||||
s-8.3,4.4-9.9,5c-3.4,1.3-6.8,2.6-9.6,4.2c-4.4,1.6-9.1,2.3-13.6,2.1c8.9-18.2,17.5-37.3,25.3-56.6c1-2.1,1.6-4.4,1.6-7
|
||||
c1.8,0,3.6,0.3,5.2,1c11.5,1.6,28.4,0.3,36.8-8.6c0.5-0.3,0.8-1.3,0.8-3.1c0-1,0.3-1,0.8-0.3c0.5,0.8,0.5,1.8,0,2.6
|
||||
c-0.3,0.5-0.3,1,0,1.6c0,0.3,0.3,0.5,0.5,0.3l0,0c1-0.5,2.1,0,2.6,1c0.3,0.3,0.3,0.8,0.3,1c-0.3,2.6-1.6,5-3.6,6.5
|
||||
c-0.8,0.5-1.3,1.3-1.6,2.3c-0.5,2.3-2.3,3.9-4.7,3.9c-0.8,0-1.6,0.5-2.3,1c-2.1,2.1-3.6,5-4.4,7.8c-0.3,1-1,1.8-1.8,2.1
|
||||
c-2.3,0.8-4.4,2.6-5.5,4.7c-0.3,0.5-0.3,0.8,0.5,0.5c0.5-0.3,0.8,0,1.3,0.3c0.3,0,0.5,0.5,0.5,1c0,0.3-0.3,0.3-0.3,0.3
|
||||
c-0.8,1-1.3,2.1-1.6,3.1c-0.3,0.8,0,1.3,1,1l6-1.3c1-0.3,1.6,0.3,1.6,1.3c0,0.3,0,0.8-0.3,1c-0.5,0.8-0.3,1,0.5,0.8l13.8-2.3
|
||||
c0.8,0,1.3-0.5,1.6-1.3l3.1-6.3c0.3-0.8,1-1.3,1.8-1.8l7.8-3.1c0.8-0.3,1.3-0.8,1.3-1.6c0.3-1.3,0.5-2.3,1-3.6
|
||||
c2.3-5.5,5-10.7,7.8-15.9c0.5-0.8,0.3-1.8-0.3-2.3c0,0-0.3,0-0.3-0.3c-0.5-0.3-1-0.8-1.3-1.6c-0.5-0.8-0.5-1.6,0.3-2.3
|
||||
c1.3-1.3,2.9-1.8,4.7-1.6c-0.3,0.5-0.8,1-1.3,1.6c-1.3,0.8-1,1,0.3,1c3.1-0.3,6.3-1,9.4-2.3c7-2.6,13.6-6,20.1-9.6
|
||||
c2.3-0.8,4.4-2.1,6.3-3.6c0.5-0.8,1.6-1.3,2.3-1.6c5.5-1.6,9.9-5.5,12.3-10.7c1-1.8,2.6-3.1,4.4-4.2c1.3-0.8,1.8-0.5,1.3,1
|
||||
c-0.3,0.5-0.3,1,0,1.6s0.3,1-0.3,1.6c-6,9.1-9.9,19.3-11.2,30.2C685.3,690,686.6,691.8,689.2,692.1z" class="st17"></path>
|
||||
<path d="M580.2,674.4c-2.1,3.1-5.7,4.7-9.4,4.2c-4.4-0.8-9.1-1.8-13.3-3.6c-5.2-7.6-5-17.7,6.3-19.3
|
||||
c4.4-1,9.1,1,11.5,5C577.9,664.7,579.7,669.4,580.2,674.4z" class="st21"></path>
|
||||
<path d="M587.5,671l-10.4,19.5c-10.7-1-17.2-6.5-19.5-15.9c4.2,1.8,8.6,3.1,13.3,3.6c3.6,0.3,7.3-1.3,9.4-4.2
|
||||
c1-2.1,1.3-4.2,1.3-6.5c0-0.3,0-0.5,0.3,0C583.1,671.2,584.9,672.3,587.5,671z" class="st17"></path>
|
||||
<path d="M611,686.1c-8.3,8.9-25.5,10.2-36.8,8.6c-1-3.6,0-5.2,2.9-4.2l10.4-19.5c7.6-0.8,13.3,1.3,17.5,6.3
|
||||
C607.3,679.8,609.4,683,611,686.1z" class="st19"></path>
|
||||
<path d="M561,688.2c2.9,1.3,5.5,3.1,7.8,5.5c-0.3,2.3-0.8,4.7-1.6,7c-7.8,19.3-16.2,38.3-25.3,56.6
|
||||
c-2.9,6.5-7,12-12.8,16.2c-2.1-0.8-4.4-1-6.8-1c-16.2,1.3-32.3,2.6-48.5,3.9c-6.3,0.5-13.6,0.8-21.4,0.8c-7,0-14.3,0-21.4,0.3
|
||||
c-28.9-1.3-56-10.2-83.2-19.8c-7.8-2.9-15.4-6.8-22.2-11.7c-9.9-6.5-18.8-14.3-26.1-23.7c17.7,1.8,35.7,2.9,53.4,2.9
|
||||
c55-0.3,113.6-7.6,175.9-22.2C543.2,699.4,553.9,694.7,561,688.2z" class="st5"></path>
|
||||
<path d="M688.4,693.9c-0.3,4.4-1.3,8.6-3.4,12.3c-0.5,0.8-0.5,1.6-0.5,2.3v3.9c-0.3-1-1-1.6-2.1-1.6
|
||||
c-0.8,0-1.6-0.5-1.8-1.3l-1-2.1c0.5-4.4,1.8-8.9,3.9-13C684.5,693.1,686.1,692.9,688.4,693.9z" class="st13"></path>
|
||||
<path d="M679.8,707.7l1,2.1c0.3,0.8,1,1.3,1.8,1.3c1,0,1.8,0.5,2.1,1.6c-0.3,1-0.3,1.6,0,1.8
|
||||
c-1.3-1.3-2.1-1.6-2.9-0.8c-6.5,10.2-13,20.1-19.8,29.7c-2.9,4.2-5.2,8.6-7,13.3c-1.6,5-4.2,9.4-7.6,13c-5,5.5-9.9,10.7-14.9,16.2
|
||||
c-0.5,0.5-1.3,1-2.1,1c-1.6,0.3-2.9,0.8-4.2,1.6c-0.8,0.5-0.8,1,0,1.8c2.1,1.8,5,1.6,8.9-0.8c-1.3,1.3-2.9,2.3-4.7,2.6l-30.2,0.3
|
||||
c-3.1-7.3-8.6-10.4-15.9-9.6c-6,0.8-6.8,5.5-9.4,9.9h-22.4c-1.6,0-3.1-0.3-4.7-0.5l-4.7-0.8l-3.1-4.4l-11.5-10.7c0-1,0.5-1.8,1-2.6
|
||||
c5.5-4.2,9.9-9.6,12.8-16.2c4.7,0.3,9.4-0.5,13.6-2.1c2.9-1.3,6.3-2.9,9.6-4.2c1.3-0.5,4.7-2.1,9.9-5c5.2-2.9,12-3.4,17.2-5.5
|
||||
c5.2-2.1,11.2-5,16.7-7.3c5.5-2.6,11.2-4.7,17.2-6.5c11.5-3.6,19-6.8,22.4-9.1c6.5-4.7,13.6-8.6,20.9-12
|
||||
C676.9,702,680.3,702.8,679.8,707.7z M657.4,747.3c1.8-4.7,2.1-9.9,0.5-14.6c-0.8-2.1-2.9-3.4-5-2.6c-8.9,2.6-16.2,8.9-20.1,17.2
|
||||
c-1.3,2.9,0,6.3,2.9,7.6c0.3,0,0.3,0.3,0.5,0.3C646.2,758.8,653.5,756,657.4,747.3z" class="st11"></path>
|
||||
<path d="M264.6,708c3.9,7,7,14.6,9.9,22.2c1,3.4,2.6,6.8,4.7,9.6c1.8,2.9,3.6,6,5.5,9.1c1,1.6,2.1,2.9,3.4,3.9
|
||||
c1.3,1.3,2.6,2.6,3.4,4.2c0.5,0.8,1,1.3,1.8,1.6c1.8,0.5,3.9,0.8,5.7,0.5c5.2-0.5,10.2-2.1,15.1-4.2c0.8-0.3,1.8-0.5,2.6-0.5
|
||||
c4.7,0,7.6-2.9,8.9-8.3c6.8,5,14.3,8.9,22.2,11.7c27.1,9.6,54.5,18.5,83.2,19.8c0.8,0,0.8,0.8,0,2.3l-11.2,8.3l-13.3,2.9l-32.3,1.6
|
||||
c-9.4-5.5-16.2-8.6-20.6-9.4c-5.2-1.6-10.4,1.6-12,6.8c0,0.3,0,0.3,0,0.5c-0.8,2.1-2.3,2.6-4.7,2.1c-8.1,0.3-13.8-0.5-16.4-2.6
|
||||
C294.3,771.1,269.3,740.8,264.6,708z" class="st11"></path>
|
||||
<path d="M684.5,714.2c-2.6,9.6-5.2,19.5-7.8,29.5c-4.4,17.2-6,28.7-22.9,32.6c-2.9,0.5-5.5,1.6-7.8,3.1
|
||||
c-2.3,1.8-4.7,3.6-6.8,5.5l-4.7,4.4c-3.6,2.3-6.8,2.6-8.9,0.8c-0.8-0.5-0.8-1.3,0-1.8c1.3-0.8,2.6-1.3,4.2-1.6c0.8,0,1.6-0.5,2.1-1
|
||||
c4.7-5.2,9.6-10.7,14.9-16.2c3.4-3.9,6-8.3,7.6-13c1.8-4.7,4.2-9.1,7-13.3c6.8-9.6,13.6-19.3,19.8-29.7
|
||||
C682.4,712.7,683.5,712.9,684.5,714.2z M666.8,745.3L653,769.8c0,0.3,0,0.5,0.3,0.5l0,0c3.9,2.1,10.2-1.6,14.1-8.1l0.5-0.8
|
||||
c3.9-6.8,3.9-14.1,0-16.2l0,0C667.3,745,667,745,666.8,745.3L666.8,745.3z" class="st8"></path>
|
||||
<path d="M657.4,747.3c-3.9,8.6-11.2,11.2-21.4,7.8c-3.1-1-4.7-4.2-3.6-7.3c0-0.3,0.3-0.3,0.3-0.5
|
||||
c3.9-8.3,11.2-14.6,20.1-17.2c2.1-0.8,4.4,0.5,5,2.6C659.5,737.4,659.2,742.7,657.4,747.3z" class="st4"></path>
|
||||
<path d="M666.8,745.3c0-0.3,0.3-0.3,0.5,0l0,0c3.9,2.3,3.9,9.4,0,16.2l-0.5,0.8c-3.9,6.8-10.2,10.4-14.1,8.1l0,0
|
||||
c-0.3,0-0.3-0.3-0.3-0.5L666.8,745.3z" class="st11"></path>
|
||||
<path d="M752.3,790.4c0.3-0.3,0.3,0.5-0.5,2.1l-54.7-0.5c-6.8,0.5-9.9-0.5-9.4-3.4c8.3-10.9,20.3-19,33.6-22.7
|
||||
c4.4-1.3,8.6-2.3,12.5,1c7.3,6.3,11.5,10.4,12.5,12.8C748.1,783.1,750.2,786.7,752.3,790.4z" class="st22"></path>
|
||||
<path d="M529.4,773.4c-0.5,0.8-0.8,1.6-1,2.6c-15.1,0.8-30.2,1.6-45.4,2.6c-15.4,1-31.3,1-46.9,1.3
|
||||
c-0.5,0-1.3,0.3-1.8,0.3c-1,0.3-2.1,0-3.1-0.8c0.5-1.3,0.5-2.1,0-2.3c7.3-0.3,14.3-0.3,21.4-0.3c7.8,0,15.1-0.3,21.4-0.8
|
||||
c16.2-1.3,32.3-2.6,48.5-3.9C524.7,772.4,527.1,772.6,529.4,773.4z" class="st23"></path>
|
||||
<path d="M528.4,776l11.5,10.7c0,0.3,0,0.5,0,1c0,0.5-0.5,1-1.3,1L419.9,788l11.2-8.3c0.8,0.5,2.1,0.8,3.1,0.8
|
||||
c0.8-0.3,1.6-0.3,2.1-0.5c15.6-0.5,31.5-0.5,46.9-1.3S513.2,776.8,528.4,776z" class="st24"></path>
|
||||
<path d="M600,792.2l-25.3,0.3c2.6-4.4,3.4-9.1,9.4-9.9C591.4,781.8,596.7,784.9,600,792.2z" class="st21"></path>
|
||||
<path d="M374.3,792.4l-37.3-0.3c2.6,0.5,3.9,0,4.7-2.1c1.3-5.2,6.3-8.3,11.5-7.3c0.3,0,0.3,0,0.5,0
|
||||
C358.2,783.8,364.9,787,374.3,792.4z" class="st4"></path>
|
||||
<path d="M639.4,784.9c0,1.6,0.3,2.3,0.5,2.3c10.4,0.8,25.3,1.6,44.3,1.8c1.3,0.3,2.6,0,3.6-0.5
|
||||
c-0.5,2.9,2.6,3.9,9.4,3.4l-67,0.3c1.8-0.3,3.4-1.3,4.7-2.6L639.4,784.9z" class="st25"></path>
|
||||
<path d="M539.6,787l3.1,4.4l-136.1-0.3l13.3-2.9l118.6,0.8c0.5,0,1-0.5,1.3-1C539.8,787.5,539.8,787.2,539.6,787z" class="st26"></path>
|
||||
<path d="M820.6,788.5c-0.5,1.3-0.8,2.9-0.5,4.2l-68.3-0.5c0.5-1.6,0.8-2.3,0.5-2.1L820.6,788.5z" class="st25"></path>
|
||||
<path d="M217.7,791.4c0.8-0.8,1-1.6,0.8-1.8l97.7-0.8c0.8,0,1,0.3,0.8,1v0.8c-0.3,0.8-0.8,1.6-1.8,1.6L217.7,791.4z" class="st25"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 35 KiB |
1
src/assets/svgs/dinosaur-happy.svg
Normal file
After Width: | Height: | Size: 80 KiB |
1
src/assets/svgs/dinosaur-joy.svg
Normal file
After Width: | Height: | Size: 80 KiB |
1
src/assets/svgs/dinosaur-play.svg
Normal file
After Width: | Height: | Size: 96 KiB |
1
src/assets/svgs/dinosaur-pleasure.svg
Normal file
After Width: | Height: | Size: 70 KiB |
1
src/assets/svgs/dinosaur-rouse.svg
Normal file
After Width: | Height: | Size: 68 KiB |
1
src/assets/svgs/dinosaur-satisfy.svg
Normal file
After Width: | Height: | Size: 78 KiB |
1
src/assets/svgs/dinosaur-tongue.svg
Normal file
After Width: | Height: | Size: 72 KiB |
99
src/components/BoxDog/BoxDog.vue
Normal file
@@ -0,0 +1,99 @@
|
||||
<script lang="ts">
|
||||
import {defineComponent} from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: "BoxDog"
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<body translate="no">
|
||||
<div class="container">
|
||||
<div class="box">
|
||||
<div class="sign"></div>
|
||||
</div>
|
||||
<div class="dog">
|
||||
<div class="dog-group">
|
||||
<div class="tongue-open"></div>
|
||||
<div class="body-group">
|
||||
<div class="dog-box">
|
||||
<div class="dog-box-sign">
|
||||
<div class="content"></div>
|
||||
</div>
|
||||
<div class="bottom-shadow"></div>
|
||||
<div class="top-left-shadow"></div>
|
||||
</div>
|
||||
<div class="tail-group">
|
||||
<div class="tail">
|
||||
<div class="tail">
|
||||
<div class="tail">
|
||||
<div class="tail">
|
||||
<div class="tail">
|
||||
<div class="tail">
|
||||
<div class="tail last"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dog-shape"></div>
|
||||
</div>
|
||||
<div class="head-group">
|
||||
<div class="ear">
|
||||
<div class="ear-container">
|
||||
<div class="ear-left"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="head"></div>
|
||||
<div class="ear right">
|
||||
<div class="ear-container">
|
||||
<div class="ear-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="face">
|
||||
<div class="muzzle">
|
||||
<div class="nose"></div>
|
||||
<div class="mouth-close"></div>
|
||||
<div class="mouth-open">
|
||||
<div class="teeth"></div>
|
||||
</div>
|
||||
<div class="mouth-barks"></div>
|
||||
</div>
|
||||
<div class="eyes">
|
||||
<div class="eye-left">
|
||||
<div class="pupil"></div>
|
||||
</div>
|
||||
<div class="eye-right">
|
||||
<div class="pupil"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="plant-group">
|
||||
<div class="pot"></div>
|
||||
<div class="plant">
|
||||
<div class="stem">
|
||||
<div class="leaf"></div>
|
||||
<div class="leaf"></div>
|
||||
<div class="leaf"></div>
|
||||
<div class="leaf"></div>
|
||||
<div class="leaf"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shapes">
|
||||
<div class="red-shape"></div>
|
||||
<div class="blue-shape"></div>
|
||||
<div class="yellow-shape"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</template>
|
||||
|
||||
<style src="./index.scss" scoped>
|
||||
|
||||
</style>
|
1173
src/components/BoxDog/index.scss
Normal file
19
src/components/DynamicTitle/DynamicTitle.vue
Normal file
@@ -0,0 +1,19 @@
|
||||
<script lang="ts">
|
||||
import {defineComponent} from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: "DynamicTitle"
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<h1>
|
||||
<span>五</span><span>味</span><span>子</span><span>云</span><span>相</span><span>册</span>
|
||||
</h1>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style src="./index.scss" scoped>
|
||||
|
||||
</style>
|
80
src/components/DynamicTitle/fonts.scss
Normal file
@@ -0,0 +1,80 @@
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
/* vietnamese */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||||
}
|
||||
|
||||
/* latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
|
||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* latin */
|
||||
@font-face {
|
||||
font-family: 'Signika';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
155
src/components/DynamicTitle/index.scss
Normal file
@@ -0,0 +1,155 @@
|
||||
@import url("fonts.scss");
|
||||
|
||||
|
||||
h1 {
|
||||
font-size: 5em;
|
||||
font: bold 2.5vw/1.6 'Signika', sans-serif;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
h1 span {
|
||||
display: inline-block;
|
||||
-webkit-animation: float .2s ease-in-out infinite;
|
||||
animation: float .2s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes float {
|
||||
0%, 100% {
|
||||
transform: none;
|
||||
}
|
||||
33% {
|
||||
transform: translateY(-1px) rotate(-2deg);
|
||||
}
|
||||
66% {
|
||||
transform: translateY(1px) rotate(2deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: none;
|
||||
}
|
||||
33% {
|
||||
transform: translateY(-1px) rotate(-2deg);
|
||||
}
|
||||
66% {
|
||||
transform: translateY(1px) rotate(2deg);
|
||||
}
|
||||
}
|
||||
|
||||
body:hover span {
|
||||
-webkit-animation: bounce .6s;
|
||||
animation: bounce .6s;
|
||||
}
|
||||
|
||||
@-webkit-keyframes bounce {
|
||||
0%, 100% {
|
||||
transform: translate(0);
|
||||
}
|
||||
25% {
|
||||
transform: rotateX(20deg) translateY(2px) rotate(-3deg);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-20px) rotate(3deg) scale(1.1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0%, 100% {
|
||||
transform: translate(0);
|
||||
}
|
||||
25% {
|
||||
transform: rotateX(20deg) translateY(2px) rotate(-3deg);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-20px) rotate(3deg) scale(1.1);
|
||||
}
|
||||
}
|
||||
|
||||
span:nth-child(4n) {
|
||||
color: hsl(50, 75%, 55%);
|
||||
text-shadow: 1px 1px hsl(50, 75%, 45%), 2px 2px hsl(50, 45%, 45%), 3px 3px hsl(50, 45%, 45%), 4px 4px hsl(50, 75%, 45%);
|
||||
}
|
||||
|
||||
span:nth-child(4n-1) {
|
||||
color: hsl(135, 35%, 55%);
|
||||
text-shadow: 1px 1px hsl(135, 35%, 45%), 2px 2px hsl(135, 35%, 45%), 3px 3px hsl(135, 35%, 45%), 4px 4px hsl(135, 35%, 45%);
|
||||
}
|
||||
|
||||
span:nth-child(4n-2) {
|
||||
color: hsl(155, 35%, 60%);
|
||||
text-shadow: 1px 1px hsl(155, 25%, 50%), 2px 2px hsl(155, 25%, 50%), 3px 3px hsl(155, 25%, 50%), 4px 4px hsl(140, 25%, 50%);
|
||||
}
|
||||
|
||||
span:nth-child(4n-3) {
|
||||
color: hsl(30, 65%, 60%);
|
||||
text-shadow: 1px 1px hsl(30, 45%, 50%), 2px 2px hsl(30, 45%, 50%), 3px 3px hsl(30, 45%, 50%), 4px 4px hsl(30, 45%, 50%);
|
||||
}
|
||||
|
||||
h1 span:nth-child(2) {
|
||||
-webkit-animation-delay: .05s;
|
||||
animation-delay: .05s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(3) {
|
||||
-webkit-animation-delay: .1s;
|
||||
animation-delay: .1s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(4) {
|
||||
-webkit-animation-delay: .15s;
|
||||
animation-delay: .15s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(5) {
|
||||
-webkit-animation-delay: .2s;
|
||||
animation-delay: .2s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(6) {
|
||||
-webkit-animation-delay: .25s;
|
||||
animation-delay: .25s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(7) {
|
||||
-webkit-animation-delay: .3s;
|
||||
animation-delay: .3s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(8) {
|
||||
-webkit-animation-delay: .35s;
|
||||
animation-delay: .35s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(9) {
|
||||
-webkit-animation-delay: .4s;
|
||||
animation-delay: .4s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(10) {
|
||||
-webkit-animation-delay: .45s;
|
||||
animation-delay: .45s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(11) {
|
||||
-webkit-animation-delay: .5s;
|
||||
animation-delay: .5s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(12) {
|
||||
-webkit-animation-delay: .55s;
|
||||
animation-delay: .55s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(13) {
|
||||
-webkit-animation-delay: .6s;
|
||||
animation-delay: .6s;
|
||||
}
|
||||
|
||||
h1 span:nth-child(14) {
|
||||
-webkit-animation-delay: .65s;
|
||||
animation-delay: .65s;
|
||||
}
|
@@ -2,6 +2,7 @@
|
||||
import {createI18n} from 'vue-i18n';
|
||||
import zh from './language/zh.ts';
|
||||
import en from './language/en.ts';
|
||||
import {parse} from "zipson/lib";
|
||||
|
||||
const messages = {
|
||||
en,
|
||||
@@ -9,12 +10,14 @@ const messages = {
|
||||
};
|
||||
|
||||
|
||||
const language = (navigator.language || 'en').toLocaleLowerCase(); // 这是获取浏览器的语言
|
||||
const i18n = createI18n({
|
||||
const language: string = (navigator.language || 'en').toLocaleLowerCase(); // 获取浏览器的语言
|
||||
const lang: string = localStorage.getItem("lang") as string;
|
||||
const i18n: any = createI18n({
|
||||
legacy: false,
|
||||
compositionOnly: false,
|
||||
globalInjection: true,
|
||||
silentTranslationWarn: true,
|
||||
locale: JSON.parse(localStorage.getItem("lang") as string).lang || language.split('-')[0] || 'zh', // 首先从缓存里拿,没有的话就用浏览器语言,
|
||||
locale: parse(lang).lang || language.split('-')[0] || 'zh', // 首先从缓存里拿,没有的话就用浏览器语言,
|
||||
silentFallbackWarn: true,
|
||||
missingWarn: true,
|
||||
fallbackWarn: false,
|
||||
|
@@ -1,6 +1,40 @@
|
||||
// en.ts
|
||||
export default {
|
||||
login: {
|
||||
test: 'login',
|
||||
title: 'Schisandra Cloud Album',
|
||||
accountLogin: 'account login',
|
||||
account: 'account',
|
||||
accountValidate: "please enter your phone/account/email",
|
||||
password: 'password',
|
||||
passwordValidate: "please enter password",
|
||||
autoLogin: "auto login",
|
||||
forgotPassword: "forgot password",
|
||||
loginAndRegister: "login/Register",
|
||||
qrLogin: "QR login",
|
||||
phoneLogin: "phone login",
|
||||
phone: "phone number",
|
||||
phoneValidate: 'please enter a valid phone number',
|
||||
captchaValidate: 'please enter captcha number',
|
||||
phoneCaptcha: "captcha",
|
||||
sendCaptcha: "send captcha",
|
||||
login: "login",
|
||||
register: "register",
|
||||
reSendCaptcha: " re-send",
|
||||
passwordRule: "The password must be 6~18 characters and must contain letters, numbers and special symbols!"
|
||||
},
|
||||
error: {
|
||||
networkError: 'Network error, please try again later',
|
||||
400: 'request error (400)',
|
||||
401: 'request unauthorized (401)',
|
||||
403: 'request forbidden (403)',
|
||||
404: 'request not found (404)',
|
||||
408: 'request timeout (408)',
|
||||
500: 'server error (500)',
|
||||
501: 'not implemented (501)',
|
||||
502: 'bad gateway (502)',
|
||||
503: 'service unavailable (503)',
|
||||
504: 'gateway timeout (504)',
|
||||
505: 'http version not supported (505)',
|
||||
other: 'connect error',
|
||||
}
|
||||
};
|
||||
|
@@ -1,9 +1,41 @@
|
||||
// zh.ts
|
||||
export default {
|
||||
|
||||
login: {
|
||||
test: '登录',
|
||||
title: '五味子云存储',
|
||||
accountLogin: '账号登录',
|
||||
account: '账号',
|
||||
accountValidate: '请输入手机号/账号/邮箱',
|
||||
password: "密码",
|
||||
passwordValidate: "请输入密码",
|
||||
autoLogin: "自动登录",
|
||||
forgotPassword: "忘记密码",
|
||||
loginAndRegister: "登录",
|
||||
qrLogin: "扫码登录",
|
||||
phoneLogin: "短信登录",
|
||||
phone: "手机号",
|
||||
phoneValidate: '请输入正确的手机号',
|
||||
captchaValidate: '请输入验证码',
|
||||
phoneCaptcha: "验证码",
|
||||
sendCaptcha: "发送验证码",
|
||||
login: "登录",
|
||||
register: "注册",
|
||||
reSendCaptcha: "重新发送",
|
||||
passwordRule: "密码要6~18位字符,且必须包含字母、数字和特殊符号!"
|
||||
},
|
||||
error: {
|
||||
networkError: '网络连接失败!',
|
||||
400: '请求错误(400)',
|
||||
401: '未授权,请重新登录(401)',
|
||||
403: '拒绝访问(403)',
|
||||
404: '请求出错(404)',
|
||||
408: '请求超时(408)',
|
||||
500: '服务器错误(500)',
|
||||
501: '服务未实现(501)',
|
||||
502: '网关错误(502)',
|
||||
503: '服务不可用(503)',
|
||||
504: '网关超时(504)',
|
||||
505: 'HTTP版本不受支持(505)',
|
||||
other: '连接出错',
|
||||
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
@@ -1,6 +1,6 @@
|
||||
export default [
|
||||
{
|
||||
path: '/',
|
||||
path: '/login',
|
||||
name: 'login',
|
||||
component: () => import('@/views/Login/LoginPage.vue'),
|
||||
meta: {
|
||||
|
11
src/router/modules/register.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export default [
|
||||
{
|
||||
path: '/register',
|
||||
name: 'register',
|
||||
component: () => import('@/views/Register/RegisterPage.vue'),
|
||||
meta: {
|
||||
requiresAuth: false,
|
||||
title: '注册页'
|
||||
}
|
||||
}
|
||||
];
|
11
src/router/modules/testI18n.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
export default [
|
||||
{
|
||||
path: '/test2',
|
||||
name: 'test2',
|
||||
component: () => import('@/views/TestI18n.vue'),
|
||||
meta: {
|
||||
requiresAuth: false,
|
||||
title: '测试'
|
||||
}
|
||||
}
|
||||
];
|
@@ -3,15 +3,18 @@
|
||||
import {createRouter, createWebHistory, Router, RouteRecordRaw} from 'vue-router';
|
||||
import login from './modules/login';
|
||||
import test from "@/router/modules/test.ts";
|
||||
import test2 from "@/router/modules/testI18n.ts";
|
||||
import useStore from "@/store";
|
||||
import {message} from "ant-design-vue";
|
||||
import {close, start} from '@/utils/nprogress/nprogress.ts';
|
||||
import register from "@/router/modules/register.ts";
|
||||
|
||||
|
||||
const routes: Array<RouteRecordRaw> = [
|
||||
...login,
|
||||
...test
|
||||
|
||||
...register,
|
||||
...test,
|
||||
...test2,
|
||||
];
|
||||
|
||||
const router: Router = createRouter({
|
||||
|
@@ -1,11 +1,12 @@
|
||||
import {defineStore} from 'pinia';
|
||||
import {ref} from 'vue';
|
||||
import pinia from "@/store/pinia.ts";
|
||||
import {parse, stringify} from "zipson/lib";
|
||||
|
||||
export const langStore = defineStore(
|
||||
'lang',
|
||||
() => {
|
||||
const lang = ref<string>('');
|
||||
const lang = ref<string>('zh');
|
||||
|
||||
function setLang(value: string) {
|
||||
lang.value = value;
|
||||
@@ -23,11 +24,14 @@ export const langStore = defineStore(
|
||||
},
|
||||
{
|
||||
// 开启数据持久化
|
||||
persistedState: {
|
||||
persist: {
|
||||
key: 'lang',
|
||||
storage: localStorage,
|
||||
includePaths: ["lang"],
|
||||
overwrite: true,
|
||||
paths: ["lang"],
|
||||
serializer: {
|
||||
deserialize: parse,
|
||||
serialize: stringify,
|
||||
},
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@@ -2,6 +2,7 @@ import {defineStore} from 'pinia';
|
||||
import {computed, ref} from 'vue';
|
||||
import {theme} from 'ant-design-vue';
|
||||
import variables from '@/assets/styles/colors.module.scss';
|
||||
import {parse, stringify} from "zipson/lib";
|
||||
|
||||
/**
|
||||
* theme 配置 开启持久化
|
||||
@@ -21,6 +22,7 @@ export const useThemeStore = defineStore(
|
||||
return {
|
||||
token: {
|
||||
colorPrimary: variables[themeName.value] || '#27ba9b',
|
||||
borderRadius: 10,
|
||||
colorSuccess: '#1dc779',
|
||||
colorWarning: '#ffb302',
|
||||
colorError: '#cf4444',
|
||||
@@ -39,11 +41,14 @@ export const useThemeStore = defineStore(
|
||||
return {themeName, themeConfig, darkMode, darkModeComp, setThemeName, toggleDarkMode};
|
||||
},
|
||||
{
|
||||
persistedState: {
|
||||
persist: {
|
||||
key: 'theme',
|
||||
storage: localStorage,
|
||||
includePaths: ["themeName", "darkMode"],
|
||||
overwrite: true,
|
||||
paths: ["themeName", "darkMode"],
|
||||
serializer: {
|
||||
deserialize: parse,
|
||||
serialize: stringify,
|
||||
},
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@@ -1,6 +1,7 @@
|
||||
import {defineStore} from 'pinia';
|
||||
import {ref} from 'vue';
|
||||
import {User} from "@/types/user";
|
||||
import {parse, stringify} from "zipson/lib";
|
||||
|
||||
|
||||
export const useAuthStore = defineStore(
|
||||
@@ -29,11 +30,14 @@ export const useAuthStore = defineStore(
|
||||
},
|
||||
{
|
||||
// 开启数据持久化
|
||||
persistedState: {
|
||||
persist: {
|
||||
key: 'user',
|
||||
storage: localStorage,
|
||||
includePaths: ["user"],
|
||||
overwrite: true,
|
||||
paths: ["user"],
|
||||
serializer: {
|
||||
deserialize: parse,
|
||||
serialize: stringify,
|
||||
},
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@@ -1,14 +1,9 @@
|
||||
import {createPinia, Pinia} from "pinia";
|
||||
import {createPersistedStatePlugin} from "pinia-plugin-persistedstate-2";
|
||||
import stringify from 'json-stringify-safe';
|
||||
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
|
||||
import {App} from "vue";
|
||||
|
||||
const pinia: Pinia = createPinia();
|
||||
const installPersistedStatePlugin = createPersistedStatePlugin({
|
||||
serialize: (value) => stringify(value),
|
||||
deserialize: (value) => JSON.parse(value),
|
||||
});
|
||||
pinia.use((context) => installPersistedStatePlugin(context));
|
||||
pinia.use(piniaPluginPersistedstate)
|
||||
|
||||
export function setupStore(app: App<Element>) {
|
||||
app.use(pinia);
|
||||
|
10
src/types/user.d.ts
vendored
@@ -1,6 +1,14 @@
|
||||
|
||||
export interface User {
|
||||
token?: string
|
||||
userId?: string
|
||||
|
||||
}
|
||||
|
||||
export interface AccountLogin {
|
||||
account?: string
|
||||
password?: string;
|
||||
}
|
||||
export interface PhoneLogin {
|
||||
phone?: string
|
||||
captcha?: string;
|
||||
}
|
||||
|
@@ -7,7 +7,7 @@ import {AxiosError, AxiosResponse} from "axios";
|
||||
import {message} from "ant-design-vue";
|
||||
import {localforageStorageAdapter} from "@/utils/alova/adapter/localforageStorageAdapter.ts";
|
||||
import {handleCode} from "@/utils/errorCode/errorCodeHandler.ts";
|
||||
|
||||
import i18n from "@/locales";
|
||||
|
||||
export const service = createAlova({
|
||||
timeout: 5000,
|
||||
@@ -19,7 +19,7 @@ export const service = createAlova({
|
||||
cacheFor: {
|
||||
GET: {
|
||||
mode: 'restore',
|
||||
expire: 60 * 10 * 1000
|
||||
expire: 10 * 1000
|
||||
},
|
||||
},
|
||||
cacheLogger: import.meta.env.VITE_NODE_ENV === 'development',
|
||||
@@ -29,6 +29,8 @@ export const service = createAlova({
|
||||
const user = useStore().user;
|
||||
method.config.headers.token = user.getUser()?.token;
|
||||
}
|
||||
const lang = useStore().lang;
|
||||
method.config.headers['Accept-Language'] = lang.getLang();
|
||||
|
||||
},
|
||||
// 响应拦截器
|
||||
@@ -46,7 +48,7 @@ export const service = createAlova({
|
||||
handleCode(response.status);
|
||||
}
|
||||
if (!window.navigator.onLine) {
|
||||
message.error("网络连接失败").then();
|
||||
message.error(i18n.global.t('error.networkError')).then();
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,11 @@
|
||||
import {message} from "ant-design-vue";
|
||||
|
||||
import i18n from "@/locales";
|
||||
export function handleCode(code: number): void {
|
||||
switch (code) {
|
||||
case 400:
|
||||
message
|
||||
.open({
|
||||
content: "请求错误(400)",
|
||||
content: i18n.global.t("error.400"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -13,7 +13,7 @@ export function handleCode(code: number): void {
|
||||
case 401:
|
||||
message
|
||||
.open({
|
||||
content: "未授权,请重新登录(401)",
|
||||
content: i18n.global.t("error.401"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -21,7 +21,7 @@ export function handleCode(code: number): void {
|
||||
case 403:
|
||||
message
|
||||
.open({
|
||||
content: "拒绝访问(403)",
|
||||
content: i18n.global.t("error.403"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -29,7 +29,7 @@ export function handleCode(code: number): void {
|
||||
case 404:
|
||||
message
|
||||
.open({
|
||||
content: "请求出错(404)",
|
||||
content: i18n.global.t("error.404"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -37,7 +37,7 @@ export function handleCode(code: number): void {
|
||||
case 408:
|
||||
message
|
||||
.open({
|
||||
content: "请求超时(408)",
|
||||
content: i18n.global.t("error.408"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -45,7 +45,7 @@ export function handleCode(code: number): void {
|
||||
case 500:
|
||||
message
|
||||
.open({
|
||||
content: "服务器错误(500)",
|
||||
content: i18n.global.t("error.500"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -53,7 +53,7 @@ export function handleCode(code: number): void {
|
||||
case 501:
|
||||
message
|
||||
.open({
|
||||
content: "服务未实现(501)",
|
||||
content: i18n.global.t("error.501"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -61,7 +61,7 @@ export function handleCode(code: number): void {
|
||||
case 502:
|
||||
message
|
||||
.open({
|
||||
content: "网络错误(502)",
|
||||
content: i18n.global.t("error.502"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -69,7 +69,7 @@ export function handleCode(code: number): void {
|
||||
case 503:
|
||||
message
|
||||
.open({
|
||||
content: "服务不可用(503)",
|
||||
content: i18n.global.t("error.503"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -77,7 +77,7 @@ export function handleCode(code: number): void {
|
||||
case 504:
|
||||
message
|
||||
.open({
|
||||
content: "网络超时(504)",
|
||||
content: i18n.global.t("error.504"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -85,7 +85,7 @@ export function handleCode(code: number): void {
|
||||
case 505:
|
||||
message
|
||||
.open({
|
||||
content: "HTTP版本不受支持(505)",
|
||||
content: i18n.global.t("error.505"),
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
@@ -93,7 +93,7 @@ export function handleCode(code: number): void {
|
||||
default:
|
||||
message
|
||||
.open({
|
||||
content: `连接出错(${code})!`,
|
||||
content: i18n.global.t("error.other") + `(${code})`,
|
||||
type: "error",
|
||||
})
|
||||
.then();
|
||||
|
@@ -1,36 +1,280 @@
|
||||
<template>
|
||||
<div>
|
||||
<AButton @click="handleClick"> {{ t('login.test') }}</AButton>
|
||||
<AButton @click="changeLang('zh')"> 切换中文</AButton>
|
||||
<AButton @click="changeLang('en')"> 切换英文</AButton>
|
||||
<div class="login-main">
|
||||
<div class="login-left">
|
||||
<BoxDog/>
|
||||
</div>
|
||||
<div class="login-right">
|
||||
<span class="login-right-title">{{ t("login.title") }}</span>
|
||||
<ACard class="login-card" bordered :hoverable="false">
|
||||
<ATabs :centered="false" size="large">
|
||||
<!-- 短信登录 -->
|
||||
<ATabPane key="phoneLogin">
|
||||
<template #tab>
|
||||
<span class="login-tab-span">
|
||||
{{ t("login.phoneLogin") }}
|
||||
</span>
|
||||
</template>
|
||||
<AForm ref="phoneLoginFormRef" :rules="rules" :model="phoneLoginForm">
|
||||
<AFormItem
|
||||
class="login-form-item"
|
||||
name="phone">
|
||||
<span class="login-card-span">{{ t("login.phone") }}</span>
|
||||
<AInput v-model:value="phoneLoginForm.phone" class="login-form-input" size="large"
|
||||
:placeholder=phoneValidate
|
||||
>
|
||||
<template #prefix>
|
||||
<TabletOutlined/>
|
||||
</template>
|
||||
</AInput>
|
||||
</AFormItem>
|
||||
<AFormItem
|
||||
class="login-form-item"
|
||||
name="captcha">
|
||||
<AFlex :vertical="true">
|
||||
<span class="login-card-span">{{ t("login.phoneCaptcha") }}</span>
|
||||
<AFlex :vertical="false" align="center" justify="center">
|
||||
<AInput v-model:value="phoneLoginForm.captcha" size="large" :placeholder=captchaValidate>
|
||||
<template #prefix>
|
||||
<SafetyOutlined/>
|
||||
</template>
|
||||
</AInput>
|
||||
<AButton v-if="!state.showCountDown" @click="sendCaptcha" style="margin-left: 10px" size="large">{{
|
||||
t("login.sendCaptcha")
|
||||
}}
|
||||
</AButton>
|
||||
<AButton v-if="state.showCountDown" disabled style="margin-left: 10px" size="large">{{
|
||||
state.countDownTime
|
||||
}}s{{ t("login.reSendCaptcha") }}
|
||||
</AButton>
|
||||
</AFlex>
|
||||
</AFlex>
|
||||
|
||||
<ADatePicker/>
|
||||
<ATimePicker/>
|
||||
{{ data }}
|
||||
</AFormItem>
|
||||
<AFormItem>
|
||||
<AFlex :vertical="false" justify="space-between">
|
||||
<ACheckbox>{{ t("login.autoLogin") }}</ACheckbox>
|
||||
<a>{{ t("login.forgotPassword") }}</a>
|
||||
</AFlex>
|
||||
|
||||
</AFormItem>
|
||||
<AFormItem>
|
||||
<AButton @click="phoneLoginSubmit" type="primary" size="large" class="login-form-button">
|
||||
{{ t("login.login") }}
|
||||
</AButton>
|
||||
</AFormItem>
|
||||
</AForm>
|
||||
<ADivider/>
|
||||
<AFlex :vertical="false" align="center" justify="space-around">
|
||||
<AButton class="login-form-bottom-button" :icon="h(QrcodeOutlined)">{{ t("login.qrLogin") }}</AButton>
|
||||
<AButton class="login-form-bottom-button" :icon="h(QqOutlined)"></AButton>
|
||||
<AButton class="login-form-bottom-button" :icon="h(GithubOutlined)"></AButton>
|
||||
</AFlex>
|
||||
</ATabPane>
|
||||
<!-- 账号登录 -->
|
||||
<ATabPane key="accountLogin">
|
||||
<template #tab>
|
||||
<span class="login-tab-span">
|
||||
{{ t("login.accountLogin") }}
|
||||
</span>
|
||||
</template>
|
||||
<AForm ref="accountLoginFormRef" :rules="rules" :model="accountLoginForm">
|
||||
<AFormItem
|
||||
class="login-form-item"
|
||||
name="account">
|
||||
<span class="login-card-span">{{ t("login.account") }}</span>
|
||||
<AInput v-model:value="accountLoginForm.account" class="login-form-input" size="large"
|
||||
:placeholder=accountValidate>
|
||||
<template #prefix>
|
||||
<user-outlined/>
|
||||
</template>
|
||||
</AInput>
|
||||
</AFormItem>
|
||||
<AFormItem
|
||||
class="login-form-item"
|
||||
name="password">
|
||||
<AFlex :vertical="true">
|
||||
<span class="login-card-span">{{ t("login.password") }}</span>
|
||||
<AInputPassword v-model:value="accountLoginForm.password" class="login-form-input" size="large"
|
||||
:placeholder=passwordValidate>
|
||||
<template #prefix>
|
||||
<SafetyOutlined/>
|
||||
</template>
|
||||
</AInputPassword>
|
||||
</AFlex>
|
||||
</AFormItem>
|
||||
<AFormItem>
|
||||
<AFlex :vertical="false" justify="space-between">
|
||||
<ACheckbox>{{ t("login.autoLogin") }}</ACheckbox>
|
||||
<a>{{ t("login.forgotPassword") }}</a>
|
||||
</AFlex>
|
||||
|
||||
</AFormItem>
|
||||
<AFormItem>
|
||||
<AButton @click="accountLoginSubmit" type="primary" size="large" class="login-form-button">
|
||||
{{
|
||||
t("login.loginAndRegister")
|
||||
}}
|
||||
</AButton>
|
||||
</AFormItem>
|
||||
</AForm>
|
||||
<ADivider/>
|
||||
<AFlex :vertical="false" align="center" justify="space-around">
|
||||
<AButton class="login-form-bottom-button" :icon="h(QrcodeOutlined)">{{ t("login.qrLogin") }}</AButton>
|
||||
<AButton class="login-form-bottom-button" :icon="h(QqOutlined)"></AButton>
|
||||
<AButton class="login-form-bottom-button" :icon="h(GithubOutlined)"></AButton>
|
||||
</AFlex>
|
||||
</ATabPane>
|
||||
|
||||
</ATabs>
|
||||
<ATooltip placement="left">
|
||||
<template #title>
|
||||
<span>{{ t("login.qrLogin") }}</span>
|
||||
</template>
|
||||
<div class="login-right-qrcode"/>
|
||||
</ATooltip>
|
||||
</ACard>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {useRequest} from "alova/client";
|
||||
import {getUserInfo} from "@/api/user";
|
||||
import {Rule} from "ant-design-vue/lib/form";
|
||||
import {h, onMounted, reactive, ref, UnwrapRef} from "vue";
|
||||
import {AccountLogin, PhoneLogin} from "@/types/user";
|
||||
import {GithubOutlined, QqOutlined, QrcodeOutlined} from "@ant-design/icons-vue";
|
||||
import {useI18n} from "vue-i18n";
|
||||
import useStore from "@/store";
|
||||
import BoxDog from "@/components/BoxDog/BoxDog.vue";
|
||||
|
||||
const {t, locale} = useI18n();
|
||||
const {data, send} = useRequest(getUserInfo, {
|
||||
immediate: false
|
||||
const {t} = useI18n();
|
||||
const accountLoginFormRef = ref();
|
||||
const phoneLoginFormRef = ref<any>();
|
||||
// 账号登录表单数据
|
||||
const accountLoginForm: UnwrapRef<AccountLogin> = reactive({
|
||||
account: '',
|
||||
password: '',
|
||||
});
|
||||
const handleClick = () => {
|
||||
send();
|
||||
// 手机登录表单数据
|
||||
const phoneLoginForm: UnwrapRef<PhoneLogin> = reactive({
|
||||
phone: '',
|
||||
captcha: '',
|
||||
});
|
||||
// 表单验证提示
|
||||
const accountValidate = ref<string>(t('login.accountValidate'));
|
||||
const passwordValidate = ref<string>(t('login.passwordValidate'));
|
||||
const phoneValidate = ref<string>(t('login.phoneValidate'));
|
||||
const captchaValidate = ref<string>(t('login.captchaValidate'));
|
||||
// 表单验证规则
|
||||
const rules: Record<string, Rule[]> = {
|
||||
account: [
|
||||
{required: true, message: t('login.accountValidate'), trigger: 'change'},
|
||||
],
|
||||
password: [
|
||||
{
|
||||
required: true, message: t('login.passwordValidate'), trigger: 'change'
|
||||
},
|
||||
{
|
||||
pattern: /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{6,18}$/,
|
||||
message: t('login.passwordRule'),
|
||||
},
|
||||
],
|
||||
phone: [
|
||||
{required: true, message: t('login.phoneValidate'), trigger: 'change'},
|
||||
{pattern: /^1[2-9]\d{9}$/, message: t('login.phoneValidate')}
|
||||
],
|
||||
captcha: [
|
||||
{
|
||||
required: true, message: t('login.captchaValidate'), trigger: 'change'
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
const state = reactive({
|
||||
countDownTime: 60,
|
||||
showCountDown: false,
|
||||
});
|
||||
/**
|
||||
* 验证码发送倒计时
|
||||
*/
|
||||
const countDown = () => {
|
||||
const startTime = localStorage.getItem('startTimeSendCaptcha');
|
||||
const nowTime = new Date().getTime();
|
||||
let surplus: number = 60;
|
||||
let timer: any;
|
||||
if (startTime) {
|
||||
surplus = 60 - Math.floor((nowTime - Number(startTime)) / 1000);
|
||||
surplus = surplus <= 0 ? 0 : surplus;
|
||||
} else {
|
||||
localStorage.setItem('startTimeSendCaptcha', String(nowTime));
|
||||
}
|
||||
|
||||
const lang = useStore().lang;
|
||||
state.countDownTime = surplus;
|
||||
|
||||
async function changeLang(language: any) {
|
||||
lang.setLang(language);
|
||||
locale.value = language;
|
||||
if (timer) {
|
||||
clearInterval(timer);
|
||||
}
|
||||
timer = setInterval(() => {
|
||||
if (state.countDownTime <= 0) {
|
||||
localStorage.removeItem('startTimeSendCaptcha');
|
||||
clearInterval(timer);
|
||||
state.countDownTime = 60;
|
||||
state.showCountDown = false;
|
||||
} else {
|
||||
state.countDownTime--;
|
||||
state.showCountDown = true;
|
||||
}
|
||||
}, 1000);
|
||||
};
|
||||
onMounted(() => {
|
||||
const sendEndTime = localStorage.getItem('startTimeSendCaptcha');
|
||||
if (sendEndTime) {
|
||||
state.showCountDown = true;
|
||||
countDown();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 发送验证码
|
||||
*/
|
||||
async function sendCaptcha() {
|
||||
phoneLoginFormRef.value
|
||||
.validateFields("phone")
|
||||
.then(() => {
|
||||
countDown();
|
||||
console.log('values');
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log('error', error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 账号登录提交
|
||||
*/
|
||||
async function accountLoginSubmit() {
|
||||
accountLoginFormRef.value
|
||||
.validate()
|
||||
.then(() => {
|
||||
console.log('values', accountLoginForm);
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log('error', error);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机登录提交
|
||||
*/
|
||||
async function phoneLoginSubmit() {
|
||||
phoneLoginFormRef.value
|
||||
.validate()
|
||||
.then(() => {
|
||||
console.log('values', phoneLoginForm);
|
||||
})
|
||||
.catch((error: any) => {
|
||||
console.log('error', error);
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
<style src="./index.scss" scoped>
|
||||
@import "@/assets/styles/global.scss";
|
||||
</style>
|
||||
|
@@ -0,0 +1,91 @@
|
||||
.login-main {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
//background-color: rgb(238, 255, 238);
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
/* 加载背景图 */
|
||||
background-image: url("@/assets/images/login-back.png");
|
||||
/* 背景图垂直、水平均居中 */
|
||||
background-position: center center;
|
||||
/* 背景图不平铺 */
|
||||
background-repeat: no-repeat;
|
||||
/* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
|
||||
background-attachment: fixed;
|
||||
/* 让背景图基于容器大小伸缩 */
|
||||
background-size: cover;
|
||||
|
||||
.login-left {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.login-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
|
||||
.login-right-title {
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
.login-card {
|
||||
width: 440px;
|
||||
height: 490px;
|
||||
border-radius: 15px;
|
||||
box-shadow: 0 2px 8px 0 rgba(0, 0, 0, .08);
|
||||
|
||||
.login-card-span {
|
||||
color: #999ba1;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.login-tab-span {
|
||||
font-weight: bolder;
|
||||
font-size: large
|
||||
}
|
||||
|
||||
.login-form-input {
|
||||
|
||||
}
|
||||
|
||||
.login-form-item {
|
||||
height: 70px;
|
||||
}
|
||||
|
||||
.login-form-button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.login-right-qrcode {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
background-position: 50%;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
width: 72px;
|
||||
height: 72px;
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACRtJREFUeF7tnU2IVWUYx5/3jE6mppvSFoVhH4RB6MxoQQTSMojAPjA3Qa1ahPQhQkZ+jLqRMnPXwnKjgbgwwU0bKQac0QGhGih1iHShdwxTwS+cOXHMq9fjvfd9n3Oe533fc+9/tuc5/+d5//8f5/Peuebz0WUbptJ0PeGvkg4YQzfS1FwmQ5cN0fk0pT8NmT8ood9nUe/Pn/X9MqG5MJOJAyJNiwNqG0pNSr8RmZ8SY/YM9g+PSk9zCyBAJG1rpHrGjCVpuuuh2b3frn126LLElHcAAkQSdlZEw5gLCdE305KZX29YcvjfMlPfAxAgKmNlBfc1NJFQsnaw78j3xpi0yAruAwgQFbGx8vsMTafeVRsHhv7mrqQpQICIa2P1640xtSRJVgwuOTLEWU1LgAARx8bOqL31SMAkH2ztG97luqK2AAEiVxs7rM6Y7Yv7Fqx52+ybtK3MChAgslnYodsN/bi474kVNoicAAJEHQqJbVnGbN/aP/JxuzJngACRze0O3Z4k77e7JmIBBIg6FJI2y8ourJOk55VWd2dsgABRN0JkatPS6UubPScqBBAg6j6IiGhoS//Iy/kn1oUBAkTdB1Fikvc29w9/17jyUgABoi6DyNBEbzLrmcYXsKUBAkTdBVFizMbN/SMb6qsWAQgQdRFExlyYO2v6gvrnicQAAkTdA1FC9OnmgaNfZisWBQgQdQlExoxt7R95TgUgQNQdEPWYZCD7jLX4EahuHz6o39kgGTJfbRkY+UQNIByJOh0g+nXLwNHnVQEKAdG8GQtp4OHX6ek5L9Dc3kfpgZ6ZokmuG112j96W/pG2+tx67rDXJ6/QxRtn6cSlYTp2/gDVro1zJYrVG0pnmxnz1QHyBVGPmUavPvYRLXvkDUpMUswUh724QHDrHUZoWTKVTtHIxH46dGY7TaY3y0g57WuS5E0vAGlDlMHz7lM76Mk5S50WXqaICwS3vsxs9X1PXTpKu0+uVofIULLeG0CaEL32+Bp6cd5bEt5bNbhAcOutAzgWHKnto4OntzlWFy0ze7wCpAFRds3z4aI9qqetRnu5QHDri0aZ3y87ne0cW6V6TWSMOeYdIGmIsuuel+a/I+W7VYcLBLfeOgCjYOjc3lvXQ2p/xvwVBCBJiFYv+oHmPbhQzaO8MBcIbr3kQmpXx2nH2EpJyZyW+ScYQFIQfbH4sPitejvHuUBw6yXTzm7xNx1fLil5j1b2cdegAElAxH0OY3OTq6ddLz2vTY+7PThAZSHiBmgziKunXS89r02Puz0KgMpAxA3QZhBXT7teel6bHnd7NAAVhYgboM0grp52vfS8Nj3u9qgAKgIRN0CbQdJ6+X7S+tJ6Nn/y26MDiAuRtIHSegCIi6RQvevniaQDl9YDQEJAFJFxgUg6cGk9AFQkecF9bBBJBy6tB4AEYSgq1Q4i6cCl9QBQ0dSF92sFkXTg0noASBiEMnLNIJIOXFoPAJVJXGHfPES2wKVH4L4c5dZrzyutH+VzINsiGyECQO3dygNs85a7vZIANT5sBEAAiAv9nfrsSDTYN+z1p6q4pyRufWEzWuyII5DF0TRNs3814g0iLhDcegAk7YCDnk+IuEBw6x2WyyrBEcjRLl8QcYHg1jsu17kMADlbReQDIi4Q3HrGcp1KAZCTTXeLbO/OmHLWcttdoHaA1gGVCyp7G9/OF58QASBlQkPJ+4IIAIVK2ENfHxABIA9BhmzR6sLadm1iA8N1TbY+rjpF55Hq32rOjrwGyi+2GUQ2Y4sGlu9t6wOAXB0IXJeHyBYsAHILrCuOQHUrGiECQG6A2Kq6CqDMjDpEAMiGhtv2rgOoDtG60WVtX8DiFAaA2jpgu8UHQADI6kCZb3tYxW8X2E6VrjpFgZbq39W38ZqvPWzBagfoCqBWXVdeA+XNtJ3O2pkPgLTQrJhuUYgAUMWC1hy3CEQASDORCmrbPpTG/YAYt95mGVdP+xoM10BNEmsHUdkAbUcsAGRzoCLbXd/i24DgAmezh6uHI5DNUcXtLm/xAZBiAJ0gbXuLD4A6IWXlNbR7iw+AlM3vFPlWb/EBUKck7GEdGUT5t/gAyIPxndSiyMPGxvVzgbN5J61n65ffjudAXMeIqAxE0oFL63HtAEBcx27XF4VIOnBpPa4dAIjrWEN9EYikA5fW49oBgLiO5eq5EEkHLq3HtQMAcR1rUs+BSDpwaT2uHQCI61iLeleIpAOX1uPaAYC4jrWpd4FIOnBpPa4dAIjrmKXe9u5MuB0BIGlHI9DjfAO27LgAqKyDke7v+g3YsuMDoLIORrx/s3dn0uMCIGlHI9ML+dse1yev0Kbjy1UdwUW0qr3/i4f6bY/a1XHaMbZSdYUASNXeu+J1iGynHMlxhs7tpUNntktK3qcFgFTtvVfc5297TKVTtHNsFdWujauuEACp2nu/uO17Z1LjHKnto4Ont0nJtdQBQOoW+4fo1KWjtPvkappMb6qvDgCpW9y8gcaRKDttjUzsv3Xd4wOebGUAKBBAWVsJiLJb9Ys3ztKJS8N07PwB9WuevF0AKCBA+Vv8wKMUag+ACtkmu5PLW3zZjnJqAEjOy1JKVYUIAJWKXXbnKkIEgGQZKK1WNYgAUOnI5QWqBBEAks9fRLEqEAEgkbh1RKoAEQDSyV5MNXaIAJBY1HpCMUMEgPRyF1WOFSIAJBqzrliMEAEg3czF1WODCACJR6wvGBNEAEg/b5UOsUAEgFTi9SMaA0QAyE/Wal1CQwSA1KL1JxwSIgDkL2fVTqEgAkCqsfoVDwERAPKbsXo33xABIPVI/TfwCREA8p+vl46+IAJAXuIM08QHRAAoTLbeumpDBIC8RRmukSZEAChcrl47a0EEgLzGGLaZBkQAKGym3rtLQwSAvEcYvqEkRAAofJ5BJpCCCAAFiS+OphIQAaA4sgw2RVmIAFCw6OJpXAYiABRPjkEnKQoRAAoaW1zNi0AEgOLKMPg0XIgAUPDI4huAAxEAii+/KCZyhQgARRFXnEO4QASA4swumqlsEAGgaKKKd5B2EAGgeHOLarJWEAGgqGKKe5hmEAGguDOLbro8RAAouojiH6gRIgAUf15RTliHCABFGU81hsog+g91FMPahGnaAwAAAABJRU5ErkJggg==);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.login-right-qrcode:hover {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.login-form-bottom-button {
|
||||
color: #999ba1;
|
||||
}
|
||||
|
||||
.login-form-bottom-button:hover {
|
||||
color: rgba(15, 15, 16, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
17
src/views/Register/RegisterPage.vue
Normal file
@@ -0,0 +1,17 @@
|
||||
<script lang="ts">
|
||||
import {defineComponent} from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: "RegisterPage"
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style src="./index.scss" scoped>
|
||||
|
||||
</style>
|
0
src/views/Register/index.scss
Normal file
36
src/views/TestI18n.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<div>
|
||||
<AButton @click="handleClick"> {{ t('login.test') }}</AButton>
|
||||
<AButton @click="changeLang('zh')"> 切换中文</AButton>
|
||||
<AButton @click="changeLang('en')"> 切换英文</AButton>
|
||||
|
||||
<ADatePicker/>
|
||||
<ATimePicker/>
|
||||
{{ data }}
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {useRequest} from "alova/client";
|
||||
import {getUserInfo} from "@/api/user";
|
||||
import {useI18n} from "vue-i18n";
|
||||
import useStore from "@/store";
|
||||
|
||||
const {t, locale} = useI18n();
|
||||
const {data, send} = useRequest(getUserInfo, {
|
||||
immediate: false
|
||||
});
|
||||
const handleClick = () => {
|
||||
send();
|
||||
};
|
||||
|
||||
|
||||
const lang = useStore().lang;
|
||||
|
||||
async function changeLang(language: any) {
|
||||
lang.setLang(language);
|
||||
locale.value = language;
|
||||
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
</style>
|
@@ -17,12 +17,14 @@
|
||||
</AButtonGroup>
|
||||
<div class="test">test</div>
|
||||
</AConfigProvider>
|
||||
<DynamicTitle/>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
|
||||
import variables from "@/assets/styles/colors.module.scss";
|
||||
import useStore from "@/store/index.ts";
|
||||
import DynamicTitle from "@/components/DynamicTitle/DynamicTitle.vue";
|
||||
|
||||
|
||||
const app = useStore().theme;
|
||||
|
3
src/vite-env.d.ts
vendored
@@ -13,7 +13,7 @@ interface ImportMeta {
|
||||
}
|
||||
|
||||
declare module '*.vue' {
|
||||
import type { DefineComponent } from 'vue';
|
||||
import type {DefineComponent} from 'vue';
|
||||
const component: DefineComponent<object, object, any>;
|
||||
export default component;
|
||||
}
|
||||
@@ -22,6 +22,7 @@ declare module '*.svg' {
|
||||
const content: any;
|
||||
export default content;
|
||||
}
|
||||
|
||||
declare module '*.svg'
|
||||
declare module '*.png'
|
||||
declare module '*.jpg'
|
||||
|