提交样式未完成版本

This commit is contained in:
limengnan 2025-11-26 16:43:42 +08:00
parent 96ba7c098a
commit fe79fe828a
33 changed files with 4752 additions and 3153 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1881 -82 )">
<path d="M 15.9203959888077 14.5936879851829 L 15.9203959888077 9.2868945127217 C 15.9221961012911 9.26482295156643 15.9221961012911 9.24264146272398 15.9203959888077 9.22056990156871 C 15.9220017133507 9.19738041784726 15.9220017133507 9.17410764417035 15.9203959888077 9.15091816044888 L 14.0364720927064 0.995026809521264 C 13.8850151331878 0.4084253440992 13.3554163441829 -0.00105990688953739 12.7495786070392 0 L 3.17081738213301 0 C 2.55696540559302 5.80938669827447E-05 2.02331072533525 0.421222612478488 1.88059678203786 1.01825442140363 L 0.0165889307122598 9.13765634456156 C 0.0149832061692905 9.16084582828303 0.0149832061692905 9.18411860195991 0.0165889307122598 9.20730808568138 C 0.00842320058131918 9.23321838391806 0.00286597143963263 9.25987953700835 0 9.2868945127217 L 0 14.5936724379193 C 0 15.3264166600063 0.593981351320735 15.9203980098591 1.32669448069123 15.9203980098591 C 1.32669448069123 15.9203980098591 1.32669448105548 15.9203980098591 1.32669448105548 16 L 14.593685960853 16 C 14.5936911432079 15.9203980099199 14.5936963258525 15.9203980099502 14.5937015082077 15.9203980099502 C 15.3264146375782 15.9203980099502 15.9203959888987 15.3264166600974 15.9203959888987 14.5937035325377 Z M 1.49584869436012 8.62355505542087 L 3.17081738213301 1.32669653817167 L 12.746267039875 1.32669653817167 L 14.4245317475484 8.62355505542087 L 11.6086117071895 8.62355505542087 C 11.2422630001633 8.623563650138 10.9452808429667 8.92054580660088 10.9452722482495 9.2868945127217 L 10.9452722482495 10.9452742815956 L 4.97512374092253 10.9452742815956 L 4.97512374092253 9.2868945127217 C 4.97511514596226 8.92053973513232 4.67812351331463 8.62355506390642 4.31176873471895 8.62355505542087 L 1.49584869436012 8.62355505542087 Z M 3.9800990052488 7.29684501519738 C 3.61374422058179 7.2968450152982 3.31675257845859 6.99986034155748 3.31674398349787 6.63350555789654 C 3.31674398349787 6.26714469656511 3.61373814301214 5.9701505377848 3.9800990052488 5.9701505377848 L 11.9402969994705 5.9701505377848 C 12.3053994333072 5.97191897464336 12.6004389839914 6.2683910607167 12.6004389839914 6.6334977764911 C 12.6004389839914 6.99860449226549 12.3053994333072 7.29507657833882 11.9402969994705 7.29684501519738 L 3.9800990052488 7.29684501519738 Z M 4.97512374092253 4.31177078445816 C 4.60876895625574 4.31177077597241 4.31177732109313 4.01478609527105 4.31176873471895 3.64843131161005 C 4.31176874330549 3.2820704624218 4.60876289082921 2.9850763156321 4.97512374092253 2.98507630704557 L 10.9452722482495 2.98507630704557 C 11.3103746820859 2.98684474390417 11.6054142327703 3.28331682997749 11.6054142327703 3.64842354575187 C 11.6054142327703 4.01353026152624 11.3103746820859 4.31000234759958 10.9452722482495 4.31177078445816 L 4.97512374092253 4.31177078445816 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1881 82 )" />
</g>
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1015 -82 )">
<path d="M 1023 82 C 1027.48 82 1031 85.52 1031 90 C 1031 94.48 1027.48 98 1023 98 C 1018.52 98 1015 94.48 1015 90 C 1015 85.52 1018.52 82 1023 82 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" fill-opacity="0" />
<path d="M 1023 82.5 C 1027.2 82.5 1030.5 85.8 1030.5 90 C 1030.5 94.2 1027.2 97.5 1023 97.5 C 1018.8 97.5 1015.5 94.2 1015.5 90 C 1015.5 85.8 1018.8 82.5 1023 82.5 Z " stroke-width="1" stroke="#ff3300" fill="none" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="14px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -8 -9 )">
<path d="M 18 3.09091796875001 C 18 2.63636718750001 17.7545390624998 2.22726562499999 17.3863476562499 2.00000000000001 C 17.0181738281251 1.772734375 16.5681738281251 1.8181640625 16.240904296875 2.13636718750003 L 13.5 4.40908203124998 L 13.5 2.59091796875002 C 13.5 1.18181640624999 12.4772695312499 0 11.168173828125 0 L 2.33182617187504 0 C 1.02273046875007 0.0454492187499937 0 1.18183593750001 0 2.63636718750001 L 0 11.40908203125 C 0 12.81818359375 1.02273046875007 14 2.33182617187504 14 L 11.168173828125 14 C 12.436365234375 14 13.5 12.8636328125 13.5 11.40908203125 L 13.5 9.59091796875002 L 16.240904296875 11.90908203125 C 16.4454609375 12.09091796875 16.6499999999999 12.1363671875 16.8954609375 12.1363671875 C 17.059095703125 12.1363671875 17.2227304687501 12.09091796875 17.386365234375 12 C 17.7545390624998 11.772734375 18 11.3636328125 18 10.90908203125 L 18 3.09091796875001 Z M 12.1909218750002 2.63636718750001 L 12.1909218750002 11.3636328125 C 12.1909218750002 12 11.7409218749999 12.5 11.1681914062501 12.5 L 2.33184374999996 12.5 C 1.75911328124994 12.5 1.30911328125012 12 1.30911328125012 11.3636328125 L 1.30911328125012 2.63636718750001 C 1.30911328125012 2.00000000000001 1.75911328124994 1.49999999999999 2.33184374999996 1.49999999999999 L 11.1681914062501 1.49999999999999 C 11.7409218749999 1.49999999999999 12.1909218750002 2.00000000000001 12.1909218750002 2.63636718750001 Z M 16.6909218750002 10.45455078125 L 13.5 7.77271484374999 L 13.5 6.27271484375001 L 16.7318261718749 3.59091796874999 C 16.690904296875 3.54544921874999 16.690904296875 10.45455078125 16.690904296875 10.45455078125 Z M 4.5 9.33333333333333 L 4.5 4.66666666666667 L 9 4.66666666666667 L 9 9.33333333333333 L 4.5 9.33333333333333 Z " fill-rule="nonzero" fill="#ff3300" stroke="none" transform="matrix(1 0 0 1 8 9 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="14px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -929 -83 )">
<path d="M 15.93125 4.01406249999999 C 15.93125 2.91763139204546 15.0426846590909 2.02904829545454 13.9463423295455 2.02904829545454 L 12.1645063920455 2.02904829545454 C 11.6868607954545 2.02904829545454 11.2775213068181 1.689453125 11.1890802556818 1.21962002840909 L 11.0076349431819 0.245703124999999 C 10.9859019886363 0.127894176136365 10.8836115056819 0.0441406249999972 10.7642045454545 0.0441406249999972 L 5.22031249999998 0.0441406249999972 C 5.1008877840909 0.0441406249999972 4.99850852272732 0.129385653409088 4.9767933238636 0.245703124999999 L 4.79385653409088 1.21803977272727 C 4.70539772727273 1.68796164772727 4.29607599431813 2.0275390625 3.81841264204547 2.0275390625 L 2.0365767045455 2.0275390625 C 0.940234375000045 2.02904829545454 0.0516690340908781 2.91763139204546 0.0516690340908781 4.01406249999999 L 0.0516690340908781 11.9538174715909 C 0.0516690340908781 13.0502485795455 0.94025213068187 13.9388316761364 2.0365767045455 14 L 13.9463423295455 14 C 15.0426846590909 13.9388316761364 15.93125 13.0502485795455 15.93125 11.9538174715909 L 15.93125 4.01406249999999 Z M 2.53284801136363 4.51024502840909 C 2.25836292613633 4.51024502840909 2.0365767045455 4.28854758522728 2.0365767045455 4.01406249999999 C 2.0365767045455 3.87761008522727 2.09245383522727 3.75349786931818 2.18242187500005 3.66354758522728 C 2.27230113636358 3.57357954545454 2.3964133522727 3.5177734375 2.53284801136363 3.5177734375 L 3.52530184659088 3.5177734375 C 3.79978693181818 3.5177734375 4.02157315340912 3.73955965909091 4.02157315340912 4.01404474431818 C 4.02157315340912 4.1504971590909 3.96576704545453 4.27450284090909 3.87579900568187 4.36447088068182 C 3.78584872159092 4.45443892045455 3.6617365056818 4.51022727272728 3.52528409090905 4.51022727272728 L 2.53284801136363 4.51022727272728 Z M 12.2094815340909 8.23203125000001 C 12.2094815340909 10.5612571022727 10.3207208806818 12.4500887784091 7.9915127840909 12.4500887784091 C 5.66226917613642 12.4500887784091 3.77345525568182 10.5612571022727 3.77345525568182 8.23203125000001 C 3.77345525568182 5.90280539772728 5.66228693181813 4.01406249999999 7.9915127840909 4.01406249999999 C 10.3207386363637 4.01406249999999 12.2094815340909 5.90280539772728 12.2094815340909 8.23203125000001 Z M 10.2726207386364 5.95090553977273 C 10.88203125 6.56036931818183 11.2170099431818 7.36988636363637 11.2170099431818 8.23203125000001 C 11.2170099431818 9.09426491477274 10.88203125 9.90379971590909 10.2726207386364 10.5131747159091 C 9.6631569602273 11.12265625 8.85363991477277 11.4576349431818 7.99149502840908 11.4576349431818 C 7.12926136363637 11.4576349431818 6.31972656250002 11.12265625 5.71035156250002 10.5131747159091 C 5.10087002840908 9.90379971590909 4.76589133522725 9.09426491477274 4.76589133522725 8.23203125000001 C 4.76589133522725 7.36990411931819 5.10087002840908 6.56036931818183 5.71035156250002 5.95090553977273 C 6.31974431818185 5.3414950284091 7.12926136363637 5.00651633522727 7.99149502840908 5.00651633522727 C 8.85363991477277 5.00651633522727 9.6631569602273 5.3414950284091 10.2726207386364 5.95090553977273 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 929 83 )" />
</g>
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="14px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -373 -138 )">
<path d="M 8.07210783203124 6.46195381835938 L 10.2949266738281 4.23849897460937 C 9.45069847884821 3.20458041024776 8.29262410526201 2.47383480857755 6.99599638281251 2.15687204687501 C 4.48952168164061 1.65570431250001 3.16091835937499 2.15687204687501 0 4.30909493164063 C 1.28411899004271 1.62462621176789 4.02088248674812 -0.0594785244032039 6.99599638281251 0.00401316015626207 C 9.01198728514521 -0.0631719713191501 10.9636875416396 0.718523317659617 12.3759175996094 2.15878003906249 L 13.991992765625 0.542704873046887 L 13.991992765625 6.46195381835938 L 8.07210783203124 6.46195381835938 Z M 5.91988493359372 7.53806526757813 L 3.6970660917969 9.76088410937501 C 4.5414496054143 10.7946271618647 5.69946022307948 11.5253325335117 6.99599638281251 11.8425110371094 C 9.50247108398435 12.3443147734375 10.83107440625 11.8425110371094 13.991992765625 9.69092415429688 C 12.7078737755823 12.3753928741696 9.97111027887684 14.0594976103407 6.99599638281251 13.9960059257812 C 4.9802932407564 14.0629719430221 3.02883496413972 13.28183496075 1.61607516601561 11.8425110371094 L 0 13.4573141992188 L 0 7.53806526757813 L 5.91988493359372 7.53806526757813 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 373 138 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1839 -82 )">
<path d="M 15.3518281249999 10.057 L 13.6746718750001 8.74328125 C 13.7077187499999 8.4886875 13.7290937499999 8.234109375 13.7290937499999 7.96203125 C 13.7290937499999 7.69190624999999 13.703828125 7.43731249999999 13.6746718750001 7.180796875 L 15.35375 5.86707812500001 C 15.505328125 5.74851562500001 15.5461406249999 5.532796875 15.4489687499999 5.35789062500001 L 13.857359375 2.604125 C 13.762125 2.42923437499999 13.5464218750001 2.36509375 13.371515625 2.42923437499999 L 11.3892499999999 3.226015625 C 10.9753125 2.9073125 10.52834375 2.644953125 10.0444375 2.444765625 L 9.74128124999993 0.334281250000004 C 9.71603125000001 0.141874999999999 9.55081249999989 0 9.35065624999993 0 L 6.16546874999995 0 C 5.96723437500009 0 5.80009375000009 0.143812499999996 5.77484374999995 0.334265625 L 5.47167187500008 2.44478125000001 C 4.9858281249999 2.643 4.54079687500007 2.91509375 4.12685937500009 3.226015625 L 2.14457812499995 2.42921875 C 1.95996874999992 2.35731250000001 1.75396875000001 2.42921875 1.65873437499999 2.604140625 L 0.0671250000000327 5.35789062500001 C -0.0378124999999727 5.532796875 0.0127187499999764 5.74851562500001 0.162359375000051 5.86707812500001 L 1.84143749999998 7.180796875 C 1.80840624999996 7.43537499999999 1.78703124999993 7.69773437500001 1.78703124999993 7.962046875 C 1.78703124999993 8.22632812500001 1.81228125000007 8.48675 1.84143749999998 8.74328125 L 0.160421875000111 10.057 C 0.00881249999997635 10.175546875 -0.0319843750000928 10.391265625 0.0651875000000928 10.56615625 L 1.65681249999989 13.3199375 C 1.75203125000007 13.49484375 1.96775000000002 13.55896875 2.14265625000007 13.49484375 L 4.12492187499993 12.69803125 C 4.5388593749999 13.016765625 4.9858281249999 13.279125 5.46973437499992 13.47928125 L 5.77289062499995 15.5898125 C 5.79815624999992 15.78025 5.96335937499998 15.9240625 6.16351562499995 15.9240625 L 9.34870312499993 15.9240625 C 9.54693750000001 15.9240625 9.71407812500001 15.78025 9.73932812499993 15.5898125 L 10.0425 13.479296875 C 10.52834375 13.2810625 10.973375 13.008984375 11.3873281250001 12.698046875 L 13.3695781250001 13.49484375 C 13.5541874999999 13.56675 13.7602031250001 13.49484375 13.85540625 13.3199375 L 15.44703125 10.56615625 C 15.542265625 10.391265625 15.5014531249999 10.175546875 15.3518281249999 10.057 Z M 10.5458437499999 7.963984375 C 10.5458437499999 9.50120312499999 9.2962500000001 10.75078125 7.75903124999991 10.75078125 C 6.22181249999994 10.75078125 4.97221874999991 9.50118749999999 4.97221874999991 7.963984375 C 4.97221874999991 6.42678125 6.22181249999994 5.177171875 7.75903124999991 5.177171875 C 9.2962500000001 5.177171875 10.5458437499999 6.426765625 10.5458437499999 7.963984375 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1839 82 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -10 -7 )">
<path d="M 6.85372340217753 8.92622950819672 C 6.93351063622007 9.0218579213627 7.06648935754654 9.0218579213627 7.14627659782247 8.92622950819672 L 9.95212765957447 5.31967213114754 C 10.0452127638797 5.19672131147541 9.9654255298371 5.00546447873976 9.80585106175199 5.00546447873976 L 4.19414893824801 5.00546447873976 C 4.0345744701629 5.00546447873976 3.95478723612035 5.19672131147541 4.04787234042553 5.31967213114754 L 6.85372340217753 8.92622950819672 Z M 10.90908203125 18 C 11.3636328125 18 11.772734375 17.7545390624998 12 17.3863476562499 C 12.227265625 17.0181738281251 12.1818359375 16.5681738281251 11.8636328125 16.240904296875 L 9.59091796875002 13.5 L 11.40908203125 13.5 C 12.81818359375 13.5 14 12.4772695312499 14 11.168173828125 L 14 2.33182617187504 C 13.95455078125 1.02273046875007 12.8181640625 0 11.3636328125 0 L 2.59091796875002 0 C 1.18181640624999 0 0 1.02273046875007 0 2.33182617187504 L 0 11.168173828125 C 0 12.436365234375 1.13636718749999 13.5 2.59091796875002 13.5 L 4.40908203124998 13.5 L 2.09091796874999 16.240904296875 C 1.90908203124999 16.4454609375 1.86363281250003 16.6499999999999 1.86363281250003 16.8954609375 C 1.86363281250003 17.059095703125 1.90908203124999 17.2227304687501 2.00000000000001 17.386365234375 C 2.22726562499999 17.7545390624998 2.63636718750001 18 3.09091796875001 18 L 10.90908203125 18 Z M 11.3636328125 12.1909218750002 L 2.63636718750001 12.1909218750002 C 2.00000000000001 12.1909218750002 1.49999999999999 11.7409218749999 1.49999999999999 11.1681914062501 L 1.49999999999999 2.33184374999996 C 1.49999999999999 1.75911328124994 2.00000000000001 1.30911328125012 2.63636718750001 1.30911328125012 L 11.3636328125 1.30911328125012 C 12 1.30911328125012 12.5 1.75911328124994 12.5 2.33184374999996 L 12.5 11.1681914062501 C 12.5 11.7409218749999 12 12.1909218750002 11.3636328125 12.1909218750002 Z M 3.54544921874999 16.6909218750002 L 6.22728515625001 13.5 L 7.72728515624999 13.5 L 10.40908203125 16.7318261718749 C 10.45455078125 16.690904296875 3.54544921874999 16.690904296875 3.54544921874999 16.690904296875 Z " fill-rule="nonzero" fill="#00cc00" stroke="none" transform="matrix(1 0 0 1 10 7 )" />
</g>
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -36 -136 )">
<path d="M 7.76028865245167 0.0137816773135455 C 6.70033338656769 0.0137816773135455 5.84026964347377 0.873868281681638 5.8402696240504 1.93380070571477 C 5.8402696240504 2.99387023912293 6.70024196089435 3.85381971469268 7.76028865245167 3.85381971469268 C 8.82035818585982 3.85381971469268 9.68030766142956 2.99387023912293 9.68030766142956 1.93380070571477 C 9.68030766142956 0.873754014157456 8.82026676018646 0.0137816967368849 7.76028865245167 0.0137816773135455 Z M 15.4402047177141 5.45976267265193 C 15.4402275789882 4.92979646063536 15.0101614058184 4.50178727771063 14.4802866388985 4.50178727771063 L 1.04026780473065 4.50178727771063 C 0.510301592714082 4.50178727771063 0.0803268646408704 4.93185343145717 0.0803268646408704 5.46172821780041 C 0.0803268646408704 5.99183155861535 0.510301592714082 6.42180628668854 1.04026780473065 6.42180628668854 L 4.97826319708217 6.42180628668854 C 5.20228979627072 6.46182573377071 5.50628670580112 6.5758045688018 5.66634161343232 6.99183764891229 C 5.85229146883633 7.47385366885359 5.76029931370858 8.33586009582181 5.64428634970649 9.06183244345648 L 5.49428772228937 9.91787367058012 C 5.49428772228937 9.92180476087708 5.49223075146754 9.92580441557321 5.49223075146754 9.92980408969268 L 4.27825434219612 16.8197304320615 C 4.18626218706837 17.34181160221 4.53430105965126 17.8397348152624 5.05638222979971 17.9318183960635 C 5.57825768732734 18.023719125518 6.07035284875692 17.6757716786084 6.1622307363605 17.1538047759841 L 7.00227332527626 12.3558599274862 L 7.00227332527626 12.3618022660566 C 7.00227332527626 12.3618022660566 7.25226341721341 11.0617989209254 7.74024463699929 11.0617989209254 L 7.78428660005178 11.0617989209254 C 8.28223267437845 11.0617989209254 8.52228077304904 12.3618022660566 8.52228077304904 12.3618022660566 L 8.52228077304904 12.3578026113605 L 9.36220909444062 17.1537819341333 C 9.45431551709255 17.6757488173342 9.94826193672307 18.0236962642438 10.470228819924 17.9317955347894 C 10.992195703125 17.8396891121374 11.3402345757079 17.3417658796616 11.2462997367058 16.8197075707873 L 10.0302663760359 9.92781568327003 L 10.0302663760359 9.9257587124482 C 10.0302663760359 9.92175905775207 10.0282094052141 9.91775940305594 10.0282094052141 9.91373688708563 L 9.87626807449932 9.05769564053867 C 9.76023226864642 8.33378026372583 9.66826297479282 7.47177383675759 9.85430423644682 6.98973497496546 C 10.0142448765539 6.57383904307666 10.3202301925069 6.45986018862223 10.5422683852728 6.41984074154006 L 14.4802637776243 6.41984074154006 C 15.0102299896409 6.41984074154006 15.4402047177141 5.98975172651934 15.4402047177141 5.45976267265193 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 36 136 )" />
</g>
</svg>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="17px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -500 -616 )">
<path d="M 2.81716015429686 0 C 4.36078439648429 0 5.61137635546879 1.25053867968745 5.61137635546879 2.79327425976567 C 5.61137635546879 4.33683490429689 4.36078611914064 5.58739077539065 2.81716015429686 5.58739077539065 C 1.27435923632811 5.58739077539065 0.0237346347656171 4.33681773046874 0.0237346347656171 2.79327425976567 C 0.0237346347656171 1.25053866210931 1.27435925390625 0 2.81716015429686 0 Z M 7.98573373242186 0 C 8.75754585351558 0 9.3828504375 0.625277074218729 9.3828504375 1.39705825781255 C 9.3828504375 2.16880505859376 8.75754587109373 2.79409932421868 7.98573373242186 2.79409932421868 C 7.21392159375 2.79409932421868 6.58863421874997 2.16882225000006 6.58863421874997 1.39705825781255 C 6.58863421874997 0.625277074218729 7.21392161132815 0 7.98573373242186 0 Z M 12.0362949492187 0.348641050781225 C 12.8081087929688 0.348625582031218 13.4333944628906 0.973919830078103 13.4333944628906 1.74569930859377 C 13.4333944628906 2.51748049218747 12.8081070703125 3.14275756640632 12.0362949492187 3.14275756640632 C 11.264482828125 3.14275756640632 10.6391782441406 2.51748049218747 10.6391782441406 1.74569930859377 C 10.6391782441406 0.973918125000068 11.2644828105468 0.348641050781225 12.0362949492187 0.348641050781225 Z M 15.3191332089845 2.16473306835928 C 16.09092815625 2.16473306835928 16.7162499140625 2.79001186523431 16.7162499140625 3.56179132617183 C 16.7162499140625 4.33357250976565 16.0909453476563 4.95884958398437 15.3191332089845 4.95884958398437 C 14.5473210878906 4.95884958398437 13.9220336953125 4.33357250976565 13.9220336953125 3.56179132617183 C 13.9220336953125 2.79001014257813 14.5473210878906 2.16473306835928 15.3191332089845 2.16473306835928 Z M 7.56585943945311 11.6633984765625 C 6.88489969921869 10.7729433281251 3.48011648437495 10.5110448574219 4.37059395703125 7.15877815429678 C 4.37059395703125 7.15877815429678 5.26107144726564 4.69695111328122 8.66587013085939 4.27791735351559 C 8.66587013085939 4.27791735351559 13.9220336953125 3.91125744140618 14.8272487382812 9.09351147656253 C 15.2692139003906 11.6257295214845 15.0850700507812 17.1108151171875 11.0230336933594 17.9455996054687 C 10.0425116953124 18.1469492929688 7.19918404101566 17.8965070664062 7.56585943945311 15.3299357753906 C 7.69517317968746 14.4222851074219 8.54638143750003 12.9450279902344 7.56585943945311 11.6633984765625 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 500 616 )" />
</g>
</svg>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="18px" height="12px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1475 -512 )">
<path d="M 12.717571297148 2.13837329676619 L 12.717571297148 3.61361156723547 C 12.717571297148 3.67013410633388 12.6582226310948 3.76904854975606 12.5395252989881 3.9103548975022 C 12.4208279668812 4.05166124524828 12.2936522539098 4.21840273558871 12.1579981600737 4.41057936852343 C 12.0223440662373 4.60275600145809 11.8951683532659 4.8118893961223 11.7764710211591 5.03797955251605 C 11.6577736890526 5.2640697089098 11.598425022999 5.49581211921327 11.598425022999 5.73320678342674 C 11.598425022999 5.97060144764021 11.6577736890526 6.19951773098893 11.7764710211591 6.4199556334728 C 11.8951683532659 6.64039353595672 12.0223440662373 6.84104854975612 12.1579981600737 7.02192067487113 C 12.2936522539098 7.20279279998613 12.4208279668812 7.35257752859707 12.5395252989881 7.47127486070366 C 12.6582226310948 7.58997219281036 12.717571297148 7.66627762059329 12.717571297148 7.70019114405238 L 12.717571297148 9.48065112565303 C 12.717571297148 9.67282775858774 12.6469181232751 9.89043953411681 12.5056117755291 10.13348645224 C 12.3643054277829 10.3765333703633 12.1890855565778 10.605449653712 11.9799521619134 10.8202353022861 C 11.7708187672495 11.0350209508601 11.5390763569458 11.2130669490202 11.2847249310028 11.3543732967662 C 11.0303735050597 11.4956796445123 10.7901527138915 11.5663328183854 10.5640625574977 11.5663328183854 L 2.13655197792104 11.5663328183854 C 1.83133026678934 11.5663328183854 1.55154369825209 11.5126364062418 1.2971922723093 11.4052435819548 C 1.04284084636606 11.2978507576679 0.81957681692711 11.148066029057 0.627400183992449 10.9558893961223 C 0.435223551057788 10.7637127631876 0.285438822447077 10.5376226067938 0.178045998160087 10.277618926941 C 0.07065317387287 10.0176152470882 0.0169567617294888 9.73500255159604 0.0169567617294888 9.42978084046445 L 0.0169567617294888 2.1214165350367 C 0.0169567617294888 1.89532637864295 0.0678270469181825 1.66075784138445 0.169567617295343 1.41771092326121 C 0.271308187672503 1.17466400513791 0.415440662373612 0.951399975699132 0.601965041398216 0.747918834944755 C 0.788489420423275 0.544437694190378 1.00892732290708 0.374870076895036 1.2632787488501 0.239215983058784 C 1.51763017479288 0.103561889222533 1.79741674333036 0.0357348423044641 2.10263845446184 0.0357348423044641 L 10.5301490340387 0.0357348423044641 C 10.8353707451702 0.0357348423044641 11.1208095676172 0.0894312544479021 11.3864655013799 0.196824078734949 C 11.6521214351426 0.304216903021938 11.8838638454463 0.451175504677906 12.0816927322908 0.637699883702737 C 12.2795216191353 0.824224262727569 12.4349586016558 1.04748829216646 12.5480036798526 1.30749197201931 C 12.6610487580497 1.56749565187198 12.717571297148 1.84445609345431 12.717571297148 2.13837329676619 Z M 17.9911241950322 1.98576244120045 L 17.9911241950322 2.01967596465948 L 17.9911241950322 9.76891607505507 C 17.9911241950322 10.0176152470882 17.9261232750689 10.2380531495721 17.7961214351426 10.4302297825068 C 17.6661195952161 10.6224064154415 17.4711168353265 10.7184947319088 17.2111131554739 10.7184947319088 C 17.1206770929161 10.7184947319088 17.0048058877646 10.6845812084498 16.8634995400182 10.6167541615317 C 16.7221931922722 10.5489271146135 16.580886844526 10.4697955598757 16.4395804967801 10.3793594973182 C 16.2982741490339 10.2889234347607 16.1654461821527 10.1984873722032 16.0410965961362 10.1080513096457 C 15.9167470101197 10.0176152470882 15.8263109475622 9.94413594626025 15.7697884084637 9.88761340716178 C 15.6228298068077 9.76326382114524 15.3995657773689 9.54847817257121 15.0999963201473 9.24325646143973 C 14.8004268629254 8.93803475030819 14.4980312787488 8.59324726180773 14.1928095676174 8.2088939959383 C 13.8875878564859 7.82454073006897 13.6191057957683 7.42888295637988 13.3873633854646 7.02192067487113 C 13.1556209751611 6.61495839336237 13.0397497700092 6.24190963531271 13.0397497700092 5.90277440072202 C 13.0397497700092 5.56363916613145 13.1640993560259 5.17645977330722 13.4127985280591 4.7412362222492 C 13.661497700092 4.30601267119124 13.9610671573137 3.87926750099808 14.311506899724 3.46100071166967 C 14.6619466421344 3.0427339223412 15.029343146274 2.65555452951696 15.4136964121435 2.29946253319679 C 15.7980496780128 1.94337053687667 16.120228150874 1.67488847615903 16.3802318307269 1.49401635104414 C 16.481972401104 1.42618930412601 16.6204526218951 1.3442316224332 16.7956724931003 1.24814330596587 C 16.9708923643054 1.15205498949854 17.1263293468262 1.10401083126493 17.2619834406626 1.10401083126493 C 17.567205151794 1.10401083126493 17.7650340386385 1.18879463991254 17.855470101196 1.35836225720789 C 17.9459061637535 1.52792987450306 17.9911241950322 1.73706326916727 17.9911241950322 1.98576244120045 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1475 512 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1255 -468 )">
<path d="M 15 14.9 C 15 15.7 14.8 16.5 14.3 17.1 C 13.9 17.7 13.2 18 12.5 18 L 2.5 18 C 1.8 18 1.1 17.7 0.7 17.1 C 0.2 16.5 0 15.7 0 14.9 C 0 14.3 0 13.6 0.1 13 C 0.2 12.4 0.3 11.8 0.5 11.2 C 0.7 10.7 0.9 10.2 1.2 9.7 C 1.5 9.3 1.9 8.9 2.3 8.7 C 2.8 8.4 3.3 8.3 3.9 8.3 C 4.9 9.3 6.2 9.8 7.6 9.8 C 9 9.8 10.3 9.3 11.3 8.3 C 11.9 8.3 12.4 8.4 12.9 8.7 C 13.3 9 13.7 9.3 14 9.7 C 14.3 10.2 14.5 10.7 14.7 11.2 C 14.9 11.8 15 12.4 15.1 13 C 15 13.6 15 14.3 15 14.9 Z M 10.7 1.3 C 11.6 2.1 12 3.3 12 4.5 C 12 5.7 11.5 6.8 10.7 7.7 C 9.8 8.5 8.7 9 7.5 9 C 6.3 9 5.2 8.5 4.3 7.7 C 3.5 6.8 3 5.7 3 4.5 C 3 3.3 3.5 2.2 4.3 1.3 C 5.2 0.5 6.3 0 7.5 0 C 8.7 0 9.8 0.5 10.7 1.3 Z " fill-rule="nonzero" fill="#cccccc" stroke="none" transform="matrix(1 0 0 1 1255 468 )" />
</g>
</svg>

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="18px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1256 -538 )">
<path d="M 7.05 1.6 C 8.75 1.6 10.15 3 10.15 4.7 L 11.75 4.7 C 11.65 2.1 9.55 0 7.05 0 C 4.45 0 2.45 2.1 2.45 4.6 L 4.05 4.6 C 3.95 2.9 5.35 1.6 7.05 1.6 Z M 13.95 17 L 13.95 8.3 C 13.85 7.7 13.35 7.2 12.75 7.1 L 1.35 7.1 C 0.65 7.2 0.0499999999999997 7.7 0.0499999999999997 8.4 L 0.0499999999999997 16.8 C 0.15 17.4 0.55 17.8 1.15 18 L 12.95 18 C 13.45 17.9 13.85 17.5 13.95 17 Z " fill-rule="nonzero" fill="#cccccc" stroke="none" transform="matrix(1 0 0 1 1256 538 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="98px" height="103px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1677 -169 )">
<path d="M 0 103 L 98 103 L 98 87.0421585160202 C 97.1281618887015 83.6694772344013 94.9696458684653 79.9595278246206 92.0016863406408 77.8010118043845 C 85.7284991568295 72.6745362563238 66.7740303541314 64.3102866779089 66.7740303541314 64.3102866779089 L 54.4974704890387 86.637436762226 L 52.7436762225971 81.1736930860034 L 55.7116357504215 74.0236087689713 L 48.9662731871838 67.2782462057336 L 42.2209106239461 74.0236087689713 L 45.5935919055648 80.7689713322091 L 43.5025295109613 86.2327150084317 L 31.6306913996627 63.5008431703204 C 31.6306913996627 63.5008431703204 12.7436762225971 71.8650927487353 6.40303541315347 76.9915682967959 C 3.43507588532884 79.4873524451939 1.27655986509285 82.7925801011804 0 87.0421585160202 L 0 103 Z M 76.0151770657671 30.58347386172 C 76.0151770657671 19.5885328836425 76.0151770657671 0.229342327150079 50.3153456998314 0.229342327150079 C 24.6829679595278 0.229342327150079 24.6829679595278 19.5885328836425 24.6155143338954 30.58347386172 C 24.5480607082632 41.9831365935919 35.1382799325463 62.2192242833052 50.2478920741989 62.2192242833052 C 65.8971332209107 61.8145025295109 76.0151770657671 41.5784148397976 76.0151770657671 30.58347386172 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1677 169 )" />
</g>
</svg>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="12px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1764 -306 )">
<path d="M 2.51332895992346 8.2419489503817 L 9.44528268129761 1.68571087786256 C 9.85230796755718 1.3006023377863 10.4941555343512 1.31625715648852 10.8823950381679 1.72328244274809 C 11.2737655057254 2.13030772900765 11.258110687023 2.77841722328242 10.847954437023 3.16665672709928 L 3.57472566793899 10.0798246660306 L 1.77129055343516 10.3146469465649 L 2.51332895992346 8.2419489503817 Z M 11.8060293416033 4.17482705152673 C 12.7734971374045 3.25432371183206 12.8110687022902 1.72328244274809 11.8874343988548 0.758945610687078 C 10.9700620229009 -0.199129293893179 9.44841364503804 -0.236700858778647 8.48720777671747 0.674409589694619 L 1.43627743320599 7.34336235687027 C 1.35800333969473 7.41850548664121 1.29538406488541 7.51243439885502 1.2578125 7.61575620229013 L 0.0743082061069344 10.9157919847328 C -0.00709685114520653 11.1443523377862 0.0367366412215233 11.3979604007633 0.187022900763395 11.5889491889313 C 0.340440124045927 11.7799379770993 0.578393368320803 11.873866889313 0.819477576335657 11.8425572519084 L 3.97861999045813 11.4292700381679 C 4.12577528625957 11.4104842557252 4.26040672709905 11.3447340171756 4.36685949427465 11.244543177481 L 11.8060293416033 4.17482705152673 Z M 13.2681894083967 10.4555403148855 L 7.69507395038158 10.4555403148855 C 7.30996541030527 10.4555403148855 6.99686903625957 10.7686366889313 6.99686903625957 11.1537452290077 C 6.99686903625957 11.538853769084 7.30996541030527 11.8519501431298 7.69507395038158 11.8519501431298 L 13.2681894083967 11.8519501431298 C 13.6532979484732 11.8519501431298 13.9663943225191 11.538853769084 13.9663943225191 11.1537452290077 C 13.9663943225191 10.7686366889313 13.6532979484732 10.4555403148855 13.2681894083967 10.4555403148855 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1764 306 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="12px" height="12px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1318 -254 )">
<path d="M 1.1717647058822 0.240000000000009 L 6 5.06823529411764 L 10.8282352941178 0.240000000000009 C 10.9517949764427 0.116440317674687 11.119377868552 0.047025210941456 11.2941176470588 0.047025210941456 C 11.6579943989025 0.047025210941456 11.9529747890585 0.342005601097583 11.9529747890585 0.705882352941217 C 11.9529747890585 0.880622131448035 11.8835596823253 1.0482050235571 11.7599999999998 1.17176470588242 L 6.93176470588219 6 L 11.7599999999998 10.8282352941176 C 11.8835596823253 10.9517949764429 11.9529747890585 11.119377868552 11.9529747890585 11.2941176470588 C 11.9529747890585 11.6579943989024 11.6579943989025 11.9529747890585 11.2941176470588 11.9529747890585 C 11.119377868552 11.9529747890585 10.9517949764427 11.8835596823253 10.8282352941178 11.76 L 6 6.93176470588236 L 1.1717647058822 11.76 C 1.04820502355733 11.8835596823253 0.880622131448035 11.9529747890585 0.705882352941217 11.9529747890585 C 0.342005601097526 11.9529747890585 0.047025210941456 11.6579943989024 0.047025210941456 11.2941176470588 C 0.047025210941456 11.119377868552 0.116440317674687 10.9517949764429 0.240000000000236 10.8282352941176 L 5.06823529411781 6 L 0.240000000000236 1.17176470588242 C 0.116440317674687 1.0482050235571 0.047025210941456 0.880622131448035 0.047025210941456 0.705882352941217 C 0.047025210941456 0.342005601097583 0.342005601097526 0.047025210941456 0.705882352941217 0.047025210941456 C 0.880622131448035 0.047025210941456 1.04820502355733 0.116440317674687 1.1717647058822 0.240000000000009 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1318 254 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="30px" height="30px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1519 -247 )">
<path d="M 0 30 L 30 30 L 30 25.3520850046661 C 29.7331107822556 24.3697506507965 29.0723405719793 23.28918286154 28.163781532849 22.6604888750634 C 26.2434181092335 21.1673406571817 20.4410297002444 18.7311514595851 20.4410297002444 18.7311514595851 L 16.6828991292978 25.2342048822017 L 16.1460233334481 23.642823228933 L 17.0545823725779 21.5602743987295 L 14.9896754654644 19.5956056909904 L 12.9247685583507 21.5602743987295 L 13.9572220119076 23.5249431064687 L 13.3171008707022 25.1163247597374 L 9.68286471418241 18.4953912146564 C 9.68286471418241 18.4953912146564 3.90112537426421 20.931580412253 1.96011288157752 22.4247286301347 C 1.05155384244745 23.1516560519982 0.390783632171406 24.1143437187904 0 25.3520850046661 L 0 30 Z M 23.26995216299 8.90780792088933 C 23.26995216299 5.7053979272745 23.26995216299 0.0667987360631344 15.4026568468871 0.0667987360631344 C 7.55601059985543 0.0667987360631344 7.55601059985543 5.7053979272745 7.53536153078426 8.90780792088933 C 7.51471246171332 12.2280980369685 10.7566163058816 18.122104160186 15.3820077778159 18.122104160186 C 20.1725918023196 18.0042240377216 23.26995216299 12.1102179145042 23.26995216299 8.90780792088933 Z " fill-rule="nonzero" fill="#b7bac0" stroke="none" transform="matrix(1 0 0 1 1519 247 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="14px" height="12px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1857 -205 )">
<path d="M 2.51332895992346 8.2419489503817 L 9.44528268129761 1.68571087786256 C 9.85230796755718 1.3006023377863 10.4941555343512 1.31625715648852 10.8823950381679 1.72328244274809 C 11.2737655057254 2.13030772900765 11.258110687023 2.77841722328242 10.847954437023 3.16665672709928 L 3.57472566793899 10.0798246660306 L 1.77129055343516 10.3146469465649 L 2.51332895992346 8.2419489503817 Z M 11.8060293416033 4.17482705152673 C 12.7734971374045 3.25432371183206 12.8110687022902 1.72328244274809 11.8874343988548 0.758945610687078 C 10.9700620229009 -0.199129293893179 9.44841364503804 -0.236700858778647 8.48720777671747 0.674409589694619 L 1.43627743320599 7.34336235687027 C 1.35800333969473 7.41850548664121 1.29538406488541 7.51243439885502 1.2578125 7.61575620229013 L 0.0743082061069344 10.9157919847328 C -0.00709685114520653 11.1443523377862 0.0367366412215233 11.3979604007633 0.187022900763395 11.5889491889313 C 0.340440124045927 11.7799379770993 0.578393368320803 11.873866889313 0.819477576335657 11.8425572519084 L 3.97861999045813 11.4292700381679 C 4.12577528625957 11.4104842557252 4.26040672709905 11.3447340171756 4.36685949427465 11.244543177481 L 11.8060293416033 4.17482705152673 Z M 13.2681894083967 10.4555403148855 L 7.69507395038158 10.4555403148855 C 7.30996541030527 10.4555403148855 6.99686903625957 10.7686366889313 6.99686903625957 11.1537452290077 C 6.99686903625957 11.538853769084 7.30996541030527 11.8519501431298 7.69507395038158 11.8519501431298 L 13.2681894083967 11.8519501431298 C 13.6532979484732 11.8519501431298 13.9663943225191 11.538853769084 13.9663943225191 11.1537452290077 C 13.9663943225191 10.7686366889313 13.6532979484732 10.4555403148855 13.2681894083967 10.4555403148855 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1857 205 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -1860 -349 )">
<path d="M 15.9545454545457 8 C 15.9545454545457 12.393939399858 12.3939393998578 15.9545454545454 8 15.9545454545454 C 3.6060606001422 15.9545454545454 0.0454545454542767 12.393939399858 0.0454545454542767 8 C 0.0454545454542767 3.60606060014203 3.6060606001422 0.045454545454561 8 0.045454545454561 C 12.3939393998578 0.045454545454561 15.9545454545457 3.60606060014203 15.9545454545457 8 Z M 14.4393939453128 8 C 14.4393939453128 4.43939392755681 11.5606060546872 1.56060605468747 8 1.56060605468747 C 4.43939394531276 1.56060605468747 1.56060605468724 4.43939394531253 1.56060605468724 8 C 1.56060605468724 11.5606060546875 4.43939392755669 14.4393939453125 8 14.4393939453125 C 11.5606060724433 14.4393939453125 14.4393939453128 11.5606060724432 14.4393939453128 8 Z M 3.45929338997712 8 C 3.45929338997712 8.63118257123517 3.95446233025609 9.14285714285717 4.56528417338677 9.14285714285717 C 5.17610601651791 9.14285714285717 5.67127495679711 8.63118257123517 5.67127495679711 8 C 5.67127495679711 7.36881742876483 5.17610601651791 6.85714285714283 4.56528417338677 6.85714285714283 C 3.95446233025609 6.85714285714283 3.45929338997712 7.36881742876483 3.45929338997712 8 Z M 6.85714285714289 8.00000001702989 C 6.85714285714289 8.63118257885975 7.36881742876471 9.14285714285717 8 9.14285714285717 C 8.63118257123529 9.14285714285717 9.14285714285711 8.63118257885975 9.14285714285711 8.00000001702989 C 9.14285714285711 7.36881742114025 8.63118257123529 6.85714285714283 8 6.85714285714283 C 7.36881742876471 6.85714285714283 6.85714285714289 7.36881742114025 6.85714285714289 7.99999998297011 Z M 10.3287250432029 8 C 10.3287250432029 8.63118257123517 10.8238939834821 9.14285714285717 11.4347158266132 9.14285714285717 C 12.0455376697439 9.14285714285717 12.5407066100229 8.63118257123517 12.5407066100229 8 C 12.5407066100229 7.36881742876483 12.0455376697439 6.85714285714283 11.4347158266132 6.85714285714283 C 10.8238939834821 6.85714285714283 10.3287250432029 7.36881742876483 10.3287250432029 8 Z " fill-rule="nonzero" fill="#ffffff" stroke="none" transform="matrix(1 0 0 1 1860 349 )" />
</g>
</svg>

View File

@ -13,7 +13,7 @@ api.interceptors.request.use(
if (window.electronAPI) { if (window.electronAPI) {
config.baseURL = window.electronAPI.getBackendUrl() config.baseURL = window.electronAPI.getBackendUrl()
} else { } else {
config.baseURL = 'http://localhost:5000' config.baseURL = 'http://192.168.1.60:5000'
} }
// 为需要发送数据的请求设置Content-Type避免覆盖FormData // 为需要发送数据的请求设置Content-Type避免覆盖FormData
@ -660,7 +660,7 @@ export const getBackendUrl = () => {
if (window.electronAPI) { if (window.electronAPI) {
return window.electronAPI.getBackendUrl() return window.electronAPI.getBackendUrl()
} else { } else {
return 'http://localhost:5000' return 'http://192.168.1.60:5000'
} }
} }

View File

@ -7,7 +7,7 @@
} }
body { body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-family: 'Noto Sans SC', sans-serif;
background-color: #f5f5f5; background-color: #f5f5f5;
color: #333; color: #333;
line-height: 1.6; line-height: 1.6;

View File

@ -1,256 +1,221 @@
<template> <template>
<div class="dashboard-container dashboard-container-home"> <div class="dashboard-container dashboard-container-home">
<!-- 顶部导航栏 --> <!-- 顶部导航栏 -->
<Header /> <Header v-show="isDetection == false"/>
<div class="main-dashboard-top">
<div class="main-dashboard-top-title">
起始页
</div>
<div class="main-dashboard-top-info">
<!-- <div>测试时间2025-08-03 17:13:18<span></span></div>
<div style="margin-left: 15px;">测试医生<span>李医生</span></div> -->
</div>
</div>
<!-- 左侧功能导航 --> <!-- 左侧功能导航 -->
<div class="main-dashboard-content"> <div class="main-dashboard-content" v-show="isDetection == false">
<!-- <aside class="sidebar">
<div class="sidebar-item active">
<el-icon class="sidebar-icon"><UserFilled /></el-icon>
<span class="sidebar-text">检测</span>
</div>
</aside> -->
<!-- 右侧内容区域 --> <!-- 右侧内容区域 -->
<div class="content-area"> <div class="content-area">
<!-- 患者列表区域 --> <!-- 患者列表区域 -->
<div class="patient-section"> <div class="patient-section">
<div class="section-header"> <div class="section-header">
<div class="module-title">
<div class="module-title-text">患者列表</div>
</div>
<div class="search-box"> <div class="search-box">
<el-input v-model="searchKeyword" placeholder="搜索患者姓名" prefix-icon="Search" clearable <el-input v-model="search" placeholder="搜索患者姓名" clearable class="search-input"/>
@input="handleSearch" class="search-input"/> <el-button type="primary" class="primary-view-buttons" @click="handleSearch">
搜索
</el-button>
</div>
<div>
<!-- <div class="action-view-buttons" style="width:338px;" @click="createNewPatient">+新患者建档</div> -->
<el-button type="primary" class="primary-view-buttons" @click="createNewPatient">
<el-icon style="margin-right: 10px;color: #fff;font-size: 17px;"><Plus /></el-icon>
新建患者档案
</el-button>
</div> </div>
</div> </div>
<el-table ref="tableRef" :data="filteredPatients" style="width: 100%" border @cell-click="selectPatient" <el-table ref="tableRef" :data="patients" style="width: 100%;height: calc(100% - 100px);"
@cell-click="selectPatient"
highlight-current-row> highlight-current-row>
<el-table-column prop="name" label="姓名" width="150" align="center" /> <el-table-column type="index" label="序号" width="60" />
<el-table-column prop="id" label="测试者ID" min-width="120" align="center" /> <el-table-column prop="id" label="患者ID" min-width="120" align="center" />
<el-table-column prop="updated_at" label="最后一次检查时间" min-width="100" align="center" /> <el-table-column prop="name" label="患者姓名" width="80" align="center" />
<el-table-column prop="gender" label="性别" width="120" align="center" /> <el-table-column prop="gender" label="性别" width="120" align="center">
<el-table-column prop="num" label="测试次数" width="120" align="center" />
<el-table-column prop="status" label="测试状态" align="center">
<template #default="scope"> <template #default="scope">
<span v-if="!scope.row.status" style="font-size: 18px;color:#F59A23;">未处理</span> <span v-if="scope.row.gender === 'male'"></span>
<span v-else style="font-size: 18px;color:#ffffff;">已处理</span> <span v-else ></span>
</template>
</el-table-column>
<el-table-column prop="num" label="测试次数" width="100" align="center" />
<el-table-column prop="updated_at" label="最近测试时间" min-width="100" align="center" />
<el-table-column prop="status" label="状态" align="center" width="100">
<template #default="scope">
<div v-if="!scope.row.status"
class="unprocessed-status">未处理</div>
<div v-else class="processed-status">已处理</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="doctor" label="测试医生" min-width="80" align="center" /> <el-table-column prop="doctor" label="测试医生" min-width="80" align="center" />
<el-table-column fixed="right" label="操作" width="100"> <el-table-column label="操作" width="100">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" style="font-size: 18px;" size="small" @click="delClick(scope.row.id)">删除</el-button> <el-button link type="primary" style="font-size: 18px;" size="small" @click="delClick(scope.row.id)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- :total="patienttotal" -->
<el-pagination background layout="prev, pager, next"
:size="size"
:page-size="size"
:total="patienttotal"
@current-change="handleCurrentChange"
class="pagination-box"/>
</div> </div>
<!-- 患者详情区域 --> <!-- 患者详情区域 -->
<div class="patient-detail" v-if="selectedPatient"> <div class="patient-detail">
<div class="patient-detail-box"> <div class="patient-detail-header">
<div class="detail-header"> <img src="@/assets/new/u253.svg" alt="" style="margin-right:10px ;">
<div class="module-title"> <div>用户信息</div>
<div class="module-title-text">基础信息</div> </div>
</div>
<el-button link @click="editPatient"> <div class="patient-detail-avatar">
<el-icon class="edit-icon" style="width: 28px;height: 28px;font-size: 28px;cursor: pointer;color: #CCCCCC;"> <img src="@/assets/new/u249.svg" alt="">
<Edit /> </div>
</el-icon> <div class="patient-detail-name">
</el-button> <span v-if="selectedPatient">{{ selectedPatient.name }}</span>
</div> <span v-if="!selectedPatient"></span>
<div v-if="selectedPatient" class="edit-icon-box" style="cursor: pointer;" @click="editClick">
<div class="basic-info-box"> <img src="@/assets/new/u257.svg" alt="" >
<div class="basic-info-content">
<div class="basic-info-text">
<div class="basic-info-textcolor">测试者ID</div>
<div>{{ selectedPatient.id || '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">姓名</div>
<div>{{ selectedPatient.name || '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">性别</div>
<div>{{ selectedPatient.gender || '-' }}</div>
</div>
</div>
<div class="basic-info-content">
<div class="basic-info-text">
<div class="basic-info-textcolor">出生日期</div>
<div>{{ selectedPatient.birth_date ? formatDate(selectedPatient.birth_date) : '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">年龄</div>
<div>{{ calculateAge(selectedPatient.birth_date) }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">民族</div>
<div>{{ selectedPatient.nationality || '-' }}</div>
</div>
</div>
<div class="basic-info-content">
<div class="basic-info-text">
<div class="basic-info-textcolor">身高cm</div>
<div>{{ selectedPatient.height || '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">体重kg</div>
<div>{{ selectedPatient.weight || '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">鞋码</div>
<div>{{ selectedPatient.shoe_size || '-' }}</div>
</div>
</div>
<div class="basic-info-content">
<div class="basic-info-text">
<div class="basic-info-textcolor">电话号码</div>
<div>{{ selectedPatient.phone || '-' }}</div>
</div>
<div class="basic-info-text">
<div class="basic-info-textcolor">建档时间</div>
<div>{{ selectedPatient.created_at ? formatDate(selectedPatient.created_at) : '-' }}</div>
</div>
<div class="basic-info-text">
</div>
</div>
</div> </div>
</div> </div>
<div class="patient-detail-userid">
<!-- 操作按钮 --> <span>用户ID</span>
<div class="action-buttons"> <span v-if="selectedPatient">{{ selectedPatient.id }}</span>
<div class="action-view-buttons" style="width:338px;" @click="viewPatientProfile">查看档案</div> <span v-if="!selectedPatient"></span>
<div class="action-view-buttons" style="width:338px;" @click="startDetection">平衡检测</div>
<div class="action-view-buttons" style="width:338px;" @click="createNewPatient">+新患者建档</div>
</div> </div>
<el-scrollbar height="calc(100%)">
<div class="patient-detail-display">
<div class="patient-detail-contentleft">性别</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.gender">
{{ selectedPatient.gender =='male'?'男':'女' }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">出生日期</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.birth_date">
{{ formatDate(selectedPatient.birth_date) }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">年龄</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.birth_date">
{{ calculateAge(selectedPatient.birth_date) }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">民族</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.nationality">
{{ selectedPatient.nationality }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">居住地</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.residence">
{{ selectedPatient.residence }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">身高</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.height">
{{ selectedPatient.height }}cm
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">体重</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.weight">
{{ selectedPatient.weight }}kg
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">鞋码</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.shoe_size">
{{ selectedPatient.shoe_size }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">电话</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.phone">
{{ selectedPatient.phone }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">邮箱</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.email">
{{ selectedPatient.email }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">职业</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.occupation">
{{ selectedPatient.occupation }}
</span>
<span v-else></span>
</div>
</div>
<div class="patient-detail-display">
<div class="patient-detail-contentleft">证件号</div>
<div class="patient-detail-contentright">
<span v-if="selectedPatient && selectedPatient.workplace">
{{ selectedPatient.workplace }}
</span>
<span v-else></span>
</div>
</div>
</el-scrollbar>
<el-button v-if="selectedPatient" type="primary" class="primary-view-profile"
@click="viewPatientProfile">
查看档案
</el-button>
<el-button v-if="selectedPatient" type="primary" class="primary-view-profile"
@click="startDetection">
开始检测
</el-button>
</div> </div>
<!-- 无选中患者时的提示 -->
<div class="no-selection" v-else>
<el-empty description="请选择一个患者查看详情">
<!-- <el-button type="primary" @click="createNewPatient">新建患者档案</el-button> -->
<div class="action-view-buttons" style="width:338px;" @click="createNewPatient">+新患者建档</div>
</el-empty>
</div>
</div> </div>
</div> </div>
<el-dialog v-model="dialogVisible" title="编辑基础信息" width="50%" :before-close="handleClose"> <div class="creat-patient-box" v-if="isCloseCreat">
<div class="form-box" style="margin-top: 10px;"> <PatientCreate @closecreatbox="closecreatbox" :patienttype="patienttype"
<el-form ref="patientFormRef" :model="patientForm" :rules="formRules" label-width="100px" class="patient-form"> :selectedPatient="selectedPatient" v-if="isCloseCreat"/>
<el-row :gutter="20"> </div>
<el-col :span="12"> <div class="creat-patient-box" v-if="isDetection">
<el-form-item label="测试者ID" prop="testerId"> <Detection v-if="isDetection" :selectedPatient="selectedPatient"
<el-input v-model="patientForm.id" disabled placeholder="请输入测试者ID" clearable /> @endChange="endChange"></Detection>
</el-form-item> </div>
</el-col>
<el-col :span="12">
</el-col>
<el-col :span="12">
<el-form-item label="姓名" prop="name" required>
<el-input v-model="patientForm.name" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="性别" prop="gender" required>
<el-select v-model="patientForm.gender" placeholder="请选择">
<el-option label="男" value="男" />
<el-option label="女" value="女" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生日期" prop="birth_date" required>
<el-date-picker v-model="patientForm.birth_date" type="date" placeholder="请选择" style="width: 100%"
@change="calculateAgeres" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年龄">
<el-input v-model="calculatedAge" placeholder="自动计算" readonly suffix-icon="Calendar" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="民族" prop="nationality">
<el-select v-model="patientForm.nationality" placeholder="请选择">
<el-option v-for="item in nationalityOptions" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="长期居住地" prop="residence">
<el-input v-model="patientForm.residence" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身高" prop="height" required>
<el-input v-model="patientForm.height" placeholder="请输入" clearable>
<template #suffix>cm</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="体重" prop="weight" required>
<el-input v-model="patientForm.weight" placeholder="请输入" clearable>
<template #suffix>kg</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="鞋码" prop="shoe_size">
<el-input v-model="patientForm.shoe_size" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
<el-col :span="12">
<el-form-item label="电话号码" prop="phone" required>
<el-input v-model="patientForm.phone" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电子邮箱" prop="email">
<el-input v-model="patientForm.email" placeholder="请输入" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职业" prop="occupation">
<el-select v-model="patientForm.occupation" placeholder="请选择">
<el-option v-for="item in occupationOptions" :key="item" :label="item"
:value="item" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="单位" prop="workplace">
<el-input v-model="patientForm.workplace" placeholder="请输入" clearable />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose" style="margin-right: 20px;">退出</el-button>
<el-button type="primary" @click="handleSave" :loading="saveLoading">
保存
</el-button>
</span>
</template>
</el-dialog>
</div> </div>
</template> </template>
@ -261,10 +226,15 @@ import { ElMessage, ElMessageBox } from 'element-plus'
import api, { patientAPI } from '../services/api.js' import api, { patientAPI } from '../services/api.js'
import { useAuthStore } from '../stores/index.js' import { useAuthStore } from '../stores/index.js'
import Header from '@/views/Header.vue' import Header from '@/views/Header.vue'
import PatientCreate from '@/views/PatientCreate.vue'
import Detection from '@/views/Detection.vue'
import { color } from 'echarts' import { color } from 'echarts'
const router = useRouter() const router = useRouter()
const authStore = useAuthStore() const authStore = useAuthStore()
const isDetection = ref(true) //
const patienttype = ref('add')
const patienttotal = ref(0)
// //
const activeNav = ref('detection') const activeNav = ref('detection')
const searchKeyword = ref('') const searchKeyword = ref('')
@ -361,18 +331,20 @@ const calculateAgeres = (date) => {
} }
// //
const filteredPatients = computed(() => { const filteredPatients = computed(() => {
if (!searchKeyword.value) { // if (!searchKeyword.value) {
return patients.value // return patients.value
} // }
return patients.value.filter(patient => // return patients.value.filter(patient =>
patient.name.toLowerCase().includes(searchKeyword.value.toLowerCase()) // patient.name.toLowerCase().includes(searchKeyword.value.toLowerCase())
) // )
}) })
// //
const handleSearch = () => { const handleSearch = () => {
// //
loadPatients()
} }
// const selectPatient = (patient) => { // const selectPatient = (patient) => {
@ -457,7 +429,8 @@ const startDetection = () => {
ElMessage.warning('请先选择患者') ElMessage.warning('请先选择患者')
return return
} }
router.push(`/detection/${selectedPatient.value.id}`) isDetection.value = true
// router.push(`/detection/${selectedPatient.value.id}`)
} }
const createNewPatient = async () => { const createNewPatient = async () => {
@ -465,7 +438,9 @@ const createNewPatient = async () => {
const response = await api.get('/api/license/info') const response = await api.get('/api/license/info')
const isValid = response && response.success && response.data && response.data.valid const isValid = response && response.success && response.data && response.data.valid
if (isValid) { if (isValid) {
router.push('/patient/create') // router.push('/patient/create')
patienttype.value = 'add'
isCloseCreat.value =true
return return
} }
const msg ='['+ (response && response.data && response.data.message)+'],软件使用授权不正确,您不能创建新患者!' const msg ='['+ (response && response.data && response.data.message)+'],软件使用授权不正确,您不能创建新患者!'
@ -546,16 +521,24 @@ const calculateAge = (birthDate) => {
} }
return age return age
} }
const size =ref(15)
const page =ref(1)
const search = ref("")
const loadPatients = async () => { const loadPatients = async () => {
try { try {
const response = await patientAPI.getPatients() const response = await patientAPI.getPatients({
page:page.value,
size:size.value,
search:search.value
})
if (response.success) { if (response.success) {
// patients // patients
if (response.data && Array.isArray(response.data.patients)) { if (response.data && Array.isArray(response.data.patients)) {
patients.value = response.data.patients patients.value = response.data.patients
patienttotal.value =response.data.total
} else if (Array.isArray(response.data)) { } else if (Array.isArray(response.data)) {
patients.value = response.data patients.value = response.data
patienttotal.value =response.total
} else { } else {
patients.value = [] patients.value = []
} }
@ -563,32 +546,7 @@ const loadPatients = async () => {
} catch (error) { } catch (error) {
console.error('加载患者列表失败:', error) console.error('加载患者列表失败:', error)
// //
patients.value = [ patients.value = []
{
id: 1,
name: '张三',
gender: '男',
age: 45,
updated_at: '2023-05-01 14:00:00',
num: 4
},
{
id: 2,
name: '李四',
gender: '女',
updated_at: '2023-05-01 14:00:00',
num: 4
},
{
id: 3,
name: '王五',
gender: '男',
age: 52,
updated_at: '2023-05-01 14:00:00',
num: 4
}
]
} }
} }
const handleClose = () => { const handleClose = () => {
@ -639,7 +597,24 @@ function delClick(id) {
.catch(() => { .catch(() => {
}); });
} }
const isCloseCreat = ref(false)
function closecreatbox(e){
if(e == true){
loadPatients()
}
isCloseCreat.value = false
}
function endChange(){
isDetection.value = false
}
function handleCurrentChange (val) {
page.value = val
loadPatients()
}
function editClick(){
patienttype.value = 'edit'
isCloseCreat.value = true
}
</script> </script>
<style scoped> <style scoped>
@ -780,13 +755,13 @@ function delClick(id) {
.content-area { .content-area {
flex: 1; flex: 1;
display: flex; display: flex;
gap: 5px; gap: 15px;
padding: 5px; padding: 15px;
overflow: hidden; overflow: hidden;
} }
.patient-section { .patient-section {
width: calc(100% - 500px); width: calc(100% - 350px);
background: rgb(51, 51, 51); background: rgb(51, 51, 51);
border-radius: 8px; border-radius: 8px;
padding: 20px; padding: 20px;
@ -794,8 +769,8 @@ function delClick(id) {
} }
.section-header { .section-header {
/* display: flex; display: flex;
justify-content: space-between; */ justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 15px; margin-bottom: 15px;
} }
@ -807,8 +782,9 @@ function delClick(id) {
} }
.search-box { .search-box {
width: 250px; /* width: 250px; */
margin-top: 15px; display: flex;
align-items: center;
} }
.patient-list { .patient-list {
@ -867,7 +843,10 @@ function delClick(id) {
} }
.patient-detail { .patient-detail {
width: 500px; width: 350px;
background: #282828;
border-radius: 4px;
height: 100%;
/* background: #fff; */ /* background: #fff; */
} }
@ -1035,30 +1014,7 @@ function delClick(id) {
margin-top: 25px; margin-top: 25px;
} }
.main-dashboard-top {
display: flex;
width: 100%;
align-items: center;
padding: 10px 20px;
gap: 20px;
background-color: #292929;
}
.main-dashboard-top-title {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
color: #FFFFFF;
font-size: 18px;
width: calc(100% - 500px);
}
.main-dashboard-top-info {
display: flex;
font-size: 16px;
color: #FFFFFF;
font-family: 'Arial Normal', 'Arial', sans-serif;
}
/* 必填项标识 */ /* 必填项标识 */
:deep(.el-form-item.is-required .el-form-item__label::before) { :deep(.el-form-item.is-required .el-form-item__label::before) {
@ -1076,49 +1032,14 @@ function delClick(id) {
box-shadow: none; box-shadow: none;
} }
:deep(.el-select__wrapper) {
background-color: rgba(51, 51, 51, 1);
border-width: 1px;
border-style: solid;
border-color: rgba(127, 127, 127, 1);
border-radius: 4px;
box-shadow: none;
}
:deep(.el-form-item__label) {
font-size: 14px;
font-family: '苹方 粗体', '苹方 中等', '苹方', sans-serif;
font-weight: 700;
font-style: normal;
color: #FFFFFF;
}
:deep(.el-col-12) {
margin-bottom: 15px;
}
:deep(.el-input__inner) {
color: #ffffff;
font-size: 16px;
}
:deep(.el-select__placeholder) {
color: #ffffff;
font-size: 16px;
}
:deep(.el-input.is-disabled .el-input__wrapper) {
background-color: rgba(127, 127, 127, 1);
box-shadow: none;
border-width: 1px;
border-style: solid;
border-color: rgba(215, 215, 215, 1);
color: #FFFFFF;
}
:deep(.el-table th .cell){ :deep(.el-table th .cell){
color: #30F3FF ; font-size: 14px;
font-weight: 400;
font-size: 18px;
} }
:deep(.el-table--border .el-table__inner-wrapper){ :deep(.el-table--border .el-table__inner-wrapper){
border-right: 1px solid #434343; border-right: 1px solid #434343;
@ -1153,7 +1074,7 @@ function delClick(id) {
} }
.dashboard-container.dashboard-container-home .el-table td.el-table__cell { .dashboard-container.dashboard-container-home .el-table td.el-table__cell {
background-color: rgb(0, 0, 0) !important; background-color: #282828 !important;
} }
@ -1161,10 +1082,6 @@ function delClick(id) {
border-right: transparent !important; border-right: transparent !important;
} }
.dashboard-container.dashboard-container-home .el-table__body tr.current-row>td.el-table__cell {
background-color: rgb(121, 121, 121) !important;
}
.dashboard-container.dashboard-container-home .el-table--border .el-table__inner-wrapper:after, .dashboard-container.dashboard-container-home .el-table--border .el-table__inner-wrapper:after,
.el-table--border:after, .el-table--border:after,
.el-table--border:before, .el-table--border:before,
@ -1217,9 +1134,218 @@ function delClick(id) {
width: 190px; width: 190px;
border-radius: 50px; border-radius: 50px;
font-size: 20px; font-size: 20px;
font-family: 'Arial Normal', 'Arial', sans-serif; font-family: 'Noto Sans SC';
} }
.search-input{ .search-input{
height: 40px;
font-size: 16px; font-size: 16px;
margin-right: 10px;
}
.primary-view-buttons{
background-color: rgba(38, 111, 255, 1);
/* width: 150px; */
height: 40px;
border: 0px;
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #FFFFFF;
}
.primary-view-buttons:hover{
background-color: rgb(52, 119, 254);
}
.dashboard-container.dashboard-container-home .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #363636 !important; /* 自定义浅蓝底色 */
}
.dashboard-container.dashboard-container-home .el-table .el-table__row.current-row td{
background-color: #282f3d !important;
border-top:1px solid rgba(38, 111, 255, 1);
border-bottom:1px solid rgba(38, 111, 255, 1)
}
.dashboard-container.dashboard-container-home .el-table .el-table__row.current-row td:last-child{
border-right:1px solid rgba(38, 111, 255, 1);
}
.dashboard-container.dashboard-container-home .el-table .el-table__row.current-row td:first-child{
border-left:1px solid rgba(38, 111, 255, 1);
}
.dashboard-container.dashboard-container-home .el-table .el-table__row.current-row:last-child td{
border-bottom:2px solid rgba(38, 111, 255, 1)
}
.dashboard-container.dashboard-container-home .el-table .el-table__body tr td {
height: 50px !important;
}
/* 设置表头行高 */
.dashboard-container.dashboard-container-home .el-table .el-table__header tr th {
height: 50px !important;
}
.unprocessed-status{
margin: auto;
width: 60px;
height: 26px;
line-height: 26px;
background-color: #543544;
border: #FF3300 1px solid;
border-radius: 4px;
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #FF3300;
text-align: center;
}
.processed-status{
margin: auto;
width: 60px;
height: 26px;
line-height: 26px;
background-color: #243824;
border: #00CC00 1px solid;
border-radius: 4px;
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #00CC00;
text-align: center;
}
.patient-detail-header{
display: flex;
align-items: center;
box-sizing: border-box;
padding: 10px;
font-family: 'Noto Sans SC';
font-weight: 700;
font-style: normal;
font-size: 18px;
color: #FFFFFF;
border-bottom: 1px solid #000;
}
.patient-detail-avatar{
width: 120px;
height: 120px;
background-color: rgba(189, 211, 253, 1);
display: flex;
align-items: center;
justify-content: center;
border-radius: 10px;
margin: auto;
margin-top: 40px;
}
.patient-detail-name{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
font-family: 'Noto Sans SC';
font-weight: 700;
font-style: normal;
color: #FFFFFF;
font-size: 24px;
padding-top: 10px;
padding-bottom: 10px;
}
.edit-icon-box{
width: 20px;
height: 20px;
background: inherit;
background-color: rgba(255, 102, 0, 1);
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
margin-left: 10px;
}
.patient-detail-userid{
text-align: center;
width: 100%;
font-family: 'Noto Sans SC';
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #FFFFFF;
}
.patient-detail-display{
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 10px 20px;
}
.patient-detail-contentleft{
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #949494;
}
.patient-detail-contentright{
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #FFFFFF;
}
.pagination-box.el-pagination.is-background .btn-next,
.pagination-box.el-pagination.is-background .btn-prev,
.pagination-box.el-pagination.is-background .el-pager li{
background: #282828;
color: #fff;
border: 1px solid rgba(80, 80, 80, 1);
}
.pagination-box.el-pagination.is-background .btn-next:hover,
.pagination-box.el-pagination.is-background .btn-prev:hover,
.pagination-box.el-pagination.is-background .el-pager li:hover{
color: rgba(38, 111, 255, 1);
}
.pagination-box.el-pagination.is-background .btn-next.is-active,
.pagination-box.el-pagination.is-background .btn-prev.is-active,
.pagination-box.el-pagination.is-background .el-pager li.is-active{
background: rgba(38, 111, 255, 1);
border: 1px solid rgba(38, 111, 255, 1);
color:#fff;
}
.pagination-box{
margin-top: 10px;
}
.patient-detail .el-scrollbar{
height: calc(100% - 420px);
}
.primary-view-profile{
width: 310px;
height: 50px;
background-color: rgba(38, 111, 255, 1);
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 16px;
color: #FFFFFF;
border: 1px solid rgba(38, 111, 255, 1);
margin: auto;
}
.primary-view-profile:hover{
background-color: rgb(62, 126, 254);
border: 1px solid rgb(62, 126, 254);
}
.primary-view-profile.el-button{
margin-left: 20px;
margin-top: 10px;
}
.creat-patient-box{
position: fixed;
z-index: 99;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.7);
} }
</style> </style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,16 +14,13 @@
</div> </div>
<div class="header-right"> <div class="header-right">
<div style="color:#fff;margin-right: 20px;">登录时间{{ time }} </div> <div style="color:#fff;margin-right: 20px;">登录时间{{ time }} </div>
<div class="user-line"></div>
<div class="user-info"> <div class="user-info">
<img src="@/assets/svg/avatar.svg" alt="Avatar" style="width: 20px;height: 20px;"> <img src="@/assets/new/u13.png" alt="Avatar" style="width: 30px;height: 30px;">
<!-- <el-avatar :size="40" :src="userInfo.avatar">
<el-icon>
<User />
</el-icon>
</el-avatar> -->
<span class="username">{{ userInfo.name }}</span> <span class="username">{{ userInfo.name }}</span>
<el-dropdown @command="handleUserCommand"> <div class="user-line"></div>
<span class="username user-return" @click="handleUserCommand">退出</span>
<!-- <el-dropdown @command="handleUserCommand">
<el-button link class="user-dropdown"> <el-button link class="user-dropdown">
<el-icon> <el-icon>
<ArrowDown /> <ArrowDown />
@ -35,7 +32,7 @@
<el-dropdown-item command="logout" divided>退出登录</el-dropdown-item> <el-dropdown-item command="logout" divided>退出登录</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown> -->
</div> </div>
</div> </div>
</div> </div>
@ -86,18 +83,19 @@
const handleUserCommand = (command) => { const handleUserCommand = (command) => {
switch (command) { handleLogout()
case 'profile': // switch (command) {
viewInfoClick() // case 'profile':
// // viewInfoClick()
break // //
case 'settings': // break
// // case 'settings':
break // //
case 'logout': // break
handleLogout() // case 'logout':
break // handleLogout()
} // break
// }
} }
const dialogVisible =ref(false) const dialogVisible =ref(false)
function viewInfoClick(){ function viewInfoClick(){
@ -214,7 +212,7 @@
} }
.header { .header {
height: 50px; height: 60px;
background: #323232; background: #323232;
border-bottom: none; border-bottom: none;
display: flex; display: flex;
@ -240,17 +238,18 @@
width: 26px; width: 26px;
height: 26px; height: 26px;
border-radius: 4px; border-radius: 4px;
background: #0099ff; background: rgba(38, 111, 255, 1);
text-align: center; text-align: center;
padding-top: 3px; padding-top: 3px;
} }
.system-title { .system-title {
margin: 0; margin: 0;
font-family: 微软雅黑, sans-serif; font-family: 'Noto Sans SC';
font-weight: 400; font-weight: 700;
font-style: normal; font-style: normal;
font-size: 22px; font-size: 22px;
color: #FFFFFF;
color: rgb(255, 255, 255); color: rgb(255, 255, 255);
display: flex; display: flex;
align-items: center; align-items: center;
@ -287,15 +286,15 @@
font-size: 12px; font-size: 12px;
margin-left: 8px; margin-left: 8px;
} }
.badge-invalid { background-color: #8b0000; color: #fff; } .badge-invalid { background-color: rgba(67, 67, 67, 1); color: #949494; }
.badge-trial { background-color: #ff8c00; color: #fff; } .badge-trial { background-color: rgba(67, 67, 67, 1); color: #949494; }
.badge-valid { background-color: #2e8b57; color: #fff; } .badge-valid { background-color: rgba(38, 111, 255, 1); color: #fff; }
.activate-btn { .activate-btn {
margin-left: 8px; margin-left: 8px;
padding: 2px 10px; padding: 2px 10px;
font-size: 12px; font-size: 12px;
border: 1px solid #409EFF; border: 1px solid rgba(38, 111, 255, 1);
background-color: #409EFF; background-color: rgba(38, 111, 255, 1);
color: #fff; color: #fff;
border-radius: 12px; border-radius: 12px;
cursor: pointer; cursor: pointer;
@ -316,4 +315,15 @@
box-shadow: 0 0 0 1px transparent inset; box-shadow: 0 0 0 1px transparent inset;
border-color: transparent !important; border-color: transparent !important;
} }
.user-line{
width: 1px;
height: 15px;
margin: 0 10px;
background-color: #949494;
}
.user-return:hover{
cursor: pointer;
color: rgb(0, 140, 255);
text-decoration: underline;
}
</style> </style>

View File

@ -1,67 +1,69 @@
<template> <template>
<div class="login-page" :style="{ backgroundImage: `url(${bg})` }"> <div class="login-page" :style="{ backgroundImage: `url(${bg})` }">
<!-- 页面主内容 --> <!-- 页面主内容 -->
<div class="login-content"> <div class="login-content">
<!-- 系统标题 --> <!-- 系统标题 -->
<h1 class="system-title">平衡体态检测系统</h1> <div style="margin-right: 150px;">
<h1 class="system-title">平衡体态检测系统</h1>
<!-- 登录页面 --> <!-- 登录页面 -->
<el-card v-if="!isRegisterMode && !isForgotPasswordMode" class="login-card"> <el-card v-if="!isRegisterMode && !isForgotPasswordMode" class="login-card">
<div class="card-header">登录</div> <div class="card-header">欢迎登录</div>
<el-form class="login-form"> <el-form class="login-form">
<!-- 账号输入框 --> <!-- 账号输入框 -->
<el-form-item> <el-form-item>
<div class="input-box"> <div class="input-box">
<img src="@/assets/username.png" alt="" srcset="" height="30" style="margin-left: 10px;"> <img src="@/assets/new/u10.svg" alt="" srcset="" height="20" style="margin-left: 10px;">
<el-input <el-input
v-model="form.account" v-model="form.account"
placeholder="请输入账号" placeholder="请输入账号"
class="custom-input" class="custom-input"
/> />
</div> </div>
</el-form-item>
<!-- 密码输入框带显示切换 -->
<el-form-item>
<div class="input-box">
<img src="@/assets/password.png" alt="" srcset="" height="30" style="margin-left: 10px;">
<el-input
v-model="form.password"
:type="passwordVisible ? 'text' : 'password'"
placeholder="请输入密码"
class="custom-input"
@keyup.enter="handleLogin"
>
<template #suffix>
<el-icon
class="password-toggle"
@click="passwordVisible = !passwordVisible"
>
<component :is="passwordVisible ? Hide : View" />
</el-icon>
</template>
</el-input>
</div>
</el-form-item> </el-form-item>
<!-- 记住密码 & 忘记密码 --> <!-- 密码输入框带显示切换 -->
<div class="form-footer"> <el-form-item>
<el-checkbox v-model="form.remember" class="remember-checkbox" @change="handleRememberChange">记住账号及密码</el-checkbox> <div class="input-box">
<a href="#" class="forgot-link" @click="handleForgotPassword">忘记密码</a> <img src="@/assets/new/u16.svg" alt="" srcset="" height="20" style="margin-left: 10px;">
</div> <el-input
v-model="form.password"
:type="passwordVisible ? 'text' : 'password'"
placeholder="请输入密码"
class="custom-input"
@keyup.enter="handleLogin"
>
<template #suffix>
<el-icon
class="password-toggle"
@click="passwordVisible = !passwordVisible"
>
<component :is="passwordVisible ? Hide : View" />
</el-icon>
</template>
</el-input>
</div>
</el-form-item>
<!-- 操作按钮 --> <!-- 记住密码 & 忘记密码 -->
<div class="button-group"> <div class="form-footer">
<el-button type="primary" class="login-btn" @click="handleLogin" :loading="isLoading">{{ isLoading ? '登录中...' : '登录' }}</el-button> <el-checkbox v-model="form.remember" class="remember-checkbox" @change="handleRememberChange">记住账号及密码</el-checkbox>
<el-button class="register-btn" @click="switchToRegister">注册</el-button> <a href="#" class="forgot-link" @click="handleForgotPassword">忘记密码</a>
</div> </div>
</el-form>
</el-card>
<!-- 操作按钮 -->
<div class="button-group">
<el-button type="primary" class="login-btn" @click="handleLogin" :loading="isLoading">{{ isLoading ? '登录中...' : '登录' }}</el-button>
<!-- <el-button class="register-btn" @click="switchToRegister">注册</el-button> -->
</div>
<div style="display:flex ;justify-content: flex-end;width: 100%;margin-top: 10px;">
<span class="register-btn" @click="switchToRegister">注册</span>
</div>
</el-form>
</el-card>
<!-- 注册页面 --> <!-- 注册页面 -->
<el-card v-if="isRegisterMode && !isForgotPasswordMode" class="register-card"> <el-card v-if="isRegisterMode && !isForgotPasswordMode" class="register-card">
<div class="card-header">注册</div> <div class="card-header">注册</div>
@ -140,7 +142,6 @@
<button class="submit-btn" @click="handleRegisterSubmit">注册</button> <button class="submit-btn" @click="handleRegisterSubmit">注册</button>
</div> </div>
</el-card> </el-card>
<!-- 忘记密码页面 --> <!-- 忘记密码页面 -->
<el-card v-if="isForgotPasswordMode" class="forgot-password-card"> <el-card v-if="isForgotPasswordMode" class="forgot-password-card">
<div class="card-header">找回密码</div> <div class="card-header">找回密码</div>
@ -186,6 +187,10 @@
<button v-if="showRetrievedPassword" class="confirm-btn" @click="backToLoginFromForgot">退出</button> <button v-if="showRetrievedPassword" class="confirm-btn" @click="backToLoginFromForgot">退出</button>
</div> </div>
</el-card> </el-card>
</div>
</div> </div>
<!-- 自定义错误提示弹窗 --> <!-- 自定义错误提示弹窗 -->
@ -216,7 +221,7 @@ import { ElMessage } from 'element-plus'
import { useAuthStore } from '../stores' import { useAuthStore } from '../stores'
import { User, Lock, View, Hide, Phone } from '@element-plus/icons-vue' import { User, Lock, View, Hide, Phone } from '@element-plus/icons-vue'
import bg from '@/assets/bg.png' import bg from '@/assets/new/newbg.jpg'
import { getBackendUrl,systemAPI } from '../services/api.js' import { getBackendUrl,systemAPI } from '../services/api.js'
const BACKEND_URL = getBackendUrl() const BACKEND_URL = getBackendUrl()
const router = useRouter() const router = useRouter()
@ -665,58 +670,58 @@ const copyPassword = async () => {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; /* flex-direction: column; */
align-items: center; align-items: center;
justify-content: center; justify-content: flex-end;
padding: 0 20px; padding: 0 20px;
} }
/* 系统标题 */ /* 系统标题 */
.system-title { .system-title {
font-size: 2rem; text-align: center;
color: #00ffff; font-family: "阿里妈妈数黑体 Bold", 阿里妈妈数黑体, sans-serif;
text-shadow: 0 0 15px rgba(0, 255, 255, 0.8); font-weight: 700;
margin-bottom: 2.5rem; font-style: normal;
font-size: 40px;
color: rgb(255, 255, 255);
margin-bottom: 30px;
letter-spacing: 2px; letter-spacing: 2px;
} }
/* 登录卡片 */ /* 登录卡片 */
.login-card { .login-card {
width: 482px; width: 482px;
height: 471px; height: 450px;
background: inherit; background-color: #1D1C21;
background-color: rgba(10, 68, 131, 0.9);
box-sizing: border-box; box-sizing: border-box;
border-width: 3px; border-width: 3px;
border-style: solid; border-style: solid;
border-color: rgba(11, 92, 168, 1); border-color: #1D1C21;
border-radius: 5px; border-radius: 5px;
padding: 40px 25px 0; padding: 40px 25px 0;
} }
/* 注册卡片 */ /* 注册卡片 */
.register-card { .register-card {
width: 100%; width: 482px;
max-width: 450px; background-color: #1D1C21;
background-color: #003366 !important; box-sizing: border-box;
border: none !important; border-width: 3px;
border-radius: 12px !important; border-style: solid;
box-shadow: 0 0 30px rgba(0, 255, 255, 0.2); border-color: #1D1C21;
border-radius: 5px;
padding: 30px 25px !important; padding: 30px 25px !important;
} }
/* 卡片头部标题 */ /* 卡片头部标题 */
.card-header { .card-header {
/* font-size: 1.4rem; font-family: 微软雅黑, sans-serif;
color: #00ffff; font-weight: 400;
text-align: center;
margin-bottom: 25px; */
font-size: 24px;
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal; font-style: normal;
color: #00FFFF; font-size: 30px;
color: rgb(255, 255, 255);
text-align: center;
margin-bottom: 20px;
} }
/* 登录表单 */ /* 登录表单 */
@ -741,7 +746,7 @@ const copyPassword = async () => {
} }
/* 密码显示图标 */ /* 密码显示图标 */
.password-icon { .password-icon {
color: #00ffff !important; color: #cccccc !important;
cursor: pointer; cursor: pointer;
padding: 0 8px; padding: 0 8px;
} }
@ -769,7 +774,7 @@ const copyPassword = async () => {
/* 忘记密码链接 */ /* 忘记密码链接 */
.forgot-link { .forgot-link {
color: #00ffff; color: #ffffff;
text-decoration: none; text-decoration: none;
} }
.forgot-link:hover { .forgot-link:hover {
@ -785,30 +790,28 @@ const copyPassword = async () => {
/* 登录按钮 */ /* 登录按钮 */
.login-btn { .login-btn {
flex: 1; flex: 1;
background-color: #00ffff !important; background-color: #266fff !important;
border-color: #00ffff !important; border-color: #266fff !important;
color: #003366 !important; color: #fff !important;
font-weight: 500 !important; font-weight: 500 !important;
border-radius: 6px !important; border-radius: 6px !important;
height: 50px;
font-size: 16px;
} }
.login-btn:hover { .login-btn:hover {
background-color: #00e6e6 !important; background-color: #266fff !important;
border-color: #00e6e6 !important; border-color: #266fff !important;
} }
/* 注册按钮 */ /* 注册按钮 */
.register-btn { .register-btn {
flex: 1; font-family: 微软雅黑, sans-serif;
background-color: transparent !important; font-weight: 400;
border-color: #00ffff !important; font-style: normal;
color: #00ffff !important; font-size: 14px;
font-weight: 500 !important; color: rgb(255, 255, 255);
border-radius: 6px !important; cursor: pointer;
} }
.register-btn:hover {
background-color: #004080 !important;
}
/* 自定义错误弹窗样式 */ /* 自定义错误弹窗样式 */
.error-dialog-overlay { .error-dialog-overlay {
position: fixed; position: fixed;
@ -825,10 +828,10 @@ const copyPassword = async () => {
} }
.error-dialog { .error-dialog {
background-color: #003366; background-color: #1D1C21;
border: 2px solid #00ffff; border: 2px solid #1D1C29;
border-radius: 12px; border-radius: 12px;
box-shadow: 0 0 30px rgba(0, 255, 255, 0.3); box-shadow: 0 0 30px 1D1C29;
min-width: 400px; min-width: 400px;
max-width: 500px; max-width: 500px;
animation: dialogFadeIn 0.3s ease-out; animation: dialogFadeIn 0.3s ease-out;
@ -850,19 +853,19 @@ const copyPassword = async () => {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 20px 25px 15px; padding: 20px 25px 15px;
border-bottom: 1px solid rgba(0, 255, 255, 0.2); border-bottom: 1px solid rgba(0, 136, 255, 0.2);
} }
.dialog-title { .dialog-title {
font-size: 1.2rem; font-size: 1.2rem;
color: #00ffff; color: #fff;
font-weight: 500; font-weight: 500;
} }
.close-btn { .close-btn {
background: none; background: none;
border: none; border: none;
color: #00ffff; color: #ffffff;
font-size: 1.5rem; font-size: 1.5rem;
cursor: pointer; cursor: pointer;
padding: 0; padding: 0;
@ -876,7 +879,7 @@ const copyPassword = async () => {
} }
.close-btn:hover { .close-btn:hover {
background-color: rgba(0, 255, 255, 0.1); background-color: rgba(0, 140, 255, 0.1);
transform: scale(1.1); transform: scale(1.1);
} }
@ -916,17 +919,14 @@ const copyPassword = async () => {
} }
.confirm-btn { .confirm-btn {
background-color: #00ffff; background-color: #266fff ;
border-color: #00ffff; border-color: #266fff ;
color: #003366; color: #fff;
font-weight: 500; font-weight: 500;
} }
.confirm-btn:hover { .confirm-btn:hover {
background-color: #00e6e6;
border-color: #00e6e6;
transform: translateY(-1px); transform: translateY(-1px);
box-shadow: 0 2px 8px rgba(0, 255, 255, 0.3);
} }
/* 注册表单样式 */ /* 注册表单样式 */
@ -942,20 +942,25 @@ const copyPassword = async () => {
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: #004080; background: transparent;
border: 1px solid #00ffff; color: #fff;
border-radius: 6px; font-size: 16px;
height: 49px;
/* background-color: #004080;
border-radius: 6px; */
border: 1px solid rgb(67, 67, 67);
padding: 0 15px; padding: 0 15px;
transition: all 0.2s ease; transition: all 0.2s ease;
} }
.input-wrapper:focus-within { .input-wrapper:focus-within {
border-color: #00e6e6; border-color: #cccccc;
box-shadow: 0 0 8px rgba(0, 255, 255, 0.3); box-shadow: 0 0 8px rgba(0, 255, 255, 0.3);
} }
.input-icon { .input-icon {
color: #00ffff; color: #cccccc;
margin-right: 10px; margin-right: 10px;
font-size: 16px; font-size: 16px;
} }
@ -975,7 +980,7 @@ const copyPassword = async () => {
} }
.password-toggle { .password-toggle {
color: #00ffff; color: #cccccc;
cursor: pointer; cursor: pointer;
margin-left: 10px; margin-left: 10px;
font-size: 16px; font-size: 16px;
@ -983,7 +988,7 @@ const copyPassword = async () => {
} }
.password-toggle:hover { .password-toggle:hover {
color: #00e6e6; color: #cccccc;
transform: scale(1.1); transform: scale(1.1);
} }
@ -1008,36 +1013,35 @@ const copyPassword = async () => {
.back-btn { .back-btn {
background-color: transparent; background-color: transparent;
border-color: #00ffff; border-color: #266fff;
color: #00ffff; color: #266fff;
} }
.back-btn:hover { .back-btn:hover {
background-color: #004080; /* background-color: #004080;
transform: translateY(-1px); */
transform: translateY(-1px);
} }
.submit-btn { .submit-btn {
background-color: #00ffff; background-color: #266fff;
border-color: #00ffff; border-color: #266fff;
color: #003366; color: #fff;
} }
.submit-btn:hover { .submit-btn:hover {
background-color: #00e6e6;
border-color: #00e6e6;
transform: translateY(-1px); transform: translateY(-1px);
box-shadow: 0 2px 8px rgba(0, 255, 255, 0.3);
} }
/* 忘记密码页面样式 */ /* 忘记密码页面样式 */
.forgot-password-card { .forgot-password-card {
width: 100%; width: 482px;
max-width: 450px; background-color: #1D1C21;
background-color: #003366 !important; box-sizing: border-box;
border: none !important; border-width: 3px;
border-radius: 12px !important; border-style: solid;
box-shadow: 0 0 30px rgba(0, 255, 255, 0.2); border-color: #1D1C21;
border-radius: 5px;
padding: 30px 25px !important; padding: 30px 25px !important;
} }
@ -1124,16 +1128,12 @@ const copyPassword = async () => {
cursor: pointer; cursor: pointer;
transition: all 0.2s ease; transition: all 0.2s ease;
border: 1px solid; border: 1px solid;
background-color: #00ffff; background-color: #266fff;
border-color: #00ffff; border-color: #266fff;
color: #003366; color: #fff;
} }
.confirm-btn:hover { .confirm-btn:hover {
background-color: #00e6e6;
border-color: #00e6e6;
transform: translateY(-1px); transform: translateY(-1px);
box-shadow: 0 2px 8px rgba(0, 255, 255, 0.3);
} }
.input-box{ .input-box{
@ -1142,11 +1142,11 @@ const copyPassword = async () => {
width: 100%; width: 100%;
height: 49px; height: 49px;
background-color: rgba(255, 255, 255, 0); background-color: rgba(255, 255, 255, 0);
box-sizing: border-box; box-sizing: border-box;
border-width: 2px; border-width: 1px;
border-style: solid; border-style: solid;
border-color: rgba(0, 153, 204, 1); border-color: rgb(67, 67, 67);
border-radius: 3px; border-radius: 3px;
} }
</style> </style>
<style> <style>
@ -1171,7 +1171,7 @@ const copyPassword = async () => {
.login-card .el-button{ .login-card .el-button{
padding: 12px 20px !important; padding: 12px 20px !important;
height: 40px; height: 50px;
} }
</style> </style>

View File

@ -1,28 +1,13 @@
<template> <template>
<div class="patient-create-container"> <div class="patient-create-container">
<Header />
<div class="nav-container">
<div class="nav-container-title" @click="goBack">
<img src="@/assets/svg/goback.svg" alt="">
<div style="margin-left: 20px;">
建档页
</div>
</div>
<div class="nav-container-info">
<!-- <div>测试时间2025-08-03 17:13:18<span></span></div>
<div style="margin-left: 15px;">测试医生<span>李医生</span></div> -->
</div>
</div>
<!-- 表单内容 --> <!-- 表单内容 -->
<div class="form-container"> <div class="form-container">
<div class="form-container-header">
<div>新建患者信息</div>
<img src="@/assets/new/u264.svg" alt="" style="cursor: pointer;" @click="handleCancel">
</div>
<el-form ref="patientFormRef" :model="patientForm" :rules="formRules" label-width="120px" class="patient-form"> <el-form ref="patientFormRef" :model="patientForm" :rules="formRules" label-width="120px" class="patient-form">
<div class="form-section"> <div class="form-section">
<div class="section-title">
<div class="section-title-text">
基本信息
</div>
</div>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="测试者ID" prop="testerId"> <el-form-item label="测试者ID" prop="testerId">
@ -30,10 +15,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="患者姓名" prop="name" required>
</el-col>
<el-col :span="12">
<el-form-item label="姓名" prop="name" required>
<el-input v-model="patientForm.name" placeholder="请输入" clearable /> <el-input v-model="patientForm.name" placeholder="请输入" clearable />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -48,7 +30,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="出生日期" prop="birth_date" required> <el-form-item label="出生日期" prop="birth_date" required>
<el-date-picker v-model="patientForm.birth_date" type="date" placeholder="请选择" style="width: 100%" <el-date-picker v-model="patientForm.birth_date" type="date" placeholder="请选择" style="width: 100%"
@change="calculateAgeres" /> @change="calculateAgeres" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -65,7 +47,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="长期居住地" prop="residence"> <el-form-item label="居住地" prop="residence">
<el-input v-model="patientForm.residence" placeholder="请输入" clearable /> <el-input v-model="patientForm.residence" placeholder="请输入" clearable />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -87,9 +69,6 @@
<el-form-item label="鞋码" prop="shoe_size"> <el-form-item label="鞋码" prop="shoe_size">
<el-input v-model="patientForm.shoe_size" placeholder="请输入" clearable /> <el-input v-model="patientForm.shoe_size" placeholder="请输入" clearable />
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="电话号码" prop="phone" required> <el-form-item label="电话号码" prop="phone" required>
@ -110,43 +89,52 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="单位" prop="workplace"> <el-form-item label="证件号" prop="workplace">
<el-input v-model="patientForm.workplace" placeholder="请输入" clearable /> <el-input v-model="patientForm.workplace" placeholder="请输入" clearable />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
</el-form> </el-form>
<div class="form-actions-display">
<el-button @click="handleCancel" class="formreturnCancel">退出</el-button>
<el-button type="primary" :loading="saveLoading" @click="handleSave"
class="formsaveCancel">
保存
</el-button>
</div>
</div> </div>
<!-- 底部操作按钮 --> <!-- 底部操作按钮 -->
<div class="footer-actions"> <!-- <div class="footer-actions">
<el-button @click="handleCancel">退出</el-button>
<el-button type="primary" :loading="saveLoading" @click="handleSave">
保存
</el-button>
<el-button type="success" :loading="saveAndDetectLoading" @click="handleSaveAndDetect"> <el-button type="success" :loading="saveAndDetectLoading" @click="handleSaveAndDetect">
保存并开始检测 保存并开始检测
</el-button> </el-button>
</div> </div> -->
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, reactive, computed } from 'vue' import { ref, reactive, computed, onMounted } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { patientAPI } from '../services/api.js' import { patientAPI } from '../services/api.js'
import Header from '@/views/Header.vue' const emit = defineEmits([ 'closecreatbox']);
const router = useRouter() const router = useRouter()
const props = defineProps({
selectedPatient: {
required: false,
type: Object,
default: null
},
patienttype: {
required: false,
type: String,
default: null
},
})
// //
const patientFormRef = ref() const patientFormRef = ref()
//
const saveLoading = ref(false)
const saveAndDetectLoading = ref(false)
// //
const patientForm = reactive({ const patientForm = reactive({
id: '', id: '',
@ -163,6 +151,19 @@ const patientForm = reactive({
workplace: '', workplace: '',
email: '' email: ''
}) })
//
const saveLoading = ref(false)
const saveAndDetectLoading = ref(false)
//
onMounted(() => {
//
if (props.patienttype == 'edit') {
Object.assign(patientForm, props.selectedPatient)
}
})
const occupationOptions = ref(["学生", "教师", "医生", "护士", "工程师", "程序员", "设计师", const occupationOptions = ref(["学生", "教师", "医生", "护士", "工程师", "程序员", "设计师",
"会计师", "律师", "警察", "消防员", "军人", "公务员", "销售", "市场营销", "会计师", "律师", "警察", "消防员", "军人", "公务员", "销售", "市场营销",
"人力资源", "行政", "财务", "咨询师", "建筑师", "科研人员", "记者", "编辑", "人力资源", "行政", "财务", "咨询师", "建筑师", "科研人员", "记者", "编辑",
@ -206,10 +207,6 @@ const formRules = {
] ]
} }
//
const goBack = () => {
router.go(-1)
}
const calculatedAge = ref('') const calculatedAge = ref('')
// calculateAgeres // calculateAgeres
const calculateAgeres = (date) => { const calculateAgeres = (date) => {
@ -224,27 +221,7 @@ const calculateAgeres = (date) => {
calculatedAge.value = age calculatedAge.value = age
} }
const handleCancel = async () => { const handleCancel = async () => {
// emit('closecreatbox',false)
const hasData = Object.values(patientForm).some(value => value !== '')
if (hasData) {
try {
await ElMessageBox.confirm(
'您有未保存的数据,确定要退出吗?',
'提示',
{
confirmButtonText: '确定退出',
cancelButtonText: '取消',
type: 'warning'
}
)
router.go(-1)
} catch {
//
}
} else {
router.go(-1)
}
} }
const validateForm = async () => { const validateForm = async () => {
@ -263,6 +240,7 @@ const savePatient = async () => {
const genderValue = genderMap[patientForm.gender] || patientForm.gender const genderValue = genderMap[patientForm.gender] || patientForm.gender
const patientData = { const patientData = {
id: patientForm.id,
name: patientForm.name, name: patientForm.name,
gender: genderValue, gender: genderValue,
birth_date: patientForm.birth_date, birth_date: patientForm.birth_date,
@ -282,7 +260,9 @@ const savePatient = async () => {
try { try {
const response = await patientAPI.create(patientData) const response = await patientAPI.create(patientData)
if (response.success) { if (response.success) {
emit('closecreatbox',true)
return response.data return response.data
} else { } else {
throw new Error(response.message || '保存失败') throw new Error(response.message || '保存失败')
} }
@ -325,10 +305,20 @@ const handleSaveAndDetect = async () => {
<style scoped> <style scoped>
.patient-create-container { .patient-create-container {
height: 100vh; width: 800px;
height:620px;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
margin: auto;
background: #1b1b1b;
/* height: 100vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
background: #000000; background: #000000; */
} }
.nav-container { .nav-container {
@ -339,7 +329,7 @@ const handleSaveAndDetect = async () => {
} }
.nav-container-title { .nav-container-title {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif; font-family: 'Noto Sans SC';
font-weight: 700; font-weight: 700;
font-style: normal; font-style: normal;
color: #FFFFFF; color: #FFFFFF;
@ -353,7 +343,7 @@ const handleSaveAndDetect = async () => {
display: flex; display: flex;
font-size: 16px; font-size: 16px;
color: #FFFFFF; color: #FFFFFF;
font-family: 'Arial Normal', 'Arial', sans-serif; font-family: 'Noto Sans SC';
} }
.back-btn { .back-btn {
@ -376,16 +366,11 @@ const handleSaveAndDetect = async () => {
} }
.form-container { .form-container {
overflow-y: auto;
padding: 20px 20px 0px;
width: 100%; width: 100%;
} }
.patient-form { .patient-form {
max-width: 1000px;
margin: 0 auto; margin: 0 auto;
background: #333333;
border-radius: 8px;
padding: 30px; padding: 30px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
@ -446,20 +431,16 @@ const handleSaveAndDetect = async () => {
:deep(.el-form-item__label) { :deep(.el-form-item__label) {
font-size: 14px !important; font-size: 14px !important;
font-family: '苹方 粗体', '苹方 中等', '苹方', sans-serif !important; font-family: 'Noto Sans SC';
font-weight: 700 !important; font-weight: 700 !important;
font-style: normal !important; font-style: normal !important;
color: #FFFFFF !important; color: #787878 !important;
} }
:deep(.el-form-item__content) { :deep(.el-form-item__content) {
line-height: 32px; line-height: 32px;
} }
:deep(.el-input__wrapper) {
border-radius: 6px;
}
:deep(.el-textarea__inner) { :deep(.el-textarea__inner) {
border-radius: 6px; border-radius: 6px;
} }
@ -484,39 +465,42 @@ const handleSaveAndDetect = async () => {
margin-right: 4px; margin-right: 4px;
} }
:deep(.el-input__wrapper) { .patient-create-container :deep(.el-input__wrapper) {
background-color: rgba(51, 51, 51, 1); background-color: #282828;
border-width: 1px; border-width: 1px;
border-style: solid; border-style: solid;
border-color: rgba(127, 127, 127, 1); border-color: rgb(54, 54, 54);
border-radius: 4px; border-radius: 4px;
box-shadow: none; box-shadow: none;
height: 40px;
} }
:deep(.el-select__wrapper) { :deep(.el-select__wrapper) {
background-color: rgba(51, 51, 51, 1); background-color: #282828;
border-width: 1px; border-width: 1px;
border-style: solid; border-style: solid;
border-color: rgba(127, 127, 127, 1); border-color: rgb(54, 54, 54);
border-radius: 4px; border-radius: 4px;
box-shadow: none; box-shadow: none;
height: 40px;
} }
:deep(.el-form-item__label) { :deep(.el-form-item__label) {
font-size: 14px; font-size: 14px;
font-family: '苹方 粗体', '苹方 中等', '苹方', sans-serif; font-family: 'Noto Sans SC';
font-weight: 700; font-weight: 700;
font-style: normal; font-style: normal;
color: #FFFFFF; color: #FFFFFF;
} }
:deep(.el-col-12) { :deep(.el-col-12) {
margin-bottom: 15px; margin-bottom: 5px;
} }
:deep(.el-input__inner) { :deep(.el-input__inner) {
color: #ffffff; color: #ffffff;
font-size: 16px; font-size: 16px;
height: 40px;
} }
:deep(.el-select__placeholder) { :deep(.el-select__placeholder) {
@ -553,4 +537,54 @@ const handleSaveAndDetect = async () => {
box-shadow: none; box-shadow: none;
border: 1px solid #f56c6c; border: 1px solid #f56c6c;
} }
.form-container-header{
width: 100%;
height: 50px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: rgba(46, 52, 59, 1);
box-sizing: border-box;
padding: 0 20px;
font-family: 'Noto Sans SC';
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #FFFFFF;
text-align: left;
}
.form-actions-display{
display: flex;
justify-content: flex-end;
padding-right: 40px;
}
.formreturnCancel{
width: 80px;
height: 40px;
background: #313131;
border: 1px solid rgb(148, 148, 148);
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: rgb(148, 148, 148);
}
.formreturnCancel:hover{
background: #1e2c49;
color: #266fff;
border: 1px solid #266fff;
}
.formsaveCancel{
width: 80px;
height: 40px;
background: #266fff;
font-family: 'Noto Sans SC';
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #FFFFFF;
}
.el-date-editor.el-input{
height: 40px;
}
</style> </style>